]> git.parisson.com Git - teleforma.git/commitdiff
WIP
authorYoan Le Clanche <yoanl@pilotsystems.net>
Wed, 12 Feb 2025 14:36:03 +0000 (15:36 +0100)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Wed, 12 Feb 2025 14:36:03 +0000 (15:36 +0100)
teleforma/src/js/video/VideoPlayer.ts
teleforma/static/teleforma/dist/app.js
teleforma/static/teleforma/dist/app.js.map

index ded67e4c2b9d89f6d50a2fcbbf35340d551198e7..00434df74d63eaff84248288e405c0006e3fff52 100644 (file)
@@ -82,39 +82,49 @@ class VideoPlayer {
       }
     });
 
+    // window.addEventListener("resize", () => {
+    //   const videoElement = document.querySelector('video');
+
+    //     if (document.fullscreenElement) {
+    //       if (videoElement) {
+    //         videoElement.style.height = '100vh';
+    //         videoElement.style.width = '100%';
+    //       }
+    //     } else {
+    //       if (videoElement) {
+    //         videoElement.style.height = "100%";
+    //         videoElement.style.width = "100%";
+    //       }
+    //     }
+    // });
+  
+
+    let lastScrollY = 0;
+
     document.addEventListener("fullscreenchange", () => {
-      if (!document.fullscreenElement) {
         const videoElement = document.querySelector('video');
-    
-        if (videoElement) {
-          videoElement.style.height = "100%";
-          videoElement.style.width = "100%";
-        }
-      }
-      const videoContainer = document.querySelector('#main-video');
 
-      if (videoContainer) { 
-        const rect = videoContainer.getBoundingClientRect();
-        const position =  window.innerWidth <= 768 ? rect.bottom + window.scrollY : 0;
-  
-        setTimeout(() => {
-          window.scrollTo({
-            top: position,
-            behavior: "smooth",
-          });
-        }, 200);
-      }
+        if (document.fullscreenElement) {
+            lastScrollY = window.scrollY;
+        } else {
+            if (videoElement) {
+                videoElement.style.height = "100%";
+                videoElement.style.width = "100%";
+            }
+
+            setTimeout(() => {
+                window.scrollTo({
+                    top: lastScrollY,
+                    behavior: "smooth",
+                });
+            }, 200);
+        }
     });
-    
-    
-    
-    
 
     this.videojs.on('ratechange', () => {
       const newRate = this.videojs.playbackRate();
       console.log(`Playback rate changed to: ${newRate}`);
     
-      // Apply the new speed to all other videos
       this.player.videoPlayers.forEach(video => {
         if (video.videojs && video.videojs.playbackRate() !== newRate) {
           video.videojs.playbackRate(newRate);
@@ -347,10 +357,10 @@ class VideoPlayer {
     if (!this.videoElement || !videoPlayer.videoElement) return;
 
     const animateSwap = () => {
-      if (window.innerHeight > window.innerWidth) {
+      if (window.document.fullscreenElement && window.innerHeight > window.innerWidth) {
         // Portrait mode
         this.videoElement!.style.height = "100%";
-        videoPlayer.videoElement!.style.height = "100%";
+        videoPlayer.videoElement!.style.height = "100vh";
       } else {
         if (window.document.fullscreenElement) {
           this.videoElement!.style.height = "100%";
@@ -514,10 +524,6 @@ class VideoPlayer {
             videoContainer.requestFullscreen().then(() => {
               videoElement.style.height = '100vh';
               videoElement.style.width = '100%';
-
-              screen.orientation.lock("landscape").catch((error: any) => {
-                console.error("Error locking orientation:", error);
-              });
             });
 
           } else {
index e8b291ccc0b7d957b9c58d54370d45ca3dad7874..d05e270f5c7c655cac964c34f3ce96bbba9cb225 100644 (file)
@@ -8,5 +8,5 @@ function e(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase())
 /*! #__NO_SIDE_EFFECTS__ */function br(e,t){return v(e)?(()=>l({name:e.name},t,{setup:e}))():e}const yr=e=>!!e.type.__asyncLoader
 /*! #__NO_SIDE_EFFECTS__ */;function xr(e){v(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:r=200,timeout:s,suspensible:i=!0,onError:a}=e;let l,c=null,u=0;const d=()=>(u++,c=null,f()),f=()=>{let e;return c||(e=c=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),a)return new Promise(((t,n)=>{const o=()=>t(d()),r=()=>n(e);a(e,o,r,u+1)}));throw e})).then((t=>e!==c&&c?c:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),l=t,t))))};return br({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return l},setup(){const e=sl;if(l)return()=>wr(l,e);const t=t=>{c=null,fn(t,e,13,!o)};if(i&&e.suspense||hl)return f().then((t=>()=>wr(t,e))).catch((e=>(t(e),()=>o?za(o,{error:e}):null)));const a=Vt(!1),u=Vt(),d=Vt(!!r);return r&&setTimeout((()=>{d.value=!1}),r),null!=s&&setTimeout((()=>{if(!a.value&&!u.value){const e=new Error(`Async component timed out after ${s}ms.`);t(e),u.value=e}}),s),f().then((()=>{a.value=!0,e.parent&&kr(e.parent.vnode)&&(e.parent.effect.dirty=!0,En(e.parent.update))})).catch((e=>{t(e),u.value=e})),()=>a.value&&l?wr(l,e):u.value&&o?za(o,{error:u.value}):n&&!d.value?za(n):void 0}})}function wr(e,t){const{ref:n,props:o,children:r,ce:s}=t.vnode,i=za(e,o,r);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const kr=e=>e.type.__isKeepAlive,Sr={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=il(),o=n.ctx;if(!o.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const r=new Map,s=new Set;let i=null;const a=n.suspense,{renderer:{p:l,m:c,um:u,o:{createElement:d}}}=o,f=d("div");function p(e){Or(e),u(e,n,a,!0)}function h(e){r.forEach(((t,n)=>{const o=Sl(t.type);!o||e&&e(o)||m(n)}))}function m(e){const t=r.get(e);i&&Fa(t,i)?i&&Or(i):p(t),r.delete(e),s.delete(e)}o.activate=(e,t,n,o,r)=>{const s=e.component;c(e,t,n,0,a),l(s.vnode,e,t,n,s,a,o,e.slotScopeIds,r),ea((()=>{s.isDeactivated=!1,s.a&&j(s.a);const t=e.props&&e.props.onVnodeMounted;t&&tl(t,s.parent,e)}),a)},o.deactivate=e=>{const t=e.component;c(e,f,null,1,a),ea((()=>{t.da&&j(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&tl(n,t.parent,e),t.isDeactivated=!0}),a)},Jo((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>Tr(e,t))),t&&h((e=>!Tr(t,e)))}),{flush:"post",deep:!0});let g=null;const v=()=>{null!=g&&r.set(g,Ir(n.subTree))};return jr(v),Fr(v),Dr((()=>{r.forEach((e=>{const{subTree:t,suspense:o}=n,r=Ir(t);if(e.type!==r.type||e.key!==r.key)p(e);else{Or(r);const e=r.component.da;e&&ea(e,o)}}))})),()=>{if(g=null,!t.default)return null;const n=t.default(),o=n[0];if(n.length>1)return i=null,n;if(!Na(o)||!(4&o.shapeFlag)&&!(128&o.shapeFlag))return i=null,o;let a=Ir(o);const l=a.type,c=Sl(yr(a)?a.type.__asyncResolved||{}:l),{include:u,exclude:d,max:f}=e;if(u&&(!c||!Tr(u,c))||d&&c&&Tr(d,c))return i=a,o;const p=null==a.key?l:a.key,h=r.get(p);return a.el&&(a=Ga(a),128&o.shapeFlag&&(o.ssContent=a)),g=p,h?(a.el=h.el,a.component=h.component,a.transition&&vr(a,a.transition),a.shapeFlag|=512,s.delete(p),s.add(p)):(s.add(p),f&&s.size>parseInt(f,10)&&m(s.values().next().value)),a.shapeFlag|=256,i=a,Oo(o.type)?o:a}},__isBuildIn:!0},Er=Sr;function Tr(e,t){return f(e)?e.some((e=>Tr(e,t))):_(e)?e.split(",").includes(t):!!g(e)&&e.test(t)}function Mr(e,t){Rr(e,"a",t)}function Ar(e,t){Rr(e,"da",t)}function Rr(e,t,n=sl){const o=e.__wdc||(e.__wdc=()=>{let t=n;while(t){if(t.isDeactivated)return;t=t.parent}return e()});if(Br(t,o,n),n){let e=n.parent;while(e&&e.parent)kr(e.parent.vnode)&&Cr(o,t,n,e),e=e.parent}}function Cr(e,t,n,o){const r=Br(t,e,o,!0);Hr((()=>{c(o[t],r)}),n)}function Or(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Ir(e){return 128&e.shapeFlag?e.ssContent:e}function Br(e,t,n=sl,o=!1){if(n){const r=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;ke();const r=cl(n),s=dn(t,n,e,o);return r(),Se(),s});return o?r.unshift(s):r.push(s),s}}const Pr=e=>(t,n=sl)=>(!hl||"sp"===e)&&Br(e,((...e)=>t(...e)),n),Lr=Pr("bm"),jr=Pr("m"),Nr=Pr("bu"),Fr=Pr("u"),Dr=Pr("bum"),Hr=Pr("um"),Ur=Pr("sp"),Vr=Pr("rtg"),$r=Pr("rtc");function zr(e,t=sl){Br("ec",e,t)}function qr(e){zn("INSTANCE_CHILDREN",e);const t=e.subTree,n=[];return t&&Yr(t,n),n}function Yr(e,t){if(e.component)t.push(e.component.proxy);else if(16&e.shapeFlag){const n=e.children;for(let e=0;e<n.length;e++)Yr(n[e],t)}}function Gr(e){zn("INSTANCE_LISTENERS",e);const t={},n=e.vnode.props;if(!n)return t;for(const o in n)i(o)&&(t[o[2].toLowerCase()+o.slice(3)]=n[o]);return t}function Xr(e){const t=e.type,n=t.render;if(n&&!n._rc&&!n._compatChecked&&!n._compatWrapped)if(n.length>=2)n._compatChecked=!0;else if(Yn("RENDER_FUNCTION",e)){const e=t.render=function(){return n.call(this,Wr)};e._compatWrapped=!0}}function Wr(e,t,n){if(e||(e=Ea),"string"===typeof e){const t=I(e);"transition"!==t&&"transition-group"!==t&&"keep-alive"!==t||(e=`__compat__${t}`),e=To(e)}const o=arguments.length,r=f(t);return 2===o||r?y(t)&&!r?Na(t)?es(za(e,null,[t])):es(Jr(za(e,Zr(t,e)),t)):es(za(e,null,t)):(Na(n)&&(n=[n]),es(Jr(za(e,Zr(t,e),n),t)))}const Kr=e("staticStyle,staticClass,directives,model,hook");function Zr(e,t){if(!e)return null;const n={};for(const o in e)if("attrs"===o||"domProps"===o||"props"===o)l(n,e[o]);else if("on"===o||"nativeOn"===o){const t=e[o];for(const e in t){let r=Qr(e);"nativeOn"===o&&(r+="Native");const s=n[r],i=t[e];s!==i&&(n[r]=s?[].concat(s,i):i)}}else Kr(o)||(n[o]=e[o]);if(e.staticClass&&(n.class=W([e.staticClass,n.class])),e.staticStyle&&(n.style=z([e.staticStyle,n.style])),e.model&&y(t)){const{prop:o="value",event:r="input"}=t.model||{};n[o]=e.model.value,n[Jn+r]=e.model.callback}return n}function Qr(e){return"&"===e[0]&&(e=e.slice(1)+"Passive"),"~"===e[0]&&(e=e.slice(1)+"Once"),"!"===e[0]&&(e=e.slice(1)+"Capture"),P(e)}function Jr(e,t){return t&&t.directives?rr(e,t.directives.map((({name:e,value:t,arg:n,modifiers:o})=>[Mo(e),t,n,o]))):e}function es(e){const{props:t,children:n}=e;let o;if(6&e.shapeFlag&&f(n)){o={};for(let e=0;e<n.length;e++){const t=n[e],r=Na(t)&&t.props&&t.props.slot||"default",s=o[r]||(o[r]=[]);Na(t)&&"template"===t.type?s.push(t.children):s.push(t)}if(o)for(const e in o){const t=o[e];o[e]=()=>t,o[e]._ns=!0}}const r=t&&t.scopedSlots;return r&&(delete t.scopedSlots,o?l(o,r):o=r),o&&Ja(e,o),e}function ts(e){if($n("RENDER_FUNCTION",io,!0)&&$n("PRIVATE_APIS",io,!0)){const t=io,n=()=>e.component&&e.component.proxy;let o;Object.defineProperties(e,{tag:{get:()=>e.type},data:{get:()=>e.props||{},set:t=>e.props=t},elm:{get:()=>e.el},componentInstance:{get:n},child:{get:n},text:{get:()=>_(e.children)?e.children:null},context:{get:()=>t&&t.proxy},componentOptions:{get:()=>{if(4&e.shapeFlag)return o||(o={Ctor:e.type,propsData:e.props,children:e.children})}}})}}const ns=new WeakMap,os={get(e,t){const n=e[t];return n&&n()}};function rs(e){if(ns.has(e))return ns.get(e);const t=e.render,n=(n,o)=>{const r=il(),s={props:n,children:r.vnode.children||[],data:r.vnode.props||{},scopedSlots:o.slots,parent:r.parent&&r.parent.proxy,slots(){return new Proxy(o.slots,os)},get listeners(){return Gr(r)},get injections(){if(e.inject){const t={};return Gs(e.inject,t),t}return{}}};return t(Wr,s)};return n.props=e.props,n.displayName=e.name,n.compatConfig=e.compatConfig,n.inheritAttrs=!1,ns.set(e,n),n}function ss(e,t,n,o){let r;const s=n&&n[o];if(f(e)||_(e)){r=new Array(e.length);for(let n=0,o=e.length;n<o;n++)r[n]=t(e[n],n,void 0,s&&s[n])}else if("number"===typeof e){0,r=new Array(e);for(let n=0;n<e;n++)r[n]=t(n+1,n,void 0,s&&s[n])}else if(y(e))if(e[Symbol.iterator])r=Array.from(e,((e,n)=>t(e,n,void 0,s&&s[n])));else{const n=Object.keys(e);r=new Array(n.length);for(let o=0,i=n.length;o<i;o++){const i=n[o];r[o]=t(e[i],i,o,s&&s[o])}}else r=[];return n&&(n[o]=r),r}function is(e,t){for(let n=0;n<t.length;n++){const o=t[n];if(f(o))for(let t=0;t<o.length;t++)e[o[t].name]=o[t].fn;else o&&(e[o.name]=o.key?(...e)=>{const t=o.fn(...e);return t&&(t.key=o.key),t}:o.fn)}return e}function as(e,t,n={},o,r){if(io.isCE||io.parent&&yr(io.parent)&&io.parent.isCE)return"default"!==t&&(n.name=t),za("slot",n,o&&o());let s=e[t];s&&s._c&&(s._d=!1),Ra();const i=s&&ls(s(n)),a=ja(ka,{key:n.key||i&&i.key||`_${t}`},i||(o?o():[]),i&&1===e._?64:-2);return!r&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),s&&s._c&&(s._d=!0),a}function ls(e){return e.some((e=>!Na(e)||e.type!==Ea&&!(e.type===ka&&!ls(e.children))))?e:null}function cs(e,t){const n={};for(const o in e)n[t&&/[A-Z]/.test(o)?`on:${o}`:P(o)]=e[o];return n}function us(e){const t={};for(let n=0;n<e.length;n++)e[n]&&l(t,e[n]);return t}function ds(e,t,n,o,r){if(n&&y(n)){f(n)&&(n=us(n));for(const t in n)if(M(t))e[t]=n[t];else if("class"===t)e.class=W([e.class,n.class]);else if("style"===t)e.style=W([e.style,n.style]);else{const o=e.attrs||(e.attrs={}),s=C(t),i=I(t);if(!(s in o)&&!(i in o)&&(o[t]=n[t],r)){const o=e.on||(e.on={});o[`update:${t}`]=function(e){n[t]=e}}}}return e}function fs(e,t){return el(e,cs(t))}function ps(e,t,n,o,r){return r&&(o=el(o,r)),as(e.slots,t,o,n&&(()=>n))}function hs(e,t,n){return is(t||{$stable:!n},ms(e))}function ms(e){for(let t=0;t<e.length;t++){const n=e[t];n&&(f(n)?ms(n):n.name=n.key||"default")}return e}const gs=new WeakMap;function vs(e,t){let n=gs.get(e);if(n||gs.set(e,n=[]),n[t])return n[t];const o=e.type.staticRenderFns[t],r=e.proxy;return n[t]=o.call(r,null,r)}function _s(e,t,n,o,r,s){const i=e.appContext.config,a=i.keyCodes||{},l=a[n]||o;return s&&r&&!a[n]?bs(s,r):l?bs(l,t):r?I(r)!==n:void 0}function bs(e,t){return f(e)?!e.includes(t):e!==t}function ys(e){return e}function xs(e,t){for(let n=0;n<t.length;n+=2){const o=t[n];"string"===typeof o&&o&&(e[t[n]]=t[n+1])}return e}function ws(e,t){return"string"===typeof e?t+e:e}function ks(e){const t=(e,t,n)=>(e[t]=n,e[t]),n=(e,t)=>{delete e[t]};l(e,{$set:e=>(zn("INSTANCE_SET",e),t),$delete:e=>(zn("INSTANCE_DELETE",e),n),$mount:e=>(zn("GLOBAL_MOUNT",null),e.ctx._compat_mount||r),$destroy:e=>(zn("INSTANCE_DESTROY",e),e.ctx._compat_destroy||r),$slots:e=>$n("RENDER_FUNCTION",e)&&e.render&&e.render._compatWrapped?new Proxy(e.slots,os):e.slots,$scopedSlots:e=>{zn("INSTANCE_SCOPED_SLOTS",e);const t={};for(const n in e.slots){const o=e.slots[n];o._ns||(t[n]=o)}return t},$on:e=>Wn.bind(null,e),$once:e=>Kn.bind(null,e),$off:e=>Zn.bind(null,e),$children:qr,$listeners:Gr}),$n("PRIVATE_APIS",null)&&l(e,{$vnode:e=>e.vnode,$options:e=>{const t=l({},Ks(e));return t.parent=e.proxy.$parent,t.propsData=e.vnode.props,t},_self:e=>e.proxy,_uid:e=>e.uid,_data:e=>e.data,_isMounted:e=>e.isMounted,_isDestroyed:e=>e.isUnmounted,$createElement:()=>Wr,_c:()=>Wr,_o:()=>ys,_n:()=>F,_s:()=>oe,_l:()=>ss,_t:e=>ps.bind(null,e),_q:()=>te,_i:()=>ne,_m:e=>vs.bind(null,e),_f:()=>Ao,_k:e=>_s.bind(null,e),_b:()=>ds,_v:()=>Xa,_e:()=>Ka,_u:()=>hs,_g:()=>fs,_d:()=>xs,_p:()=>ws})}const Ss=e=>e?dl(e)?kl(e)||e.proxy:Ss(e.parent):null,Es=l(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ss(e.parent),$root:e=>Ss(e.root),$emit:e=>e.emit,$options:e=>Ks(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,En(e.update)}),$nextTick:e=>e.n||(e.n=kn.bind(e.proxy)),$watch:e=>tr.bind(e)});ks(Es);const Ts=(e,n)=>e!==t&&!e.__isScriptSetup&&d(e,n),Ms={get({_:e},n){const{ctx:o,setupState:r,data:s,props:i,accessCache:a,type:l,appContext:c}=e;let u;if("$"!==n[0]){const l=a[n];if(void 0!==l)switch(l){case 1:return r[n];case 2:return s[n];case 4:return o[n];case 3:return i[n]}else{if(Ts(r,n))return a[n]=1,r[n];if(s!==t&&d(s,n))return a[n]=2,s[n];if((u=e.propsOptions[0])&&d(u,n))return a[n]=3,i[n];if(o!==t&&d(o,n))return a[n]=4,o[n];qs&&(a[n]=0)}}const f=Es[n];let p,h;if(f)return"$attrs"===n&&Le(e,"get",n),f(e);if((p=l.__cssModules)&&(p=p[n]))return p;if(o!==t&&d(o,n))return a[n]=4,o[n];if(h=c.config.globalProperties,d(h,n)){const t=Object.getOwnPropertyDescriptor(h,n);if(t.get)return t.get.call(e.proxy);{const t=h[n];return v(t)?Object.assign(t.bind(e.proxy),t):t}}},set({_:e},n,o){const{data:r,setupState:s,ctx:i}=e;return Ts(s,n)?(s[n]=o,!0):r!==t&&d(r,n)?(r[n]=o,!0):!d(e.props,n)&&(("$"!==n[0]||!(n.slice(1)in e))&&(i[n]=o,!0))},has({_:{data:e,setupState:n,accessCache:o,ctx:r,appContext:s,propsOptions:i}},a){let l;return!!o[a]||e!==t&&d(e,a)||Ts(n,a)||(l=i[0])&&d(l,a)||d(r,a)||d(Es,a)||d(s.config.globalProperties,a)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:d(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};const As=l({},Ms,{get(e,t){if(t!==Symbol.unscopables)return Ms.get(e,t,e)},has(e,t){const n="_"!==t[0]&&!$(t);return n}});function Rs(e,t){for(const n in t){const o=e[n],r=t[n];n in e&&E(o)&&E(r)?Rs(o,r):e[n]=r}return e}function Cs(){return null}function Os(){return null}function Is(e){0}function Bs(e){0}function Ps(){return null}function Ls(){0}function js(e,t){return null}function Ns(){return Ds().slots}function Fs(){return Ds().attrs}function Ds(){const e=il();return e.setupContext||(e.setupContext=wl(e))}function Hs(e){return f(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}function Us(e,t){const n=Hs(e);for(const o in t){if(o.startsWith("__skip"))continue;let e=n[o];e?f(e)||v(e)?e=n[o]={type:e,default:t[o]}:e.default=t[o]:null===e&&(e=n[o]={default:t[o]}),e&&t[`__skip_${o}`]&&(e.skipFactory=!0)}return n}function Vs(e,t){return e&&t?f(e)&&f(t)?e.concat(t):l({},Hs(e),Hs(t)):e||t}function $s(e,t){const n={};for(const o in e)t.includes(o)||Object.defineProperty(n,o,{enumerable:!0,get:()=>e[o]});return n}function zs(e){const t=il();let n=e();return ul(),x(n)&&(n=n.catch((e=>{throw cl(t),e}))),[n,()=>cl(t)]}let qs=!0;function Ys(e){const t=Ks(e),n=e.proxy,o=e.ctx;qs=!1,t.beforeCreate&&Xs(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:a,watch:l,provide:c,inject:u,created:d,beforeMount:p,mounted:h,beforeUpdate:m,updated:g,activated:_,deactivated:b,beforeDestroy:x,beforeUnmount:w,destroyed:k,unmounted:S,render:E,renderTracked:T,renderTriggered:M,errorCaptured:A,serverPrefetch:R,expose:C,inheritAttrs:O,components:I,directives:B,filters:P}=t,L=null;if(u&&Gs(u,o,L),a)for(const r in a){const e=a[r];v(e)&&(o[r]=e.bind(n))}if(s){0;const t=s.call(n,n);0,y(t)&&(e.data=St(t))}if(qs=!0,i)for(const f in i){const e=i[f],t=v(e)?e.bind(n,n):v(e.get)?e.get.bind(n,n):r;0;const s=!v(e)&&v(e.set)?e.set.bind(n):r,a=Tl({get:t,set:s});Object.defineProperty(o,f,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(l)for(const r in l)Ws(l[r],o,n,r);if(c){const e=v(c)?c.call(n):c;Reflect.ownKeys(e).forEach((t=>{Ei(t,e[t])}))}function j(e,t){f(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(d&&Xs(d,e,"c"),j(Lr,p),j(jr,h),j(Nr,m),j(Fr,g),j(Mr,_),j(Ar,b),j(zr,A),j($r,T),j(Vr,M),j(Dr,w),j(Hr,S),j(Ur,R),x&&qn("OPTIONS_BEFORE_DESTROY",e)&&j(Dr,x),k&&qn("OPTIONS_DESTROYED",e)&&j(Hr,k),f(C))if(C.length){const t=e.exposed||(e.exposed={});C.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});E&&e.render===r&&(e.render=E),null!=O&&(e.inheritAttrs=O),I&&(e.components=I),B&&(e.directives=B),P&&$n("FILTERS",e)&&(e.filters=P)}function Gs(e,t,n=r){f(e)&&(e=ti(e));for(const o in e){const n=e[o];let r;r=y(n)?"default"in n?Ti(n.from||o,n.default,!0):Ti(n.from||o):Ti(n),Ut(r)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>r.value,set:e=>r.value=e}):t[o]=r}}function Xs(e,t,n){dn(f(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Ws(e,t,n,o){const r=o.includes(".")?nr(n,o):()=>n[o];if(_(e)){const n=t[e];v(n)&&Jo(r,n)}else if(v(e))Jo(r,e.bind(n));else if(y(e))if(f(e))e.forEach((e=>Ws(e,t,n,o)));else{const o=v(e.handler)?e.handler.bind(n):t[e.handler];v(o)&&Jo(r,o,e)}else 0}function Ks(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let c;return a?c=a:r.length||n||o?(c={},r.length&&r.forEach((e=>Zs(c,e,i,!0))),Zs(c,t,i)):$n("PRIVATE_APIS",e)?(c=l({},t),c.parent=e.parent&&e.parent.proxy,c.propsData=e.vnode.props):c=t,y(t)&&s.set(t,c),c}function Zs(e,t,n,o=!1){v(t)&&(t=t.options);const{mixins:r,extends:s}=t;s&&Zs(e,s,n,!0),r&&r.forEach((t=>Zs(e,t,n,!0)));for(const i in t)if(o&&"expose"===i);else{const o=Qs[i]||n&&n[i];e[i]=o?o(e[i],t[i]):t[i]}return e}const Qs={data:Js,props:ri,emits:ri,methods:oi,computed:oi,beforeCreate:ni,created:ni,beforeMount:ni,mounted:ni,beforeUpdate:ni,updated:ni,beforeDestroy:ni,beforeUnmount:ni,destroyed:ni,unmounted:ni,activated:ni,deactivated:ni,errorCaptured:ni,serverPrefetch:ni,components:oi,directives:oi,watch:si,provide:Js,inject:ei};function Js(e,t){return t?e?function(){return($n("OPTIONS_DATA_MERGE",null)?Rs:l)(v(e)?e.call(this,this):e,v(t)?t.call(this,this):t)}:t:e}function ei(e,t){return oi(ti(e),ti(t))}function ti(e){if(f(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function ni(e,t){return e?[...new Set([].concat(e,t))]:t}function oi(e,t){return e?l(Object.create(null),e,t):t}function ri(e,t){return e?f(e)&&f(t)?[...new Set([...e,...t])]:l(Object.create(null),Hs(e),Hs(null!=t?t:{})):t}function si(e,t){if(!e)return t;if(!t)return e;const n=l(Object.create(null),e);for(const o in t)n[o]=ni(e[o],t[o]);return n}function ii(e){e.optionMergeStrategies=new Proxy({},{get(e,t){return t in e?e[t]:t in Qs&&qn("CONFIG_OPTION_MERGE_STRATS",null)?Qs[t]:void 0}})}Qs.filters=oi;let ai,li,ci=!1;function ui(e,t){ai=t({});const n=li=function e(t={}){return o(t,e)};function o(t={},o){zn("GLOBAL_MOUNT",null);const{data:r}=t;r&&!v(r)&&qn("OPTIONS_DATA_FN",null)&&(t.data=()=>r);const s=e(t);o!==n&&mi(s,o);const i=s._createRoot(t);return t.el?i.$mount(t.el):i}n.version="2.6.14-compat:3.4.15",n.config=ai.config,n.use=(e,...t)=>(e&&v(e.install)?e.install(n,...t):v(e)&&e(n,...t),n),n.mixin=e=>(ai.mixin(e),n),n.component=(e,t)=>t?(ai.component(e,t),n):ai.component(e),n.directive=(e,t)=>t?(ai.directive(e,t),n):ai.directive(e),n.options={_base:n};let s=1;n.cid=s,n.nextTick=kn;const i=new WeakMap;function a(e={}){if(zn("GLOBAL_EXTEND",null),v(e)&&(e=e.options),i.has(e))return i.get(e);const t=this;function r(e){return o(e?Zs(l({},r.options),e,Qs):r.options,r)}r.super=t,r.prototype=Object.create(n.prototype),r.prototype.constructor=r;const c={};for(const n in t.options){const e=t.options[n];c[n]=f(e)?e.slice():y(e)?l(Object.create(null),e):e}return r.options=Zs(c,e,Qs),r.options._base=r,r.extend=a.bind(r),r.mixin=t.mixin,r.use=t.use,r.cid=++s,i.set(e,r),r}n.extend=a.bind(n),n.set=(e,t,n)=>{zn("GLOBAL_SET",null),e[t]=n},n.delete=(e,t)=>{zn("GLOBAL_DELETE",null),delete e[t]},n.observable=e=>(zn("GLOBAL_OBSERVABLE",null),St(e)),n.filter=(e,t)=>t?(ai.filter(e,t),n):ai.filter(e);const c={warn:r,extend:l,mergeOptions:(e,t,n)=>Zs(e,t,n?void 0:Qs),defineReactive:bi};return Object.defineProperty(n,"util",{get(){return zn("GLOBAL_PRIVATE_UTIL",null),c}}),n.configureCompat=Un,n}function di(e,t,n){fi(e,t),ii(e.config),ai&&(gi(e,t,n),pi(e),hi(e))}function fi(e,t){t.filters={},e.filter=(n,o)=>(zn("FILTERS",null),o?(t.filters[n]=o,e):t.filters[n])}function pi(e){Object.defineProperties(e,{prototype:{get(){return e.config.globalProperties}},nextTick:{value:kn},extend:{value:li.extend},set:{value:li.set},delete:{value:li.delete},observable:{value:li.observable},util:{get(){return li.util}}})}function hi(e){e._context.mixins=[...ai._context.mixins],["components","directives","filters"].forEach((t=>{e._context[t]=Object.create(ai._context[t])})),ci=!0;for(const t in ai.config){if("isNativeTag"===t)continue;if(bl()&&("isCustomElement"===t||"compilerOptions"===t))continue;const n=ai.config[t];e.config[t]=y(n)?Object.create(n):n,"ignoredElements"===t&&$n("CONFIG_IGNORED_ELEMENTS",null)&&!bl()&&f(n)&&(e.config.compilerOptions.isCustomElement=e=>n.some((t=>_(t)?t===e:t.test(e))))}ci=!1,mi(e,li)}function mi(e,t){const n=$n("GLOBAL_PROTOTYPE",null);n&&(e.config.globalProperties=Object.create(t.prototype));let o=!1;const r=Object.getOwnPropertyDescriptors(t.prototype);for(const s in r)"constructor"!==s&&(o=!0,n&&Object.defineProperty(e.config.globalProperties,s,r[s]))}function gi(e,t,n){let o=!1;e._createRoot=r=>{const s=e._component,i=za(s,r.propsData||null);i.appContext=t;const a=!v(s)&&!s.render&&!s.template,l=()=>{},c=rl(i,null,null);return a&&(c.render=l),ml(c),i.component=c,i.isCompatRoot=!0,c.ctx._compat_mount=t=>{if(o)return;let r,u;if("string"===typeof t){const e=document.querySelector(t);if(!e)return;r=e}else r=t||document.createElement("div");return r instanceof SVGElement?u="svg":"function"===typeof MathMLElement&&r instanceof MathMLElement&&(u="mathml"),a&&c.render===l&&(c.render=null,s.template=r.innerHTML,yl(c,!1,!0)),r.innerHTML="",n(i,r,u),r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o=!0,e._container=r,r.__vue_app__=e,c.proxy},c.ctx._compat_destroy=()=>{if(o)n(null,e._container),delete e._container.__vue_app__;else{const{bum:e,scope:t,um:n}=c;e&&j(e),$n("INSTANCE_EVENT_HOOKS",c)&&c.emit("hook:beforeDestroy"),t&&t.stop(),n&&j(n),$n("INSTANCE_EVENT_HOOKS",c)&&c.emit("hook:destroyed")}},c.proxy}}const vi=["push","pop","shift","unshift","splice","sort","reverse"],_i=new WeakSet;function bi(e,t,n){if(y(n)&&!Rt(n)&&!_i.has(n)){const e=St(n);f(n)?vi.forEach((t=>{n[t]=(...n)=>{Array.prototype[t].call(e,...n)}})):Object.keys(n).forEach((e=>{try{yi(n,e,n[e])}catch(t){}}))}const o=e.$;o&&e===o.proxy?(yi(o.ctx,t,n),o.accessCache=Object.create(null)):Rt(e)?e[t]=n:yi(e,t,n)}function yi(e,t,n){n=y(n)?St(n):n,Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get(){return Le(e,"get",t),n},set(o){n=y(o)?St(o):o,je(e,"set",t,o)}})}function xi(){return{app:null,config:{isNativeTag:s,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let wi=0;function ki(e,t){return function(n,o=null){v(n)||(n=l({},n)),null==o||y(o)||(o=null);const r=xi(),s=new WeakSet;let i=!1;const a=r.app={_uid:wi++,_component:n,_props:o,_container:null,_context:r,_instance:null,version:Il,get config(){return r.config},set config(e){0},use(e,...t){return s.has(e)||(e&&v(e.install)?(s.add(e),e.install(a,...t)):v(e)&&(s.add(e),e(a,...t))),a},mixin(e){return r.mixins.includes(e)||r.mixins.push(e),a},component(e,t){return t?(r.components[e]=t,a):r.components[e]},directive(e,t){return t?(r.directives[e]=t,a):r.directives[e]},mount(s,l,c){if(!i){0;const u=za(n,o);return u.appContext=r,!0===c?c="svg":!1===c&&(c=void 0),l&&t?t(u,s):e(u,s,c),i=!0,a._container=s,s.__vue_app__=a,kl(u.component)||u.component.proxy}},unmount(){i&&(e(null,a._container),delete a._container.__vue_app__)},provide(e,t){return r.provides[e]=t,a},runWithContext(e){Si=a;try{return e()}finally{Si=null}}};return di(a,r,e),a}}let Si=null;function Ei(e,t){if(sl){let n=sl.provides;const o=sl.parent&&sl.parent.provides;o===n&&(n=sl.provides=Object.create(o)),n[e]=t}else 0}function Ti(e,t,n=!1){const o=sl||io;if(o||Si){const r=o?null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:Si._context.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&v(t)?t.call(o&&o.proxy):t}else 0}function Mi(){return!!(sl||io||Si)}function Ai(e,t,n){return new Proxy({},{get(n,o){if("$options"===o)return Ks(e);if(o in t)return t[o];const r=e.type.inject;if(r)if(f(r)){if(r.includes(o))return Ti(o)}else if(o in r)return Ti(o)}})}function Ri(e,t){return"is"===e||(!("class"!==e&&"style"!==e||!$n("INSTANCE_ATTRS_CLASS_STYLE",t))||(!(!i(e)||!$n("INSTANCE_LISTENERS",t))||!(!e.startsWith("routerView")&&"registerRouteInstance"!==e)))}function Ci(e,t,n,o=!1){const r={},s={};N(s,Ha,1),e.propsDefaults=Object.create(null),Ii(e,t,r,s);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=o?r:Et(r):e.type.props?e.props=r:e.props=s,e.attrs=s}function Oi(e,t,n,o){const{props:r,attrs:s,vnode:{patchFlag:a}}=e,l=Bt(r),[c]=e.propsOptions;let u=!1;if(!(o||a>0)||16&a){let o;Ii(e,t,r,s)&&(u=!0);for(const s in l)t&&(d(t,s)||(o=I(s))!==s&&d(t,o))||(c?!n||void 0===n[s]&&void 0===n[o]||(r[s]=Bi(c,l,s,void 0,e,!0)):delete r[s]);if(s!==l)for(const e in s)t&&(d(t,e)||d(t,e+"Native"))||(delete s[e],u=!0)}else if(8&a){const n=e.vnode.dynamicProps;for(let o=0;o<n.length;o++){let a=n[o];if(so(e.emitsOptions,a))continue;const f=t[a];if(c)if(d(s,a))f!==s[a]&&(s[a]=f,u=!0);else{const t=C(a);r[t]=Bi(c,l,t,f,e,!1)}else{if(i(a)&&a.endsWith("Native"))a=a.slice(0,-6);else if(Ri(a,e))continue;f!==s[a]&&(s[a]=f,u=!0)}}}u&&je(e,"set","$attrs")}function Ii(e,n,o,r){const[s,a]=e.propsOptions;let l,c=!1;if(n)for(let t in n){if(M(t))continue;if(t.startsWith("onHook:")&&qn("INSTANCE_EVENT_HOOKS",e,t.slice(2).toLowerCase()),"inline-template"===t)continue;const u=n[t];let f;if(s&&d(s,f=C(t)))a&&a.includes(f)?(l||(l={}))[f]=u:o[f]=u;else if(!so(e.emitsOptions,t)){if(i(t)&&t.endsWith("Native"))t=t.slice(0,-6);else if(Ri(t,e))continue;t in r&&u===r[t]||(r[t]=u,c=!0)}}if(a){const n=Bt(o),r=l||t;for(let t=0;t<a.length;t++){const i=a[t];o[i]=Bi(s,n,i,r[i],e,!d(r,i))}}return c}function Bi(e,t,n,o,r,s){const i=e[n];if(null!=i){const e=d(i,"default");if(e&&void 0===o){const e=i.default;if(i.type!==Function&&!i.skipFactory&&v(e)){const{propsDefaults:s}=r;if(n in s)o=s[n];else{const i=cl(r);o=s[n]=e.call($n("PROPS_DEFAULT_THIS",r)?Ai(r,t,n):null,t),i()}}else o=e}i[0]&&(s&&!e?o=!1:!i[1]||""!==o&&o!==I(n)||(o=!0))}return o}function Pi(e,n,r=!1){const s=n.propsCache,i=s.get(e);if(i)return i;const a=e.props,c={},u=[];let p=!1;if(!v(e)){const t=e=>{v(e)&&(e=e.options),p=!0;const[t,o]=Pi(e,n,!0);l(c,t),o&&u.push(...o)};!r&&n.mixins.length&&n.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!a&&!p)return y(e)&&s.set(e,o),o;if(f(a))for(let o=0;o<a.length;o++){0;const e=C(a[o]);Li(e)&&(c[e]=t)}else if(a){0;for(const e in a){const t=C(e);if(Li(t)){const n=a[e],o=c[t]=f(n)||v(n)?{type:n}:l({},n);if(o){const e=Fi(Boolean,o.type),n=Fi(String,o.type);o[0]=e>-1,o[1]=n<0||e<n,(e>-1||d(o,"default"))&&u.push(t)}}}}const h=[c,u];return y(e)&&s.set(e,h),h}function Li(e){return"$"!==e[0]}function ji(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function Ni(e,t){return ji(e)===ji(t)}function Fi(e,t){return f(t)?t.findIndex((t=>Ni(t,e))):v(t)&&Ni(t,e)?0:-1}const Di=e=>"_"===e[0]||"$stable"===e,Hi=e=>f(e)?e.map(Za):[Za(e)],Ui=(e,t,n)=>{if(t._n)return t;const o=po(((...e)=>Hi(t(...e))),n);return o._c=!1,o},Vi=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Di(r))continue;const n=e[r];if(v(n))t[r]=Ui(r,n,o);else if(null!=n){0;const e=Hi(n);t[r]=()=>e}}},$i=(e,t)=>{const n=Hi(t);e.slots.default=()=>n},zi=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=Bt(t),N(t,"_",n)):Vi(t,e.slots={},e)}else e.slots={},t&&$i(e,t);N(e.slots,Ha,1)},qi=(e,n,o)=>{const{vnode:r,slots:s}=e;let i=!0,a=t;if(32&r.shapeFlag){const t=n._;t?o&&1===t?i=!1:(l(s,n),o||1!==t||delete s._):(i=!n.$stable,Vi(n,s,e)),a=n}else n&&($i(e,n),a={default:1});if(i)for(const t in s)Di(t)||null!=a[t]||delete s[t]};function Yi(e,n,o,r,s=!1){if(f(e))return void e.forEach(((e,t)=>Yi(e,n&&(f(n)?n[t]:n),o,r,s)));if(yr(r)&&!s)return;const i=4&r.shapeFlag?kl(r.component)||r.component.proxy:r.el,a=s?null:i,{i:l,r:u}=e;const p=n&&n.r,h=l.refs===t?l.refs={}:l.refs,m=l.setupState;if(null!=p&&p!==u&&(_(p)?(h[p]=null,d(m,p)&&(m[p]=null)):Ut(p)&&(p.value=null)),v(u))un(u,l,12,[a,h]);else{const t=_(u),n=Ut(u),r=e.f;if(t||n){const l=()=>{if(r){const n=t?d(m,u)?m[u]:h[u]:u.value;s?f(n)&&c(n,i):f(n)?n.includes(i)||n.push(i):t?(h[u]=[i],d(m,u)&&(m[u]=h[u])):(u.value=[i],e.k&&(h[e.k]=u.value))}else t?(h[u]=a,d(m,u)&&(m[u]=a)):n&&(u.value=a,e.k&&(h[e.k]=a))};s||r?l():(l.id=-1,ea(l,o))}else 0}}let Gi=!1;const Xi=e=>e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName,Wi=e=>e.namespaceURI.includes("MathML"),Ki=e=>Xi(e)?"svg":Wi(e)?"mathml":void 0,Zi=e=>8===e.nodeType;function Qi(e){const{mt:t,p:n,o:{patchProp:o,createText:r,nextSibling:s,parentNode:a,remove:l,insert:c,createComment:u}}=e,d=(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),Cn(),void(t._vnode=e);Gi=!1,f(t.firstChild,e,null,null,null),Cn(),t._vnode=e,Gi&&console.error("Hydration completed but contains mismatches.")},f=(n,o,i,l,u,d=!1)=>{const y=Zi(n)&&"["===n.data,x=()=>g(n,o,i,l,u,y),{type:w,ref:k,shapeFlag:S,patchFlag:E}=o;let T=n.nodeType;o.el=n,-2===E&&(d=!1,o.dynamicChildren=null);let M=null;switch(w){case Sa:3!==T?""===o.children?(c(o.el=r(""),a(n),n),M=n):M=x():(n.data!==o.children&&(Gi=!0,n.data=o.children),M=s(n));break;case Ea:b(n)?(M=s(n),_(o.el=n.content.firstChild,n,i)):M=8!==T||y?x():s(n);break;case Ta:if(y&&(n=s(n),T=n.nodeType),1===T||3===T){M=n;const e=!o.children.length;for(let t=0;t<o.staticCount;t++)e&&(o.children+=1===M.nodeType?M.outerHTML:M.data),t===o.staticCount-1&&(o.anchor=M),M=s(M);return y?s(M):M}x();break;case ka:M=y?m(n,o,i,l,u,d):x();break;default:if(1&S)M=1===T&&o.type.toLowerCase()===n.tagName.toLowerCase()||b(n)?p(n,o,i,l,u,d):x();else if(6&S){o.slotScopeIds=u;const e=a(n);if(M=y?v(n):Zi(n)&&"teleport start"===n.data?v(n,n.data,"teleport end"):s(n),t(o,e,null,i,l,Ki(e),d),yr(o)){let t;y?(t=za(ka),t.anchor=M?M.previousSibling:e.lastChild):t=3===n.nodeType?Xa(""):za("div"),t.el=n,o.component.subTree=t}}else 64&S?M=8!==T?x():o.type.hydrate(n,o,i,l,u,d,e,h):128&S&&(M=o.type.hydrate(n,o,i,l,Ki(a(n)),u,d,e,f))}return null!=k&&Yi(k,null,l,o),M},p=(e,t,n,r,s,a)=>{a=a||!!t.dynamicChildren;const{type:c,props:u,patchFlag:d,shapeFlag:f,dirs:p,transition:m}=t,g="input"===c||"option"===c;if(g||-1!==d){p&&sr(t,null,n,"created");let c,v=!1;if(b(e)){v=ia(r,m)&&n&&n.vnode.props&&n.vnode.props.appear;const o=e.content.firstChild;v&&m.beforeEnter(o),_(o,e,n),t.el=e=o}if(16&f&&(!u||!u.innerHTML&&!u.textContent)){let o=h(e.firstChild,t,e,n,r,s,a);while(o){Gi=!0;const e=o;o=o.nextSibling,l(e)}}else 8&f&&e.textContent!==t.children&&(Gi=!0,e.textContent=t.children);if(u)if(g||!a||48&d)for(const t in u)(g&&(t.endsWith("value")||"indeterminate"===t)||i(t)&&!M(t)||"."===t[0])&&o(e,t,null,u[t],void 0,void 0,n);else u.onClick&&o(e,"onClick",null,u.onClick,void 0,void 0,n);(c=u&&u.onVnodeBeforeMount)&&tl(c,n,t),p&&sr(t,null,n,"beforeMount"),((c=u&&u.onVnodeMounted)||p||v)&&Vo((()=>{c&&tl(c,n,t),v&&m.enter(e),p&&sr(t,null,n,"mounted")}),r)}return e.nextSibling},h=(e,t,o,r,s,i,a)=>{a=a||!!t.dynamicChildren;const l=t.children,c=l.length;for(let u=0;u<c;u++){const t=a?l[u]:l[u]=Za(l[u]);if(e)e=f(e,t,r,s,i,a);else{if(t.type===Sa&&!t.children)continue;Gi=!0,n(null,t,o,null,r,s,Ki(o),i)}}return e},m=(e,t,n,o,r,i)=>{const{slotScopeIds:l}=t;l&&(r=r?r.concat(l):l);const d=a(e),f=h(s(e),t,d,n,o,r,i);return f&&Zi(f)&&"]"===f.data?s(t.anchor=f):(Gi=!0,c(t.anchor=u("]"),d,f),f)},g=(e,t,o,r,i,c)=>{if(Gi=!0,t.el=null,c){const t=v(e);while(1){const n=s(e);if(!n||n===t)break;l(n)}}const u=s(e),d=a(e);return l(e),n(null,t,d,u,o,r,Ki(d),i),u},v=(e,t="[",n="]")=>{let o=0;while(e)if(e=s(e),e&&Zi(e)&&(e.data===t&&o++,e.data===n)){if(0===o)return s(e);o--}return e},_=(e,t,n)=>{const o=t.parentNode;o&&o.replaceChild(e,t);let r=n;while(r)r.vnode.el===t&&(r.vnode.el=r.subTree.el=e),r=r.parent},b=e=>1===e.nodeType&&"template"===e.tagName.toLowerCase();return[d,f]}function Ji(){}const ea=Vo;function ta(e){return oa(e)}function na(e){return oa(e,Qi)}function oa(e,n){Ji();const s=U();s.__VUE__=!0;const{insert:i,remove:a,patchProp:l,createElement:c,createText:u,createComment:d,setText:f,setElementText:p,parentNode:h,nextSibling:m,setScopeId:g=r,insertStaticContent:v}=e,_=(e,t,n,o=null,r=null,s=null,i=void 0,a=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!Fa(e,t)&&(o=W(e),z(e,r,s,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:d}=t;switch(c){case Sa:b(e,t,n,o);break;case Ea:y(e,t,n,o);break;case Ta:null==e&&x(t,n,o,i);break;case ka:I(e,t,n,o,r,s,i,a,l);break;default:1&d?S(e,t,n,o,r,s,i,a,l):6&d?B(e,t,n,o,r,s,i,a,l):(64&d||128&d)&&c.process(e,t,n,o,r,s,i,a,l,Q)}null!=u&&r&&Yi(u,e&&e.ref,s,t||e,!t)},b=(e,t,n,o)=>{if(null==e)i(t.el=u(t.children),n,o);else{const n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},y=(e,t,n,o)=>{null==e?i(t.el=d(t.children||""),n,o):t.el=e.el},x=(e,t,n,o)=>{[e.el,e.anchor]=v(e.children,t,n,o,e.el,e.anchor)},w=({el:e,anchor:t},n,o)=>{let r;while(e&&e!==t)r=m(e),i(e,n,o),e=r;i(t,n,o)},k=({el:e,anchor:t})=>{let n;while(e&&e!==t)n=m(e),a(e),e=n;a(t)},S=(e,t,n,o,r,s,i,a,l)=>{"svg"===t.type?i="svg":"math"===t.type&&(i="mathml"),null==e?E(t,n,o,r,s,i,a,l):R(e,t,r,s,i,a,l)},E=(e,t,n,o,r,s,a,u)=>{let d,f;const{props:h,shapeFlag:m,transition:g,dirs:v}=e;if(d=e.el=c(e.type,s,h&&h.is,h),8&m?p(d,e.children):16&m&&A(e.children,d,null,o,r,ra(e,s),a,u),v&&sr(e,null,o,"created"),T(d,e,e.scopeId,a,o),h){for(const t in h)"value"===t||M(t)||l(d,t,null,h[t],s,e.children,o,r,X);"value"in h&&l(d,"value",null,h.value,s),(f=h.onVnodeBeforeMount)&&tl(f,o,e)}v&&sr(e,null,o,"beforeMount");const _=ia(r,g);_&&g.beforeEnter(d),i(d,t,n),((f=h&&h.onVnodeMounted)||_||v)&&ea((()=>{f&&tl(f,o,e),_&&g.enter(d),v&&sr(e,null,o,"mounted")}),r)},T=(e,t,n,o,r)=>{if(n&&g(e,n),o)for(let s=0;s<o.length;s++)g(e,o[s]);if(r){let n=r.subTree;if(t===n){const t=r.vnode;T(e,t,t.scopeId,t.slotScopeIds,r.parent)}}},A=(e,t,n,o,r,s,i,a,l=0)=>{for(let c=l;c<e.length;c++){const l=e[c]=a?Qa(e[c]):Za(e[c]);_(null,l,t,n,o,r,s,i,a)}},R=(e,n,o,r,s,i,a)=>{const c=n.el=e.el;let{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=16&e.patchFlag;const h=e.props||t,m=n.props||t;let g;if(o&&sa(o,!1),(g=m.onVnodeBeforeUpdate)&&tl(g,o,n,e),f&&sr(n,e,o,"beforeUpdate"),o&&sa(o,!0),d?C(e.dynamicChildren,d,c,o,r,ra(n,s),i):a||D(e,n,c,null,o,r,ra(n,s),i,!1),u>0){if(16&u)O(c,n,h,m,o,r,s);else if(2&u&&h.class!==m.class&&l(c,"class",null,m.class,s),4&u&&l(c,"style",h.style,m.style,s),8&u){const t=n.dynamicProps;for(let n=0;n<t.length;n++){const i=t[n],a=h[i],u=m[i];u===a&&"value"!==i||l(c,i,a,u,s,e.children,o,r,X)}}1&u&&e.children!==n.children&&p(c,n.children)}else a||null!=d||O(c,n,h,m,o,r,s);((g=m.onVnodeUpdated)||f)&&ea((()=>{g&&tl(g,o,n,e),f&&sr(n,e,o,"updated")}),r)},C=(e,t,n,o,r,s,i)=>{for(let a=0;a<t.length;a++){const l=e[a],c=t[a],u=l.el&&(l.type===ka||!Fa(l,c)||70&l.shapeFlag)?h(l.el):n;_(l,c,u,null,o,r,s,i,!0)}},O=(e,n,o,r,s,i,a)=>{if(o!==r){if(o!==t)for(const t in o)M(t)||t in r||l(e,t,o[t],null,a,n.children,s,i,X);for(const t in r){if(M(t))continue;const c=r[t],u=o[t];c!==u&&"value"!==t&&l(e,t,u,c,a,n.children,s,i,X)}"value"in r&&l(e,"value",o.value,r.value,a)}},I=(e,t,n,o,r,s,a,l,c)=>{const d=t.el=e?e.el:u(""),f=t.anchor=e?e.anchor:u("");let{patchFlag:p,dynamicChildren:h,slotScopeIds:m}=t;m&&(l=l?l.concat(m):m),null==e?(i(d,n,o),i(f,n,o),A(t.children||[],n,f,r,s,a,l,c)):p>0&&64&p&&h&&e.dynamicChildren?(C(e.dynamicChildren,h,n,r,s,a,l),(null!=t.key||r&&t===r.subTree)&&aa(e,t,!0)):D(e,t,n,f,r,s,a,l,c)},B=(e,t,n,o,r,s,i,a,l)=>{t.slotScopeIds=a,null==e?512&t.shapeFlag?r.ctx.activate(t,n,o,i,l):P(t,n,o,r,s,i,l):L(e,t,l)},P=(e,t,n,o,r,s,i)=>{const a=e.isCompatRoot&&e.component,l=a||(e.component=rl(e,o,r));if(kr(e)&&(l.ctx.renderer=Q),a||ml(l),l.asyncDep){if(r&&r.registerDep(l,N),!e.el){const e=l.subTree=za(Ea);y(null,e,t,n)}}else N(l,e,t,n,r,s,i)},L=(e,t,n)=>{const o=t.component=e.component;if(_o(e,t,n)){if(o.asyncDep&&!o.asyncResolved)return void F(o,t,n);o.next=t,Mn(o.update),o.effect.dirty=!0,o.update()}else t.el=e.el,o.vnode=t},N=(e,t,n,o,s,i,a)=>{const l=()=>{if(e.isMounted){let{next:t,bu:n,u:o,parent:r,vnode:c}=e;{const n=ca(e);if(n)return t&&(t.el=c.el,F(e,t,a)),void n.asyncDep.then((()=>{e.isUnmounted||l()}))}let u,d=t;0,sa(e,!1),t?(t.el=c.el,F(e,t,a)):t=c,n&&j(n),(u=t.props&&t.props.onVnodeBeforeUpdate)&&tl(u,r,t,c),$n("INSTANCE_EVENT_HOOKS",e)&&e.emit("hook:beforeUpdate"),sa(e,!0);const f=ho(e);0;const p=e.subTree;e.subTree=f,_(p,f,h(p.el),W(p),e,s,i),t.el=f.el,null===d&&yo(e,f.el),o&&ea(o,s),(u=t.props&&t.props.onVnodeUpdated)&&ea((()=>tl(u,r,t,c)),s),$n("INSTANCE_EVENT_HOOKS",e)&&ea((()=>e.emit("hook:updated")),s)}else{let r;const{el:a,props:l}=t,{bm:c,m:u,parent:d}=e,f=yr(t);if(sa(e,!1),c&&j(c),!f&&(r=l&&l.onVnodeBeforeMount)&&tl(r,d,t),$n("INSTANCE_EVENT_HOOKS",e)&&e.emit("hook:beforeMount"),sa(e,!0),a&&ee){const n=()=>{e.subTree=ho(e),ee(a,e.subTree,e,s,null)};f?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const r=e.subTree=ho(e);0,_(null,r,n,o,e,s,i),t.el=r.el}if(u&&ea(u,s),!f&&(r=l&&l.onVnodeMounted)){const e=t;ea((()=>tl(r,d,e)),s)}$n("INSTANCE_EVENT_HOOKS",e)&&ea((()=>e.emit("hook:mounted")),s),(256&t.shapeFlag||d&&yr(d.vnode)&&256&d.vnode.shapeFlag)&&(e.a&&ea(e.a,s),$n("INSTANCE_EVENT_HOOKS",e)&&ea((()=>e.emit("hook:activated")),s)),e.isMounted=!0,t=n=o=null}},c=e.effect=new pe(l,r,(()=>En(u)),e.scope),u=e.update=()=>{c.dirty&&c.run()};u.id=e.uid,sa(e,!0),u()},F=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,Oi(e,t.props,o,n),qi(e,t.children,n),ke(),Rn(e),Se()},D=(e,t,n,o,r,s,i,a,l=!1)=>{const c=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:h}=t;if(f>0){if(128&f)return void V(c,d,n,o,r,s,i,a,l);if(256&f)return void H(c,d,n,o,r,s,i,a,l)}8&h?(16&u&&X(c,r,s),d!==c&&p(n,d)):16&u?16&h?V(c,d,n,o,r,s,i,a,l):X(c,r,s,!0):(8&u&&p(n,""),16&h&&A(d,n,o,r,s,i,a,l))},H=(e,t,n,r,s,i,a,l,c)=>{e=e||o,t=t||o;const u=e.length,d=t.length,f=Math.min(u,d);let p;for(p=0;p<f;p++){const o=t[p]=c?Qa(t[p]):Za(t[p]);_(e[p],o,n,null,s,i,a,l,c)}u>d?X(e,s,i,!0,!1,f):A(t,n,r,s,i,a,l,c,f)},V=(e,t,n,r,s,i,a,l,c)=>{let u=0;const d=t.length;let f=e.length-1,p=d-1;while(u<=f&&u<=p){const o=e[u],r=t[u]=c?Qa(t[u]):Za(t[u]);if(!Fa(o,r))break;_(o,r,n,null,s,i,a,l,c),u++}while(u<=f&&u<=p){const o=e[f],r=t[p]=c?Qa(t[p]):Za(t[p]);if(!Fa(o,r))break;_(o,r,n,null,s,i,a,l,c),f--,p--}if(u>f){if(u<=p){const e=p+1,o=e<d?t[e].el:r;while(u<=p)_(null,t[u]=c?Qa(t[u]):Za(t[u]),n,o,s,i,a,l,c),u++}}else if(u>p)while(u<=f)z(e[u],s,i,!0),u++;else{const h=u,m=u,g=new Map;for(u=m;u<=p;u++){const e=t[u]=c?Qa(t[u]):Za(t[u]);null!=e.key&&g.set(e.key,u)}let v,b=0;const y=p-m+1;let x=!1,w=0;const k=new Array(y);for(u=0;u<y;u++)k[u]=0;for(u=h;u<=f;u++){const o=e[u];if(b>=y){z(o,s,i,!0);continue}let r;if(null!=o.key)r=g.get(o.key);else for(v=m;v<=p;v++)if(0===k[v-m]&&Fa(o,t[v])){r=v;break}void 0===r?z(o,s,i,!0):(k[r-m]=u+1,r>=w?w=r:x=!0,_(o,t[r],n,null,s,i,a,l,c),b++)}const S=x?la(k):o;for(v=S.length-1,u=y-1;u>=0;u--){const e=m+u,o=t[e],f=e+1<d?t[e+1].el:r;0===k[u]?_(null,o,n,f,s,i,a,l,c):x&&(v<0||u!==S[v]?$(o,n,f,2):v--)}}},$=(e,t,n,o,r=null)=>{const{el:s,type:a,transition:l,children:c,shapeFlag:u}=e;if(6&u)return void $(e.component.subTree,t,n,o);if(128&u)return void e.suspense.move(t,n,o);if(64&u)return void a.move(e,t,n,Q);if(a===ka){i(s,t,n);for(let e=0;e<c.length;e++)$(c[e],t,n,o);return void i(e.anchor,t,n)}if(a===Ta)return void w(e,t,n);const d=2!==o&&1&u&&l;if(d)if(0===o)l.beforeEnter(s),i(s,t,n),ea((()=>l.enter(s)),r);else{const{leave:e,delayLeave:o,afterLeave:r}=l,a=()=>i(s,t,n),c=()=>{e(s,(()=>{a(),r&&r()}))};o?o(s,a,c):c()}else i(s,t,n)},z=(e,t,n,o=!1,r=!1)=>{const{type:s,props:i,ref:a,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:d,dirs:f}=e;if(null!=a&&Yi(a,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&f,h=!yr(e);let m;if(h&&(m=i&&i.onVnodeBeforeUnmount)&&tl(m,t,e),6&u)G(e.component,n,o);else{if(128&u)return void e.suspense.unmount(n,o);p&&sr(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,r,Q,o):c&&(s!==ka||d>0&&64&d)?X(c,t,n,!1,!0):(s===ka&&384&d||!r&&16&u)&&X(l,t,n),o&&q(e)}(h&&(m=i&&i.onVnodeUnmounted)||p)&&ea((()=>{m&&tl(m,t,e),p&&sr(e,null,t,"unmounted")}),n)},q=e=>{const{type:t,el:n,anchor:o,transition:r}=e;if(t===ka)return void Y(n,o);if(t===Ta)return void k(e);const s=()=>{a(n),r&&!r.persisted&&r.afterLeave&&r.afterLeave()};if(1&e.shapeFlag&&r&&!r.persisted){const{leave:t,delayLeave:o}=r,i=()=>t(n,s);o?o(e.el,s,i):i()}else s()},Y=(e,t)=>{let n;while(e!==t)n=m(e),a(e),e=n;a(t)},G=(e,t,n)=>{const{bum:o,scope:r,update:s,subTree:i,um:a}=e;o&&j(o),$n("INSTANCE_EVENT_HOOKS",e)&&e.emit("hook:beforeDestroy"),r.stop(),s&&(s.active=!1,z(i,e,t,n)),a&&ea(a,t),$n("INSTANCE_EVENT_HOOKS",e)&&ea((()=>e.emit("hook:destroyed")),t),ea((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},X=(e,t,n,o=!1,r=!1,s=0)=>{for(let i=s;i<e.length;i++)z(e[i],t,n,o,r)},W=e=>6&e.shapeFlag?W(e.component.subTree):128&e.shapeFlag?e.suspense.next():m(e.anchor||e.el);let K=!1;const Z=(e,t,n)=>{null==e?t._vnode&&z(t._vnode,null,null,!0):_(t._vnode||null,e,t,null,null,null,n),K||(K=!0,Rn(),Cn(),K=!1),t._vnode=e},Q={p:_,um:z,m:$,r:q,mt:P,mc:A,pc:D,pbc:C,n:W,o:e};let J,ee;return n&&([J,ee]=n(Q)),{render:Z,hydrate:J,createApp:ki(Z,J)}}function ra({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function sa({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ia(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function aa(e,t,n=!1){const o=e.children,r=t.children;if(f(o)&&f(r))for(let s=0;s<o.length;s++){const e=o[s];let t=r[s];1&t.shapeFlag&&!t.dynamicChildren&&((t.patchFlag<=0||32===t.patchFlag)&&(t=r[s]=Qa(r[s]),t.el=e.el),n||aa(e,t)),t.type===Sa&&(t.el=e.el)}}function la(e){const t=e.slice(),n=[0];let o,r,s,i,a;const l=e.length;for(o=0;o<l;o++){const l=e[o];if(0!==l){if(r=n[n.length-1],e[r]<l){t[o]=r,n.push(o);continue}s=0,i=n.length-1;while(s<i)a=s+i>>1,e[n[a]]<l?s=a+1:i=a;l<e[n[s]]&&(s>0&&(t[o]=n[s-1]),n[s]=o)}}s=n.length,i=n[s-1];while(s-- >0)n[s]=i,i=t[i];return n}function ca(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ca(t)}const ua=e=>e.__isTeleport,da=e=>e&&(e.disabled||""===e.disabled),fa=e=>"undefined"!==typeof SVGElement&&e instanceof SVGElement,pa=e=>"function"===typeof MathMLElement&&e instanceof MathMLElement,ha=(e,t)=>{const n=e&&e.to;if(_(n)){if(t){const e=t(n);return e}return null}return n},ma={name:"Teleport",__isTeleport:!0,process(e,t,n,o,r,s,i,a,l,c){const{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:h,createText:m,createComment:g}}=c,v=da(t.props);let{shapeFlag:_,children:b,dynamicChildren:y}=t;if(null==e){const e=t.el=m(""),c=t.anchor=m("");p(e,n,o),p(c,n,o);const d=t.target=ha(t.props,h),f=t.targetAnchor=m("");d&&(p(f,d),"svg"===i||fa(d)?i="svg":("mathml"===i||pa(d))&&(i="mathml"));const g=(e,t)=>{16&_&&u(b,e,t,r,s,i,a,l)};v?g(n,c):d&&g(d,f)}else{t.el=e.el;const o=t.anchor=e.anchor,u=t.target=e.target,p=t.targetAnchor=e.targetAnchor,m=da(e.props),g=m?n:u,_=m?o:p;if("svg"===i||fa(u)?i="svg":("mathml"===i||pa(u))&&(i="mathml"),y?(f(e.dynamicChildren,y,g,r,s,i,a),aa(e,t,!0)):l||d(e,t,g,_,r,s,i,a,!1),v)m?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ga(t,n,o,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=ha(t.props,h);e&&ga(t,e,null,c,0)}else m&&ga(t,u,p,c,1)}ba(t)},remove(e,t,n,o,{um:r,o:{remove:s}},i){const{shapeFlag:a,children:l,anchor:c,targetAnchor:u,target:d,props:f}=e;if(d&&s(u),i&&s(c),16&a){const e=i||!da(f);for(let o=0;o<l.length;o++){const s=l[o];r(s,t,n,e,!!s.dynamicChildren)}}},move:ga,hydrate:va};function ga(e,t,n,{o:{insert:o},m:r},s=2){0===s&&o(e.targetAnchor,t,n);const{el:i,anchor:a,shapeFlag:l,children:c,props:u}=e,d=2===s;if(d&&o(i,t,n),(!d||da(u))&&16&l)for(let f=0;f<c.length;f++)r(c[f],t,n,2);d&&o(a,t,n)}function va(e,t,n,o,r,s,{o:{nextSibling:i,parentNode:a,querySelector:l}},c){const u=t.target=ha(t.props,l);if(u){const l=u._lpa||u.firstChild;if(16&t.shapeFlag)if(da(t.props))t.anchor=c(i(e),t,a(e),n,o,r,s),t.targetAnchor=l;else{t.anchor=i(e);let a=l;while(a)if(a=i(a),a&&8===a.nodeType&&"teleport anchor"===a.data){t.targetAnchor=a,u._lpa=t.targetAnchor&&i(t.targetAnchor);break}c(l,t,u,n,o,r,s)}ba(t)}return t.anchor&&i(t.anchor)}const _a=ma;function ba(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;while(n&&n!==e.targetAnchor)1===n.nodeType&&n.setAttribute("data-v-owner",t.uid),n=n.nextSibling;t.ut()}}const ya=new WeakMap;function xa(e){if(ya.has(e))return ya.get(e);let t,n;const o=new Promise(((e,o)=>{t=e,n=o})),r=e(t,n);let s;return s=x(r)?xr((()=>r)):!y(r)||Na(r)||f(r)?null==r?xr((()=>o)):e:xr({loader:()=>r.component,loadingComponent:r.loading,errorComponent:r.error,delay:r.delay,timeout:r.timeout}),ya.set(e,s),s}function wa(e,t){return e.__isBuiltIn?e:(v(e)&&e.cid&&(e=e.options),v(e)&&Yn("COMPONENT_ASYNC",t,e)?xa(e):y(e)&&e.functional&&qn("COMPONENT_FUNCTIONAL",t,e)?rs(e):e)}const ka=Symbol.for("v-fgt"),Sa=Symbol.for("v-txt"),Ea=Symbol.for("v-cmt"),Ta=Symbol.for("v-stc"),Ma=[];let Aa=null;function Ra(e=!1){Ma.push(Aa=e?null:[])}function Ca(){Ma.pop(),Aa=Ma[Ma.length-1]||null}let Oa,Ia=1;function Ba(e){Ia+=e}function Pa(e){return e.dynamicChildren=Ia>0?Aa||o:null,Ca(),Ia>0&&Aa&&Aa.push(e),e}function La(e,t,n,o,r,s){return Pa($a(e,t,n,o,r,s,!0))}function ja(e,t,n,o,r){return Pa(za(e,t,n,o,r,!0))}function Na(e){return!!e&&!0===e.__v_isVNode}function Fa(e,t){return e.type===t.type&&e.key===t.key}function Da(e){Oa=e}const Ha="__vInternal",Ua=({key:e})=>null!=e?e:null,Va=({ref:e,ref_key:t,ref_for:n})=>("number"===typeof e&&(e=""+e),null!=e?_(e)||Ut(e)||v(e)?{i:io,r:e,k:t,f:!!n}:e:null);function $a(e,t=null,n=null,o=0,r=null,s=(e===ka?0:1),i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ua(t),ref:t&&Va(t),scopeId:ao,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:io};return a?(Ja(l,n),128&s&&e.normalize(l)):n&&(l.shapeFlag|=_(n)?8:16),Ia>0&&!i&&Aa&&(l.patchFlag>0||6&s)&&32!==l.patchFlag&&Aa.push(l),eo(l),ts(l),l}const za=qa;function qa(e,t=null,n=null,o=0,r=null,s=!1){if(e&&e!==Eo||(e=Ea),Na(e)){const o=Ga(e,t,!0);return n&&Ja(o,n),Ia>0&&!s&&Aa&&(6&o.shapeFlag?Aa[Aa.indexOf(e)]=o:Aa.push(o)),o.patchFlag|=-2,o}if(El(e)&&(e=e.__vccOpts),e=wa(e,io),t){t=Ya(t);let{class:e,style:n}=t;e&&!_(e)&&(t.class=W(e)),y(n)&&(It(n)&&!f(n)&&(n=l({},n)),t.style=z(n))}const i=_(e)?1:Oo(e)?128:ua(e)?64:y(e)?4:v(e)?2:0;return $a(e,t,n,o,r,i,s,!0)}function Ya(e){return e?It(e)||Ha in e?l({},e):e:null}function Ga(e,t,n=!1){const{props:o,ref:r,patchFlag:s,children:i}=e,a=t?el(o||{},t):o,l={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Ua(a),ref:t&&t.ref?n&&r?f(r)?r.concat(Va(t)):[r,Va(t)]:Va(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ka?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ga(e.ssContent),ssFallback:e.ssFallback&&Ga(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return ts(l),l}function Xa(e=" ",t=0){return za(Sa,null,e,t)}function Wa(e,t){const n=za(Ta,null,e);return n.staticCount=t,n}function Ka(e="",t=!1){return t?(Ra(),ja(Ea,null,e)):za(Ea,null,e)}function Za(e){return null==e||"boolean"===typeof e?za(Ea):f(e)?za(ka,null,e.slice()):"object"===typeof e?Qa(e):za(Sa,null,String(e))}function Qa(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Ga(e)}function Ja(e,t){let n=0;const{shapeFlag:o}=e;if(null==t)t=null;else if(f(t))n=16;else if("object"===typeof t){if(65&o){const n=t.default;return void(n&&(n._c&&(n._d=!1),Ja(e,n()),n._c&&(n._d=!0)))}{n=32;const o=t._;o||Ha in t?3===o&&io&&(1===io.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=io}}else v(t)?(t={default:t,_ctx:io},n=32):(t=String(t),64&o?(n=16,t=[Xa(t)]):n=8);e.children=t,e.shapeFlag|=n}function el(...e){const t={};for(let n=0;n<e.length;n++){const o=e[n];for(const e in o)if("class"===e)t.class!==o.class&&(t.class=W([t.class,o.class]));else if("style"===e)t.style=z([t.style,o.style]);else if(i(e)){const n=t[e],r=o[e];!r||n===r||f(n)&&n.includes(r)||(t[e]=n?[].concat(n,r):r)}else""!==e&&(t[e]=o[e])}return t}function tl(e,t,n,o=null){dn(e,t,7,[n,o])}const nl=xi();let ol=0;function rl(e,n,o){const r=e.type,s=(n?n.appContext:e.appContext)||nl,i={uid:ol++,vnode:e,type:r,parent:n,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new le(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Pi(r,s),emitsOptions:ro(r,s),emit:null,emitted:null,propsDefaults:t,inheritAttrs:r.inheritAttrs,ctx:t,data:t,props:t,attrs:t,slots:t,refs:t,setupState:t,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=n?n.root:i,i.emit=oo.bind(null,i),e.ce&&e.ce(i),i}let sl=null;const il=()=>sl||io;let al,ll;{const e=U(),t=(t,n)=>{let o;return(o=e[t])||(o=e[t]=[]),o.push(n),e=>{o.length>1?o.forEach((t=>t(e))):o[0](e)}};al=t("__VUE_INSTANCE_SETTERS__",(e=>sl=e)),ll=t("__VUE_SSR_SETTERS__",(e=>hl=e))}const cl=e=>{const t=sl;return al(e),e.scope.on(),()=>{e.scope.off(),al(t)}},ul=()=>{sl&&sl.scope.off(),al(null)};function dl(e){return 4&e.vnode.shapeFlag}let fl,pl,hl=!1;function ml(e,t=!1){t&&ll(t);const{props:n,children:o}=e.vnode,r=dl(e);Ci(e,n,r,t),zi(e,o);const s=r?gl(e,t):void 0;return t&&ll(!1),s}function gl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,Ms));const{setup:o}=n;if(o){const n=e.setupContext=o.length>1?wl(e):null,r=cl(e);ke();const s=un(o,e,0,[e.props,n]);if(Se(),r(),x(s)){if(s.then(ul,ul),t)return s.then((n=>{vl(e,n,t)})).catch((t=>{fn(t,e,0)}));e.asyncDep=s}else vl(e,s,t)}else yl(e,t)}function vl(e,t,n){v(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:y(t)&&(e.setupState=Kt(t)),yl(e,n)}function _l(e){fl=e,pl=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,As))}}const bl=()=>!fl;function yl(e,t,n){const o=e.type;if(Xr(e),!e.render){if(!t&&fl&&!o.render){const t=e.vnode.props&&e.vnode.props["inline-template"]||o.template||Ks(e).template;if(t){0;const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:s,compilerOptions:i}=o,a=l(l({isCustomElement:n,delimiters:s},r),i);a.compatConfig=Object.create(Hn),o.compatConfig&&l(a.compatConfig,o.compatConfig),o.render=fl(t,a)}}e.render=o.render||r,pl&&pl(e)}if(!n){const t=cl(e);ke();try{Ys(e)}finally{Se(),t()}}}function xl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return Le(e,"get","$attrs"),t[n]}}))}function wl(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return xl(e)},slots:e.slots,emit:e.emit,expose:t}}function kl(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kt(Pt(e.exposed)),{get(t,n){return n in t?t[n]:n in Es?Es[n](e):void 0},has(e,t){return t in e||t in Es}}))}function Sl(e,t=!0){return v(e)?e.displayName||e.name:e.name||t&&e.__name}function El(e){return v(e)&&"__vccOpts"in e}const Tl=(e,t)=>Ft(e,t,hl);function Ml(e,n,o=t){const r=il();const s=C(n),i=I(n),a=Qt(((t,a)=>{let l;return Zo((()=>{const t=e[n];L(l,t)&&(l=t,a())})),{get(){return t(),o.get?o.get(l):l},set(e){const t=r.vnode.props;t&&(n in t||s in t||i in t)&&(`onUpdate:${n}`in t||`onUpdate:${s}`in t||`onUpdate:${i}`in t)||!L(e,l)||(l=e,a()),r.emit(`update:${n}`,o.set?o.set(e):e)}}})),l="modelValue"===n?"modelModifiers":`${n}Modifiers`;return a[Symbol.iterator]=()=>{let t=0;return{next(){return t<2?{value:t++?e[l]||{}:a,done:!1}:{done:!0}}}},a}function Al(e,t,n){const o=arguments.length;return 2===o?y(t)&&!f(t)?Na(t)?za(e,null,[t]):za(e,t):za(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):3===o&&Na(n)&&(n=[n]),za(e,t,n))}function Rl(){return void 0}function Cl(e,t,n,o){const r=n[o];if(r&&Ol(r,e))return r;const s=t();return s.memo=e.slice(),n[o]=s}function Ol(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let o=0;o<n.length;o++)if(L(n[o],t[o]))return!1;return Ia>0&&Aa&&Aa.push(e),!0}const Il="3.4.15",Bl=r,Pl=cn,Ll=Pn,jl=Nn,Nl={createComponentInstance:rl,setupComponent:ml,renderComponentRoot:ho,setCurrentRenderingInstance:lo,isVNode:Na,normalizeVNode:Za},Fl=Nl,Dl=Ao,Hl={warnDeprecation:Dn,createCompatVue:ui,isCompatEnabled:$n,checkCompatEnabled:Yn,softAssertCompatEnabled:qn},Ul=Hl,Vl=Fn,$l="http://www.w3.org/2000/svg",zl="http://www.w3.org/1998/Math/MathML",ql="undefined"!==typeof document?document:null,Yl=ql&&ql.createElement("template"),Gl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r="svg"===t?ql.createElementNS($l,e):"mathml"===t?ql.createElementNS(zl,e):ql.createElement(e,n?{is:n}:void 0);return"select"===e&&o&&null!=o.multiple&&r.setAttribute("multiple",o.multiple),r},createText:e=>ql.createTextNode(e),createComment:e=>ql.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ql.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,o,r,s){const i=n?n.previousSibling:t.lastChild;if(r&&(r===s||r.nextSibling)){while(1)if(t.insertBefore(r.cloneNode(!0),n),r===s||!(r=r.nextSibling))break}else{Yl.innerHTML="svg"===o?`<svg>${e}</svg>`:"mathml"===o?`<math>${e}</math>`:e;const r=Yl.content;if("svg"===o||"mathml"===o){const e=r.firstChild;while(e.firstChild)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Xl="transition",Wl="animation",Kl=Symbol("_vtc"),Zl=(e,{slots:t})=>Al(fr,nc(e),t);Zl.displayName="Transition",Zl.__isBuiltIn=!0;const Ql={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jl=Zl.props=l({},ur,Ql),ec=(e,t=[])=>{f(e)?e.forEach((e=>e(...t))):e&&e(...t)},tc=e=>!!e&&(f(e)?e.some((e=>e.length>1)):e.length>1);function nc(e){const t={};for(const l in e)l in Ql||(t[l]=e[l]);if(!1===e.css)return t;const{name:n="v",type:o,duration:r,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:c=s,appearActiveClass:u=i,appearToClass:d=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,m=Ul.isCompatEnabled("TRANSITION_CLASSES",null);let g,v,_;if(m){const t=e=>e.replace(/-from$/,"");e.enterFromClass||(g=t(s)),e.appearFromClass||(v=t(c)),e.leaveFromClass||(_=t(f))}const b=oc(r),y=b&&b[0],x=b&&b[1],{onBeforeEnter:w,onEnter:k,onEnterCancelled:S,onLeave:E,onLeaveCancelled:T,onBeforeAppear:M=w,onAppear:A=k,onAppearCancelled:R=S}=t,C=(e,t,n)=>{ic(e,t?d:a),ic(e,t?u:i),n&&n()},O=(e,t)=>{e._isLeaving=!1,ic(e,f),ic(e,h),ic(e,p),t&&t()},I=e=>(t,n)=>{const r=e?A:k,i=()=>C(t,e,n);ec(r,[t,i]),ac((()=>{if(ic(t,e?c:s),m){const n=e?v:g;n&&ic(t,n)}sc(t,e?d:a),tc(r)||cc(t,o,y,i)}))};return l(t,{onBeforeEnter(e){ec(w,[e]),sc(e,s),m&&g&&sc(e,g),sc(e,i)},onBeforeAppear(e){ec(M,[e]),sc(e,c),m&&v&&sc(e,v),sc(e,u)},onEnter:I(!1),onAppear:I(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>O(e,t);sc(e,f),m&&_&&sc(e,_),pc(),sc(e,p),ac((()=>{e._isLeaving&&(ic(e,f),m&&_&&ic(e,_),sc(e,h),tc(E)||cc(e,o,x,n))})),ec(E,[e,n])},onEnterCancelled(e){C(e,!1),ec(S,[e])},onAppearCancelled(e){C(e,!0),ec(R,[e])},onLeaveCancelled(e){O(e),ec(T,[e])}})}function oc(e){if(null==e)return null;if(y(e))return[rc(e.enter),rc(e.leave)];{const t=rc(e);return[t,t]}}function rc(e){const t=D(e);return t}function sc(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[Kl]||(e[Kl]=new Set)).add(t)}function ic(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[Kl];n&&(n.delete(t),n.size||(e[Kl]=void 0))}function ac(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let lc=0;function cc(e,t,n,o){const r=e._endId=++lc,s=()=>{r===e._endId&&o()};if(n)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=uc(e,t);if(!i)return o();const c=i+"end";let u=0;const d=()=>{e.removeEventListener(c,f),s()},f=t=>{t.target===e&&++u>=l&&d()};setTimeout((()=>{u<l&&d()}),a+1),e.addEventListener(c,f)}function uc(e,t){const n=window.getComputedStyle(e),o=e=>(n[e]||"").split(", "),r=o(`${Xl}Delay`),s=o(`${Xl}Duration`),i=dc(r,s),a=o(`${Wl}Delay`),l=o(`${Wl}Duration`),c=dc(a,l);let u=null,d=0,f=0;t===Xl?i>0&&(u=Xl,d=i,f=s.length):t===Wl?c>0&&(u=Wl,d=c,f=l.length):(d=Math.max(i,c),u=d>0?i>c?Xl:Wl:null,f=u?u===Xl?s.length:l.length:0);const p=u===Xl&&/\b(transform|all)(,|$)/.test(o(`${Xl}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function dc(e,t){while(e.length<t.length)e=e.concat(e);return Math.max(...t.map(((t,n)=>fc(t)+fc(e[n]))))}function fc(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function pc(){return document.body.offsetHeight}function hc(e,t,n){const o=e[Kl];o&&(t=(t?[t,...o]:[...o]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const mc=Symbol("_vod"),gc={beforeMount(e,{value:t},{transition:n}){e[mc]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):vc(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!==!n&&(o?t?(o.beforeEnter(e),vc(e,!0),o.enter(e)):o.leave(e,(()=>{vc(e,!1)})):vc(e,t))},beforeUnmount(e,{value:t}){vc(e,t)}};function vc(e,t){e.style.display=t?e[mc]:"none"}function _c(){gc.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const bc=Symbol("");function yc(e){const t=il();if(!t)return;const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>wc(e,n)))},o=()=>{const o=e(t.proxy);xc(t.subTree,o),n(o)};Ko(o),jr((()=>{const e=new MutationObserver(o);e.observe(t.subTree.el.parentNode,{childList:!0}),Hr((()=>e.disconnect()))}))}function xc(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{xc(n.activeBranch,t)}))}while(e.component)e=e.component.subTree;if(1&e.shapeFlag&&e.el)wc(e.el,t);else if(e.type===ka)e.children.forEach((e=>xc(e,t)));else if(e.type===Ta){let{el:n,anchor:o}=e;while(n){if(wc(n,t),n===o)break;n=n.nextSibling}}}function wc(e,t){if(1===e.nodeType){const n=e.style;let o="";for(const e in t)n.setProperty(`--${e}`,t[e]),o+=`--${e}: ${t[e]};`;n[bc]=o}}function kc(e,t,n){const o=e.style,r=o.display,s=_(n);if(n&&!s){if(t&&!_(t))for(const e in t)null==n[e]&&Ec(o,e,"");for(const e in n)Ec(o,e,n[e])}else if(s){if(t!==n){const e=o[bc];e&&(n+=";"+e),o.cssText=n}}else t&&e.removeAttribute("style");mc in e&&(o.display=r)}const Sc=/\s*!important$/;function Ec(e,t,n){if(f(n))n.forEach((n=>Ec(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=Ac(e,t);Sc.test(n)?e.setProperty(I(o),n.replace(Sc,""),"important"):e[o]=n}}const Tc=["Webkit","Moz","ms"],Mc={};function Ac(e,t){const n=Mc[t];if(n)return n;let o=C(t);if("filter"!==o&&o in e)return Mc[t]=o;o=B(o);for(let r=0;r<Tc.length;r++){const n=Tc[r]+o;if(n in e)return Mc[t]=n}return t}const Rc="http://www.w3.org/1999/xlink";function Cc(e,t,n,o,r){if(o&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(Rc,t.slice(6,t.length)):e.setAttributeNS(Rc,t,n);else{if(Ic(e,t,n,r))return;const o=Q(t);null==n||o&&!J(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}const Oc=e("contenteditable,draggable,spellcheck");function Ic(e,t,n,o=null){if(Oc(t)){const r=null===n?"false":"boolean"!==typeof n&&void 0!==n?"true":null;if(r&&Ul.softAssertCompatEnabled("ATTR_ENUMERATED_COERCION",o,t,n,r))return e.setAttribute(t,r),!0}else if(!1===n&&!Q(t)&&Ul.softAssertCompatEnabled("ATTR_FALSE_VALUE",o,t))return e.removeAttribute(t),!0;return!1}function Bc(e,t,n,o,r,s,i){if("innerHTML"===t||"textContent"===t)return o&&i(o,r,s),void(e[t]=null==n?"":n);const a=e.tagName;if("value"===t&&"PROGRESS"!==a&&!a.includes("-")){e._value=n;const o="OPTION"===a?e.getAttribute("value"):e.value,r=null==n?"":n;return o!==r&&(e.value=r),void(null==n&&e.removeAttribute(t))}let l=!1;if(""===n||null==n){const o=typeof e[t];"boolean"===o?n=J(n):null==n&&"string"===o?(n="",l=!0):"number"===o&&(n=0,l=!0)}else if(!1===n&&Ul.isCompatEnabled("ATTR_FALSE_VALUE",r)){const o=typeof e[t];"string"!==o&&"number"!==o||(n="number"===o?0:"",l=!0)}try{e[t]=n}catch(c){0}l&&e.removeAttribute(t)}function Pc(e,t,n,o){e.addEventListener(t,n,o)}function Lc(e,t,n,o){e.removeEventListener(t,n,o)}const jc=Symbol("_vei");function Nc(e,t,n,o,r=null){const s=e[jc]||(e[jc]={}),i=s[t];if(o&&i)i.value=o;else{const[n,a]=Dc(t);if(o){const i=s[t]=$c(o,r);Pc(e,n,i,a)}else i&&(Lc(e,n,i,a),s[t]=void 0)}}const Fc=/(?:Once|Passive|Capture)$/;function Dc(e){let t;if(Fc.test(e)){let n;t={};while(n=e.match(Fc))e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}const n=":"===e[2]?e.slice(3):I(e.slice(2));return[n,t]}let Hc=0;const Uc=Promise.resolve(),Vc=()=>Hc||(Uc.then((()=>Hc=0)),Hc=Date.now());function $c(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();dn(zc(e,n.value),t,5,[e])};return n.value=e,n.attached=Vc(),n}function zc(e,t){if(f(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}const qc=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yc=(e,t,n,o,r,s,l,c,u)=>{const d="svg"===r;"class"===t?hc(e,o,d):"style"===t?kc(e,n,o):i(t)?a(t)||Nc(e,t,n,o,l):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):Gc(e,t,o,d))?Bc(e,t,o,s,l,c,u):("true-value"===t?e._trueValue=o:"false-value"===t&&(e._falseValue=o),Cc(e,t,o,d,l))};function Gc(e,t,n,o){if(o)return"innerHTML"===t||"textContent"===t||!!(t in e&&qc(t)&&v(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){const t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}return(!qc(t)||!_(n))&&t in e}
 /*! #__NO_SIDE_EFFECTS__ */function Xc(e,t){const n=br(e);class o extends Zc{constructor(e){super(n,e,t)}}return o.def=n,o}
-/*! #__NO_SIDE_EFFECTS__ */const Wc=e=>Xc(e,ju),Kc="undefined"!==typeof HTMLElement?HTMLElement:class{};class Zc extends Kc{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,this._ob&&(this._ob.disconnect(),this._ob=null),kn((()=>{this._connected||(Lu(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let n=0;n<this.attributes.length;n++)this._setAttr(this.attributes[n].name);this._ob=new MutationObserver((e=>{for(const t of e)this._setAttr(t.attributeName)})),this._ob.observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:o}=e;let r;if(n&&!f(n))for(const s in n){const e=n[s];(e===Number||e&&e.type===Number)&&(s in this._props&&(this._props[s]=D(this._props[s])),(r||(r=Object.create(null)))[C(s)]=!0)}this._numberProps=r,t&&this._resolveProps(e),this._applyStyles(o),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=f(t)?t:Object.keys(t||{});for(const o of Object.keys(this))"_"!==o[0]&&n.includes(o)&&this._setProp(o,this[o],!0,!1);for(const o of n.map(C))Object.defineProperty(this,o,{get(){return this._getProp(o)},set(e){this._setProp(o,e)}})}_setAttr(e){let t=this.getAttribute(e);const n=C(e);this._numberProps&&this._numberProps[n]&&(t=D(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,o=!0){t!==this._props[e]&&(this._props[e]=t,o&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(I(e),""):"string"===typeof t||"number"===typeof t?this.setAttribute(I(e),t+""):t||this.removeAttribute(I(e))))}_update(){Lu(this._createVNode(),this.shadowRoot)}_createVNode(){const e=za(this._def,l({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),I(e)!==e&&t(I(e),n)};let n=this;while(n=n&&(n.parentNode||n.host))if(n instanceof Zc){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function Qc(e="$style"){{const n=il();if(!n)return t;const o=n.type.__cssModules;if(!o)return t;const r=o[e];return r||t}}const Jc=new WeakMap,eu=new WeakMap,tu=Symbol("_moveCb"),nu=Symbol("_enterCb"),ou={name:"TransitionGroup",props:l({},Jl,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=il(),o=lr();let r,s;return Fr((()=>{if(!r.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!lu(r[0].el,n.vnode.el,t))return;r.forEach(su),r.forEach(iu);const o=r.filter(au);pc(),o.forEach((e=>{const n=e.el,o=n.style;sc(n,t),o.transform=o.webkitTransform=o.transitionDuration="";const r=n[tu]=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",r),n[tu]=null,ic(n,t))};n.addEventListener("transitionend",r)}))})),()=>{const i=Bt(e),a=nc(i);let l=i.tag||ka;!i.tag&&Ul.checkCompatEnabled("TRANSITION_GROUP_ROOT",n.parent)&&(l="span"),r=s,s=t.default?_r(t.default()):[];for(let e=0;e<s.length;e++){const t=s[e];null!=t.key&&vr(t,hr(t,a,o,n))}if(r)for(let e=0;e<r.length;e++){const t=r[e];vr(t,hr(t,a,o,n)),Jc.set(t,t.el.getBoundingClientRect())}return za(l,null,s)}},__isBuiltIn:!0};ou.props;const ru=ou;function su(e){const t=e.el;t[tu]&&t[tu](),t[nu]&&t[nu]()}function iu(e){eu.set(e,e.el.getBoundingClientRect())}function au(e){const t=Jc.get(e),n=eu.get(e),o=t.left-n.left,r=t.top-n.top;if(o||r){const t=e.el.style;return t.transform=t.webkitTransform=`translate(${o}px,${r}px)`,t.transitionDuration="0s",e}}function lu(e,t,n){const o=e.cloneNode(),r=e[Kl];r&&r.forEach((e=>{e.split(/\s+/).forEach((e=>e&&o.classList.remove(e)))})),n.split(/\s+/).forEach((e=>e&&o.classList.add(e))),o.style.display="none";const s=1===t.nodeType?t:t.parentNode;s.appendChild(o);const{hasTransform:i}=uc(o);return s.removeChild(o),i}const cu=e=>{const t=e.props["onUpdate:modelValue"]||e.props["onModelCompat:input"];return f(t)?e=>j(t,e):t};function uu(e){e.target.composing=!0}function du(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const fu=Symbol("_assign"),pu={created(e,{modifiers:{lazy:t,trim:n,number:o}},r){e[fu]=cu(r);const s=o||r.props&&"number"===r.props.type;Pc(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n&&(o=o.trim()),s&&(o=F(o)),e[fu](o)})),n&&Pc(e,"change",(()=>{e.value=e.value.trim()})),t||(Pc(e,"compositionstart",uu),Pc(e,"compositionend",du),Pc(e,"change",du))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:r}},s){if(e[fu]=cu(s),e.composing)return;const i=r||"number"===e.type?F(e.value):e.value,a=null==t?"":t;if(i!==a){if(document.activeElement===e&&"range"!==e.type){if(n)return;if(o&&e.value.trim()===a)return}e.value=a}}},hu={deep:!0,created(e,t,n){e[fu]=cu(n),Pc(e,"change",(()=>{const t=e._modelValue,n=bu(e),o=e.checked,r=e[fu];if(f(t)){const e=ne(t,n),s=-1!==e;if(o&&!s)r(t.concat(n));else if(!o&&s){const n=[...t];n.splice(e,1),r(n)}}else if(h(t)){const e=new Set(t);o?e.add(n):e.delete(n),r(e)}else r(yu(e,o))}))},mounted:mu,beforeUpdate(e,t,n){e[fu]=cu(n),mu(e,t,n)}};function mu(e,{value:t,oldValue:n},o){e._modelValue=t,f(t)?e.checked=ne(t,o.props.value)>-1:h(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=te(t,yu(e,!0)))}const gu={created(e,{value:t},n){e.checked=te(t,n.props.value),e[fu]=cu(n),Pc(e,"change",(()=>{e[fu](bu(e))}))},beforeUpdate(e,{value:t,oldValue:n},o){e[fu]=cu(o),t!==n&&(e.checked=te(t,o.props.value))}},vu={deep:!0,created(e,{value:t,modifiers:{number:n}},o){const r=h(t);Pc(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?F(bu(e)):bu(e)));e[fu](e.multiple?r?new Set(t):t:t[0]),e._assigning=!0,kn((()=>{e._assigning=!1}))})),e[fu]=cu(o)},mounted(e,{value:t,oldValue:n,modifiers:{number:o}}){_u(e,t,n,o)},beforeUpdate(e,t,n){e[fu]=cu(n)},updated(e,{value:t,oldValue:n,modifiers:{number:o}}){e._assigning||_u(e,t,n,o)}};function _u(e,t,n,o){const r=e.multiple,s=f(t);if((!r||s||h(t))&&(!s||!te(t,n))){for(let n=0,i=e.options.length;n<i;n++){const i=e.options[n],a=bu(i);if(r)if(s){const e=typeof a;i.selected="string"===e||"number"===e?t.includes(o?F(a):a):ne(t,a)>-1}else i.selected=t.has(a);else if(te(bu(i),t))return void(e.selectedIndex!==n&&(e.selectedIndex=n))}r||-1===e.selectedIndex||(e.selectedIndex=-1)}}function bu(e){return"_value"in e?e._value:e.value}function yu(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const xu={created(e,t,n){ku(e,t,n,null,"created")},mounted(e,t,n){ku(e,t,n,null,"mounted")},beforeUpdate(e,t,n,o){ku(e,t,n,o,"beforeUpdate")},updated(e,t,n,o){ku(e,t,n,o,"updated")}};function wu(e,t){switch(e){case"SELECT":return vu;case"TEXTAREA":return pu;default:switch(t){case"checkbox":return hu;case"radio":return gu;default:return pu}}}function ku(e,t,n,o,r){const s=wu(e.tagName,n.props&&n.props.type),i=s[r];i&&i(e,t,n,o)}function Su(){pu.getSSRProps=({value:e})=>({value:e}),gu.getSSRProps=({value:e},t)=>{if(t.props&&te(t.props.value,e))return{checked:!0}},hu.getSSRProps=({value:e},t)=>{if(f(e)){if(t.props&&ne(e,t.props.value)>-1)return{checked:!0}}else if(h(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},xu.getSSRProps=(e,t)=>{if("string"!==typeof t.type)return;const n=wu(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0}}const Eu=["ctrl","shift","alt","meta"],Tu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>Eu.some((n=>e[`${n}Key`]&&!t.includes(n)))},Mu=(e,t)=>{const n=e._withMods||(e._withMods={}),o=t.join(".");return n[o]||(n[o]=(n,...o)=>{for(let e=0;e<t.length;e++){const o=Tu[t[e]];if(o&&o(n,t))return}return e(n,...o)})},Au={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Ru=(e,t)=>{let n,o=null;o=il(),Ul.isCompatEnabled("CONFIG_KEY_CODES",o)&&o&&(n=o.appContext.config.keyCodes);const r=e._withKeys||(e._withKeys={}),s=t.join(".");return r[s]||(r[s]=r=>{if(!("key"in r))return;const s=I(r.key);if(t.some((e=>e===s||Au[e]===s)))return e(r);{const s=String(r.keyCode);if(Ul.isCompatEnabled("V_ON_KEYCODE_MODIFIER",o)&&t.some((e=>e==s)))return e(r);if(n)for(const o of t){const t=n[o];if(t){const n=f(t)?t.some((e=>String(e)===s)):String(t)===s;if(n)return e(r)}}}})},Cu=l({patchProp:Yc},Gl);let Ou,Iu=!1;function Bu(){return Ou||(Ou=ta(Cu))}function Pu(){return Ou=Iu?Ou:na(Cu),Iu=!0,Ou}const Lu=(...e)=>{Bu().render(...e)},ju=(...e)=>{Pu().hydrate(...e)},Nu=(...e)=>{const t=Bu().createApp(...e);const{mount:n}=t;return t.mount=e=>{const o=Hu(e);if(!o)return;const r=t._component;v(r)||r.render||r.template||(r.template=o.innerHTML),o.innerHTML="";const s=n(o,!1,Du(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),s},t},Fu=(...e)=>{const t=Pu().createApp(...e);const{mount:n}=t;return t.mount=e=>{const t=Hu(e);if(t)return n(t,!0,Du(t))},t};function Du(e){return e instanceof SVGElement?"svg":"function"===typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function Hu(e){if(_(e)){const t=document.querySelector(e);return t}return e}let Uu=!1;const Vu=()=>{Uu||(Uu=!0,Su(),_c())};var $u=Object.freeze({__proto__:null,BaseTransition:fr,BaseTransitionPropsValidators:ur,Comment:Ea,DeprecationTypes:Vl,EffectScope:le,ErrorCodes:ln,ErrorTypeStrings:Pl,Fragment:ka,KeepAlive:Er,ReactiveEffect:pe,Static:Ta,Suspense:Po,Teleport:_a,Text:Sa,TrackOpTypes:rn,Transition:Zl,TransitionGroup:ru,TriggerOpTypes:sn,VueElement:Zc,assertNumber:an,callWithAsyncErrorHandling:dn,callWithErrorHandling:un,camelize:C,capitalize:B,cloneVNode:Ga,compatUtils:Ul,computed:Tl,createApp:Nu,createBlock:ja,createCommentVNode:Ka,createElementBlock:La,createElementVNode:$a,createHydrationRenderer:na,createPropsRestProxy:$s,createRenderer:ta,createSSRApp:Fu,createSlots:is,createStaticVNode:Wa,createTextVNode:Xa,createVNode:za,customRef:Qt,defineAsyncComponent:xr,defineComponent:br,defineCustomElement:Xc,defineEmits:Os,defineExpose:Is,defineModel:Ls,defineOptions:Bs,defineProps:Cs,defineSSRCustomElement:Wc,defineSlots:Ps,devtools:Ll,effect:_e,effectScope:ce,getCurrentInstance:il,getCurrentScope:de,getTransitionRawChildren:_r,guardReactiveProps:Ya,h:Al,handleError:fn,hasInjectionContext:Mi,hydrate:ju,initCustomFormatter:Rl,initDirectivesForSSR:Vu,inject:Ti,isMemoSame:Ol,isProxy:It,isReactive:Rt,isReadonly:Ct,isRef:Ut,isRuntimeOnly:bl,isShallow:Ot,isVNode:Na,markRaw:Pt,mergeDefaults:Us,mergeModels:Vs,mergeProps:el,nextTick:kn,normalizeClass:W,normalizeProps:K,normalizeStyle:z,onActivated:Mr,onBeforeMount:Lr,onBeforeUnmount:Dr,onBeforeUpdate:Nr,onDeactivated:Ar,onErrorCaptured:zr,onMounted:jr,onRenderTracked:$r,onRenderTriggered:Vr,onScopeDispose:fe,onServerPrefetch:Ur,onUnmounted:Hr,onUpdated:Fr,openBlock:Ra,popScopeId:uo,provide:Ei,proxyRefs:Kt,pushScopeId:co,queuePostFlushCb:An,reactive:St,readonly:Tt,ref:Vt,registerRuntimeCompiler:_l,render:Lu,renderList:ss,renderSlot:as,resolveComponent:So,resolveDirective:Mo,resolveDynamicComponent:To,resolveFilter:Dl,resolveTransitionHooks:hr,setBlockTracking:Ba,setDevtoolsHook:jl,setTransitionHooks:vr,shallowReactive:Et,shallowReadonly:Mt,shallowRef:$t,ssrContextKey:Go,ssrUtils:Fl,stop:be,toDisplayString:oe,toHandlerKey:P,toHandlers:cs,toRaw:Bt,toRef:nn,toRefs:Jt,toValue:Xt,transformVNodeArgs:Da,triggerRef:Yt,unref:Gt,useAttrs:Fs,useCssModule:Qc,useCssVars:yc,useModel:Ml,useSSRContext:Xo,useSlots:Ns,useTransitionState:lr,vModelCheckbox:hu,vModelDynamic:xu,vModelRadio:gu,vModelSelect:vu,vModelText:pu,vShow:gc,version:Il,warn:Bl,watch:Jo,watchEffect:Wo,watchPostEffect:Ko,watchSyncEffect:Zo,withAsyncContext:zs,withCtx:po,withDefaults:js,withDirectives:rr,withKeys:Ru,withMemo:Cl,withModifiers:Mu,withScopeId:fo});function zu(...e){const t=Nu(...e);return Ul.isCompatEnabled("RENDER_FUNCTION",null)&&(t.component("__compat__transition",Zl),t.component("__compat__transition-group",ru),t.component("__compat__keep-alive",Er),t._context.directives.show=gc,t._context.directives.model=xu),t}function qu(){const e=Ul.createCompatVue(Nu,zu);return l(e,$u),e}const Yu=qu();Yu.compile=()=>{0};var Gu=Yu;const{configureCompat:Xu}=Gu;function Wu(e,t,n,o,r,s){const i=So("vue-advanced-chat");return Ra(),ja(i,{"current-user-id":e.currentUserId,"rooms-loaded":e.rooms.length>0,"messages-loaded":e.messagesLoaded||null,"single-room":"true",rooms:JSON.stringify(e.rooms),"room-id":e.rooms[0].roomId,"show-files":"false","show-emojis":"true","show-reaction-emojis":"false","show-audio":"false",messages:JSON.stringify(e.messages),"message-actions":JSON.stringify([{name:"replyMessage",title:"Répondre"}]),"link-options":JSON.stringify({disabled:!1,target:"_self"}),"text-messages":JSON.stringify({ROOMS_EMPTY:"Aucune conversation",ROOM_EMPTY:"Aucune conversation sélectionnée",NEW_MESSAGES:"Nouveaux messages",MESSAGE_DELETED:"Ce message a été supprimé",MESSAGES_EMPTY:"Aucun message",CONVERSATION_STARTED:"La conversation a commencée le :",TYPE_MESSAGE:"Tapez votre message",SEARCH:"Rechercher",IS_ONLINE:"est en ligne",LAST_SEEN:"dernière connexion ",IS_TYPING:"est en train de taper..."}),onSendMessage:t[0]||(t[0]=t=>e.sendMessage(t.detail[0]))},null,8,["current-user-id","rooms-loaded","messages-loaded","rooms","room-id","messages","message-actions","link-options","text-messages"])}function Ku(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r<o.length;r++)n[o[r]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}const Zu=()=>{},Qu=Object.assign,Ju=Object.prototype.hasOwnProperty,ed=(e,t)=>Ju.call(e,t),td=Array.isArray,nd=e=>"[object Map]"===ld(e),od=e=>"function"===typeof e,rd=e=>"string"===typeof e,sd=e=>"symbol"===typeof e,id=e=>null!==e&&"object"===typeof e,ad=Object.prototype.toString,ld=e=>ad.call(e),cd=e=>ld(e).slice(8,-1),ud=e=>rd(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,dd=(e,t)=>!Object.is(e,t),fd=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})};let pd;class hd{constructor(e=!1){this.active=!0,this.effects=[],this.cleanups=[],!e&&pd&&(this.parent=pd,this.index=(pd.scopes||(pd.scopes=[])).push(this)-1)}run(e){if(this.active){const t=pd;try{return pd=this,e()}finally{pd=t}}}on(){pd=this}off(){pd=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);if(this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.active=!1}}}function md(e,t=pd){t&&t.active&&t.effects.push(e)}const gd=e=>{const t=new Set(e);return t.w=0,t.n=0,t},vd=e=>(e.w&kd)>0,_d=e=>(e.n&kd)>0,bd=({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=kd},yd=e=>{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o<t.length;o++){const r=t[o];vd(r)&&!_d(r)?r.delete(e):t[n++]=r,r.w&=~kd,r.n&=~kd}t.length=n}},xd=new WeakMap;let wd=0,kd=1;const Sd=30;let Ed;const Td=Symbol(""),Md=Symbol("");class Ad{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,md(this,n)}run(){if(!this.active)return this.fn();let e=Ed,t=Cd;while(e){if(e===this)return;e=e.parent}try{return this.parent=Ed,Ed=this,Cd=!0,kd=1<<++wd,wd<=Sd?bd(this):Rd(this),this.fn()}finally{wd<=Sd&&yd(this),kd=1<<--wd,Ed=this.parent,Cd=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){Ed===this?this.deferStop=!0:this.active&&(Rd(this),this.onStop&&this.onStop(),this.active=!1)}}function Rd(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let Cd=!0;const Od=[];function Id(){Od.push(Cd),Cd=!1}function Bd(){const e=Od.pop();Cd=void 0===e||e}function Pd(e,t,n){if(Cd&&Ed){let t=xd.get(e);t||xd.set(e,t=new Map);let o=t.get(n);o||t.set(n,o=gd()),Ld(o)}}function Ld(e,t){let n=!1;wd<=Sd?_d(e)||(e.n|=kd,n=!vd(e)):n=!e.has(Ed),n&&(e.add(Ed),Ed.deps.push(e))}function jd(e,t,n,o,r,s){const i=xd.get(e);if(!i)return;let a=[];if("clear"===t)a=[...i.values()];else if("length"===n&&td(e))i.forEach(((e,t)=>{("length"===t||t>=o)&&a.push(e)}));else switch(void 0!==n&&a.push(i.get(n)),t){case"add":td(e)?ud(n)&&a.push(i.get("length")):(a.push(i.get(Td)),nd(e)&&a.push(i.get(Md)));break;case"delete":td(e)||(a.push(i.get(Td)),nd(e)&&a.push(i.get(Md)));break;case"set":nd(e)&&a.push(i.get(Td));break}if(1===a.length)a[0]&&Nd(a[0]);else{const e=[];for(const t of a)t&&e.push(...t);Nd(gd(e))}}function Nd(e,t){const n=td(e)?e:[...e];for(const o of n)o.computed&&Fd(o);for(const o of n)o.computed||Fd(o)}function Fd(e,t){(e!==Ed||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Dd=Ku("__proto__,__v_isRef,__isVue"),Hd=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(sd)),Ud=Yd(),Vd=Yd(!1,!0),$d=Yd(!0),zd=qd();function qd(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Ff(this);for(let t=0,r=this.length;t<r;t++)Pd(n,"get",t+"");const o=n[t](...e);return-1===o||!1===o?n[t](...e.map(Ff)):o}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){Id();const n=Ff(this)[t].apply(this,e);return Bd(),n}})),e}function Yd(e=!1,t=!1){return function(n,o,r){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&r===(e?t?Mf:Tf:t?Ef:Sf).get(n))return n;const s=td(n);if(!e&&s&&ed(zd,o))return Reflect.get(zd,o,r);const i=Reflect.get(n,o,r);return(sd(o)?Hd.has(o):Dd(o))?i:(e||Pd(n,"get",o),t?i:zf(i)?s&&ud(o)?i:i.value:id(i)?e?If(i):Cf(i):i)}}const Gd=Wd(),Xd=Wd(!0);function Wd(e=!1){return function(t,n,o,r){let s=t[n];if(Lf(s)&&zf(s)&&!zf(o))return!1;if(!e&&!Lf(o)&&(jf(o)||(o=Ff(o),s=Ff(s)),!td(t)&&zf(s)&&!zf(o)))return s.value=o,!0;const i=td(t)&&ud(n)?Number(n)<t.length:ed(t,n),a=Reflect.set(t,n,o,r);return t===Ff(r)&&(i?dd(o,s)&&jd(t,"set",n,o):jd(t,"add",n,o)),a}}function Kd(e,t){const n=ed(e,t);e[t];const o=Reflect.deleteProperty(e,t);return o&&n&&jd(e,"delete",t,void 0),o}function Zd(e,t){const n=Reflect.has(e,t);return sd(t)&&Hd.has(t)||Pd(e,"has",t),n}function Qd(e){return Pd(e,"iterate",td(e)?"length":Td),Reflect.ownKeys(e)}const Jd={get:Ud,set:Gd,deleteProperty:Kd,has:Zd,ownKeys:Qd},ef={get:$d,set(e,t){return!0},deleteProperty(e,t){return!0}},tf=Qu({},Jd,{get:Vd,set:Xd}),nf=e=>e,of=e=>Reflect.getPrototypeOf(e);function rf(e,t,n=!1,o=!1){e=e["__v_raw"];const r=Ff(e),s=Ff(t);n||(t!==s&&Pd(r,"get",t),Pd(r,"get",s));const{has:i}=of(r),a=o?nf:n?Uf:Hf;return i.call(r,t)?a(e.get(t)):i.call(r,s)?a(e.get(s)):void(e!==r&&e.get(t))}function sf(e,t=!1){const n=this["__v_raw"],o=Ff(n),r=Ff(e);return t||(e!==r&&Pd(o,"has",e),Pd(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function af(e,t=!1){return e=e["__v_raw"],!t&&Pd(Ff(e),"iterate",Td),Reflect.get(e,"size",e)}function lf(e){e=Ff(e);const t=Ff(this),n=of(t),o=n.has.call(t,e);return o||(t.add(e),jd(t,"add",e,e)),this}function cf(e,t){t=Ff(t);const n=Ff(this),{has:o,get:r}=of(n);let s=o.call(n,e);s||(e=Ff(e),s=o.call(n,e));const i=r.call(n,e);return n.set(e,t),s?dd(t,i)&&jd(n,"set",e,t):jd(n,"add",e,t),this}function uf(e){const t=Ff(this),{has:n,get:o}=of(t);let r=n.call(t,e);r||(e=Ff(e),r=n.call(t,e)),o&&o.call(t,e);const s=t.delete(e);return r&&jd(t,"delete",e,void 0),s}function df(){const e=Ff(this),t=0!==e.size,n=e.clear();return t&&jd(e,"clear",void 0,void 0),n}function ff(e,t){return function(n,o){const r=this,s=r["__v_raw"],i=Ff(s),a=t?nf:e?Uf:Hf;return!e&&Pd(i,"iterate",Td),s.forEach(((e,t)=>n.call(o,a(e),a(t),r)))}}function pf(e,t,n){return function(...o){const r=this["__v_raw"],s=Ff(r),i=nd(s),a="entries"===e||e===Symbol.iterator&&i,l="keys"===e&&i,c=r[e](...o),u=n?nf:t?Uf:Hf;return!t&&Pd(s,"iterate",l?Md:Td),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function hf(e){return function(...t){return"delete"!==e&&this}}function mf(){const e={get(e){return rf(this,e)},get size(){return af(this)},has:sf,add:lf,set:cf,delete:uf,clear:df,forEach:ff(!1,!1)},t={get(e){return rf(this,e,!1,!0)},get size(){return af(this)},has:sf,add:lf,set:cf,delete:uf,clear:df,forEach:ff(!1,!0)},n={get(e){return rf(this,e,!0)},get size(){return af(this,!0)},has(e){return sf.call(this,e,!0)},add:hf("add"),set:hf("set"),delete:hf("delete"),clear:hf("clear"),forEach:ff(!0,!1)},o={get(e){return rf(this,e,!0,!0)},get size(){return af(this,!0)},has(e){return sf.call(this,e,!0)},add:hf("add"),set:hf("set"),delete:hf("delete"),clear:hf("clear"),forEach:ff(!0,!0)},r=["keys","values","entries",Symbol.iterator];return r.forEach((r=>{e[r]=pf(r,!1,!1),n[r]=pf(r,!0,!1),t[r]=pf(r,!1,!0),o[r]=pf(r,!0,!0)})),[e,n,t,o]}const[gf,vf,_f,bf]=mf();function yf(e,t){const n=t?e?bf:_f:e?vf:gf;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(ed(n,o)&&o in t?n:t,o,r)}const xf={get:yf(!1,!1)},wf={get:yf(!1,!0)},kf={get:yf(!0,!1)},Sf=new WeakMap,Ef=new WeakMap,Tf=new WeakMap,Mf=new WeakMap;function Af(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Rf(e){return e["__v_skip"]||!Object.isExtensible(e)?0:Af(cd(e))}function Cf(e){return Lf(e)?e:Bf(e,!1,Jd,xf,Sf)}function Of(e){return Bf(e,!1,tf,wf,Ef)}function If(e){return Bf(e,!0,ef,kf,Tf)}function Bf(e,t,n,o,r){if(!id(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const s=r.get(e);if(s)return s;const i=Rf(e);if(0===i)return e;const a=new Proxy(e,2===i?o:n);return r.set(e,a),a}function Pf(e){return Lf(e)?Pf(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Lf(e){return!(!e||!e["__v_isReadonly"])}function jf(e){return!(!e||!e["__v_isShallow"])}function Nf(e){return Pf(e)||Lf(e)}function Ff(e){const t=e&&e["__v_raw"];return t?Ff(t):e}function Df(e){return fd(e,"__v_skip",!0),e}const Hf=e=>id(e)?Cf(e):e,Uf=e=>id(e)?If(e):e;function Vf(e){Cd&&Ed&&(e=Ff(e),Ld(e.dep||(e.dep=gd())))}function $f(e,t){e=Ff(e),e.dep&&Nd(e.dep)}function zf(e){return!(!e||!0!==e.__v_isRef)}function qf(e){return zf(e)?e.value:e}const Yf={get:(e,t,n)=>qf(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return zf(r)&&!zf(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function Gf(e){return Pf(e)?e:new Proxy(e,Yf)}class Xf{constructor(e,t,n,o){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new Ad(e,(()=>{this._dirty||(this._dirty=!0,$f(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!o,this["__v_isReadonly"]=n}get value(){const e=Ff(this);return Vf(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Wf(e,t,n=!1){let o,r;const s=od(e);s?(o=e,r=Zu):(o=e.get,r=e.set);const i=new Xf(o,r,s||!r,n);return i}function Kf(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r<o.length;r++)n[o[r]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}function Zf(e){if(gp(e)){const t={};for(let n=0;n<e.length;n++){const o=e[n],r=yp(o)?ep(o):Zf(o);if(r)for(const e in r)t[e]=r[e]}return t}return yp(e)||xp(e)?e:void 0}const Qf=/;(?![^(]*\))/g,Jf=/:(.+)/;function ep(e){const t={};return e.split(Qf).forEach((e=>{if(e){const n=e.split(Jf);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function tp(e){let t="";if(yp(e))t=e;else if(gp(e))for(let n=0;n<e.length;n++){const o=tp(e[n]);o&&(t+=o+" ")}else if(xp(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function np(e){if(!e)return null;let{class:t,style:n}=e;return t&&!yp(t)&&(e.class=tp(t)),n&&(e.style=Zf(n)),e}const op=e=>yp(e)?e:null==e?"":gp(e)||xp(e)&&(e.toString===kp||!bp(e.toString))?JSON.stringify(e,rp,2):String(e),rp=(e,t)=>t&&t.__v_isRef?rp(e,t.value):vp(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:_p(t)?{[`Set(${t.size})`]:[...t.values()]}:!xp(t)||gp(t)||Ep(t)?t:String(t),sp={},ip=[],ap=()=>{},lp=()=>!1,cp=/^on[^a-z]/,up=e=>cp.test(e),dp=e=>e.startsWith("onUpdate:"),fp=Object.assign,pp=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},hp=Object.prototype.hasOwnProperty,mp=(e,t)=>hp.call(e,t),gp=Array.isArray,vp=e=>"[object Map]"===Sp(e),_p=e=>"[object Set]"===Sp(e),bp=e=>"function"===typeof e,yp=e=>"string"===typeof e,xp=e=>null!==e&&"object"===typeof e,wp=e=>xp(e)&&bp(e.then)&&bp(e.catch),kp=Object.prototype.toString,Sp=e=>kp.call(e),Ep=e=>"[object Object]"===Sp(e),Tp=Kf(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Mp=e=>{const t=Object.create(null);return n=>{const o=t[n];return o||(t[n]=e(n))}},Ap=/-(\w)/g,Rp=Mp((e=>e.replace(Ap,((e,t)=>t?t.toUpperCase():"")))),Cp=/\B([A-Z])/g,Op=Mp((e=>e.replace(Cp,"-$1").toLowerCase())),Ip=Mp((e=>e.charAt(0).toUpperCase()+e.slice(1))),Bp=Mp((e=>e?`on${Ip(e)}`:"")),Pp=(e,t)=>!Object.is(e,t),Lp=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},jp=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Np=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Fp;const Dp=()=>Fp||(Fp="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{});function Hp(e,t,n,o){let r;try{r=o?e(...o):e()}catch(s){Vp(s,t,n)}return r}function Up(e,t,n,o){if(bp(e)){const r=Hp(e,t,n,o);return r&&wp(r)&&r.catch((e=>{Vp(e,t,n)})),r}const r=[];for(let s=0;s<e.length;s++)r.push(Up(e[s],t,n,o));return r}function Vp(e,t,n,o=!0){const r=t?t.vnode:null;if(t){let o=t.parent;const r=t.proxy,s=n;while(o){const t=o.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,r,s))return;o=o.parent}const i=t.appContext.config.errorHandler;if(i)return void Hp(i,null,10,[e,r,s])}$p(e,n,r,o)}function $p(e,t,n,o=!0){console.error(e)}let zp=!1,qp=!1;const Yp=[];let Gp=0;const Xp=[];let Wp=null,Kp=0;const Zp=[];let Qp=null,Jp=0;const eh=Promise.resolve();let th=null,nh=null;function oh(e){const t=th||eh;return e?t.then(this?e.bind(this):e):t}function rh(e){let t=Gp+1,n=Yp.length;while(t<n){const o=t+n>>>1,r=ph(Yp[o]);r<e?t=o+1:n=o}return t}function sh(e){Yp.length&&Yp.includes(e,zp&&e.allowRecurse?Gp+1:Gp)||e===nh||(null==e.id?Yp.push(e):Yp.splice(rh(e.id),0,e),ih())}function ih(){zp||qp||(qp=!0,th=eh.then(hh))}function ah(e){const t=Yp.indexOf(e);t>Gp&&Yp.splice(t,1)}function lh(e,t,n,o){gp(e)?n.push(...e):t&&t.includes(e,e.allowRecurse?o+1:o)||n.push(e),ih()}function ch(e){lh(e,Wp,Xp,Kp)}function uh(e){lh(e,Qp,Zp,Jp)}function dh(e,t=null){if(Xp.length){for(nh=t,Wp=[...new Set(Xp)],Xp.length=0,Kp=0;Kp<Wp.length;Kp++)Wp[Kp]();Wp=null,Kp=0,nh=null,dh(e,t)}}function fh(e){if(dh(),Zp.length){const e=[...new Set(Zp)];if(Zp.length=0,Qp)return void Qp.push(...e);for(Qp=e,Qp.sort(((e,t)=>ph(e)-ph(t))),Jp=0;Jp<Qp.length;Jp++)Qp[Jp]();Qp=null,Jp=0}}const ph=e=>null==e.id?1/0:e.id;function hh(e){qp=!1,zp=!0,dh(e),Yp.sort(((e,t)=>ph(e)-ph(t)));try{for(Gp=0;Gp<Yp.length;Gp++){const e=Yp[Gp];e&&!1!==e.active&&Hp(e,null,14)}}finally{Gp=0,Yp.length=0,fh(),zp=!1,th=null,(Yp.length||Xp.length||Zp.length)&&hh(e)}}function mh(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||sp;let r=n;const s=t.startsWith("update:"),i=s&&t.slice(7);if(i&&i in o){const e=`${"modelValue"===i?"model":i}Modifiers`,{number:t,trim:s}=o[e]||sp;s&&(r=n.map((e=>e.trim()))),t&&(r=n.map(Np))}let a,l=o[a=Bp(t)]||o[a=Bp(Rp(t))];!l&&s&&(l=o[a=Bp(Op(t))]),l&&Up(l,e,6,r);const c=o[a+"Once"];if(c){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,Up(c,e,6,r)}}function gh(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(void 0!==r)return r;const s=e.emits;let i={},a=!1;if(!bp(e)){const o=e=>{const n=gh(e,t,!0);n&&(a=!0,fp(i,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return s||a?(gp(s)?s.forEach((e=>i[e]=null)):fp(i,s),o.set(e,i),i):(o.set(e,null),null)}function vh(e,t){return!(!e||!up(t))&&(t=t.slice(2).replace(/Once$/,""),mp(e,t[0].toLowerCase()+t.slice(1))||mp(e,Op(t))||mp(e,t))}let _h=null,bh=null;function yh(e){const t=_h;return _h=e,bh=e&&e.type.__scopeId||null,t}function xh(e,t=_h,n){if(!t)return e;if(e._n)return e;const o=(...n)=>{o._d&&Tg(-1);const r=yh(t),s=e(...n);return yh(r),o._d&&Tg(1),s};return o._n=!0,o._c=!0,o._d=!0,o}function wh(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:s,propsOptions:[i],slots:a,attrs:l,emit:c,render:u,renderCache:d,data:f,setupState:p,ctx:h,inheritAttrs:m}=e;let g,v;const _=yh(e);try{if(4&n.shapeFlag){const e=r||o;g=Vg(u.call(e,e,d,s,p,f,h)),v=l}else{const e=t;0,g=Vg(e.length>1?e(s,{attrs:l,slots:a,emit:c}):e(s,null)),v=t.props?l:kh(l)}}catch(y){xg.length=0,Vp(y,e,1),g=jg(bg)}let b=g;if(v&&!1!==m){const e=Object.keys(v),{shapeFlag:t}=b;e.length&&7&t&&(i&&e.some(dp)&&(v=Sh(v,i)),b=Dg(b,v))}return n.dirs&&(b=Dg(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),g=b,yh(_),g}const kh=e=>{let t;for(const n in e)("class"===n||"style"===n||up(n))&&((t||(t={}))[n]=e[n]);return t},Sh=(e,t)=>{const n={};for(const o in e)dp(o)&&o.slice(9)in t||(n[o]=e[o]);return n};function Eh(e,t,n){const{props:o,children:r,component:s}=e,{props:i,children:a,patchFlag:l}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!r&&!a||a&&a.$stable)||o!==i&&(o?!i||Th(o,i,c):!!i);if(1024&l)return!0;if(16&l)return o?Th(o,i,c):!!i;if(8&l){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const n=e[t];if(i[n]!==o[n]&&!vh(c,n))return!0}}return!1}function Th(e,t,n){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let r=0;r<o.length;r++){const s=o[r];if(t[s]!==e[s]&&!vh(n,s))return!0}return!1}function Mh({vnode:e,parent:t},n){while(t&&t.subTree===e)(e=t.vnode).el=n,t=t.parent}const Ah=e=>e.__isSuspense;function Rh(e,t){t&&t.pendingBranch?gp(e)?t.effects.push(...e):t.effects.push(e):uh(e)}function Ch(e,t){if(Kg){let n=Kg.provides;const o=Kg.parent&&Kg.parent.provides;o===n&&(n=Kg.provides=Object.create(o)),n[e]=t}else;}function Oh(e,t,n=!1){const o=Kg||_h;if(o){const r=null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&bp(t)?t.call(o.proxy):t}}const Ih={};function Bh(e,t,n){return Ph(e,t,n)}function Ph(e,t,{immediate:n,deep:o,flush:r,onTrack:s,onTrigger:i}=sp){const a=Kg;let l,c,u=!1,d=!1;if(zf(e)?(l=()=>e.value,u=jf(e)):Pf(e)?(l=()=>e,o=!0):gp(e)?(d=!0,u=e.some((e=>Pf(e)||jf(e))),l=()=>e.map((e=>zf(e)?e.value:Pf(e)?Nh(e):bp(e)?Hp(e,a,2):void 0))):l=bp(e)?t?()=>Hp(e,a,2):()=>{if(!a||!a.isUnmounted)return c&&c(),Up(e,a,3,[f])}:ap,t&&o){const e=l;l=()=>Nh(e())}let f=e=>{c=g.onStop=()=>{Hp(e,a,4)}};if(nv)return f=ap,t?n&&Up(t,a,3,[l(),d?[]:void 0,f]):l(),ap;let p=d?[]:Ih;const h=()=>{if(g.active)if(t){const e=g.run();(o||u||(d?e.some(((e,t)=>Pp(e,p[t]))):Pp(e,p)))&&(c&&c(),Up(t,a,3,[e,p===Ih?void 0:p,f]),p=e)}else g.run()};let m;h.allowRecurse=!!t,m="sync"===r?h:"post"===r?()=>ug(h,a&&a.suspense):()=>ch(h);const g=new Ad(l,m);return t?n?h():p=g.run():"post"===r?ug(g.run.bind(g),a&&a.suspense):g.run(),()=>{g.stop(),a&&a.scope&&pp(a.scope.effects,g)}}function Lh(e,t,n){const o=this.proxy,r=yp(e)?e.includes(".")?jh(o,e):()=>o[e]:e.bind(o,o);let s;bp(t)?s=t:(s=t.handler,n=t);const i=Kg;Qg(this);const a=Ph(r,s.bind(o),n);return i?Qg(i):Jg(),a}function jh(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function Nh(e,t){if(!xp(e)||e["__v_skip"])return e;if(t=t||new Set,t.has(e))return e;if(t.add(e),zf(e))Nh(e.value,t);else if(gp(e))for(let n=0;n<e.length;n++)Nh(e[n],t);else if(_p(e)||vp(e))e.forEach((e=>{Nh(e,t)}));else if(Ep(e))for(const n in e)Nh(e[n],t);return e}function Fh(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return rm((()=>{e.isMounted=!0})),am((()=>{e.isUnmounting=!0})),e}const Dh=[Function,Array],Hh={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Dh,onEnter:Dh,onAfterEnter:Dh,onEnterCancelled:Dh,onBeforeLeave:Dh,onLeave:Dh,onAfterLeave:Dh,onLeaveCancelled:Dh,onBeforeAppear:Dh,onAppear:Dh,onAfterAppear:Dh,onAppearCancelled:Dh},setup(e,{slots:t}){const n=Zg(),o=Fh();let r;return()=>{const s=t.default&&Gh(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1)for(const e of s)if(e.type!==bg){i=e;break}const a=Ff(e),{mode:l}=a;if(o.isLeaving)return zh(i);const c=qh(i);if(!c)return zh(i);const u=$h(c,a,o,n);Yh(c,u);const d=n.subTree,f=d&&qh(d);let p=!1;const{getTransitionKey:h}=c.type;if(h){const e=h();void 0===r?r=e:e!==r&&(r=e,p=!0)}if(f&&f.type!==bg&&(!Og(c,f)||p)){const e=$h(f,a,o,n);if(Yh(f,e),"out-in"===l)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,n.update()},zh(i);"in-out"===l&&c.type!==bg&&(e.delayLeave=(e,t,n)=>{const r=Vh(o,f);r[String(f.key)]=f,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=n})}return i}}},Uh=Hh;function Vh(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function $h(e,t,n,o){const{appear:r,mode:s,persisted:i=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:m,onAppear:g,onAfterAppear:v,onAppearCancelled:_}=t,b=String(e.key),y=Vh(n,e),x=(e,t)=>{e&&Up(e,o,9,t)},w=(e,t)=>{const n=t[1];x(e,t),gp(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},k={mode:s,persisted:i,beforeEnter(t){let o=a;if(!n.isMounted){if(!r)return;o=m||a}t._leaveCb&&t._leaveCb(!0);const s=y[b];s&&Og(e,s)&&s.el._leaveCb&&s.el._leaveCb(),x(o,[t])},enter(e){let t=l,o=c,s=u;if(!n.isMounted){if(!r)return;t=g||l,o=v||c,s=_||u}let i=!1;const a=e._enterCb=t=>{i||(i=!0,x(t?s:o,[e]),k.delayedLeave&&k.delayedLeave(),e._enterCb=void 0)};t?w(t,[e,a]):a()},leave(t,o){const r=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return o();x(d,[t]);let s=!1;const i=t._leaveCb=n=>{s||(s=!0,o(),x(n?h:p,[t]),t._leaveCb=void 0,y[r]===e&&delete y[r])};y[r]=e,f?w(f,[t,i]):i()},clone(e){return $h(e,t,n,o)}};return k}function zh(e){if(Kh(e))return e=Dg(e),e.children=null,e}function qh(e){return Kh(e)?e.children?e.children[0]:void 0:e}function Yh(e,t){6&e.shapeFlag&&e.component?Yh(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Gh(e,t=!1,n){let o=[],r=0;for(let s=0;s<e.length;s++){let i=e[s];const a=null==n?i.key:String(n)+String(null!=i.key?i.key:s);i.type===vg?(128&i.patchFlag&&r++,o=o.concat(Gh(i.children,t,a))):(t||i.type!==bg)&&o.push(null!=a?Dg(i,{key:a}):i)}if(r>1)for(let s=0;s<o.length;s++)o[s].patchFlag=-2;return o}function Xh(e){return bp(e)?{setup:e,name:e.name}:e}const Wh=e=>!!e.type.__asyncLoader,Kh=e=>e.type.__isKeepAlive;function Zh(e,t){Jh(e,"a",t)}function Qh(e,t){Jh(e,"da",t)}function Jh(e,t,n=Kg){const o=e.__wdc||(e.__wdc=()=>{let t=n;while(t){if(t.isDeactivated)return;t=t.parent}return e()});if(tm(t,o,n),n){let e=n.parent;while(e&&e.parent)Kh(e.parent.vnode)&&em(o,t,n,e),e=e.parent}}function em(e,t,n,o){const r=tm(t,e,o,!0);lm((()=>{pp(o[t],r)}),n)}function tm(e,t,n=Kg,o=!1){if(n){const r=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Id(),Qg(n);const r=Up(t,n,e,o);return Jg(),Bd(),r});return o?r.unshift(s):r.push(s),s}}const nm=e=>(t,n=Kg)=>(!nv||"sp"===e)&&tm(e,t,n),om=nm("bm"),rm=nm("m"),sm=nm("bu"),im=nm("u"),am=nm("bum"),lm=nm("um"),cm=nm("sp"),um=nm("rtg"),dm=nm("rtc");function fm(e,t=Kg){tm("ec",e,t)}function pm(e,t){const n=_h;if(null===n)return e;const o=cv(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s<t.length;s++){let[e,n,i,a=sp]=t[s];bp(e)&&(e={mounted:e,updated:e}),e.deep&&Nh(n),r.push({dir:e,instance:o,value:n,oldValue:void 0,arg:i,modifiers:a})}return e}function hm(e,t,n,o){const r=e.dirs,s=t&&t.dirs;for(let i=0;i<r.length;i++){const a=r[i];s&&(a.oldValue=s[i].value);let l=a.dir[o];l&&(Id(),Up(l,n,8,[e.el,a,e,t]),Bd())}}const mm="components",gm="directives";function vm(e,t){return xm(mm,e,!0,t)||e}const _m=Symbol();function bm(e){return yp(e)?xm(mm,e,!1)||e:e||_m}function ym(e){return xm(gm,e)}function xm(e,t,n=!0,o=!1){const r=_h||Kg;if(r){const n=r.type;if(e===mm){const e=uv(n,!1);if(e&&(e===t||e===Rp(t)||e===Ip(Rp(t))))return n}const s=wm(r[e]||n[e],t)||wm(r.appContext[e],t);return!s&&o?n:s}}function wm(e,t){return e&&(e[t]||e[Rp(t)]||e[Ip(Rp(t))])}function km(e,t,n,o){let r;const s=n&&n[o];if(gp(e)||yp(e)){r=new Array(e.length);for(let n=0,o=e.length;n<o;n++)r[n]=t(e[n],n,void 0,s&&s[n])}else if("number"===typeof e){r=new Array(e);for(let n=0;n<e;n++)r[n]=t(n+1,n,void 0,s&&s[n])}else if(xp(e))if(e[Symbol.iterator])r=Array.from(e,((e,n)=>t(e,n,void 0,s&&s[n])));else{const n=Object.keys(e);r=new Array(n.length);for(let o=0,i=n.length;o<i;o++){const i=n[o];r[o]=t(e[i],i,o,s&&s[o])}}else r=[];return n&&(n[o]=r),r}function Sm(e,t){for(let n=0;n<t.length;n++){const o=t[n];if(gp(o))for(let t=0;t<o.length;t++)e[o[t].name]=o[t].fn;else o&&(e[o.name]=o.fn)}return e}function Em(e,t,n={},o,r){if(_h.isCE||_h.parent&&Wh(_h.parent)&&_h.parent.isCE)return jg("slot","default"===t?null:{name:t},o&&o());let s=e[t];s&&s._c&&(s._d=!1),kg();const i=s&&Tm(s(n)),a=Rg(vg,{key:n.key||`_${t}`},i||(o?o():[]),i&&1===e._?64:-2);return!r&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),s&&s._c&&(s._d=!0),a}function Tm(e){return e.some((e=>!Cg(e)||e.type!==bg&&!(e.type===vg&&!Tm(e.children))))?e:null}const Mm=e=>e?ev(e)?cv(e)||e.proxy:Mm(e.parent):null,Am=fp(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Mm(e.parent),$root:e=>Mm(e.root),$emit:e=>e.emit,$options:e=>Lm(e),$forceUpdate:e=>e.f||(e.f=()=>sh(e.update)),$nextTick:e=>e.n||(e.n=oh.bind(e.proxy)),$watch:e=>Lh.bind(e)}),Rm={get({_:e},t){const{ctx:n,setupState:o,data:r,props:s,accessCache:i,type:a,appContext:l}=e;let c;if("$"!==t[0]){const a=i[t];if(void 0!==a)switch(a){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return s[t]}else{if(o!==sp&&mp(o,t))return i[t]=1,o[t];if(r!==sp&&mp(r,t))return i[t]=2,r[t];if((c=e.propsOptions[0])&&mp(c,t))return i[t]=3,s[t];if(n!==sp&&mp(n,t))return i[t]=4,n[t];Cm&&(i[t]=0)}}const u=Am[t];let d,f;return u?("$attrs"===t&&Pd(e,"get",t),u(e)):(d=a.__cssModules)&&(d=d[t])?d:n!==sp&&mp(n,t)?(i[t]=4,n[t]):(f=l.config.globalProperties,mp(f,t)?f[t]:void 0)},set({_:e},t,n){const{data:o,setupState:r,ctx:s}=e;return r!==sp&&mp(r,t)?(r[t]=n,!0):o!==sp&&mp(o,t)?(o[t]=n,!0):!mp(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(s[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:s}},i){let a;return!!n[i]||e!==sp&&mp(e,i)||t!==sp&&mp(t,i)||(a=s[0])&&mp(a,i)||mp(o,i)||mp(Am,i)||mp(r.config.globalProperties,i)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:mp(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Cm=!0;function Om(e){const t=Lm(e),n=e.proxy,o=e.ctx;Cm=!1,t.beforeCreate&&Bm(t.beforeCreate,e,"bc");const{data:r,computed:s,methods:i,watch:a,provide:l,inject:c,created:u,beforeMount:d,mounted:f,beforeUpdate:p,updated:h,activated:m,deactivated:g,beforeDestroy:v,beforeUnmount:_,destroyed:b,unmounted:y,render:x,renderTracked:w,renderTriggered:k,errorCaptured:S,serverPrefetch:E,expose:T,inheritAttrs:M,components:A,directives:R,filters:C}=t,O=null;if(c&&Im(c,o,O,e.appContext.config.unwrapInjectedRef),i)for(const B in i){const e=i[B];bp(e)&&(o[B]=e.bind(n))}if(r){const t=r.call(n,n);xp(t)&&(e.data=Cf(t))}if(Cm=!0,s)for(const B in s){const e=s[B],t=bp(e)?e.bind(n,n):bp(e.get)?e.get.bind(n,n):ap,r=!bp(e)&&bp(e.set)?e.set.bind(n):ap,i=fv({get:t,set:r});Object.defineProperty(o,B,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(a)for(const B in a)Pm(a[B],o,n,B);if(l){const e=bp(l)?l.call(n):l;Reflect.ownKeys(e).forEach((t=>{Ch(t,e[t])}))}function I(e,t){gp(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(u&&Bm(u,e,"c"),I(om,d),I(rm,f),I(sm,p),I(im,h),I(Zh,m),I(Qh,g),I(fm,S),I(dm,w),I(um,k),I(am,_),I(lm,y),I(cm,E),gp(T))if(T.length){const t=e.exposed||(e.exposed={});T.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});x&&e.render===ap&&(e.render=x),null!=M&&(e.inheritAttrs=M),A&&(e.components=A),R&&(e.directives=R)}function Im(e,t,n=ap,o=!1){gp(e)&&(e=Hm(e));for(const r in e){const n=e[r];let s;s=xp(n)?"default"in n?Oh(n.from||r,n.default,!0):Oh(n.from||r):Oh(n),zf(s)&&o?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[r]=s}}function Bm(e,t,n){Up(gp(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Pm(e,t,n,o){const r=o.includes(".")?jh(n,o):()=>n[o];if(yp(e)){const n=t[e];bp(n)&&Bh(r,n)}else if(bp(e))Bh(r,e.bind(n));else if(xp(e))if(gp(e))e.forEach((e=>Pm(e,t,n,o)));else{const o=bp(e.handler)?e.handler.bind(n):t[e.handler];bp(o)&&Bh(r,o,e)}}function Lm(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let l;return a?l=a:r.length||n||o?(l={},r.length&&r.forEach((e=>jm(l,e,i,!0))),jm(l,t,i)):l=t,s.set(t,l),l}function jm(e,t,n,o=!1){const{mixins:r,extends:s}=t;s&&jm(e,s,n,!0),r&&r.forEach((t=>jm(e,t,n,!0)));for(const i in t)if(o&&"expose"===i);else{const o=Nm[i]||n&&n[i];e[i]=o?o(e[i],t[i]):t[i]}return e}const Nm={data:Fm,props:Vm,emits:Vm,methods:Vm,computed:Vm,beforeCreate:Um,created:Um,beforeMount:Um,mounted:Um,beforeUpdate:Um,updated:Um,beforeDestroy:Um,beforeUnmount:Um,destroyed:Um,unmounted:Um,activated:Um,deactivated:Um,errorCaptured:Um,serverPrefetch:Um,components:Vm,directives:Vm,watch:$m,provide:Fm,inject:Dm};function Fm(e,t){return t?e?function(){return fp(bp(e)?e.call(this,this):e,bp(t)?t.call(this,this):t)}:t:e}function Dm(e,t){return Vm(Hm(e),Hm(t))}function Hm(e){if(gp(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Um(e,t){return e?[...new Set([].concat(e,t))]:t}function Vm(e,t){return e?fp(fp(Object.create(null),e),t):t}function $m(e,t){if(!e)return t;if(!t)return e;const n=fp(Object.create(null),e);for(const o in t)n[o]=Um(e[o],t[o]);return n}function zm(e,t,n,o=!1){const r={},s={};jp(s,Ig,1),e.propsDefaults=Object.create(null),Ym(e,t,r,s);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=o?r:Of(r):e.type.props?e.props=r:e.props=s,e.attrs=s}function qm(e,t,n,o){const{props:r,attrs:s,vnode:{patchFlag:i}}=e,a=Ff(r),[l]=e.propsOptions;let c=!1;if(!(o||i>0)||16&i){let o;Ym(e,t,r,s)&&(c=!0);for(const s in a)t&&(mp(t,s)||(o=Op(s))!==s&&mp(t,o))||(l?!n||void 0===n[s]&&void 0===n[o]||(r[s]=Gm(l,a,s,void 0,e,!0)):delete r[s]);if(s!==a)for(const e in s)t&&mp(t,e)||(delete s[e],c=!0)}else if(8&i){const n=e.vnode.dynamicProps;for(let o=0;o<n.length;o++){let i=n[o];if(vh(e.emitsOptions,i))continue;const u=t[i];if(l)if(mp(s,i))u!==s[i]&&(s[i]=u,c=!0);else{const t=Rp(i);r[t]=Gm(l,a,t,u,e,!1)}else u!==s[i]&&(s[i]=u,c=!0)}}c&&jd(e,"set","$attrs")}function Ym(e,t,n,o){const[r,s]=e.propsOptions;let i,a=!1;if(t)for(let l in t){if(Tp(l))continue;const c=t[l];let u;r&&mp(r,u=Rp(l))?s&&s.includes(u)?(i||(i={}))[u]=c:n[u]=c:vh(e.emitsOptions,l)||l in o&&c===o[l]||(o[l]=c,a=!0)}if(s){const t=Ff(n),o=i||sp;for(let i=0;i<s.length;i++){const a=s[i];n[a]=Gm(r,t,a,o[a],e,!mp(o,a))}}return a}function Gm(e,t,n,o,r,s){const i=e[n];if(null!=i){const e=mp(i,"default");if(e&&void 0===o){const e=i.default;if(i.type!==Function&&bp(e)){const{propsDefaults:s}=r;n in s?o=s[n]:(Qg(r),o=s[n]=e.call(null,t),Jg())}else o=e}i[0]&&(s&&!e?o=!1:!i[1]||""!==o&&o!==Op(n)||(o=!0))}return o}function Xm(e,t,n=!1){const o=t.propsCache,r=o.get(e);if(r)return r;const s=e.props,i={},a=[];let l=!1;if(!bp(e)){const o=e=>{l=!0;const[n,o]=Xm(e,t,!0);fp(i,n),o&&a.push(...o)};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!s&&!l)return o.set(e,ip),ip;if(gp(s))for(let u=0;u<s.length;u++){const e=Rp(s[u]);Wm(e)&&(i[e]=sp)}else if(s)for(const u in s){const e=Rp(u);if(Wm(e)){const t=s[u],n=i[e]=gp(t)||bp(t)?{type:t}:t;if(n){const t=Qm(Boolean,n.type),o=Qm(String,n.type);n[0]=t>-1,n[1]=o<0||t<o,(t>-1||mp(n,"default"))&&a.push(e)}}}const c=[i,a];return o.set(e,c),c}function Wm(e){return"$"!==e[0]}function Km(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function Zm(e,t){return Km(e)===Km(t)}function Qm(e,t){return gp(t)?t.findIndex((t=>Zm(t,e))):bp(t)&&Zm(t,e)?0:-1}const Jm=e=>"_"===e[0]||"$stable"===e,eg=e=>gp(e)?e.map(Vg):[Vg(e)],tg=(e,t,n)=>{if(t._n)return t;const o=xh(((...e)=>eg(t(...e))),n);return o._c=!1,o},ng=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Jm(r))continue;const n=e[r];if(bp(n))t[r]=tg(r,n,o);else if(null!=n){const e=eg(n);t[r]=()=>e}}},og=(e,t)=>{const n=eg(t);e.slots.default=()=>n},rg=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=Ff(t),jp(t,"_",n)):ng(t,e.slots={})}else e.slots={},t&&og(e,t);jp(e.slots,Ig,1)},sg=(e,t,n)=>{const{vnode:o,slots:r}=e;let s=!0,i=sp;if(32&o.shapeFlag){const e=t._;e?n&&1===e?s=!1:(fp(r,t),n||1!==e||delete r._):(s=!t.$stable,ng(t,r)),i=t}else t&&(og(e,t),i={default:1});if(s)for(const a in r)Jm(a)||a in i||delete r[a]};function ig(){return{app:null,config:{isNativeTag:lp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ag=0;function lg(e,t){return function(n,o=null){bp(n)||(n=Object.assign({},n)),null==o||xp(o)||(o=null);const r=ig(),s=new Set;let i=!1;const a=r.app={_uid:ag++,_component:n,_props:o,_container:null,_context:r,_instance:null,version:hv,get config(){return r.config},set config(e){},use(e,...t){return s.has(e)||(e&&bp(e.install)?(s.add(e),e.install(a,...t)):bp(e)&&(s.add(e),e(a,...t))),a},mixin(e){return r.mixins.includes(e)||r.mixins.push(e),a},component(e,t){return t?(r.components[e]=t,a):r.components[e]},directive(e,t){return t?(r.directives[e]=t,a):r.directives[e]},mount(s,l,c){if(!i){const u=jg(n,o);return u.appContext=r,l&&t?t(u,s):e(u,s,c),i=!0,a._container=s,s.__vue_app__=a,cv(u.component)||u.component.proxy}},unmount(){i&&(e(null,a._container),delete a._container.__vue_app__)},provide(e,t){return r.provides[e]=t,a}};return a}}function cg(e,t,n,o,r=!1){if(gp(e))return void e.forEach(((e,s)=>cg(e,t&&(gp(t)?t[s]:t),n,o,r)));if(Wh(o)&&!r)return;const s=4&o.shapeFlag?cv(o.component)||o.component.proxy:o.el,i=r?null:s,{i:a,r:l}=e,c=t&&t.r,u=a.refs===sp?a.refs={}:a.refs,d=a.setupState;if(null!=c&&c!==l&&(yp(c)?(u[c]=null,mp(d,c)&&(d[c]=null)):zf(c)&&(c.value=null)),bp(l))Hp(l,a,12,[i,u]);else{const t=yp(l),o=zf(l);if(t||o){const a=()=>{if(e.f){const n=t?u[l]:l.value;r?gp(n)&&pp(n,s):gp(n)?n.includes(s)||n.push(s):t?(u[l]=[s],mp(d,l)&&(d[l]=u[l])):(l.value=[s],e.k&&(u[e.k]=l.value))}else t?(u[l]=i,mp(d,l)&&(d[l]=i)):o&&(l.value=i,e.k&&(u[e.k]=i))};i?(a.id=-1,ug(a,n)):a()}}}const ug=Rh;function dg(e){return fg(e)}function fg(e,t){const n=Dp();n.__VUE__=!0;const{insert:o,remove:r,patchProp:s,createElement:i,createText:a,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=ap,cloneNode:h,insertStaticContent:m}=e,g=(e,t,n,o=null,r=null,s=null,i=!1,a=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!Og(e,t)&&(o=z(e),D(e,r,s,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:d}=t;switch(c){case _g:v(e,t,n,o);break;case bg:_(e,t,n,o);break;case yg:null==e&&b(t,n,o,i);break;case vg:R(e,t,n,o,r,s,i,a,l);break;default:1&d?w(e,t,n,o,r,s,i,a,l):6&d?C(e,t,n,o,r,s,i,a,l):(64&d||128&d)&&c.process(e,t,n,o,r,s,i,a,l,Y)}null!=u&&r&&cg(u,e&&e.ref,s,t||e,!t)},v=(e,t,n,r)=>{if(null==e)o(t.el=a(t.children),n,r);else{const n=t.el=e.el;t.children!==e.children&&c(n,t.children)}},_=(e,t,n,r)=>{null==e?o(t.el=l(t.children||""),n,r):t.el=e.el},b=(e,t,n,o)=>{[e.el,e.anchor]=m(e.children,t,n,o,e.el,e.anchor)},y=({el:e,anchor:t},n,r)=>{let s;while(e&&e!==t)s=f(e),o(e,n,r),e=s;o(t,n,r)},x=({el:e,anchor:t})=>{let n;while(e&&e!==t)n=f(e),r(e),e=n;r(t)},w=(e,t,n,o,r,s,i,a,l)=>{i=i||"svg"===t.type,null==e?k(t,n,o,r,s,i,a,l):T(e,t,r,s,i,a,l)},k=(e,t,n,r,a,l,c,d)=>{let f,p;const{type:m,props:g,shapeFlag:v,transition:_,patchFlag:b,dirs:y}=e;if(e.el&&void 0!==h&&-1===b)f=e.el=h(e.el);else{if(f=e.el=i(e.type,l,g&&g.is,g),8&v?u(f,e.children):16&v&&E(e.children,f,null,r,a,l&&"foreignObject"!==m,c,d),y&&hm(e,null,r,"created"),g){for(const t in g)"value"===t||Tp(t)||s(f,t,null,g[t],l,e.children,r,a,$);"value"in g&&s(f,"value",null,g.value),(p=g.onVnodeBeforeMount)&&Yg(p,r,e)}S(f,e,e.scopeId,c,r)}y&&hm(e,null,r,"beforeMount");const x=(!a||a&&!a.pendingBranch)&&_&&!_.persisted;x&&_.beforeEnter(f),o(f,t,n),((p=g&&g.onVnodeMounted)||x||y)&&ug((()=>{p&&Yg(p,r,e),x&&_.enter(f),y&&hm(e,null,r,"mounted")}),a)},S=(e,t,n,o,r)=>{if(n&&p(e,n),o)for(let s=0;s<o.length;s++)p(e,o[s]);if(r){let n=r.subTree;if(t===n){const t=r.vnode;S(e,t,t.scopeId,t.slotScopeIds,r.parent)}}},E=(e,t,n,o,r,s,i,a,l=0)=>{for(let c=l;c<e.length;c++){const l=e[c]=a?$g(e[c]):Vg(e[c]);g(null,l,t,n,o,r,s,i,a)}},T=(e,t,n,o,r,i,a)=>{const l=t.el=e.el;let{patchFlag:c,dynamicChildren:d,dirs:f}=t;c|=16&e.patchFlag;const p=e.props||sp,h=t.props||sp;let m;n&&pg(n,!1),(m=h.onVnodeBeforeUpdate)&&Yg(m,n,t,e),f&&hm(t,e,n,"beforeUpdate"),n&&pg(n,!0);const g=r&&"foreignObject"!==t.type;if(d?M(e.dynamicChildren,d,l,n,o,g,i):a||L(e,t,l,null,n,o,g,i,!1),c>0){if(16&c)A(l,t,p,h,n,o,r);else if(2&c&&p.class!==h.class&&s(l,"class",null,h.class,r),4&c&&s(l,"style",p.style,h.style,r),8&c){const i=t.dynamicProps;for(let t=0;t<i.length;t++){const a=i[t],c=p[a],u=h[a];u===c&&"value"!==a||s(l,a,c,u,r,e.children,n,o,$)}}1&c&&e.children!==t.children&&u(l,t.children)}else a||null!=d||A(l,t,p,h,n,o,r);((m=h.onVnodeUpdated)||f)&&ug((()=>{m&&Yg(m,n,t,e),f&&hm(t,e,n,"updated")}),o)},M=(e,t,n,o,r,s,i)=>{for(let a=0;a<t.length;a++){const l=e[a],c=t[a],u=l.el&&(l.type===vg||!Og(l,c)||70&l.shapeFlag)?d(l.el):n;g(l,c,u,null,o,r,s,i,!0)}},A=(e,t,n,o,r,i,a)=>{if(n!==o){for(const l in o){if(Tp(l))continue;const c=o[l],u=n[l];c!==u&&"value"!==l&&s(e,l,u,c,a,t.children,r,i,$)}if(n!==sp)for(const l in n)Tp(l)||l in o||s(e,l,n[l],null,a,t.children,r,i,$);"value"in o&&s(e,"value",n.value,o.value)}},R=(e,t,n,r,s,i,l,c,u)=>{const d=t.el=e?e.el:a(""),f=t.anchor=e?e.anchor:a("");let{patchFlag:p,dynamicChildren:h,slotScopeIds:m}=t;m&&(c=c?c.concat(m):m),null==e?(o(d,n,r),o(f,n,r),E(t.children,n,f,s,i,l,c,u)):p>0&&64&p&&h&&e.dynamicChildren?(M(e.dynamicChildren,h,n,s,i,l,c),(null!=t.key||s&&t===s.subTree)&&hg(e,t,!0)):L(e,t,n,f,s,i,l,c,u)},C=(e,t,n,o,r,s,i,a,l)=>{t.slotScopeIds=a,null==e?512&t.shapeFlag?r.ctx.activate(t,n,o,i,l):O(t,n,o,r,s,i,l):I(e,t,l)},O=(e,t,n,o,r,s,i)=>{const a=e.component=Wg(e,o,r);if(Kh(e)&&(a.ctx.renderer=Y),ov(a),a.asyncDep){if(r&&r.registerDep(a,B),!e.el){const e=a.subTree=jg(bg);_(null,e,t,n)}}else B(a,e,t,n,r,s,i)},I=(e,t,n)=>{const o=t.component=e.component;if(Eh(e,t,n)){if(o.asyncDep&&!o.asyncResolved)return void P(o,t,n);o.next=t,ah(o.update),o.update()}else t.el=e.el,o.vnode=t},B=(e,t,n,o,r,s,i)=>{const a=()=>{if(e.isMounted){let t,{next:n,bu:o,u:a,parent:l,vnode:c}=e,u=n;pg(e,!1),n?(n.el=c.el,P(e,n,i)):n=c,o&&Lp(o),(t=n.props&&n.props.onVnodeBeforeUpdate)&&Yg(t,l,n,c),pg(e,!0);const f=wh(e),p=e.subTree;e.subTree=f,g(p,f,d(p.el),z(p),e,r,s),n.el=f.el,null===u&&Mh(e,f.el),a&&ug(a,r),(t=n.props&&n.props.onVnodeUpdated)&&ug((()=>Yg(t,l,n,c)),r)}else{let i;const{el:a,props:l}=t,{bm:c,m:u,parent:d}=e,f=Wh(t);if(pg(e,!1),c&&Lp(c),!f&&(i=l&&l.onVnodeBeforeMount)&&Yg(i,d,t),pg(e,!0),a&&X){const n=()=>{e.subTree=wh(e),X(a,e.subTree,e,r,null)};f?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const i=e.subTree=wh(e);g(null,i,n,o,e,r,s),t.el=i.el}if(u&&ug(u,r),!f&&(i=l&&l.onVnodeMounted)){const e=t;ug((()=>Yg(i,d,e)),r)}(256&t.shapeFlag||d&&Wh(d.vnode)&&256&d.vnode.shapeFlag)&&e.a&&ug(e.a,r),e.isMounted=!0,t=n=o=null}},l=e.effect=new Ad(a,(()=>sh(c)),e.scope),c=e.update=()=>l.run();c.id=e.uid,pg(e,!0),c()},P=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,qm(e,t.props,o,n),sg(e,t.children,n),Id(),dh(void 0,e.update),Bd()},L=(e,t,n,o,r,s,i,a,l=!1)=>{const c=e&&e.children,d=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:h}=t;if(p>0){if(128&p)return void N(c,f,n,o,r,s,i,a,l);if(256&p)return void j(c,f,n,o,r,s,i,a,l)}8&h?(16&d&&$(c,r,s),f!==c&&u(n,f)):16&d?16&h?N(c,f,n,o,r,s,i,a,l):$(c,r,s,!0):(8&d&&u(n,""),16&h&&E(f,n,o,r,s,i,a,l))},j=(e,t,n,o,r,s,i,a,l)=>{e=e||ip,t=t||ip;const c=e.length,u=t.length,d=Math.min(c,u);let f;for(f=0;f<d;f++){const o=t[f]=l?$g(t[f]):Vg(t[f]);g(e[f],o,n,null,r,s,i,a,l)}c>u?$(e,r,s,!0,!1,d):E(t,n,o,r,s,i,a,l,d)},N=(e,t,n,o,r,s,i,a,l)=>{let c=0;const u=t.length;let d=e.length-1,f=u-1;while(c<=d&&c<=f){const o=e[c],u=t[c]=l?$g(t[c]):Vg(t[c]);if(!Og(o,u))break;g(o,u,n,null,r,s,i,a,l),c++}while(c<=d&&c<=f){const o=e[d],c=t[f]=l?$g(t[f]):Vg(t[f]);if(!Og(o,c))break;g(o,c,n,null,r,s,i,a,l),d--,f--}if(c>d){if(c<=f){const e=f+1,d=e<u?t[e].el:o;while(c<=f)g(null,t[c]=l?$g(t[c]):Vg(t[c]),n,d,r,s,i,a,l),c++}}else if(c>f)while(c<=d)D(e[c],r,s,!0),c++;else{const p=c,h=c,m=new Map;for(c=h;c<=f;c++){const e=t[c]=l?$g(t[c]):Vg(t[c]);null!=e.key&&m.set(e.key,c)}let v,_=0;const b=f-h+1;let y=!1,x=0;const w=new Array(b);for(c=0;c<b;c++)w[c]=0;for(c=p;c<=d;c++){const o=e[c];if(_>=b){D(o,r,s,!0);continue}let u;if(null!=o.key)u=m.get(o.key);else for(v=h;v<=f;v++)if(0===w[v-h]&&Og(o,t[v])){u=v;break}void 0===u?D(o,r,s,!0):(w[u-h]=c+1,u>=x?x=u:y=!0,g(o,t[u],n,null,r,s,i,a,l),_++)}const k=y?mg(w):ip;for(v=k.length-1,c=b-1;c>=0;c--){const e=h+c,d=t[e],f=e+1<u?t[e+1].el:o;0===w[c]?g(null,d,n,f,r,s,i,a,l):y&&(v<0||c!==k[v]?F(d,n,f,2):v--)}}},F=(e,t,n,r,s=null)=>{const{el:i,type:a,transition:l,children:c,shapeFlag:u}=e;if(6&u)return void F(e.component.subTree,t,n,r);if(128&u)return void e.suspense.move(t,n,r);if(64&u)return void a.move(e,t,n,Y);if(a===vg){o(i,t,n);for(let e=0;e<c.length;e++)F(c[e],t,n,r);return void o(e.anchor,t,n)}if(a===yg)return void y(e,t,n);const d=2!==r&&1&u&&l;if(d)if(0===r)l.beforeEnter(i),o(i,t,n),ug((()=>l.enter(i)),s);else{const{leave:e,delayLeave:r,afterLeave:s}=l,a=()=>o(i,t,n),c=()=>{e(i,(()=>{a(),s&&s()}))};r?r(i,a,c):c()}else o(i,t,n)},D=(e,t,n,o=!1,r=!1)=>{const{type:s,props:i,ref:a,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:d,dirs:f}=e;if(null!=a&&cg(a,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&f,h=!Wh(e);let m;if(h&&(m=i&&i.onVnodeBeforeUnmount)&&Yg(m,t,e),6&u)V(e.component,n,o);else{if(128&u)return void e.suspense.unmount(n,o);p&&hm(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,r,Y,o):c&&(s!==vg||d>0&&64&d)?$(c,t,n,!1,!0):(s===vg&&384&d||!r&&16&u)&&$(l,t,n),o&&H(e)}(h&&(m=i&&i.onVnodeUnmounted)||p)&&ug((()=>{m&&Yg(m,t,e),p&&hm(e,null,t,"unmounted")}),n)},H=e=>{const{type:t,el:n,anchor:o,transition:s}=e;if(t===vg)return void U(n,o);if(t===yg)return void x(e);const i=()=>{r(n),s&&!s.persisted&&s.afterLeave&&s.afterLeave()};if(1&e.shapeFlag&&s&&!s.persisted){const{leave:t,delayLeave:o}=s,r=()=>t(n,i);o?o(e.el,i,r):r()}else i()},U=(e,t)=>{let n;while(e!==t)n=f(e),r(e),e=n;r(t)},V=(e,t,n)=>{const{bum:o,scope:r,update:s,subTree:i,um:a}=e;o&&Lp(o),r.stop(),s&&(s.active=!1,D(i,e,t,n)),a&&ug(a,t),ug((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},$=(e,t,n,o=!1,r=!1,s=0)=>{for(let i=s;i<e.length;i++)D(e[i],t,n,o,r)},z=e=>6&e.shapeFlag?z(e.component.subTree):128&e.shapeFlag?e.suspense.next():f(e.anchor||e.el),q=(e,t,n)=>{null==e?t._vnode&&D(t._vnode,null,null,!0):g(t._vnode||null,e,t,null,null,null,n),fh(),t._vnode=e},Y={p:g,um:D,m:F,r:H,mt:O,mc:E,pc:L,pbc:M,n:z,o:e};let G,X;return t&&([G,X]=t(Y)),{render:q,hydrate:G,createApp:lg(q,G)}}function pg({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function hg(e,t,n=!1){const o=e.children,r=t.children;if(gp(o)&&gp(r))for(let s=0;s<o.length;s++){const e=o[s];let t=r[s];1&t.shapeFlag&&!t.dynamicChildren&&((t.patchFlag<=0||32===t.patchFlag)&&(t=r[s]=$g(r[s]),t.el=e.el),n||hg(e,t))}}function mg(e){const t=e.slice(),n=[0];let o,r,s,i,a;const l=e.length;for(o=0;o<l;o++){const l=e[o];if(0!==l){if(r=n[n.length-1],e[r]<l){t[o]=r,n.push(o);continue}s=0,i=n.length-1;while(s<i)a=s+i>>1,e[n[a]]<l?s=a+1:i=a;l<e[n[s]]&&(s>0&&(t[o]=n[s-1]),n[s]=o)}}s=n.length,i=n[s-1];while(s-- >0)n[s]=i,i=t[i];return n}const gg=e=>e.__isTeleport,vg=Symbol(void 0),_g=Symbol(void 0),bg=Symbol(void 0),yg=Symbol(void 0),xg=[];let wg=null;function kg(e=!1){xg.push(wg=e?null:[])}function Sg(){xg.pop(),wg=xg[xg.length-1]||null}let Eg=1;function Tg(e){Eg+=e}function Mg(e){return e.dynamicChildren=Eg>0?wg||ip:null,Sg(),Eg>0&&wg&&wg.push(e),e}function Ag(e,t,n,o,r,s){return Mg(Lg(e,t,n,o,r,s,!0))}function Rg(e,t,n,o,r){return Mg(jg(e,t,n,o,r,!0))}function Cg(e){return!!e&&!0===e.__v_isVNode}function Og(e,t){return e.type===t.type&&e.key===t.key}const Ig="__vInternal",Bg=({key:e})=>null!=e?e:null,Pg=({ref:e,ref_key:t,ref_for:n})=>null!=e?yp(e)||zf(e)||bp(e)?{i:_h,r:e,k:t,f:!!n}:e:null;function Lg(e,t=null,n=null,o=0,r=null,s=(e===vg?0:1),i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Bg(t),ref:t&&Pg(t),scopeId:bh,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null};return a?(zg(l,n),128&s&&e.normalize(l)):n&&(l.shapeFlag|=yp(n)?8:16),Eg>0&&!i&&wg&&(l.patchFlag>0||6&s)&&32!==l.patchFlag&&wg.push(l),l}const jg=Ng;function Ng(e,t=null,n=null,o=0,r=null,s=!1){if(e&&e!==_m||(e=bg),Cg(e)){const o=Dg(e,t,!0);return n&&zg(o,n),Eg>0&&!s&&wg&&(6&o.shapeFlag?wg[wg.indexOf(e)]=o:wg.push(o)),o.patchFlag|=-2,o}if(dv(e)&&(e=e.__vccOpts),t){t=Fg(t);let{class:e,style:n}=t;e&&!yp(e)&&(t.class=tp(e)),xp(n)&&(Nf(n)&&!gp(n)&&(n=fp({},n)),t.style=Zf(n))}const i=yp(e)?1:Ah(e)?128:gg(e)?64:xp(e)?4:bp(e)?2:0;return Lg(e,t,n,o,r,i,s,!0)}function Fg(e){return e?Nf(e)||Ig in e?fp({},e):e:null}function Dg(e,t,n=!1){const{props:o,ref:r,patchFlag:s,children:i}=e,a=t?qg(o||{},t):o,l={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Bg(a),ref:t&&t.ref?n&&r?gp(r)?r.concat(Pg(t)):[r,Pg(t)]:Pg(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==vg?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Dg(e.ssContent),ssFallback:e.ssFallback&&Dg(e.ssFallback),el:e.el,anchor:e.anchor};return l}function Hg(e=" ",t=0){return jg(_g,null,e,t)}function Ug(e="",t=!1){return t?(kg(),Rg(bg,null,e)):jg(bg,null,e)}function Vg(e){return null==e||"boolean"===typeof e?jg(bg):gp(e)?jg(vg,null,e.slice()):"object"===typeof e?$g(e):jg(_g,null,String(e))}function $g(e){return null===e.el||e.memo?e:Dg(e)}function zg(e,t){let n=0;const{shapeFlag:o}=e;if(null==t)t=null;else if(gp(t))n=16;else if("object"===typeof t){if(65&o){const n=t.default;return void(n&&(n._c&&(n._d=!1),zg(e,n()),n._c&&(n._d=!0)))}{n=32;const o=t._;o||Ig in t?3===o&&_h&&(1===_h.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=_h}}else bp(t)?(t={default:t,_ctx:_h},n=32):(t=String(t),64&o?(n=16,t=[Hg(t)]):n=8);e.children=t,e.shapeFlag|=n}function qg(...e){const t={};for(let n=0;n<e.length;n++){const o=e[n];for(const e in o)if("class"===e)t.class!==o.class&&(t.class=tp([t.class,o.class]));else if("style"===e)t.style=Zf([t.style,o.style]);else if(up(e)){const n=t[e],r=o[e];!r||n===r||gp(n)&&n.includes(r)||(t[e]=n?[].concat(n,r):r)}else""!==e&&(t[e]=o[e])}return t}function Yg(e,t,n,o=null){Up(e,t,7,[n,o])}const Gg=ig();let Xg=0;function Wg(e,t,n){const o=e.type,r=(t?t.appContext:e.appContext)||Gg,s={uid:Xg++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new hd(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Xm(o,r),emitsOptions:gh(o,r),emit:null,emitted:null,propsDefaults:sp,inheritAttrs:o.inheritAttrs,ctx:sp,data:sp,props:sp,attrs:sp,slots:sp,refs:sp,setupState:sp,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=mh.bind(null,s),e.ce&&e.ce(s),s}let Kg=null;const Zg=()=>Kg||_h,Qg=e=>{Kg=e,e.scope.on()},Jg=()=>{Kg&&Kg.scope.off(),Kg=null};function ev(e){return 4&e.vnode.shapeFlag}let tv,nv=!1;function ov(e,t=!1){nv=t;const{props:n,children:o}=e.vnode,r=ev(e);zm(e,n,r,t),rg(e,o);const s=r?rv(e,t):void 0;return nv=!1,s}function rv(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Df(new Proxy(e.ctx,Rm));const{setup:o}=n;if(o){const n=e.setupContext=o.length>1?lv(e):null;Qg(e),Id();const r=Hp(o,e,0,[e.props,n]);if(Bd(),Jg(),wp(r)){if(r.then(Jg,Jg),t)return r.then((n=>{sv(e,n,t)})).catch((t=>{Vp(t,e,0)}));e.asyncDep=r}else sv(e,r,t)}else iv(e,t)}function sv(e,t,n){bp(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xp(t)&&(e.setupState=Gf(t)),iv(e,n)}function iv(e,t,n){const o=e.type;if(!e.render){if(!t&&tv&&!o.render){const t=o.template;if(t){const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:s,compilerOptions:i}=o,a=fp(fp({isCustomElement:n,delimiters:s},r),i);o.render=tv(t,a)}}e.render=o.render||ap}Qg(e),Id(),Om(e),Bd(),Jg()}function av(e){return new Proxy(e.attrs,{get(t,n){return Pd(e,"get","$attrs"),t[n]}})}function lv(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=av(e))},slots:e.slots,emit:e.emit,expose:t}}function cv(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Gf(Df(e.exposed)),{get(t,n){return n in t?t[n]:n in Am?Am[n](e):void 0}}))}function uv(e,t=!0){return bp(e)?e.displayName||e.name:e.name||t&&e.__name}function dv(e){return bp(e)&&"__vccOpts"in e}const fv=(e,t)=>Wf(e,t,nv);function pv(e,t,n){const o=arguments.length;return 2===o?xp(t)&&!gp(t)?Cg(t)?jg(e,null,[t]):jg(e,t):jg(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):3===o&&Cg(n)&&(n=[n]),jg(e,t,n))}const hv="3.2.37";function mv(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r<o.length;r++)n[o[r]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}const gv="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",vv=mv(gv);function _v(e){return!!e||""===e}const bv=/^on[^a-z]/,yv=e=>bv.test(e),xv=e=>e.startsWith("onUpdate:"),wv=Object.assign,kv=Array.isArray,Sv=e=>"function"===typeof e,Ev=e=>"string"===typeof e,Tv=e=>null!==e&&"object"===typeof e,Mv=e=>{const t=Object.create(null);return n=>{const o=t[n];return o||(t[n]=e(n))}},Av=/-(\w)/g,Rv=Mv((e=>e.replace(Av,((e,t)=>t?t.toUpperCase():"")))),Cv=/\B([A-Z])/g,Ov=Mv((e=>e.replace(Cv,"-$1").toLowerCase())),Iv=Mv((e=>e.charAt(0).toUpperCase()+e.slice(1))),Bv=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Pv="http://www.w3.org/2000/svg",Lv="undefined"!==typeof document?document:null,jv=Lv&&Lv.createElement("template"),Nv={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t?Lv.createElementNS(Pv,e):Lv.createElement(e,n?{is:n}:void 0);return"select"===e&&o&&null!=o.multiple&&r.setAttribute("multiple",o.multiple),r},createText:e=>Lv.createTextNode(e),createComment:e=>Lv.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Lv.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,o,r,s){const i=n?n.previousSibling:t.lastChild;if(r&&(r===s||r.nextSibling)){while(1)if(t.insertBefore(r.cloneNode(!0),n),r===s||!(r=r.nextSibling))break}else{jv.innerHTML=o?`<svg>${e}</svg>`:e;const r=jv.content;if(o){const e=r.firstChild;while(e.firstChild)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Fv(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Dv(e,t,n){const o=e.style,r=Ev(n);if(n&&!r){for(const e in n)Uv(o,e,n[e]);if(t&&!Ev(t))for(const e in t)null==n[e]&&Uv(o,e,"")}else{const s=o.display;r?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=s)}}const Hv=/\s*!important$/;function Uv(e,t,n){if(kv(n))n.forEach((n=>Uv(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=zv(e,t);Hv.test(n)?e.setProperty(Ov(o),n.replace(Hv,""),"important"):e[o]=n}}const Vv=["Webkit","Moz","ms"],$v={};function zv(e,t){const n=$v[t];if(n)return n;let o=Rp(t);if("filter"!==o&&o in e)return $v[t]=o;o=Iv(o);for(let r=0;r<Vv.length;r++){const n=Vv[r]+o;if(n in e)return $v[t]=n}return t}const qv="http://www.w3.org/1999/xlink";function Yv(e,t,n,o,r){if(o&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(qv,t.slice(6,t.length)):e.setAttributeNS(qv,t,n);else{const o=vv(t);null==n||o&&!_v(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}function Gv(e,t,n,o,r,s,i){if("innerHTML"===t||"textContent"===t)return o&&i(o,r,s),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const o=null==n?"":n;return e.value===o&&"OPTION"!==e.tagName||(e.value=o),void(null==n&&e.removeAttribute(t))}let a=!1;if(""===n||null==n){const o=typeof e[t];"boolean"===o?n=_v(n):null==n&&"string"===o?(n="",a=!0):"number"===o&&(n=0,a=!0)}try{e[t]=n}catch(l){}a&&e.removeAttribute(t)}const[Xv,Wv]=(()=>{let e=Date.now,t=!1;if("undefined"!==typeof window){Date.now()>document.createEvent("Event").timeStamp&&(e=performance.now.bind(performance));const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Kv=0;const Zv=Promise.resolve(),Qv=()=>{Kv=0},Jv=()=>Kv||(Zv.then(Qv),Kv=Xv());function e_(e,t,n,o){e.addEventListener(t,n,o)}function t_(e,t,n,o){e.removeEventListener(t,n,o)}function n_(e,t,n,o,r=null){const s=e._vei||(e._vei={}),i=s[t];if(o&&i)i.value=o;else{const[n,a]=r_(t);if(o){const i=s[t]=s_(o,r);e_(e,n,i,a)}else i&&(t_(e,n,i,a),s[t]=void 0)}}const o_=/(?:Once|Passive|Capture)$/;function r_(e){let t;if(o_.test(e)){let n;t={};while(n=e.match(o_))e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Ov(e.slice(2)),t]}function s_(e,t){const n=e=>{const o=e.timeStamp||Xv();(Wv||o>=n.attached-1)&&Up(i_(e,n.value),t,5,[e])};return n.value=e,n.attached=Jv(),n}function i_(e,t){if(kv(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}const a_=/^on[a-z]/,l_=(e,t,n,o,r=!1,s,i,a,l)=>{"class"===t?Fv(e,o,r):"style"===t?Dv(e,n,o):yv(t)?xv(t)||n_(e,t,n,o,i):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):c_(e,t,o,r))?Gv(e,t,o,s,i,a,l):("true-value"===t?e._trueValue=o:"false-value"===t&&(e._falseValue=o),Yv(e,t,o,r))};function c_(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&a_.test(t)&&Sv(n)):"spellcheck"!==t&&"draggable"!==t&&"translate"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!a_.test(t)||!Ev(n))&&t in e))))}function u_(e,t){const n=Xh(e);class o extends f_{constructor(e){super(n,e,t)}}return o.def=n,o}const d_="undefined"!==typeof HTMLElement?HTMLElement:class{};class f_ extends d_{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):this.attachShadow({mode:"open"})}connectedCallback(){this._connected=!0,this._instance||this._resolveDef()}disconnectedCallback(){this._connected=!1,oh((()=>{this._connected||(K_(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){if(this._resolved)return;this._resolved=!0;for(let n=0;n<this.attributes.length;n++)this._setAttr(this.attributes[n].name);new MutationObserver((e=>{for(const t of e)this._setAttr(t.attributeName)})).observe(this,{attributes:!0});const e=e=>{const{props:t,styles:n}=e,o=!kv(t),r=t?o?Object.keys(t):t:[];let s;if(o)for(const i in this._props){const e=t[i];(e===Number||e&&e.type===Number)&&(this._props[i]=Bv(this._props[i]),(s||(s=Object.create(null)))[i]=!0)}this._numberProps=s;for(const i of Object.keys(this))"_"!==i[0]&&this._setProp(i,this[i],!0,!1);for(const i of r.map(Rv))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(e){this._setProp(i,e)}});this._applyStyles(n),this._update()},t=this._def.__asyncLoader;t?t().then(e):e(this._def)}_setAttr(e){let t=this.getAttribute(e);this._numberProps&&this._numberProps[e]&&(t=Bv(t)),this._setProp(Rv(e),t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,o=!0){t!==this._props[e]&&(this._props[e]=t,o&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(Ov(e),""):"string"===typeof t||"number"===typeof t?this.setAttribute(Ov(e),t+""):t||this.removeAttribute(Ov(e))))}_update(){K_(this._createVNode(),this.shadowRoot)}_createVNode(){const e=jg(this._def,wv({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0,e.emit=(e,...t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};let t=this;while(t=t&&(t.parentNode||t.host))if(t instanceof f_){e.parent=t._instance;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}const p_="transition",h_="animation",m_=(e,{slots:t})=>pv(Uh,y_(e),t);m_.displayName="Transition";const g_={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},v_=m_.props=wv({},Uh.props,g_),__=(e,t=[])=>{kv(e)?e.forEach((e=>e(...t))):e&&e(...t)},b_=e=>!!e&&(kv(e)?e.some((e=>e.length>1)):e.length>1);function y_(e){const t={};for(const A in e)A in g_||(t[A]=e[A]);if(!1===e.css)return t;const{name:n="v",type:o,duration:r,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:c=i,appearToClass:u=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=x_(r),m=h&&h[0],g=h&&h[1],{onBeforeEnter:v,onEnter:_,onEnterCancelled:b,onLeave:y,onLeaveCancelled:x,onBeforeAppear:w=v,onAppear:k=_,onAppearCancelled:S=b}=t,E=(e,t,n)=>{S_(e,t?u:a),S_(e,t?c:i),n&&n()},T=(e,t)=>{e._isLeaving=!1,S_(e,d),S_(e,p),S_(e,f),t&&t()},M=e=>(t,n)=>{const r=e?k:_,i=()=>E(t,e,n);__(r,[t,i]),E_((()=>{S_(t,e?l:s),k_(t,e?u:a),b_(r)||M_(t,o,m,i)}))};return wv(t,{onBeforeEnter(e){__(v,[e]),k_(e,s),k_(e,i)},onBeforeAppear(e){__(w,[e]),k_(e,l),k_(e,c)},onEnter:M(!1),onAppear:M(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>T(e,t);k_(e,d),O_(),k_(e,f),E_((()=>{e._isLeaving&&(S_(e,d),k_(e,p),b_(y)||M_(e,o,g,n))})),__(y,[e,n])},onEnterCancelled(e){E(e,!1),__(b,[e])},onAppearCancelled(e){E(e,!0),__(S,[e])},onLeaveCancelled(e){T(e),__(x,[e])}})}function x_(e){if(null==e)return null;if(Tv(e))return[w_(e.enter),w_(e.leave)];{const t=w_(e);return[t,t]}}function w_(e){const t=Bv(e);return t}function k_(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function S_(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function E_(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let T_=0;function M_(e,t,n,o){const r=e._endId=++T_,s=()=>{r===e._endId&&o()};if(n)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=A_(e,t);if(!i)return o();const c=i+"end";let u=0;const d=()=>{e.removeEventListener(c,f),s()},f=t=>{t.target===e&&++u>=l&&d()};setTimeout((()=>{u<l&&d()}),a+1),e.addEventListener(c,f)}function A_(e,t){const n=window.getComputedStyle(e),o=e=>(n[e]||"").split(", "),r=o(p_+"Delay"),s=o(p_+"Duration"),i=R_(r,s),a=o(h_+"Delay"),l=o(h_+"Duration"),c=R_(a,l);let u=null,d=0,f=0;t===p_?i>0&&(u=p_,d=i,f=s.length):t===h_?c>0&&(u=h_,d=c,f=l.length):(d=Math.max(i,c),u=d>0?i>c?p_:h_:null,f=u?u===p_?s.length:l.length:0);const p=u===p_&&/\b(transform|all)(,|$)/.test(n[p_+"Property"]);return{type:u,timeout:d,propCount:f,hasTransform:p}}function R_(e,t){while(e.length<t.length)e=e.concat(e);return Math.max(...t.map(((t,n)=>C_(t)+C_(e[n]))))}function C_(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function O_(){return document.body.offsetHeight}const I_=new WeakMap,B_=new WeakMap,P_={name:"TransitionGroup",props:wv({},v_,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Zg(),o=Fh();let r,s;return im((()=>{if(!r.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!D_(r[0].el,n.vnode.el,t))return;r.forEach(j_),r.forEach(N_);const o=r.filter(F_);O_(),o.forEach((e=>{const n=e.el,o=n.style;k_(n,t),o.transform=o.webkitTransform=o.transitionDuration="";const r=n._moveCb=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",r),n._moveCb=null,S_(n,t))};n.addEventListener("transitionend",r)}))})),()=>{const i=Ff(e),a=y_(i);let l=i.tag||vg;r=s,s=t.default?Gh(t.default()):[];for(let e=0;e<s.length;e++){const t=s[e];null!=t.key&&Yh(t,$h(t,a,o,n))}if(r)for(let e=0;e<r.length;e++){const t=r[e];Yh(t,$h(t,a,o,n)),I_.set(t,t.el.getBoundingClientRect())}return jg(l,null,s)}}},L_=P_;function j_(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function N_(e){B_.set(e,e.el.getBoundingClientRect())}function F_(e){const t=I_.get(e),n=B_.get(e),o=t.left-n.left,r=t.top-n.top;if(o||r){const t=e.el.style;return t.transform=t.webkitTransform=`translate(${o}px,${r}px)`,t.transitionDuration="0s",e}}function D_(e,t,n){const o=e.cloneNode();e._vtc&&e._vtc.forEach((e=>{e.split(/\s+/).forEach((e=>e&&o.classList.remove(e)))})),n.split(/\s+/).forEach((e=>e&&o.classList.add(e))),o.style.display="none";const r=1===t.nodeType?t:t.parentNode;r.appendChild(o);const{hasTransform:s}=A_(o);return r.removeChild(o),s}const H_=["ctrl","shift","alt","meta"],U_={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>H_.some((n=>e[`${n}Key`]&&!t.includes(n)))},V_=(e,t)=>(n,...o)=>{for(let e=0;e<t.length;e++){const o=U_[t[e]];if(o&&o(n,t))return}return e(n,...o)},$_={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},z_=(e,t)=>n=>{if(!("key"in n))return;const o=Ov(n.key);return t.some((e=>e===o||$_[e]===o))?e(n):void 0},q_={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Y_(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!==!n&&(o?t?(o.beforeEnter(e),Y_(e,!0),o.enter(e)):o.leave(e,(()=>{Y_(e,!1)})):Y_(e,t))},beforeUnmount(e,{value:t}){Y_(e,t)}};function Y_(e,t){e.style.display=t?e._vod:"none"}const G_=wv({patchProp:l_},Nv);let X_;function W_(){return X_||(X_=dg(G_))}const K_=(...e)=>{W_().render(...e)};var Z_=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n};const Q_={name:"AppLoader",props:{show:{type:Boolean,default:!1},infinite:{type:Boolean,default:!1},type:{type:String,required:!0},messageId:{type:String,default:""}}},J_=Lg("div",{id:"vac-circle"},null,-1),eb=Lg("div",{id:"vac-circle"},null,-1),tb=Lg("div",{id:"vac-circle"},null,-1),nb=Lg("div",{id:"vac-circle"},null,-1),ob=Lg("div",{id:"vac-circle"},null,-1),rb=Lg("div",{id:"vac-circle"},null,-1);function sb(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-fade-spinner",appear:""},{default:xh((()=>[n.show?(kg(),Ag("div",{key:0,class:tp(["vac-loader-wrapper",{"vac-container-center":!n.infinite,"vac-container-top":n.infinite}])},["rooms"===n.type?Em(e.$slots,"spinner-icon-rooms",{key:0},(()=>[J_])):Ug("",!0),"infinite-rooms"===n.type?Em(e.$slots,"spinner-icon-infinite-rooms",{key:1},(()=>[eb])):Ug("",!0),"message-file"===n.type?Em(e.$slots,"spinner-icon-message-file_"+n.messageId,{key:2},(()=>[tb])):Ug("",!0),"room-file"===n.type?Em(e.$slots,"spinner-icon-room-file",{key:3},(()=>[nb])):Ug("",!0),"messages"===n.type?Em(e.$slots,"spinner-icon-messages",{key:4},(()=>[ob])):Ug("",!0),"infinite-messages"===n.type?Em(e.$slots,"spinner-icon-infinite-messages",{key:5},(()=>[rb])):Ug("",!0)],2)):Ug("",!0)])),_:3})}var ib=Z_(Q_,[["render",sb]]);const ab={name:"SvgIcon",props:{name:{type:String,default:null},param:{type:String,default:null}},data(){return{svgItem:{search:{path:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},add:{path:"M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},toggle:{path:"M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z"},menu:{path:"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z"},close:{path:"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z"},file:{path:"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"},paperclip:{path:"M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z"},"close-outline":{path:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},send:{path:"M2,21L23,12L2,3V10L17,12L2,14V21Z"},emoji:{path:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z"},document:{path:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"},pencil:{path:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"},checkmark:{path:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"},"double-checkmark":{path:"M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z"},eye:{path:"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"},dropdown:{path:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"},deleted:{path:"M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.85 4.63,15.55 5.68,16.91L16.91,5.68C15.55,4.63 13.85,4 12,4M12,20A8,8 0 0,0 20,12C20,10.15 19.37,8.45 18.32,7.09L7.09,18.32C8.45,19.37 10.15,20 12,20Z"},microphone:{size:"large",path:"M432.8,216.4v39.2c0,45.2-15.3,84.3-45.2,118.4c-29.8,33.2-67.3,52.8-111.6,57.9v40.9h78.4c5.1,0,10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6c0,5.1-1.7,10.2-6,13.6c-4.3,4.3-8.5,6-13.6,6H157.6c-5.1,0-10.2-1.7-13.6-6c-4.3-4.3-6-8.5-6-13.6c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6H236v-40.9c-44.3-5.1-81.8-23.9-111.6-57.9s-45.2-73.3-45.2-118.4v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6s10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6v39.2c0,37.5,13.6,70.7,40,97.1s59.6,40,97.1,40s70.7-13.6,97.1-40c26.4-26.4,40-59.6,40-97.1v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6c5.1,0,10.2,1.7,13.6,6C430.2,206.2,432.8,211.3,432.8,216.4z M353.5,98v157.6c0,27.3-9.4,50.3-29,69c-19.6,19.6-42.6,29-69,29s-50.3-9.4-69-29c-19.6-19.6-29-42.6-29-69V98c0-27.3,9.4-50.3,29-69c19.6-19.6,42.6-29,69-29s50.3,9.4,69,29C344.2,47.7,353.5,71.6,353.5,98z"},"audio-play":{size:"medium",path:"M43.331,21.237L7.233,0.397c-0.917-0.529-2.044-0.529-2.96,0c-0.916,0.528-1.48,1.505-1.48,2.563v41.684   c0,1.058,0.564,2.035,1.48,2.563c0.458,0.268,0.969,0.397,1.48,0.397c0.511,0,1.022-0.133,1.48-0.397l36.098-20.84   c0.918-0.529,1.479-1.506,1.479-2.564S44.247,21.767,43.331,21.237z"},"audio-pause":{size:"medium",path:"M17.991,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C4.729,2.969,7.698,0,11.36,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z",path2:"M42.877,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C29.616,2.969,32.585,0,36.246,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z"}}}},computed:{svgId(){const e=this.param?"-"+this.param:"";return`vac-icon-${this.name}${e}`},size(){const e=this.svgItem[this.name];return"large"===e.size?512:"medium"===e.size?48:24}}},lb=["viewBox"],cb=["id","d"],ub=["id","d"];function db(e,t,n,o,r,s){return kg(),Ag("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",width:"24",height:"24",viewBox:`0 0 ${s.size} ${s.size}`},[Lg("path",{id:s.svgId,d:r.svgItem[n.name].path},null,8,cb),r.svgItem[n.name].path2?(kg(),Ag("path",{key:0,id:s.svgId,d:r.svgItem[n.name].path2},null,8,ub)):Ug("",!0)],8,lb)}var fb=Z_(ab,[["render",db]]);const pb={name:"RoomsSearch",components:{SvgIcon:fb},props:{textMessages:{type:Object,required:!0},showSearch:{type:Boolean,required:!0},showAddRoom:{type:Boolean,required:!0},rooms:{type:Array,required:!0},loadingRooms:{type:Boolean,required:!0}},emits:["search-room","add-room"],computed:{showSearchBar(){return this.showSearch||this.showAddRoom}}},hb={key:0,class:"vac-icon-search"},mb=["placeholder"];function gb(e,t,n,o,r,s){const i=vm("svg-icon");return kg(),Ag("div",{class:tp({"vac-box-search":s.showSearchBar,"vac-box-empty":!s.showSearchBar})},[n.showSearch?(kg(),Ag(vg,{key:0},[!n.loadingRooms&&n.rooms.length?(kg(),Ag("div",hb,[Em(e.$slots,"search-icon",{},(()=>[jg(i,{name:"search"})]))])):Ug("",!0),!n.loadingRooms&&n.rooms.length?(kg(),Ag("input",{key:1,type:"search",placeholder:n.textMessages.SEARCH,autocomplete:"off",class:"vac-input",onInput:t[0]||(t[0]=t=>e.$emit("search-room",t))},null,40,mb)):Ug("",!0)],64)):Ug("",!0),n.showAddRoom?(kg(),Ag("div",{key:1,class:"vac-svg-button vac-add-icon",onClick:t[1]||(t[1]=t=>e.$emit("add-room"))},[Em(e.$slots,"add-icon",{},(()=>[jg(i,{name:"add"})]))])):Ug("",!0)],2)}var vb=Z_(pb,[["render",gb]]);const _b=document.createElement("i");function bb(e){const t="&"+e+";";_b.innerHTML=t;const n=_b.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===e)&&(n!==t&&n)}function yb(e,t,n,o){const r=e.length;let s,i=0;if(t=t<0?-t>r?0:r+t:t>r?r:t,n=n>0?n:0,o.length<1e4)s=Array.from(o),s.unshift(t,n),e.splice(...s);else{n&&e.splice(t,n);while(i<o.length)s=o.slice(i,i+1e4),s.unshift(t,0),e.splice(...s),i+=1e4,t+=1e4}}function xb(e,t){return e.length>0?(yb(e,e.length,0,t),e):t}const wb={}.hasOwnProperty;function kb(e){const t={};let n=-1;while(++n<e.length)Sb(t,e[n]);return t}function Sb(e,t){let n;for(n in t){const o=wb.call(e,n)?e[n]:void 0,r=o||(e[n]={}),s=t[n];let i;if(s)for(i in s){wb.call(r,i)||(r[i]=[]);const e=s[i];Eb(r[i],Array.isArray(e)?e:e?[e]:[])}}}function Eb(e,t){let n=-1;const o=[];while(++n<t.length)("after"===t[n].add?e:o).push(t[n]);yb(e,0,0,o)}function Tb(e){const t={};let n=-1;while(++n<e.length)Mb(t,e[n]);return t}function Mb(e,t){let n;for(n in t){const o=wb.call(e,n)?e[n]:void 0,r=o||(e[n]={}),s=t[n];let i;if(s)for(i in s)r[i]=s[i]}}function Ab(e,t){const n=Number.parseInt(e,t);return n<9||11===n||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535===(65535&n)||65534===(65535&n)||n>1114111?"�":String.fromCharCode(n)}const Rb={'"':"quot","&":"amp","<":"lt",">":"gt"};function Cb(e){return e.replace(/["&<>]/g,t);function t(e){return"&"+Rb[e]+";"}}function Ob(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ib=/[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/,Bb=qb(/[A-Za-z]/),Pb=qb(/[\dA-Za-z]/),Lb=qb(/[#-'*+\--9=?A-Z^-~]/);function jb(e){return null!==e&&(e<32||127===e)}const Nb=qb(/\d/),Fb=qb(/[\dA-Fa-f]/),Db=qb(/[!-/:-@[-`{-~]/);function Hb(e){return null!==e&&e<-2}function Ub(e){return null!==e&&(e<0||32===e)}function Vb(e){return-2===e||-1===e||32===e}const $b=qb(Ib),zb=qb(/\s/);function qb(e){return t;function t(t){return null!==t&&e.test(String.fromCharCode(t))}}function Yb(e,t){const n=Cb(Gb(e||""));if(!t)return n;const o=n.indexOf(":"),r=n.indexOf("?"),s=n.indexOf("#"),i=n.indexOf("/");return o<0||i>-1&&o>i||r>-1&&o>r||s>-1&&o>s||t.test(n.slice(0,o))?n:""}function Gb(e){const t=[];let n=-1,o=0,r=0;while(++n<e.length){const s=e.charCodeAt(n);let i="";if(37===s&&Pb(e.charCodeAt(n+1))&&Pb(e.charCodeAt(n+2)))r=2;else if(s<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(s))||(i=String.fromCharCode(s));else if(s>55295&&s<57344){const t=e.charCodeAt(n+1);s<56320&&t>56319&&t<57344?(i=String.fromCharCode(s,t),r=1):i="�"}else i=String.fromCharCode(s);i&&(t.push(e.slice(o,n),encodeURIComponent(i)),o=n+r+1,i=""),r&&(n+=r,r=0)}return t.join("")+e.slice(o)}const Xb={}.hasOwnProperty,Wb=/^(https?|ircs?|mailto|xmpp)$/i,Kb=/^https?$/i;function Zb(e){const t=e||{};let n=!0;const o={},r=[[]],s=[],i=[],a={enter:{blockQuote:C,codeFenced:P,codeFencedFenceInfo:g,codeFencedFenceMeta:g,codeIndented:N,codeText:ve,content:te,definition:W,definitionDestinationString:Z,definitionLabelString:g,definitionTitleString:g,emphasis:me,htmlFlow:fe,htmlText:he,image:D,label:g,link:H,listItemMarker:T,listItemValue:E,listOrdered:k,listUnordered:S,paragraph:I,reference:g,resource:z,resourceDestinationString:q,resourceTitleString:g,setextHeading:oe,strong:ge},exit:{atxHeading:se,atxHeadingSequence:ne,autolinkEmail:Ee,autolinkProtocol:Se,blockQuote:O,characterEscapeValue:le,characterReferenceMarkerHexadecimal:we,characterReferenceMarkerNumeric:we,characterReferenceValue:ke,codeFenced:F,codeFencedFence:j,codeFencedFenceInfo:L,codeFencedFenceMeta:v,codeFlowValue:ue,codeIndented:F,codeText:_e,codeTextData:le,data:le,definition:ee,definitionDestinationString:Q,definitionLabelString:K,definitionTitleString:J,emphasis:be,hardBreakEscape:de,hardBreakTrailing:de,htmlFlow:pe,htmlFlowData:le,htmlText:pe,htmlTextData:le,image:X,label:V,labelText:U,lineEnding:ce,link:X,listOrdered:M,listUnordered:A,paragraph:B,reference:v,referenceString:$,resource:v,resourceDestinationString:Y,resourceTitleString:G,setextHeading:ae,setextHeadingLineSequence:ie,setextHeadingText:re,strong:ye,thematicBreak:xe}},l=Tb([a].concat(t.htmlExtensions||[])),c={tightStack:i,definitions:o},u={lineEndingIfNeeded:x,options:t,encode:w,raw:b,tag:_,buffer:g,resume:v,setData:h,getData:m};let d=t.defaultLineEnding;return f;function f(e){let t=-1,n=0;const o=[];let s=[],i=[];while(++t<e.length)d||"lineEnding"!==e[t][1].type&&"lineEndingBlank"!==e[t][1].type||(d=e[t][2].sliceSerialize(e[t][1])),"listOrdered"!==e[t][1].type&&"listUnordered"!==e[t][1].type||("enter"===e[t][0]?o.push(t):p(e.slice(o.pop(),t))),"definition"===e[t][1].type&&("enter"===e[t][0]?(i=xb(i,e.slice(n,t)),n=t):(s=xb(s,e.slice(n,t+1)),n=t+1));s=xb(s,i),s=xb(s,e.slice(n)),t=-1;const a=s;l.enter.null&&l.enter.null.call(u);while(++t<e.length){const e=l[a[t][0]],n=a[t][1].type,o=e[n];Xb.call(e,n)&&o&&o.call(Object.assign({sliceSerialize:a[t][2].sliceSerialize},u),a[t][1])}return l.exit.null&&l.exit.null.call(u),r[0].join("")}function p(e){const t=e.length;let n,o=0,r=0,s=!1;while(++o<t){const t=e[o];if(t[1]._container)n=void 0,"enter"===t[0]?r++:r--;else switch(t[1].type){case"listItemPrefix":"exit"===t[0]&&(n=!0);break;case"linePrefix":break;case"lineEndingBlank":"enter"!==t[0]||r||(n?n=void 0:s=!0);break;default:n=void 0}}e[0][1]._loose=s}function h(e,t){c[e]=t}function m(e){return c[e]}function g(){r.push([])}function v(){const e=r.pop();return e.join("")}function _(e){n&&(h("lastWasTag",!0),r[r.length-1].push(e))}function b(e){h("lastWasTag"),r[r.length-1].push(e)}function y(){b(d||"\n")}function x(){const e=r[r.length-1],t=e[e.length-1],n=t?t.charCodeAt(t.length-1):null;10!==n&&13!==n&&null!==n&&y()}function w(e){return m("ignoreEncode")?e:Cb(e)}function k(e){i.push(!e._loose),x(),_("<ol"),h("expectFirstItem",!0)}function S(e){i.push(!e._loose),x(),_("<ul"),h("expectFirstItem",!0)}function E(e){if(m("expectFirstItem")){const t=Number.parseInt(this.sliceSerialize(e),10);1!==t&&_(' start="'+w(String(t))+'"')}}function T(){m("expectFirstItem")?_(">"):R(),x(),_("<li>"),h("expectFirstItem"),h("lastWasTag")}function M(){R(),i.pop(),y(),_("</ol>")}function A(){R(),i.pop(),y(),_("</ul>")}function R(){m("lastWasTag")&&!m("slurpAllLineEndings")&&x(),_("</li>"),h("slurpAllLineEndings")}function C(){i.push(!1),x(),_("<blockquote>")}function O(){i.pop(),x(),_("</blockquote>"),h("slurpAllLineEndings")}function I(){i[i.length-1]||(x(),_("<p>")),h("slurpAllLineEndings")}function B(){i[i.length-1]?h("slurpAllLineEndings",!0):_("</p>")}function P(){x(),_("<pre><code"),h("fencesCount",0)}function L(){const e=v();_(' class="language-'+e+'"')}function j(){const e=m("fencesCount")||0;e||(_(">"),h("slurpOneLineEnding",!0)),h("fencesCount",e+1)}function N(){x(),_("<pre><code>")}function F(){const e=m("fencesCount");void 0!==e&&e<2&&c.tightStack.length>0&&!m("lastWasTag")&&y(),m("flowCodeSeenData")&&x(),_("</code></pre>"),void 0!==e&&e<2&&x(),h("flowCodeSeenData"),h("fencesCount"),h("slurpOneLineEnding")}function D(){s.push({image:!0}),n=void 0}function H(){s.push({})}function U(e){s[s.length-1].labelId=this.sliceSerialize(e)}function V(){s[s.length-1].label=v()}function $(e){s[s.length-1].referenceId=this.sliceSerialize(e)}function z(){g(),s[s.length-1].destination=""}function q(){g(),h("ignoreEncode",!0)}function Y(){s[s.length-1].destination=v(),h("ignoreEncode")}function G(){s[s.length-1].title=v()}function X(){let e=s.length-1;const r=s[e],i=r.referenceId||r.labelId,a=void 0===r.destination?o[Ob(i)]:r;n=!0;while(e--)if(s[e].image){n=void 0;break}r.image?(_('<img src="'+Yb(a.destination,t.allowDangerousProtocol?void 0:Kb)+'" alt="'),b(r.label),_('"')):_('<a href="'+Yb(a.destination,t.allowDangerousProtocol?void 0:Wb)+'"'),_(a.title?' title="'+a.title+'"':""),r.image?_(" />"):(_(">"),b(r.label),_("</a>")),s.pop()}function W(){g(),s.push({})}function K(e){v(),s[s.length-1].labelId=this.sliceSerialize(e)}function Z(){g(),h("ignoreEncode",!0)}function Q(){s[s.length-1].destination=v(),h("ignoreEncode")}function J(){s[s.length-1].title=v()}function ee(){const e=s[s.length-1],t=Ob(e.labelId);v(),Xb.call(o,t)||(o[t]=s[s.length-1]),s.pop()}function te(){h("slurpAllLineEndings",!0)}function ne(e){m("headingRank")||(h("headingRank",this.sliceSerialize(e).length),x(),_("<h"+m("headingRank")+">"))}function oe(){g(),h("slurpAllLineEndings")}function re(){h("slurpAllLineEndings",!0)}function se(){_("</h"+m("headingRank")+">"),h("headingRank")}function ie(e){h("headingRank",61===this.sliceSerialize(e).charCodeAt(0)?1:2)}function ae(){const e=v();x(),_("<h"+m("headingRank")+">"),b(e),_("</h"+m("headingRank")+">"),h("slurpAllLineEndings"),h("headingRank")}function le(e){b(w(this.sliceSerialize(e)))}function ce(e){m("slurpAllLineEndings")||(m("slurpOneLineEnding")?h("slurpOneLineEnding"):m("inCodeText")?b(" "):b(w(this.sliceSerialize(e))))}function ue(e){b(w(this.sliceSerialize(e))),h("flowCodeSeenData",!0)}function de(){_("<br />")}function fe(){x(),he()}function pe(){h("ignoreEncode")}function he(){t.allowDangerousHtml&&h("ignoreEncode",!0)}function me(){_("<em>")}function ge(){_("<strong>")}function ve(){h("inCodeText",!0),_("<code>")}function _e(){h("inCodeText"),_("</code>")}function be(){_("</em>")}function ye(){_("</strong>")}function xe(){x(),_("<hr />")}function we(e){h("characterReferenceType",e.type)}function ke(e){let t=this.sliceSerialize(e);t=m("characterReferenceType")?Ab(t,"characterReferenceMarkerNumeric"===m("characterReferenceType")?10:16):bb(t),b(w(t)),h("characterReferenceType")}function Se(e){const n=this.sliceSerialize(e);_('<a href="'+Yb(n,t.allowDangerousProtocol?void 0:Wb)+'">'),b(w(n)),_("</a>")}function Ee(e){const t=this.sliceSerialize(e);_('<a href="'+Yb("mailto:"+t)+'">'),b(w(t)),_("</a>")}}function Qb(e,t,n,o){const r=o?o-1:Number.POSITIVE_INFINITY;let s=0;return i;function i(o){return Vb(o)?(e.enter(n),a(o)):t(o)}function a(o){return Vb(o)&&s++<r?(e.consume(o),a):(e.exit(n),t(o))}}const Jb={tokenize:ey};function ey(e){const t=e.attempt(this.parser.constructs.contentInitial,o,r);let n;return t;function o(n){if(null!==n)return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),Qb(e,t,"linePrefix");e.consume(n)}function r(t){return e.enter("paragraph"),s(t)}function s(t){const o=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=o),n=o,i(t)}function i(t){return null===t?(e.exit("chunkText"),e.exit("paragraph"),void e.consume(t)):Hb(t)?(e.consume(t),e.exit("chunkText"),s):(e.consume(t),i)}}const ty={tokenize:oy},ny={tokenize:ry};function oy(e){const t=this,n=[];let o,r,s,i=0;return a;function a(o){if(i<n.length){const r=n[i];return t.containerState=r[1],e.attempt(r[0].continuation,l,c)(o)}return c(o)}function l(e){if(i++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,o&&_();const n=t.events.length;let r,s=n;while(s--)if("exit"===t.events[s][0]&&"chunkFlow"===t.events[s][1].type){r=t.events[s][1].end;break}v(i);let a=n;while(a<t.events.length)t.events[a][1].end=Object.assign({},r),a++;return yb(t.events,s+1,0,t.events.slice(n)),t.events.length=a,c(e)}return a(e)}function c(r){if(i===n.length){if(!o)return f(r);if(o.currentConstruct&&o.currentConstruct.concrete)return h(r);t.interrupt=Boolean(o.currentConstruct&&!o._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(ny,u,d)(r)}function u(e){return o&&_(),v(i),f(e)}function d(e){return t.parser.lazy[t.now().line]=i!==n.length,s=t.now().offset,h(e)}function f(n){return t.containerState={},e.attempt(ny,p,h)(n)}function p(e){return i++,n.push([t.currentConstruct,t.containerState]),f(e)}function h(n){return null===n?(o&&_(),v(0),void e.consume(n)):(o=o||t.parser.flow(t.now()),e.enter("chunkFlow",{contentType:"flow",previous:r,_tokenizer:o}),m(n))}function m(n){return null===n?(g(e.exit("chunkFlow"),!0),v(0),void e.consume(n)):Hb(n)?(e.consume(n),g(e.exit("chunkFlow")),i=0,t.interrupt=void 0,a):(e.consume(n),m)}function g(e,n){const a=t.sliceStream(e);if(n&&a.push(null),e.previous=r,r&&(r.next=e),r=e,o.defineSkip(e.start),o.write(a),t.parser.lazy[e.start.line]){let e=o.events.length;while(e--)if(o.events[e][1].start.offset<s&&(!o.events[e][1].end||o.events[e][1].end.offset>s))return;const n=t.events.length;let r,a,l=n;while(l--)if("exit"===t.events[l][0]&&"chunkFlow"===t.events[l][1].type){if(r){a=t.events[l][1].end;break}r=!0}v(i),e=n;while(e<t.events.length)t.events[e][1].end=Object.assign({},a),e++;yb(t.events,l+1,0,t.events.slice(n)),t.events.length=e}}function v(o){let r=n.length;while(r-- >o){const o=n[r];t.containerState=o[1],o[0].exit.call(t,e)}n.length=o}function _(){o.write([null]),r=void 0,o=void 0,t.containerState._closeFlow=void 0}}function ry(e,t,n){return Qb(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function sy(e){return null===e||Ub(e)||zb(e)?1:$b(e)?2:void 0}function iy(e,t,n){const o=[];let r=-1;while(++r<e.length){const s=e[r].resolveAll;s&&!o.includes(s)&&(t=s(t,n),o.push(s))}return t}const ay={name:"attention",tokenize:cy,resolveAll:ly};function ly(e,t){let n,o,r,s,i,a,l,c,u=-1;while(++u<e.length)if("enter"===e[u][0]&&"attentionSequence"===e[u][1].type&&e[u][1]._close){n=u;while(n--)if("exit"===e[n][0]&&"attentionSequence"===e[n][1].type&&e[n][1]._open&&t.sliceSerialize(e[n][1]).charCodeAt(0)===t.sliceSerialize(e[u][1]).charCodeAt(0)){if((e[n][1]._close||e[u][1]._open)&&(e[u][1].end.offset-e[u][1].start.offset)%3&&!((e[n][1].end.offset-e[n][1].start.offset+e[u][1].end.offset-e[u][1].start.offset)%3))continue;a=e[n][1].end.offset-e[n][1].start.offset>1&&e[u][1].end.offset-e[u][1].start.offset>1?2:1;const d=Object.assign({},e[n][1].end),f=Object.assign({},e[u][1].start);uy(d,-a),uy(f,a),s={type:a>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},i={type:a>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[u][1].start),end:f},r={type:a>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[u][1].start)},o={type:a>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},i.end)},e[n][1].end=Object.assign({},s.start),e[u][1].start=Object.assign({},i.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=xb(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=xb(l,[["enter",o,t],["enter",s,t],["exit",s,t],["enter",r,t]]),l=xb(l,iy(t.parser.constructs.insideSpan.null,e.slice(n+1,u),t)),l=xb(l,[["exit",r,t],["enter",i,t],["exit",i,t],["exit",o,t]]),e[u][1].end.offset-e[u][1].start.offset?(c=2,l=xb(l,[["enter",e[u][1],t],["exit",e[u][1],t]])):c=0,yb(e,n-1,u-n+3,l),u=n+l.length-c-2;break}}u=-1;while(++u<e.length)"attentionSequence"===e[u][1].type&&(e[u][1].type="data");return e}function cy(e,t){const n=this.parser.constructs.attentionMarkers.null,o=this.previous,r=sy(o);let s;return i;function i(t){return s=t,e.enter("attentionSequence"),a(t)}function a(i){if(i===s)return e.consume(i),a;const l=e.exit("attentionSequence"),c=sy(i),u=!c||2===c&&r||n.includes(i),d=!r||2===r&&c||n.includes(o);return l._open=Boolean(42===s?u:u&&(r||!d)),l._close=Boolean(42===s?d:d&&(c||!u)),t(i)}}function uy(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const dy={name:"autolink",tokenize:fy};function fy(e,t,n){let o=0;return r;function r(t){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(t),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),s}function s(t){return Bb(t)?(e.consume(t),i):c(t)}function i(e){return 43===e||45===e||46===e||Pb(e)?(o=1,a(e)):c(e)}function a(t){return 58===t?(e.consume(t),o=0,l):(43===t||45===t||46===t||Pb(t))&&o++<32?(e.consume(t),a):(o=0,c(t))}function l(o){return 62===o?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(o),e.exit("autolinkMarker"),e.exit("autolink"),t):null===o||32===o||60===o||jb(o)?n(o):(e.consume(o),l)}function c(t){return 64===t?(e.consume(t),u):Lb(t)?(e.consume(t),c):n(t)}function u(e){return Pb(e)?d(e):n(e)}function d(n){return 46===n?(e.consume(n),o=0,u):62===n?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(n),e.exit("autolinkMarker"),e.exit("autolink"),t):f(n)}function f(t){if((45===t||Pb(t))&&o++<63){const n=45===t?f:d;return e.consume(t),n}return n(t)}}const py={tokenize:hy,partial:!0};function hy(e,t,n){return o;function o(t){return Vb(t)?Qb(e,r,"linePrefix")(t):r(t)}function r(e){return null===e||Hb(e)?t(e):n(e)}}const my={name:"blockQuote",tokenize:gy,continuation:{tokenize:vy},exit:_y};function gy(e,t,n){const o=this;return r;function r(t){if(62===t){const n=o.containerState;return n.open||(e.enter("blockQuote",{_container:!0}),n.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(t),e.exit("blockQuoteMarker"),s}return n(t)}function s(n){return Vb(n)?(e.enter("blockQuotePrefixWhitespace"),e.consume(n),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(n))}}function vy(e,t,n){const o=this;return r;function r(t){return Vb(t)?Qb(e,s,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):s(t)}function s(o){return e.attempt(my,t,n)(o)}}function _y(e){e.exit("blockQuote")}const by={name:"characterEscape",tokenize:yy};function yy(e,t,n){return o;function o(t){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(t),e.exit("escapeMarker"),r}function r(o){return Db(o)?(e.enter("characterEscapeValue"),e.consume(o),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(o)}}const xy={name:"characterReference",tokenize:wy};function wy(e,t,n){const o=this;let r,s,i=0;return a;function a(t){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(t),e.exit("characterReferenceMarker"),l}function l(t){return 35===t?(e.enter("characterReferenceMarkerNumeric"),e.consume(t),e.exit("characterReferenceMarkerNumeric"),c):(e.enter("characterReferenceValue"),r=31,s=Pb,u(t))}function c(t){return 88===t||120===t?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(t),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),r=6,s=Fb,u):(e.enter("characterReferenceValue"),r=7,s=Nb,u(t))}function u(a){if(59===a&&i){const r=e.exit("characterReferenceValue");return s!==Pb||bb(o.sliceSerialize(r))?(e.enter("characterReferenceMarker"),e.consume(a),e.exit("characterReferenceMarker"),e.exit("characterReference"),t):n(a)}return s(a)&&i++<r?(e.consume(a),u):n(a)}}const ky={tokenize:Ty,partial:!0},Sy={name:"codeFenced",tokenize:Ey,concrete:!0};function Ey(e,t,n){const o=this,r={tokenize:x,partial:!0};let s,i=0,a=0;return l;function l(e){return c(e)}function c(t){const n=o.events[o.events.length-1];return i=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,s=t,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),u(t)}function u(t){return t===s?(a++,e.consume(t),u):a<3?n(t):(e.exit("codeFencedFenceSequence"),Vb(t)?Qb(e,d,"whitespace")(t):d(t))}function d(n){return null===n||Hb(n)?(e.exit("codeFencedFence"),o.interrupt?t(n):e.check(ky,m,y)(n)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),f(n))}function f(t){return null===t||Hb(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),d(t)):Vb(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Qb(e,p,"whitespace")(t)):96===t&&t===s?n(t):(e.consume(t),f)}function p(t){return null===t||Hb(t)?d(t):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),h(t))}function h(t){return null===t||Hb(t)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),d(t)):96===t&&t===s?n(t):(e.consume(t),h)}function m(t){return e.attempt(r,y,g)(t)}function g(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),v}function v(t){return i>0&&Vb(t)?Qb(e,_,"linePrefix",i+1)(t):_(t)}function _(t){return null===t||Hb(t)?e.check(ky,m,y)(t):(e.enter("codeFlowValue"),b(t))}function b(t){return null===t||Hb(t)?(e.exit("codeFlowValue"),_(t)):(e.consume(t),b)}function y(n){return e.exit("codeFenced"),t(n)}function x(e,t,n){let r=0;return i;function i(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l}function l(t){return e.enter("codeFencedFence"),Vb(t)?Qb(e,c,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):c(t)}function c(t){return t===s?(e.enter("codeFencedFenceSequence"),u(t)):n(t)}function u(t){return t===s?(r++,e.consume(t),u):r>=a?(e.exit("codeFencedFenceSequence"),Vb(t)?Qb(e,d,"whitespace")(t):d(t)):n(t)}function d(o){return null===o||Hb(o)?(e.exit("codeFencedFence"),t(o)):n(o)}}}function Ty(e,t,n){const o=this;return r;function r(t){return null===t?n(t):(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),s)}function s(e){return o.parser.lazy[o.now().line]?n(e):t(e)}}const My={name:"codeIndented",tokenize:Ry},Ay={tokenize:Cy,partial:!0};function Ry(e,t,n){const o=this;return r;function r(t){return e.enter("codeIndented"),Qb(e,s,"linePrefix",5)(t)}function s(e){const t=o.events[o.events.length-1];return t&&"linePrefix"===t[1].type&&t[2].sliceSerialize(t[1],!0).length>=4?i(e):n(e)}function i(t){return null===t?l(t):Hb(t)?e.attempt(Ay,i,l)(t):(e.enter("codeFlowValue"),a(t))}function a(t){return null===t||Hb(t)?(e.exit("codeFlowValue"),i(t)):(e.consume(t),a)}function l(n){return e.exit("codeIndented"),t(n)}}function Cy(e,t,n){const o=this;return r;function r(t){return o.parser.lazy[o.now().line]?n(t):Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),r):Qb(e,s,"linePrefix",5)(t)}function s(e){const s=o.events[o.events.length-1];return s&&"linePrefix"===s[1].type&&s[2].sliceSerialize(s[1],!0).length>=4?t(e):Hb(e)?r(e):n(e)}}const Oy={name:"codeText",tokenize:Py,resolve:Iy,previous:By};function Iy(e){let t,n,o=e.length-4,r=3;if(("lineEnding"===e[r][1].type||"space"===e[r][1].type)&&("lineEnding"===e[o][1].type||"space"===e[o][1].type)){t=r;while(++t<o)if("codeTextData"===e[t][1].type){e[r][1].type="codeTextPadding",e[o][1].type="codeTextPadding",r+=2,o-=2;break}}t=r-1,o++;while(++t<=o)void 0===n?t!==o&&"lineEnding"!==e[t][1].type&&(n=t):t!==o&&"lineEnding"!==e[t][1].type||(e[n][1].type="codeTextData",t!==n+2&&(e[n][1].end=e[t-1][1].end,e.splice(n+2,t-n-2),o-=t-n-2,t=n+2),n=void 0);return e}function By(e){return 96!==e||"characterEscape"===this.events[this.events.length-1][1].type}function Py(e,t,n){let o,r,s=0;return i;function i(t){return e.enter("codeText"),e.enter("codeTextSequence"),a(t)}function a(t){return 96===t?(e.consume(t),s++,a):(e.exit("codeTextSequence"),l(t))}function l(t){return null===t?n(t):32===t?(e.enter("space"),e.consume(t),e.exit("space"),l):96===t?(r=e.enter("codeTextSequence"),o=0,u(t)):Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l):(e.enter("codeTextData"),c(t))}function c(t){return null===t||32===t||96===t||Hb(t)?(e.exit("codeTextData"),l(t)):(e.consume(t),c)}function u(n){return 96===n?(e.consume(n),o++,u):o===s?(e.exit("codeTextSequence"),e.exit("codeText"),t(n)):(r.type="codeTextData",c(n))}}function Ly(e){const t={};let n,o,r,s,i,a,l,c=-1;while(++c<e.length){while(c in t)c=t[c];if(n=e[c],c&&"chunkFlow"===n[1].type&&"listItemPrefix"===e[c-1][1].type&&(a=n[1]._tokenizer.events,r=0,r<a.length&&"lineEndingBlank"===a[r][1].type&&(r+=2),r<a.length&&"content"===a[r][1].type))while(++r<a.length){if("content"===a[r][1].type)break;"chunkText"===a[r][1].type&&(a[r][1]._isInFirstContentOfListItem=!0,r++)}if("enter"===n[0])n[1].contentType&&(Object.assign(t,jy(e,c)),c=t[c],l=!0);else if(n[1]._container){r=c,o=void 0;while(r--){if(s=e[r],"lineEnding"!==s[1].type&&"lineEndingBlank"!==s[1].type)break;"enter"===s[0]&&(o&&(e[o][1].type="lineEndingBlank"),s[1].type="lineEnding",o=r)}o&&(n[1].end=Object.assign({},e[o][1].start),i=e.slice(o,c),i.unshift(n),yb(e,o,c-o+1,i))}}return!l}function jy(e,t){const n=e[t][1],o=e[t][2];let r=t-1;const s=[],i=n._tokenizer||o.parser[n.contentType](n.start),a=i.events,l=[],c={};let u,d,f=-1,p=n,h=0,m=0;const g=[m];while(p){while(e[++r][1]!==p);s.push(r),p._tokenizer||(u=o.sliceStream(p),p.next||u.push(null),d&&i.defineSkip(p.start),p._isInFirstContentOfListItem&&(i._gfmTasklistFirstContentOfListItem=!0),i.write(u),p._isInFirstContentOfListItem&&(i._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}p=n;while(++f<a.length)"exit"===a[f][0]&&"enter"===a[f-1][0]&&a[f][1].type===a[f-1][1].type&&a[f][1].start.line!==a[f][1].end.line&&(m=f+1,g.push(m),p._tokenizer=void 0,p.previous=void 0,p=p.next);i.events=[],p?(p._tokenizer=void 0,p.previous=void 0):g.pop(),f=g.length;while(f--){const t=a.slice(g[f],g[f+1]),n=s.pop();l.unshift([n,n+t.length-1]),yb(e,n,2,t)}f=-1;while(++f<l.length)c[h+l[f][0]]=h+l[f][1],h+=l[f][1]-l[f][0]-1;return c}const Ny={tokenize:Hy,resolve:Dy},Fy={tokenize:Uy,partial:!0};function Dy(e){return Ly(e),e}function Hy(e,t){let n;return o;function o(t){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),r(t)}function r(t){return null===t?s(t):Hb(t)?e.check(Fy,i,s)(t):(e.consume(t),r)}function s(n){return e.exit("chunkContent"),e.exit("content"),t(n)}function i(t){return e.consume(t),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,r}}function Uy(e,t,n){const o=this;return r;function r(t){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),Qb(e,s,"linePrefix")}function s(r){if(null===r||Hb(r))return n(r);const s=o.events[o.events.length-1];return!o.parser.constructs.disable.null.includes("codeIndented")&&s&&"linePrefix"===s[1].type&&s[2].sliceSerialize(s[1],!0).length>=4?t(r):e.interrupt(o.parser.constructs.flow,n,t)(r)}}function Vy(e,t,n,o,r,s,i,a,l){const c=l||Number.POSITIVE_INFINITY;let u=0;return d;function d(t){return 60===t?(e.enter(o),e.enter(r),e.enter(s),e.consume(t),e.exit(s),f):null===t||32===t||41===t||jb(t)?n(t):(e.enter(o),e.enter(i),e.enter(a),e.enter("chunkString",{contentType:"string"}),m(t))}function f(n){return 62===n?(e.enter(s),e.consume(n),e.exit(s),e.exit(r),e.exit(o),t):(e.enter(a),e.enter("chunkString",{contentType:"string"}),p(n))}function p(t){return 62===t?(e.exit("chunkString"),e.exit(a),f(t)):null===t||60===t||Hb(t)?n(t):(e.consume(t),92===t?h:p)}function h(t){return 60===t||62===t||92===t?(e.consume(t),p):p(t)}function m(r){return u||null!==r&&41!==r&&!Ub(r)?u<c&&40===r?(e.consume(r),u++,m):41===r?(e.consume(r),u--,m):null===r||32===r||40===r||jb(r)?n(r):(e.consume(r),92===r?g:m):(e.exit("chunkString"),e.exit(a),e.exit(i),e.exit(o),t(r))}function g(t){return 40===t||41===t||92===t?(e.consume(t),m):m(t)}}function $y(e,t,n,o,r,s){const i=this;let a,l=0;return c;function c(t){return e.enter(o),e.enter(r),e.consume(t),e.exit(r),e.enter(s),u}function u(c){return l>999||null===c||91===c||93===c&&!a||94===c&&!l&&"_hiddenFootnoteSupport"in i.parser.constructs?n(c):93===c?(e.exit(s),e.enter(r),e.consume(c),e.exit(r),e.exit(o),t):Hb(c)?(e.enter("lineEnding"),e.consume(c),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),d(c))}function d(t){return null===t||91===t||93===t||Hb(t)||l++>999?(e.exit("chunkString"),u(t)):(e.consume(t),a||(a=!Vb(t)),92===t?f:d)}function f(t){return 91===t||92===t||93===t?(e.consume(t),l++,d):d(t)}}function zy(e,t,n,o,r,s){let i;return a;function a(t){return 34===t||39===t||40===t?(e.enter(o),e.enter(r),e.consume(t),e.exit(r),i=40===t?41:t,l):n(t)}function l(n){return n===i?(e.enter(r),e.consume(n),e.exit(r),e.exit(o),t):(e.enter(s),c(n))}function c(t){return t===i?(e.exit(s),l(i)):null===t?n(t):Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),Qb(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(t))}function u(t){return t===i||null===t||Hb(t)?(e.exit("chunkString"),c(t)):(e.consume(t),92===t?d:u)}function d(t){return t===i||92===t?(e.consume(t),u):u(t)}}function qy(e,t){let n;return o;function o(r){return Hb(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),n=!0,o):Vb(r)?Qb(e,o,n?"linePrefix":"lineSuffix")(r):t(r)}}const Yy={name:"definition",tokenize:Xy},Gy={tokenize:Wy,partial:!0};function Xy(e,t,n){const o=this;let r;return s;function s(t){return e.enter("definition"),i(t)}function i(t){return $y.call(o,e,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)}function a(t){return r=Ob(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),l):n(t)}function l(t){return Ub(t)?qy(e,c)(t):c(t)}function c(t){return Vy(e,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(t)}function u(t){return e.attempt(Gy,d,d)(t)}function d(t){return Vb(t)?Qb(e,f,"whitespace")(t):f(t)}function f(s){return null===s||Hb(s)?(e.exit("definition"),o.parser.defined.push(r),t(s)):n(s)}}function Wy(e,t,n){return o;function o(t){return Ub(t)?qy(e,r)(t):n(t)}function r(t){return zy(e,s,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t)}function s(t){return Vb(t)?Qb(e,i,"whitespace")(t):i(t)}function i(e){return null===e||Hb(e)?t(e):n(e)}}const Ky={name:"hardBreakEscape",tokenize:Zy};function Zy(e,t,n){return o;function o(t){return e.enter("hardBreakEscape"),e.consume(t),r}function r(o){return Hb(o)?(e.exit("hardBreakEscape"),t(o)):n(o)}}const Qy={name:"headingAtx",tokenize:ex,resolve:Jy};function Jy(e,t){let n,o,r=e.length-2,s=3;return"whitespace"===e[s][1].type&&(s+=2),r-2>s&&"whitespace"===e[r][1].type&&(r-=2),"atxHeadingSequence"===e[r][1].type&&(s===r-1||r-4>s&&"whitespace"===e[r-2][1].type)&&(r-=s+1===r?2:4),r>s&&(n={type:"atxHeadingText",start:e[s][1].start,end:e[r][1].end},o={type:"chunkText",start:e[s][1].start,end:e[r][1].end,contentType:"text"},yb(e,s,r-s+1,[["enter",n,t],["enter",o,t],["exit",o,t],["exit",n,t]])),e}function ex(e,t,n){let o=0;return r;function r(t){return e.enter("atxHeading"),s(t)}function s(t){return e.enter("atxHeadingSequence"),i(t)}function i(t){return 35===t&&o++<6?(e.consume(t),i):null===t||Ub(t)?(e.exit("atxHeadingSequence"),a(t)):n(t)}function a(n){return 35===n?(e.enter("atxHeadingSequence"),l(n)):null===n||Hb(n)?(e.exit("atxHeading"),t(n)):Vb(n)?Qb(e,a,"whitespace")(n):(e.enter("atxHeadingText"),c(n))}function l(t){return 35===t?(e.consume(t),l):(e.exit("atxHeadingSequence"),a(t))}function c(t){return null===t||35===t||Ub(t)?(e.exit("atxHeadingText"),a(t)):(e.consume(t),c)}}const tx=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],nx=["pre","script","style","textarea"],ox={name:"htmlFlow",tokenize:ax,resolveTo:ix,concrete:!0},rx={tokenize:cx,partial:!0},sx={tokenize:lx,partial:!0};function ix(e){let t=e.length;while(t--)if("enter"===e[t][0]&&"htmlFlow"===e[t][1].type)break;return t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function ax(e,t,n){const o=this;let r,s,i,a,l;return c;function c(e){return u(e)}function u(t){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(t),d}function d(a){return 33===a?(e.consume(a),f):47===a?(e.consume(a),s=!0,m):63===a?(e.consume(a),r=3,o.interrupt?t:j):Bb(a)?(e.consume(a),i=String.fromCharCode(a),g):n(a)}function f(s){return 45===s?(e.consume(s),r=2,p):91===s?(e.consume(s),r=5,a=0,h):Bb(s)?(e.consume(s),r=4,o.interrupt?t:j):n(s)}function p(r){return 45===r?(e.consume(r),o.interrupt?t:j):n(r)}function h(r){const s="CDATA[";return r===s.charCodeAt(a++)?(e.consume(r),a===s.length?o.interrupt?t:A:h):n(r)}function m(t){return Bb(t)?(e.consume(t),i=String.fromCharCode(t),g):n(t)}function g(a){if(null===a||47===a||62===a||Ub(a)){const l=47===a,c=i.toLowerCase();return l||s||!nx.includes(c)?tx.includes(i.toLowerCase())?(r=6,l?(e.consume(a),v):o.interrupt?t(a):A(a)):(r=7,o.interrupt&&!o.parser.lazy[o.now().line]?n(a):s?_(a):b(a)):(r=1,o.interrupt?t(a):A(a))}return 45===a||Pb(a)?(e.consume(a),i+=String.fromCharCode(a),g):n(a)}function v(r){return 62===r?(e.consume(r),o.interrupt?t:A):n(r)}function _(t){return Vb(t)?(e.consume(t),_):T(t)}function b(t){return 47===t?(e.consume(t),T):58===t||95===t||Bb(t)?(e.consume(t),y):Vb(t)?(e.consume(t),b):T(t)}function y(t){return 45===t||46===t||58===t||95===t||Pb(t)?(e.consume(t),y):x(t)}function x(t){return 61===t?(e.consume(t),w):Vb(t)?(e.consume(t),x):b(t)}function w(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),l=t,k):Vb(t)?(e.consume(t),w):S(t)}function k(t){return t===l?(e.consume(t),l=null,E):null===t||Hb(t)?n(t):(e.consume(t),k)}function S(t){return null===t||34===t||39===t||47===t||60===t||61===t||62===t||96===t||Ub(t)?x(t):(e.consume(t),S)}function E(e){return 47===e||62===e||Vb(e)?b(e):n(e)}function T(t){return 62===t?(e.consume(t),M):n(t)}function M(t){return null===t||Hb(t)?A(t):Vb(t)?(e.consume(t),M):n(t)}function A(t){return 45===t&&2===r?(e.consume(t),I):60===t&&1===r?(e.consume(t),B):62===t&&4===r?(e.consume(t),N):63===t&&3===r?(e.consume(t),j):93===t&&5===r?(e.consume(t),L):!Hb(t)||6!==r&&7!==r?null===t||Hb(t)?(e.exit("htmlFlowData"),R(t)):(e.consume(t),A):(e.exit("htmlFlowData"),e.check(rx,F,R)(t))}function R(t){return e.check(sx,C,F)(t)}function C(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),O}function O(t){return null===t||Hb(t)?R(t):(e.enter("htmlFlowData"),A(t))}function I(t){return 45===t?(e.consume(t),j):A(t)}function B(t){return 47===t?(e.consume(t),i="",P):A(t)}function P(t){if(62===t){const n=i.toLowerCase();return nx.includes(n)?(e.consume(t),N):A(t)}return Bb(t)&&i.length<8?(e.consume(t),i+=String.fromCharCode(t),P):A(t)}function L(t){return 93===t?(e.consume(t),j):A(t)}function j(t){return 62===t?(e.consume(t),N):45===t&&2===r?(e.consume(t),j):A(t)}function N(t){return null===t||Hb(t)?(e.exit("htmlFlowData"),F(t)):(e.consume(t),N)}function F(n){return e.exit("htmlFlow"),t(n)}}function lx(e,t,n){const o=this;return r;function r(t){return Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),s):n(t)}function s(e){return o.parser.lazy[o.now().line]?n(e):t(e)}}function cx(e,t,n){return o;function o(o){return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),e.attempt(py,t,n)}}const ux={name:"htmlText",tokenize:dx};function dx(e,t,n){const o=this;let r,s,i;return a;function a(t){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(t),l}function l(t){return 33===t?(e.consume(t),c):47===t?(e.consume(t),x):63===t?(e.consume(t),b):Bb(t)?(e.consume(t),S):n(t)}function c(t){return 45===t?(e.consume(t),u):91===t?(e.consume(t),s=0,h):Bb(t)?(e.consume(t),_):n(t)}function u(t){return 45===t?(e.consume(t),p):n(t)}function d(t){return null===t?n(t):45===t?(e.consume(t),f):Hb(t)?(i=d,B(t)):(e.consume(t),d)}function f(t){return 45===t?(e.consume(t),p):d(t)}function p(e){return 62===e?I(e):45===e?f(e):d(e)}function h(t){const o="CDATA[";return t===o.charCodeAt(s++)?(e.consume(t),s===o.length?m:h):n(t)}function m(t){return null===t?n(t):93===t?(e.consume(t),g):Hb(t)?(i=m,B(t)):(e.consume(t),m)}function g(t){return 93===t?(e.consume(t),v):m(t)}function v(t){return 62===t?I(t):93===t?(e.consume(t),v):m(t)}function _(t){return null===t||62===t?I(t):Hb(t)?(i=_,B(t)):(e.consume(t),_)}function b(t){return null===t?n(t):63===t?(e.consume(t),y):Hb(t)?(i=b,B(t)):(e.consume(t),b)}function y(e){return 62===e?I(e):b(e)}function x(t){return Bb(t)?(e.consume(t),w):n(t)}function w(t){return 45===t||Pb(t)?(e.consume(t),w):k(t)}function k(t){return Hb(t)?(i=k,B(t)):Vb(t)?(e.consume(t),k):I(t)}function S(t){return 45===t||Pb(t)?(e.consume(t),S):47===t||62===t||Ub(t)?E(t):n(t)}function E(t){return 47===t?(e.consume(t),I):58===t||95===t||Bb(t)?(e.consume(t),T):Hb(t)?(i=E,B(t)):Vb(t)?(e.consume(t),E):I(t)}function T(t){return 45===t||46===t||58===t||95===t||Pb(t)?(e.consume(t),T):M(t)}function M(t){return 61===t?(e.consume(t),A):Hb(t)?(i=M,B(t)):Vb(t)?(e.consume(t),M):E(t)}function A(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),r=t,R):Hb(t)?(i=A,B(t)):Vb(t)?(e.consume(t),A):(e.consume(t),C)}function R(t){return t===r?(e.consume(t),r=void 0,O):null===t?n(t):Hb(t)?(i=R,B(t)):(e.consume(t),R)}function C(t){return null===t||34===t||39===t||60===t||61===t||96===t?n(t):47===t||62===t||Ub(t)?E(t):(e.consume(t),C)}function O(e){return 47===e||62===e||Ub(e)?E(e):n(e)}function I(o){return 62===o?(e.consume(o),e.exit("htmlTextData"),e.exit("htmlText"),t):n(o)}function B(t){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),P}function P(t){return Vb(t)?Qb(e,L,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):L(t)}function L(t){return e.enter("htmlTextData"),i(t)}}const fx={name:"labelEnd",tokenize:_x,resolveTo:vx,resolveAll:gx},px={tokenize:bx},hx={tokenize:yx},mx={tokenize:xx};function gx(e){let t=-1;while(++t<e.length){const n=e[t][1];"labelImage"!==n.type&&"labelLink"!==n.type&&"labelEnd"!==n.type||(e.splice(t+1,"labelImage"===n.type?4:2),n.type="data",t++)}return e}function vx(e,t){let n,o,r,s,i=e.length,a=0;while(i--)if(n=e[i][1],o){if("link"===n.type||"labelLink"===n.type&&n._inactive)break;"enter"===e[i][0]&&"labelLink"===n.type&&(n._inactive=!0)}else if(r){if("enter"===e[i][0]&&("labelImage"===n.type||"labelLink"===n.type)&&!n._balanced&&(o=i,"labelLink"!==n.type)){a=2;break}}else"labelEnd"===n.type&&(r=i);const l={type:"labelLink"===e[o][1].type?"link":"image",start:Object.assign({},e[o][1].start),end:Object.assign({},e[e.length-1][1].end)},c={type:"label",start:Object.assign({},e[o][1].start),end:Object.assign({},e[r][1].end)},u={type:"labelText",start:Object.assign({},e[o+a+2][1].end),end:Object.assign({},e[r-2][1].start)};return s=[["enter",l,t],["enter",c,t]],s=xb(s,e.slice(o+1,o+a+3)),s=xb(s,[["enter",u,t]]),s=xb(s,iy(t.parser.constructs.insideSpan.null,e.slice(o+a+4,r-3),t)),s=xb(s,[["exit",u,t],e[r-2],e[r-1],["exit",c,t]]),s=xb(s,e.slice(r+1)),s=xb(s,[["exit",l,t]]),yb(e,o,e.length,s),e}function _x(e,t,n){const o=this;let r,s,i=o.events.length;while(i--)if(("labelImage"===o.events[i][1].type||"labelLink"===o.events[i][1].type)&&!o.events[i][1]._balanced){r=o.events[i][1];break}return a;function a(t){return r?r._inactive?d(t):(s=o.parser.defined.includes(Ob(o.sliceSerialize({start:r.end,end:o.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelEnd"),l):n(t)}function l(t){return 40===t?e.attempt(px,u,s?u:d)(t):91===t?e.attempt(hx,u,s?c:d)(t):s?u(t):d(t)}function c(t){return e.attempt(mx,u,d)(t)}function u(e){return t(e)}function d(e){return r._balanced=!0,n(e)}}function bx(e,t,n){return o;function o(t){return e.enter("resource"),e.enter("resourceMarker"),e.consume(t),e.exit("resourceMarker"),r}function r(t){return Ub(t)?qy(e,s)(t):s(t)}function s(t){return 41===t?u(t):Vy(e,i,a,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(t)}function i(t){return Ub(t)?qy(e,l)(t):u(t)}function a(e){return n(e)}function l(t){return 34===t||39===t||40===t?zy(e,c,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(t):u(t)}function c(t){return Ub(t)?qy(e,u)(t):u(t)}function u(o){return 41===o?(e.enter("resourceMarker"),e.consume(o),e.exit("resourceMarker"),e.exit("resource"),t):n(o)}}function yx(e,t,n){const o=this;return r;function r(t){return $y.call(o,e,s,i,"reference","referenceMarker","referenceString")(t)}function s(e){return o.parser.defined.includes(Ob(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function i(e){return n(e)}}function xx(e,t,n){return o;function o(t){return e.enter("reference"),e.enter("referenceMarker"),e.consume(t),e.exit("referenceMarker"),r}function r(o){return 93===o?(e.enter("referenceMarker"),e.consume(o),e.exit("referenceMarker"),e.exit("reference"),t):n(o)}}const wx={name:"labelStartImage",tokenize:kx,resolveAll:fx.resolveAll};function kx(e,t,n){const o=this;return r;function r(t){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(t),e.exit("labelImageMarker"),s}function s(t){return 91===t?(e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelImage"),i):n(t)}function i(e){return 94===e&&"_hiddenFootnoteSupport"in o.parser.constructs?n(e):t(e)}}const Sx={name:"labelStartLink",tokenize:Ex,resolveAll:fx.resolveAll};function Ex(e,t,n){const o=this;return r;function r(t){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelLink"),s}function s(e){return 94===e&&"_hiddenFootnoteSupport"in o.parser.constructs?n(e):t(e)}}const Tx={name:"lineEnding",tokenize:Mx};function Mx(e,t){return n;function n(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),Qb(e,t,"linePrefix")}}const Ax={name:"thematicBreak",tokenize:Rx};function Rx(e,t,n){let o,r=0;return s;function s(t){return e.enter("thematicBreak"),i(t)}function i(e){return o=e,a(e)}function a(s){return s===o?(e.enter("thematicBreakSequence"),l(s)):r>=3&&(null===s||Hb(s))?(e.exit("thematicBreak"),t(s)):n(s)}function l(t){return t===o?(e.consume(t),r++,l):(e.exit("thematicBreakSequence"),Vb(t)?Qb(e,a,"whitespace")(t):a(t))}}const Cx={name:"list",tokenize:Bx,continuation:{tokenize:Px},exit:jx},Ox={tokenize:Nx,partial:!0},Ix={tokenize:Lx,partial:!0};function Bx(e,t,n){const o=this,r=o.events[o.events.length-1];let s=r&&"linePrefix"===r[1].type?r[2].sliceSerialize(r[1],!0).length:0,i=0;return a;function a(t){const r=o.containerState.type||(42===t||43===t||45===t?"listUnordered":"listOrdered");if("listUnordered"===r?!o.containerState.marker||t===o.containerState.marker:Nb(t)){if(o.containerState.type||(o.containerState.type=r,e.enter(r,{_container:!0})),"listUnordered"===r)return e.enter("listItemPrefix"),42===t||45===t?e.check(Ax,n,c)(t):c(t);if(!o.interrupt||49===t)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(t)}return n(t)}function l(t){return Nb(t)&&++i<10?(e.consume(t),l):(!o.interrupt||i<2)&&(o.containerState.marker?t===o.containerState.marker:41===t||46===t)?(e.exit("listItemValue"),c(t)):n(t)}function c(t){return e.enter("listItemMarker"),e.consume(t),e.exit("listItemMarker"),o.containerState.marker=o.containerState.marker||t,e.check(py,o.interrupt?n:u,e.attempt(Ox,f,d))}function u(e){return o.containerState.initialBlankLine=!0,s++,f(e)}function d(t){return Vb(t)?(e.enter("listItemPrefixWhitespace"),e.consume(t),e.exit("listItemPrefixWhitespace"),f):n(t)}function f(n){return o.containerState.size=s+o.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(n)}}function Px(e,t,n){const o=this;return o.containerState._closeFlow=void 0,e.check(py,r,s);function r(n){return o.containerState.furtherBlankLines=o.containerState.furtherBlankLines||o.containerState.initialBlankLine,Qb(e,t,"listItemIndent",o.containerState.size+1)(n)}function s(n){return o.containerState.furtherBlankLines||!Vb(n)?(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,i(n)):(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,e.attempt(Ix,t,i)(n))}function i(r){return o.containerState._closeFlow=!0,o.interrupt=void 0,Qb(e,e.attempt(Cx,t,n),"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(r)}}function Lx(e,t,n){const o=this;return Qb(e,r,"listItemIndent",o.containerState.size+1);function r(e){const r=o.events[o.events.length-1];return r&&"listItemIndent"===r[1].type&&r[2].sliceSerialize(r[1],!0).length===o.containerState.size?t(e):n(e)}}function jx(e){e.exit(this.containerState.type)}function Nx(e,t,n){const o=this;return Qb(e,r,"listItemPrefixWhitespace",o.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(e){const r=o.events[o.events.length-1];return!Vb(e)&&r&&"listItemPrefixWhitespace"===r[1].type?t(e):n(e)}}const Fx={name:"setextUnderline",tokenize:Hx,resolveTo:Dx};function Dx(e,t){let n,o,r,s=e.length;while(s--)if("enter"===e[s][0]){if("content"===e[s][1].type){n=s;break}"paragraph"===e[s][1].type&&(o=s)}else"content"===e[s][1].type&&e.splice(s,1),r||"definition"!==e[s][1].type||(r=s);const i={type:"setextHeading",start:Object.assign({},e[o][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[o][1].type="setextHeadingText",r?(e.splice(o,0,["enter",i,t]),e.splice(r+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[r][1].end)):e[n][1]=i,e.push(["exit",i,t]),e}function Hx(e,t,n){const o=this;let r;return s;function s(t){let s,a=o.events.length;while(a--)if("lineEnding"!==o.events[a][1].type&&"linePrefix"!==o.events[a][1].type&&"content"!==o.events[a][1].type){s="paragraph"===o.events[a][1].type;break}return o.parser.lazy[o.now().line]||!o.interrupt&&!s?n(t):(e.enter("setextHeadingLine"),r=t,i(t))}function i(t){return e.enter("setextHeadingLineSequence"),a(t)}function a(t){return t===r?(e.consume(t),a):(e.exit("setextHeadingLineSequence"),Vb(t)?Qb(e,l,"lineSuffix")(t):l(t))}function l(o){return null===o||Hb(o)?(e.exit("setextHeadingLine"),t(o)):n(o)}}const Ux={tokenize:Vx};function Vx(e){const t=this,n=e.attempt(py,o,e.attempt(this.parser.constructs.flowInitial,r,Qb(e,e.attempt(this.parser.constructs.flow,r,e.attempt(Ny,r)),"linePrefix")));return n;function o(o){if(null!==o)return e.enter("lineEndingBlank"),e.consume(o),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n;e.consume(o)}function r(o){if(null!==o)return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),t.currentConstruct=void 0,n;e.consume(o)}}const $x={resolveAll:Gx()},zx=Yx("string"),qx=Yx("text");function Yx(e){return{tokenize:t,resolveAll:Gx("text"===e?Xx:void 0)};function t(t){const n=this,o=this.parser.constructs[e],r=t.attempt(o,s,i);return s;function s(e){return l(e)?r(e):i(e)}function i(e){if(null!==e)return t.enter("data"),t.consume(e),a;t.consume(e)}function a(e){return l(e)?(t.exit("data"),r(e)):(t.consume(e),a)}function l(e){if(null===e)return!0;const t=o[e];let r=-1;if(t)while(++r<t.length){const e=t[r];if(!e.previous||e.previous.call(n,n.previous))return!0}return!1}}}function Gx(e){return t;function t(t,n){let o,r=-1;while(++r<=t.length)void 0===o?t[r]&&"data"===t[r][1].type&&(o=r,r++):t[r]&&"data"===t[r][1].type||(r!==o+2&&(t[o][1].end=t[r-1][1].end,t.splice(o+2,r-o-2),r=o+2),o=void 0);return e?e(t,n):t}}function Xx(e,t){let n=0;while(++n<=e.length)if((n===e.length||"lineEnding"===e[n][1].type)&&"data"===e[n-1][1].type){const o=e[n-1][1],r=t.sliceStream(o);let s,i=r.length,a=-1,l=0;while(i--){const e=r[i];if("string"===typeof e){a=e.length;while(32===e.charCodeAt(a-1))l++,a--;if(a)break;a=-1}else if(-2===e)s=!0,l++;else if(-1!==e){i++;break}}if(l){const r={type:n===e.length||s||l<2?"lineSuffix":"hardBreakTrailing",start:{line:o.end.line,column:o.end.column-l,offset:o.end.offset-l,_index:o.start._index+i,_bufferIndex:i?a:o.start._bufferIndex+a},end:Object.assign({},o.end)};o.end=Object.assign({},r.start),o.start.offset===o.end.offset?Object.assign(o,r):(e.splice(n,0,["enter",r,t],["exit",r,t]),n+=2)}n++}return e}function Wx(e,t,n){let o=Object.assign(n?Object.assign({},n):{line:1,column:1,offset:0},{_index:0,_bufferIndex:-1});const r={},s=[];let i=[],a=[];const l={consume:_,enter:b,exit:y,attempt:k(x),check:k(w),interrupt:k(w,{interrupt:!0})},c={previous:null,code:null,containerState:{},events:[],parser:e,sliceStream:p,sliceSerialize:f,now:h,defineSkip:m,write:d};let u=t.tokenize.call(c,l);return t.resolveAll&&s.push(t),c;function d(e){return i=xb(i,e),g(),null!==i[i.length-1]?[]:(S(t,0),c.events=iy(s,c.events,c),c.events)}function f(e,t){return Zx(p(e),t)}function p(e){return Kx(i,e)}function h(){const{line:e,column:t,offset:n,_index:r,_bufferIndex:s}=o;return{line:e,column:t,offset:n,_index:r,_bufferIndex:s}}function m(e){r[e.line]=e.column,T()}function g(){let e;while(o._index<i.length){const t=i[o._index];if("string"===typeof t){e=o._index,o._bufferIndex<0&&(o._bufferIndex=0);while(o._index===e&&o._bufferIndex<t.length)v(t.charCodeAt(o._bufferIndex))}else v(t)}}function v(e){u=u(e)}function _(e){Hb(e)?(o.line++,o.column=1,o.offset+=-3===e?2:1,T()):-1!==e&&(o.column++,o.offset++),o._bufferIndex<0?o._index++:(o._bufferIndex++,o._bufferIndex===i[o._index].length&&(o._bufferIndex=-1,o._index++)),c.previous=e}function b(e,t){const n=t||{};return n.type=e,n.start=h(),c.events.push(["enter",n,c]),a.push(n),n}function y(e){const t=a.pop();return t.end=h(),c.events.push(["exit",t,c]),t}function x(e,t){S(e,t.from)}function w(e,t){t.restore()}function k(e,t){return n;function n(n,o,r){let s,i,a,u;return Array.isArray(n)?f(n):"tokenize"in n?f([n]):d(n);function d(e){return t;function t(t){const n=null!==t&&e[t],o=null!==t&&e.null,r=[...Array.isArray(n)?n:n?[n]:[],...Array.isArray(o)?o:o?[o]:[]];return f(r)(t)}}function f(e){return s=e,i=0,0===e.length?r:p(e[i])}function p(e){return n;function n(n){return u=E(),a=e,e.partial||(c.currentConstruct=e),e.name&&c.parser.constructs.disable.null.includes(e.name)?m():e.tokenize.call(t?Object.assign(Object.create(c),t):c,l,h,m)(n)}}function h(t){return e(a,u),o}function m(e){return u.restore(),++i<s.length?p(s[i]):r}}}function S(e,t){e.resolveAll&&!s.includes(e)&&s.push(e),e.resolve&&yb(c.events,t,c.events.length-t,e.resolve(c.events.slice(t),c)),e.resolveTo&&(c.events=e.resolveTo(c.events,c))}function E(){const e=h(),t=c.previous,n=c.currentConstruct,r=c.events.length,s=Array.from(a);return{restore:i,from:r};function i(){o=e,c.previous=t,c.currentConstruct=n,c.events.length=r,a=s,T()}}function T(){o.line in r&&o.column<2&&(o.column=r[o.line],o.offset+=r[o.line]-1)}}function Kx(e,t){const n=t.start._index,o=t.start._bufferIndex,r=t.end._index,s=t.end._bufferIndex;let i;if(n===r)i=[e[n].slice(o,s)];else{if(i=e.slice(n,r),o>-1){const e=i[0];"string"===typeof e?i[0]=e.slice(o):i.shift()}s>0&&i.push(e[r].slice(0,s))}return i}function Zx(e,t){let n=-1;const o=[];let r;while(++n<e.length){const s=e[n];let i;if("string"===typeof s)i=s;else switch(s){case-5:i="\r";break;case-4:i="\n";break;case-3:i="\r\n";break;case-2:i=t?" ":"\t";break;case-1:if(!t&&r)continue;i=" ";break;default:i=String.fromCharCode(s)}r=-2===s,o.push(i)}return o.join("")}const Qx={[42]:Cx,[43]:Cx,[45]:Cx,[48]:Cx,[49]:Cx,[50]:Cx,[51]:Cx,[52]:Cx,[53]:Cx,[54]:Cx,[55]:Cx,[56]:Cx,[57]:Cx,[62]:my},Jx={[91]:Yy},ew={[-2]:My,[-1]:My,[32]:My},tw={[35]:Qy,[42]:Ax,[45]:[Fx,Ax],[60]:ox,[61]:Fx,[95]:Ax,[96]:Sy,[126]:Sy},nw={[38]:xy,[92]:by},ow={[-5]:Tx,[-4]:Tx,[-3]:Tx,[33]:wx,[38]:xy,[42]:ay,[60]:[dy,ux],[91]:Sx,[92]:[Ky,by],[93]:fx,[95]:ay,[96]:Oy},rw={null:[ay,$x]},sw={null:[42,95]},iw={null:[]};var aw=Object.freeze(Object.defineProperty({__proto__:null,document:Qx,contentInitial:Jx,flowInitial:ew,flow:tw,string:nw,text:ow,insideSpan:rw,attentionMarkers:sw,disable:iw},Symbol.toStringTag,{value:"Module"}));function lw(e){const t=e||{},n=kb([aw,...t.extensions||[]]),o={defined:[],lazy:{},constructs:n,content:r(Jb),document:r(ty),flow:r(Ux),string:r(zx),text:r(qx)};return o;function r(e){return t;function t(t){return Wx(o,e,t)}}}function cw(e){while(!Ly(e));return e}const uw=/[\0\t\n\r]/g;function dw(){let e,t=1,n="",o=!0;return r;function r(r,s,i){const a=[];let l,c,u,d,f;r=n+r.toString(s),u=0,n="",o&&(65279===r.charCodeAt(0)&&u++,o=void 0);while(u<r.length){if(uw.lastIndex=u,l=uw.exec(r),d=l&&void 0!==l.index?l.index:r.length,f=r.charCodeAt(d),!l){n=r.slice(u);break}if(10===f&&u===d&&e)a.push(-3),e=void 0;else switch(e&&(a.push(-5),e=void 0),u<d&&(a.push(r.slice(u,d)),t+=d-u),f){case 0:a.push(65533),t++;break;case 9:c=4*Math.ceil(t/4),a.push(-2);while(t++<c)a.push(-1);break;case 10:a.push(-4),t=1;break;default:e=!0,t=1}u=d+1}return i&&(e&&a.push(-5),n&&a.push(n),a.push(null)),a}}function fw(e,t,n){return"string"!==typeof t&&(n=t,t=void 0),Zb(n)(cw(lw(n).document().write(dw()(e,t,!0))))}const pw={tokenize:Mw,partial:!0},hw={tokenize:Aw,partial:!0},mw={tokenize:Rw,partial:!0},gw={tokenize:Cw,partial:!0},vw={tokenize:Ow,partial:!0},_w={tokenize:Ew,previous:Iw},bw={tokenize:Tw,previous:Bw},yw={tokenize:Sw,previous:Pw},xw={},ww={text:xw};let kw=48;while(kw<123)xw[kw]=yw,kw++,58===kw?kw=65:91===kw&&(kw=97);function Sw(e,t,n){const o=this;let r,s;return i;function i(t){return Lw(t)&&Pw.call(o,o.previous)&&!jw(o.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),a(t)):n(t)}function a(t){return Lw(t)?(e.consume(t),a):64===t?(e.consume(t),l):n(t)}function l(t){return 46===t?e.check(vw,u,c)(t):45===t||95===t||Pb(t)?(s=!0,e.consume(t),l):u(t)}function c(t){return e.consume(t),r=!0,l}function u(i){return s&&r&&Bb(o.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(i)):n(i)}}function Ew(e,t,n){const o=this;return r;function r(t){return 87!==t&&119!==t||!Iw.call(o,o.previous)||jw(o.events)?n(t):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(pw,e.attempt(hw,e.attempt(mw,s),n),n)(t))}function s(n){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(n)}}function Tw(e,t,n){const o=this;let r="",s=!1;return i;function i(t){return 72!==t&&104!==t||!Bw.call(o,o.previous)||jw(o.events)?n(t):(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),r+=String.fromCodePoint(t),e.consume(t),a)}function a(t){if(Bb(t)&&r.length<5)return r+=String.fromCodePoint(t),e.consume(t),a;if(58===t){const n=r.toLowerCase();if("http"===n||"https"===n)return e.consume(t),l}return n(t)}function l(t){return 47===t?(e.consume(t),s?c:(s=!0,l)):n(t)}function c(t){return null===t||jb(t)||Ub(t)||zb(t)||$b(t)?n(t):e.attempt(hw,e.attempt(mw,u),n)(t)}function u(n){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(n)}}function Mw(e,t,n){let o=0;return r;function r(t){return(87===t||119===t)&&o<3?(o++,e.consume(t),r):46===t&&3===o?(e.consume(t),s):n(t)}function s(e){return null===e?n(e):t(e)}}function Aw(e,t,n){let o,r,s;return i;function i(t){return 46===t||95===t?e.check(gw,l,a)(t):null===t||Ub(t)||zb(t)||45!==t&&$b(t)?l(t):(s=!0,e.consume(t),i)}function a(t){return 95===t?o=!0:(r=o,o=void 0),e.consume(t),i}function l(e){return r||o||!s?n(e):t(e)}}function Rw(e,t){let n=0,o=0;return r;function r(i){return 40===i?(n++,e.consume(i),r):41===i&&o<n?s(i):33===i||34===i||38===i||39===i||41===i||42===i||44===i||46===i||58===i||59===i||60===i||63===i||93===i||95===i||126===i?e.check(gw,t,s)(i):null===i||Ub(i)||zb(i)?t(i):(e.consume(i),r)}function s(t){return 41===t&&o++,e.consume(t),r}}function Cw(e,t,n){return o;function o(i){return 33===i||34===i||39===i||41===i||42===i||44===i||46===i||58===i||59===i||63===i||95===i||126===i?(e.consume(i),o):38===i?(e.consume(i),s):93===i?(e.consume(i),r):60===i||null===i||Ub(i)||zb(i)?t(i):n(i)}function r(e){return null===e||40===e||91===e||Ub(e)||zb(e)?t(e):o(e)}function s(e){return Bb(e)?i(e):n(e)}function i(t){return 59===t?(e.consume(t),o):Bb(t)?(e.consume(t),i):n(t)}}function Ow(e,t,n){return o;function o(t){return e.consume(t),r}function r(e){return Pb(e)?n(e):t(e)}}function Iw(e){return null===e||40===e||42===e||95===e||91===e||93===e||126===e||Ub(e)}function Bw(e){return!Bb(e)}function Pw(e){return!(47===e||Lw(e))}function Lw(e){return 43===e||45===e||46===e||95===e||Pb(e)}function jw(e){let t=e.length,n=!1;while(t--){const o=e[t][1];if(("labelLink"===o.type||"labelImage"===o.type)&&!o._balanced){n=!0;break}if(o._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}xw[43]=yw,xw[45]=yw,xw[46]=yw,xw[95]=yw,xw[72]=[yw,bw],xw[104]=[yw,bw],xw[87]=[yw,_w],xw[119]=[yw,_w];const Nw={exit:{literalAutolinkEmail:Dw,literalAutolinkHttp:Hw,literalAutolinkWww:Fw}};function Fw(e){Uw.call(this,e,"http://")}function Dw(e){Uw.call(this,e,"mailto:")}function Hw(e){Uw.call(this,e)}function Uw(e,t){const n=this.sliceSerialize(e);this.tag('<a href="'+Yb((t||"")+n)+'">'),this.raw(this.encode(n)),this.tag("</a>")}const Vw={tokenize:Kw,partial:!0};function $w(){return{document:{[91]:{tokenize:Gw,continuation:{tokenize:Xw},exit:Ww}},text:{[91]:{tokenize:Yw},[93]:{add:"after",tokenize:zw,resolveTo:qw}}}}function zw(e,t,n){const o=this;let r=o.events.length;const s=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let i;while(r--){const e=o.events[r][1];if("labelImage"===e.type){i=e;break}if("gfmFootnoteCall"===e.type||"labelLink"===e.type||"label"===e.type||"image"===e.type||"link"===e.type)break}return a;function a(r){if(!i||!i._balanced)return n(r);const a=Ob(o.sliceSerialize({start:i.end,end:o.now()}));return 94===a.codePointAt(0)&&s.includes(a.slice(1))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(r),e.exit("gfmFootnoteCallLabelMarker"),t(r)):n(r)}}function qw(e,t){let n=e.length;while(n--)if("labelImage"===e[n][1].type&&"enter"===e[n][0]){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const o={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},r={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};r.end.column++,r.end.offset++,r.end._bufferIndex++;const s={type:"gfmFootnoteCallString",start:Object.assign({},r.end),end:Object.assign({},e[e.length-1][1].start)},i={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},a=[e[n+1],e[n+2],["enter",o,t],e[n+3],e[n+4],["enter",r,t],["exit",r,t],["enter",s,t],["enter",i,t],["exit",i,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",o,t]];return e.splice(n,e.length-n+1,...a),e}function Yw(e,t,n){const o=this,r=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let s,i=0;return a;function a(t){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(t),e.exit("gfmFootnoteCallLabelMarker"),l}function l(t){return 94!==t?n(t):(e.enter("gfmFootnoteCallMarker"),e.consume(t),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(a){if(i>999||93===a&&!s||null===a||91===a||Ub(a))return n(a);if(93===a){e.exit("chunkString");const s=e.exit("gfmFootnoteCallString");return r.includes(Ob(o.sliceSerialize(s)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(a),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(a)}return Ub(a)||(s=!0),i++,e.consume(a),92===a?u:c}function u(t){return 91===t||92===t||93===t?(e.consume(t),i++,c):c(t)}}function Gw(e,t,n){const o=this,r=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let s,i,a=0;return l;function l(t){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(t),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(t){return 94===t?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(t),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",u):n(t)}function u(t){if(a>999||93===t&&!i||null===t||91===t||Ub(t))return n(t);if(93===t){e.exit("chunkString");const n=e.exit("gfmFootnoteDefinitionLabelString");return s=Ob(o.sliceSerialize(n)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(t),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),f}return Ub(t)||(i=!0),a++,e.consume(t),92===t?d:u}function d(t){return 91===t||92===t||93===t?(e.consume(t),a++,u):u(t)}function f(t){return 58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),r.includes(s)||r.push(s),Qb(e,p,"gfmFootnoteDefinitionWhitespace")):n(t)}function p(e){return t(e)}}function Xw(e,t,n){return e.check(py,t,e.attempt(Vw,t,n))}function Ww(e){e.exit("gfmFootnoteDefinition")}function Kw(e,t,n){const o=this;return Qb(e,r,"gfmFootnoteDefinitionIndent",5);function r(e){const r=o.events[o.events.length-1];return r&&"gfmFootnoteDefinitionIndent"===r[1].type&&4===r[2].sliceSerialize(r[1],!0).length?t(e):n(e)}}const Zw={}.hasOwnProperty,Qw={};function Jw(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function ek(e){const t=e||Qw,n=t.label||"Footnotes",o=t.labelTagName||"h2",r=null===t.labelAttributes||void 0===t.labelAttributes?'class="sr-only"':t.labelAttributes,s=t.backLabel||Jw,i=null===t.clobberPrefix||void 0===t.clobberPrefix?"user-content-":t.clobberPrefix;return{enter:{gfmFootnoteDefinition(){const e=this.getData("tightStack");e.push(!1)},gfmFootnoteDefinitionLabelString(){this.buffer()},gfmFootnoteCallString(){this.buffer()}},exit:{gfmFootnoteDefinition(){let e=this.getData("gfmFootnoteDefinitions");const t=this.getData("gfmFootnoteDefinitionStack"),n=this.getData("tightStack"),o=t.pop(),r=this.resume();e||this.setData("gfmFootnoteDefinitions",e={}),Zw.call(e,o)||(e[o]=r),n.pop(),this.setData("slurpOneLineEnding",!0),this.setData("lastWasTag")},gfmFootnoteDefinitionLabelString(e){let t=this.getData("gfmFootnoteDefinitionStack");t||this.setData("gfmFootnoteDefinitionStack",t=[]),t.push(Ob(this.sliceSerialize(e))),this.resume(),this.buffer()},gfmFootnoteCallString(e){let t=this.getData("gfmFootnoteCallOrder"),n=this.getData("gfmFootnoteCallCounts");const o=Ob(this.sliceSerialize(e));let r;this.resume(),t||this.setData("gfmFootnoteCallOrder",t=[]),n||this.setData("gfmFootnoteCallCounts",n={});const s=t.indexOf(o),a=Yb(o.toLowerCase());-1===s?(t.push(o),n[o]=1,r=t.length):(n[o]++,r=s+1);const l=n[o];this.tag('<sup><a href="#'+i+"fn-"+a+'" id="'+i+"fnref-"+a+(l>1?"-"+l:"")+'" data-footnote-ref="" aria-describedby="footnote-label">'+String(r)+"</a></sup>")},null(){const e=this.getData("gfmFootnoteCallOrder")||[],t=this.getData("gfmFootnoteCallCounts")||{},a=this.getData("gfmFootnoteDefinitions")||{};let l=-1;e.length>0&&(this.lineEndingIfNeeded(),this.tag('<section data-footnotes="" class="footnotes"><'+o+' id="footnote-label"'+(r?" "+r:"")+">"),this.raw(this.encode(n)),this.tag("</"+o+">"),this.lineEndingIfNeeded(),this.tag("<ol>"));while(++l<e.length){const n=e[l],o=Yb(n.toLowerCase());let r=0;const c=[];while(++r<=t[n])c.push('<a href="#'+i+"fnref-"+o+(r>1?"-"+r:"")+'" data-footnote-backref="" aria-label="'+this.encode("string"===typeof s?s:s(l,r))+'" class="data-footnote-backref">↩'+(r>1?"<sup>"+r+"</sup>":"")+"</a>");const u=c.join(" ");let d=!1;this.lineEndingIfNeeded(),this.tag('<li id="'+i+"fn-"+o+'">'),this.lineEndingIfNeeded(),this.tag(a[n].replace(/<\/p>(?:\r?\n|\r)?$/,(e=>(d=!0," "+u+e)))),d||(this.lineEndingIfNeeded(),this.tag(u)),this.lineEndingIfNeeded(),this.tag("</li>")}e.length>0&&(this.lineEndingIfNeeded(),this.tag("</ol>"),this.lineEndingIfNeeded(),this.tag("</section>"))}}}}const tk={enter:{strikethrough(){this.tag("<del>")}},exit:{strikethrough(){this.tag("</del>")}}};function nk(e){const t=e||{};let n=t.singleTilde;const o={tokenize:s,resolveAll:r};return null!==n&&void 0!==n||(n=!0),{text:{[126]:o},insideSpan:{null:[o]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;while(++n<e.length)if("enter"===e[n][0]&&"strikethroughSequenceTemporary"===e[n][1].type&&e[n][1]._close){let o=n;while(o--)if("exit"===e[o][0]&&"strikethroughSequenceTemporary"===e[o][1].type&&e[o][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[o][1].end.offset-e[o][1].start.offset){e[n][1].type="strikethroughSequence",e[o][1].type="strikethroughSequence";const r={type:"strikethrough",start:Object.assign({},e[o][1].start),end:Object.assign({},e[n][1].end)},s={type:"strikethroughText",start:Object.assign({},e[o][1].end),end:Object.assign({},e[n][1].start)},i=[["enter",r,t],["enter",e[o][1],t],["exit",e[o][1],t],["enter",s,t]],a=t.parser.constructs.insideSpan.null;a&&yb(i,i.length,0,iy(a,e.slice(o+1,n),t)),yb(i,i.length,0,[["exit",s,t],["enter",e[n][1],t],["exit",e[n][1],t],["exit",r,t]]),yb(e,o-1,n-o+3,i),n=o+i.length-2;break}}n=-1;while(++n<e.length)"strikethroughSequenceTemporary"===e[n][1].type&&(e[n][1].type="data");return e}function s(e,t,o){const r=this.previous,s=this.events;let i=0;return a;function a(t){return 126===r&&"characterEscape"!==s[s.length-1][1].type?o(t):(e.enter("strikethroughSequenceTemporary"),l(t))}function l(s){const a=sy(r);if(126===s)return i>1?o(s):(e.consume(s),i++,l);if(i<2&&!n)return o(s);const c=e.exit("strikethroughSequenceTemporary"),u=sy(s);return c._open=!u||2===u&&Boolean(a),c._close=!a||2===a&&Boolean(u),t(s)}}}const ok={none:"",left:' align="left"',right:' align="right"',center:' align="center"'},rk={enter:{table(e){const t=e._align;this.lineEndingIfNeeded(),this.tag("<table>"),this.setData("tableAlign",t)},tableBody(){this.tag("<tbody>")},tableData(){const e=this.getData("tableAlign"),t=this.getData("tableColumn"),n=ok[e[t]];void 0===n?this.buffer():(this.lineEndingIfNeeded(),this.tag("<td"+n+">"))},tableHead(){this.lineEndingIfNeeded(),this.tag("<thead>")},tableHeader(){const e=this.getData("tableAlign"),t=this.getData("tableColumn"),n=ok[e[t]];this.lineEndingIfNeeded(),this.tag("<th"+n+">")},tableRow(){this.setData("tableColumn",0),this.lineEndingIfNeeded(),this.tag("<tr>")}},exit:{codeTextData(e){let t=this.sliceSerialize(e);this.getData("tableAlign")&&(t=t.replace(/\\([\\|])/g,sk)),this.raw(this.encode(t))},table(){this.setData("tableAlign"),this.setData("slurpAllLineEndings"),this.lineEndingIfNeeded(),this.tag("</table>")},tableBody(){this.lineEndingIfNeeded(),this.tag("</tbody>")},tableData(){const e=this.getData("tableAlign"),t=this.getData("tableColumn");t in e?(this.tag("</td>"),this.setData("tableColumn",t+1)):this.resume()},tableHead(){this.lineEndingIfNeeded(),this.tag("</thead>")},tableHeader(){const e=this.getData("tableColumn");this.tag("</th>"),this.setData("tableColumn",e+1)},tableRow(){const e=this.getData("tableAlign");let t=this.getData("tableColumn");while(t<e.length)this.lineEndingIfNeeded(),this.tag("<td"+ok[e[t]]+"></td>"),t++;this.setData("tableColumn",t),this.lineEndingIfNeeded(),this.tag("</tr>")}}};function sk(e,t){return"|"===t?t:e}class ik{constructor(){this.map=[]}add(e,t,n){ak(this,e,t,n)}consume(e){if(this.map.sort(((e,t)=>e[0]-t[0])),0===this.map.length)return;let t=this.map.length;const n=[];while(t>0)t-=1,n.push(e.slice(this.map[t][0]+this.map[t][1])),n.push(this.map[t][2]),e.length=this.map[t][0];n.push([...e]),e.length=0;let o=n.pop();while(o)e.push(...o),o=n.pop();this.map.length=0}}function ak(e,t,n,o){let r=0;if(0!==n||0!==o.length){while(r<e.map.length){if(e.map[r][0]===t)return e.map[r][1]+=n,void e.map[r][2].push(...o);r+=1}e.map.push([t,n,o])}}function lk(e,t){let n=!1;const o=[];while(t<e.length){const r=e[t];if(n){if("enter"===r[0])"tableContent"===r[1].type&&o.push("tableDelimiterMarker"===e[t+1][1].type?"left":"none");else if("tableContent"===r[1].type){if("tableDelimiterMarker"===e[t-1][1].type){const e=o.length-1;o[e]="left"===o[e]?"center":"right"}}else if("tableDelimiterRow"===r[1].type)break}else"enter"===r[0]&&"tableDelimiterRow"===r[1].type&&(n=!0);t+=1}return o}const ck={flow:{null:{tokenize:uk,resolveAll:dk}}};function uk(e,t,n){const o=this;let r,s=0,i=0;return a;function a(e){let t=o.events.length-1;while(t>-1){const e=o.events[t][1].type;if("lineEnding"!==e&&"linePrefix"!==e)break;t--}const r=t>-1?o.events[t][1].type:null,s="tableHead"===r||"tableRow"===r?w:l;return s===w&&o.parser.lazy[o.now().line]?n(e):s(e)}function l(t){return e.enter("tableHead"),e.enter("tableRow"),c(t)}function c(e){return 124===e||(r=!0,i+=1),u(e)}function u(t){return null===t?n(t):Hb(t)?i>1?(i=0,o.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),p):n(t):Vb(t)?Qb(e,u,"whitespace")(t):(i+=1,r&&(r=!1,s+=1),124===t?(e.enter("tableCellDivider"),e.consume(t),e.exit("tableCellDivider"),r=!0,u):(e.enter("data"),d(t)))}function d(t){return null===t||124===t||Ub(t)?(e.exit("data"),u(t)):(e.consume(t),92===t?f:d)}function f(t){return 92===t||124===t?(e.consume(t),d):d(t)}function p(t){return o.interrupt=!1,o.parser.lazy[o.now().line]?n(t):(e.enter("tableDelimiterRow"),r=!1,Vb(t)?Qb(e,h,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):h(t))}function h(t){return 45===t||58===t?g(t):124===t?(r=!0,e.enter("tableCellDivider"),e.consume(t),e.exit("tableCellDivider"),m):x(t)}function m(t){return Vb(t)?Qb(e,g,"whitespace")(t):g(t)}function g(t){return 58===t?(i+=1,r=!0,e.enter("tableDelimiterMarker"),e.consume(t),e.exit("tableDelimiterMarker"),v):45===t?(i+=1,v(t)):null===t||Hb(t)?y(t):x(t)}function v(t){return 45===t?(e.enter("tableDelimiterFiller"),_(t)):x(t)}function _(t){return 45===t?(e.consume(t),_):58===t?(r=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(t),e.exit("tableDelimiterMarker"),b):(e.exit("tableDelimiterFiller"),b(t))}function b(t){return Vb(t)?Qb(e,y,"whitespace")(t):y(t)}function y(n){return 124===n?h(n):(null===n||Hb(n))&&r&&s===i?(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(n)):x(n)}function x(e){return n(e)}function w(t){return e.enter("tableRow"),k(t)}function k(n){return 124===n?(e.enter("tableCellDivider"),e.consume(n),e.exit("tableCellDivider"),k):null===n||Hb(n)?(e.exit("tableRow"),t(n)):Vb(n)?Qb(e,k,"whitespace")(n):(e.enter("data"),S(n))}function S(t){return null===t||124===t||Ub(t)?(e.exit("data"),k(t)):(e.consume(t),92===t?E:S)}function E(t){return 92===t||124===t?(e.consume(t),S):S(t)}}function dk(e,t){let n,o,r,s=-1,i=!0,a=0,l=[0,0,0,0],c=[0,0,0,0],u=!1,d=0;const f=new ik;while(++s<e.length){const p=e[s],h=p[1];"enter"===p[0]?"tableHead"===h.type?(u=!1,0!==d&&(pk(f,t,d,n,o),o=void 0,d=0),n={type:"table",start:Object.assign({},h.start),end:Object.assign({},h.end)},f.add(s,0,[["enter",n,t]])):"tableRow"===h.type||"tableDelimiterRow"===h.type?(i=!0,r=void 0,l=[0,0,0,0],c=[0,s+1,0,0],u&&(u=!1,o={type:"tableBody",start:Object.assign({},h.start),end:Object.assign({},h.end)},f.add(s,0,[["enter",o,t]])),a="tableDelimiterRow"===h.type?2:o?3:1):!a||"data"!==h.type&&"tableDelimiterMarker"!==h.type&&"tableDelimiterFiller"!==h.type?"tableCellDivider"===h.type&&(i?i=!1:(0!==l[1]&&(c[0]=c[1],r=fk(f,t,l,a,void 0,r)),l=c,c=[l[1],s,0,0])):(i=!1,0===c[2]&&(0!==l[1]&&(c[0]=c[1],r=fk(f,t,l,a,void 0,r),l=[0,0,0,0]),c[2]=s)):"tableHead"===h.type?(u=!0,d=s):"tableRow"===h.type||"tableDelimiterRow"===h.type?(d=s,0!==l[1]?(c[0]=c[1],r=fk(f,t,l,a,s,r)):0!==c[1]&&(r=fk(f,t,c,a,s,r)),a=0):!a||"data"!==h.type&&"tableDelimiterMarker"!==h.type&&"tableDelimiterFiller"!==h.type||(c[3]=s)}0!==d&&pk(f,t,d,n,o),f.consume(t.events),s=-1;while(++s<t.events.length){const e=t.events[s];"enter"===e[0]&&"table"===e[1].type&&(e[1]._align=lk(t.events,s))}return e}function fk(e,t,n,o,r,s){const i=1===o?"tableHeader":2===o?"tableDelimiter":"tableData",a="tableContent";0!==n[0]&&(s.end=Object.assign({},hk(t.events,n[0])),e.add(n[0],0,[["exit",s,t]]));const l=hk(t.events,n[1]);if(s={type:i,start:Object.assign({},l),end:Object.assign({},l)},e.add(n[1],0,[["enter",s,t]]),0!==n[2]){const r=hk(t.events,n[2]),s=hk(t.events,n[3]),i={type:a,start:Object.assign({},r),end:Object.assign({},s)};if(e.add(n[2],0,[["enter",i,t]]),2!==o){const o=t.events[n[2]],r=t.events[n[3]];if(o[1].end=Object.assign({},r[1].end),o[1].type="chunkText",o[1].contentType="text",n[3]>n[2]+1){const t=n[2]+1,o=n[3]-n[2]-1;e.add(t,o,[])}}e.add(n[3]+1,0,[["exit",i,t]])}return void 0!==r&&(s.end=Object.assign({},hk(t.events,r)),e.add(r,0,[["exit",s,t]]),s=void 0),s}function pk(e,t,n,o,r){const s=[],i=hk(t.events,n);r&&(r.end=Object.assign({},i),s.push(["exit",r,t])),o.end=Object.assign({},i),s.push(["exit",o,t]),e.add(n+1,0,s)}function hk(e,t){const n=e[t],o="enter"===n[0]?"start":"end";return n[1][o]}const mk=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\t\n\f\r />])/gi,gk=new RegExp("^"+mk.source,"i"),vk={exit:{htmlFlowData(e){_k.call(this,e,mk)},htmlTextData(e){_k.call(this,e,gk)}}};function _k(e,t){let n=this.sliceSerialize(e);this.options.allowDangerousHtml&&(n=n.replace(t,"&lt;$1$2")),this.raw(this.encode(n))}const bk={enter:{taskListCheck(){this.tag('<input type="checkbox" disabled="" ')}},exit:{taskListCheck(){this.tag("/>")},taskListCheckValueChecked(){this.tag('checked="" ')}}},yk={tokenize:wk},xk={text:{[91]:yk}};function wk(e,t,n){const o=this;return r;function r(t){return null===o.previous&&o._gfmTasklistFirstContentOfListItem?(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(t),e.exit("taskListCheckMarker"),s):n(t)}function s(t){return Ub(t)?(e.enter("taskListCheckValueUnchecked"),e.consume(t),e.exit("taskListCheckValueUnchecked"),i):88===t||120===t?(e.enter("taskListCheckValueChecked"),e.consume(t),e.exit("taskListCheckValueChecked"),i):n(t)}function i(t){return 93===t?(e.enter("taskListCheckMarker"),e.consume(t),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),a):n(t)}function a(o){return Hb(o)?t(o):Vb(o)?e.check({tokenize:kk},t,n)(o):n(o)}}function kk(e,t,n){return Qb(e,o,"whitespace");function o(e){return null===e?n(e):t(e)}}function Sk(e){return kb([ww,$w(),nk(e),ck,xk])}function Ek(e){return Tb([Nw,ek(e),tk,rk,vk,bk])}const Tk={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,degree:176,byteOrderMarker:65279,replacementCharacter:65533},Mk=(e,t,n)=>{const o=s=>s===Tk.carriageReturn||s===Tk.lineFeed||s===Tk.carriageReturnLineFeed||s===Tk.eof?n(s):s===Tk.backslash?(e.consume(s),r):s===Tk.degree?(e.exit("underlineContent"),e.enter("underlineMarker"),e.consume(s),e.exit("underlineMarker"),e.exit("underline"),t):(e.consume(s),o),r=t=>t===Tk.backslash||t===Tk.degree?(e.consume(t),o):o(t),s=e=>e===Tk.degree?n(e):o(e);return t=>(e.enter("underline"),e.enter("underlineMarker"),e.consume(t),e.exit("underlineMarker"),e.enter("underlineContent",{contentType:"string"}),s)},Ak={name:"underline",tokenize:Mk},Rk={text:{176:Ak}},Ck={enter:{underline(){this.tag("<u>")}},exit:{underline(){this.tag("</u>")}}},Ok=(e,t,n)=>{const o=s=>s===Tk.carriageReturn||s===Tk.lineFeed||s===Tk.carriageReturnLineFeed||s===Tk.eof?n(s):s===Tk.backslash?(e.consume(s),r):s===Tk.greaterThan?(e.exit("usertagContent"),e.enter("usertagMarker"),e.consume(s),e.exit("usertagMarker"),e.exit("usertag"),t):(e.consume(s),o),r=t=>t===Tk.backslash||t===Tk.greaterThan?(e.consume(t),o):o(t),s=t=>t===Tk.atSign?(e.consume(t),e.exit("usertagMarker"),e.enter("usertagContent"),o):n(t);return t=>(e.enter("usertag"),e.enter("usertagMarker"),e.consume(t),s)},Ik={name:"usertag",tokenize:Ok},Bk={text:{60:Ik}},Pk=e=>({exit:{usertagContent(t){const n=this.sliceSerialize(t);this.tag(`<span class="vac-text-tag" data-user-id="${n}">`);const o=e.find((e=>e._id===n));this.raw(`@${this.encode(o?o.username:n)}`),this.tag("</span>")}}});var Lk=(e,{textFormatting:t})=>{if(t){let n=[];t.linkify||(n=["literalAutolink","literalAutolinkEmail"]);const o=fw(e.replaceAll("<usertag>","<@").replaceAll("</usertag>",">"),{extensions:[{...Sk(),disable:{null:n}},Rk,Bk],htmlExtensions:[Ek(),Ck,Pk(t.users)]});if(t.singleLine){const e=document.createElement("div");return e.innerHTML=o,[{types:[],value:e.innerText}]}return[{types:["markdown"],value:o}]}return[{types:[],value:e}]};const jk=["png","jpg","jpeg","webp","svg","gif"],Nk=["mp4","video/ogg","webm","quicktime"],Fk=["mp3","audio/ogg","wav","mpeg"],Dk={name:"FormatMessage",components:{SvgIcon:fb},props:{messageId:{type:String,default:""},roomId:{type:String,default:""},roomList:{type:Boolean,default:!1},content:{type:[String,Number],required:!0},deleted:{type:Boolean,default:!1},users:{type:Array,default:()=>[]},linkify:{type:Boolean,default:!0},singleLine:{type:Boolean,default:!1},reply:{type:Boolean,default:!1},textFormatting:{type:Object,required:!0},textMessages:{type:Object,default:()=>{}},linkOptions:{type:Object,required:!0}},emits:["open-user-tag"],computed:{parsedMessage(){if(this.deleted)return[{value:this.textMessages.MESSAGE_DELETED}];let e;e=this.textFormatting.disabled?{}:{textFormatting:{linkify:this.linkify,linkOptions:this.linkOptions,singleLine:this.singleLine,reply:this.reply,users:this.users,...this.textFormatting}};const t=Lk(this.content,e);return t.forEach((e=>{e.markdown=this.checkType(e,"markdown"),e.tag=this.checkType(e,"tag"),e.image=this.checkImageType(e)})),t}},methods:{checkType(e,t){return e.types&&-1!==e.types.indexOf(t)},checkImageType(e){let t=e.value.lastIndexOf(".");const n=e.value.lastIndexOf("/");n>t&&(t=-1);const o=e.value.substring(t+1,e.value.length),r=t>0&&jk.some((e=>o.toLowerCase().includes(e)));return r&&this.setImageSize(e),r},setImageSize(e){const t=new Image;function n(o){const r=o.path[0].width/150;e.height=Math.round(o.path[0].height/r)+"px",t.removeEventListener("load",n)}t.src=e.value,t.addEventListener("load",n)},openTag(e){const t=e.target.getAttribute("data-user-id");if(!this.singleLine&&t){const e=this.users.find((e=>String(e._id)===t));this.$emit("open-user-tag",e)}}}},Hk=["innerHTML"],Uk={class:"vac-image-link-container"},Vk={class:"vac-image-link-message"};function $k(e,t,n,o,r,s){const i=vm("svg-icon");return kg(),Ag("div",{class:tp(["vac-format-message-wrapper",{"vac-text-ellipsis":n.singleLine}])},[(kg(!0),Ag(vg,null,km(s.parsedMessage,((o,r)=>(kg(),Ag(vg,{key:r},[o.markdown?(kg(),Ag("div",{key:0,class:"markdown",onClick:t[0]||(t[0]=(...e)=>s.openTag&&s.openTag(...e)),innerHTML:o.value},null,8,Hk)):(kg(),Ag("div",{key:1,class:tp(["vac-format-container",{"vac-text-ellipsis":n.singleLine}])},[(kg(),Rg(bm(o.url?"a":"span"),{class:tp({"vac-text-ellipsis":n.singleLine,"vac-text-tag":!n.singleLine&&!n.reply&&o.tag}),href:o.href,target:o.href?n.linkOptions.target:null,rel:o.href?n.linkOptions.rel:null},{default:xh((()=>[n.deleted?(kg(),Ag(vg,{key:0},[Em(e.$slots,n.roomList?"deleted-icon-room_"+n.roomId:"deleted-icon_"+n.messageId,{},(()=>[jg(i,{name:"deleted",class:tp(["vac-icon-deleted",{"vac-icon-deleted-room":n.roomList}])},null,8,["class"])])),Hg(" "+op(n.textMessages.MESSAGE_DELETED),1)],64)):o.url&&o.image?(kg(),Ag(vg,{key:1},[Lg("div",Uk,[Lg("div",{class:"vac-image-link",style:Zf({"background-image":`url('${o.value}')`,height:o.height})},null,4)]),Lg("div",Vk,op(o.value),1)],64)):(kg(),Ag(vg,{key:2},[Hg(op(o.value),1)],64))])),_:2},1032,["class","href","target","rel"]))],2))],64)))),128))],2)}var zk=Z_(Dk,[["render",$k]]);const qk="__v-click-outside",Yk="undefined"!==typeof window,Gk="undefined"!==typeof navigator,Xk=Yk&&("ontouchstart"in window||Gk&&navigator.msMaxTouchPoints>0),Wk=Xk?["touchstart"]:["click"],Kk=e=>{const t="function"===typeof e;if(!t&&"object"!==typeof e)throw new Error("v-click-outside: Binding value must be a function or an object");return{handler:t?e:e.handler,middleware:e.middleware||(e=>e),events:e.events||Wk,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}},Zk=({event:e,handler:t,middleware:n})=>{n(e)&&t(e)},Qk=({el:e,event:t,handler:n,middleware:o})=>{setTimeout((()=>{const{activeElement:r}=document;r&&"IFRAME"===r.tagName&&!e.contains(r)&&Zk({event:t,handler:n,middleware:o})}),0)},Jk=({el:e,event:t,handler:n,middleware:o})=>{const r=t.path||t.composedPath&&t.composedPath(),s=r?r.indexOf(e)<0:!e.contains(t.target);s&&Zk({event:t,handler:n,middleware:o})},eS=(e,{value:t})=>{const{events:n,handler:o,middleware:r,isActive:s,detectIframe:i,capture:a}=Kk(t);if(s){if(e[qk]=n.map((t=>({event:t,srcTarget:document.documentElement,handler:t=>Jk({el:e,event:t,handler:o,middleware:r}),capture:a}))),i){const t={event:"blur",srcTarget:window,handler:t=>Qk({el:e,event:t,handler:o,middleware:r}),capture:a};e[qk]=[...e[qk],t]}e[qk].forEach((({event:t,srcTarget:n,handler:o})=>setTimeout((()=>{e[qk]&&n.addEventListener(t,o,a)}),0)))}},tS=e=>{const t=e[qk]||[];t.forEach((({event:e,srcTarget:t,handler:n,capture:o})=>t.removeEventListener(e,n,o))),delete e[qk]},nS=(e,{value:t,oldValue:n})=>{JSON.stringify(t)!==JSON.stringify(n)&&(tS(e),eS(e,{value:t}))},oS={beforeMount:eS,updated:nS,unmounted:tS};var rS=Yk?oS:{},sS=(e,t,n)=>{if(e.typingUsers&&e.typingUsers.length){const o=e.users.filter((n=>{if(n._id!==t&&-1!==e.typingUsers.indexOf(n._id)&&(!n.status||"offline"!==n.status.state))return!0}));if(!o.length)return;return 2===e.users.length?n.IS_TYPING:o.map((e=>e.username)).join(", ")+" "+n.IS_TYPING}};function iS(e,t){if(t&&t.type)return e.some((e=>t.type.toLowerCase().includes(e)))}function aS(e){return iS(jk,e)}function lS(e){return iS(Nk,e)}function cS(e){return iS(jk,e)||iS(Nk,e)}function uS(e){return iS(Fk,e)}const dS={name:"RoomsContent",components:{SvgIcon:fb,FormatMessage:zk},directives:{clickOutside:rS},props:{currentUserId:{type:[String,Number],required:!0},room:{type:Object,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},textMessages:{type:Object,required:!0},roomActions:{type:Array,required:!0}},emits:["room-action-handler"],data(){return{roomMenuOpened:null}},computed:{getLastMessage(){const e=this.typingUsers;if(e)return e;const t=this.room.lastMessage.content;if(this.room.users.length<=2)return t;const n=this.room.users.find((e=>e._id===this.room.lastMessage.senderId));return this.room.lastMessage.username?`${this.room.lastMessage.username} - ${t}`:n&&n._id!==this.currentUserId?`${n.username} - ${t}`:t},userStatus(){if(!this.room.users||2!==this.room.users.length)return;const e=this.room.users.find((e=>e._id!==this.currentUserId));return e&&e.status?e.status.state:null},typingUsers(){return sS(this.room,this.currentUserId,this.textMessages)},isMessageCheckmarkVisible(){return!this.typingUsers&&this.room.lastMessage&&!this.room.lastMessage.deleted&&this.room.lastMessage.senderId===this.currentUserId&&(this.room.lastMessage.saved||this.room.lastMessage.distributed||this.room.lastMessage.seen)},formattedDuration(){var e,t;const n=null==(t=null==(e=this.room.lastMessage)?void 0:e.files)?void 0:t[0];if(n){if(!n.duration)return`${n.name}.${n.extension}`;let e=Math.floor(n.duration);return(e-(e%=60))/60+(e>9?":":":0")+e}return""},isAudio(){return!!this.room.lastMessage.files&&uS(this.room.lastMessage.files[0])}},methods:{roomActionHandler(e){this.closeRoomMenu(),this.$emit("room-action-handler",{action:e,roomId:this.room.roomId})},closeRoomMenu(){this.roomMenuOpened=null}}},fS={class:"vac-room-container"},pS={class:"vac-name-container vac-text-ellipsis"},hS={class:"vac-title-container"},mS={class:"vac-room-name vac-text-ellipsis"},gS={key:1,class:"vac-text-date"},vS={key:0},_S={key:1,class:"vac-text-ellipsis"},bS={key:3,class:"vac-text-ellipsis"},yS={class:"vac-room-options-container"},xS={key:0,class:"vac-badge-counter vac-room-badge"},wS={key:0,class:"vac-menu-options"},kS={class:"vac-menu-list"},SS=["onClick"];function ES(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("format-message"),l=ym("click-outside");return kg(),Ag("div",fS,[Em(e.$slots,"room-list-item_"+n.room.roomId,{},(()=>[Em(e.$slots,"room-list-avatar_"+n.room.roomId,{},(()=>[n.room.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar",style:Zf({"background-image":`url('${n.room.avatar}')`})},null,4)):Ug("",!0)])),Lg("div",pS,[Lg("div",hS,[s.userStatus?(kg(),Ag("div",{key:0,class:tp(["vac-state-circle",{"vac-state-online":"online"===s.userStatus}])},null,2)):Ug("",!0),Em(e.$slots,"room-list-info_"+n.room.roomId,{},(()=>[Lg("div",mS,op(n.room.roomName),1)])),n.room.lastMessage?(kg(),Ag("div",gS,op(n.room.lastMessage.timestamp),1)):Ug("",!0)]),Lg("div",{class:tp(["vac-text-last",{"vac-message-new":n.room.lastMessage&&n.room.lastMessage.new&&!s.typingUsers}])},[s.isMessageCheckmarkVisible?(kg(),Ag("span",vS,[Em(e.$slots,"checkmark-icon_"+n.room.roomId,{},(()=>[jg(i,{name:n.room.lastMessage.distributed?"double-checkmark":"checkmark",param:n.room.lastMessage.seen?"seen":"",class:"vac-icon-check"},null,8,["name","param"])]))])):Ug("",!0),n.room.lastMessage&&!n.room.lastMessage.deleted&&s.isAudio?(kg(),Ag("div",_S,[Em(e.$slots,"microphone-icon_"+n.room.roomId,{},(()=>[jg(i,{name:"microphone",class:"vac-icon-microphone"})])),Hg(" "+op(s.formattedDuration),1)])):n.room.lastMessage?(kg(),Rg(a,{key:2,"message-id":n.room.lastMessage._id,"room-id":n.room.roomId,"room-list":!0,content:s.getLastMessage,deleted:!!n.room.lastMessage.deleted&&!s.typingUsers,users:n.room.users,"text-messages":n.textMessages,linkify:!1,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"single-line":!0},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","room-id","content","deleted","users","text-messages","text-formatting","link-options"])):Ug("",!0),!n.room.lastMessage&&s.typingUsers?(kg(),Ag("div",bS,op(s.typingUsers),1)):Ug("",!0),Lg("div",yS,[n.room.unreadCount?(kg(),Ag("div",xS,op(n.room.unreadCount),1)):Ug("",!0),Em(e.$slots,"room-list-options_"+n.room.roomId,{},(()=>[n.roomActions.length?(kg(),Ag("div",{key:0,class:"vac-svg-button vac-list-room-options",onClick:t[0]||(t[0]=V_((e=>r.roomMenuOpened=n.room.roomId),["stop"]))},[Em(e.$slots,"room-list-options-icon_"+n.room.roomId,{},(()=>[jg(i,{name:"dropdown",param:"room"})]))])):Ug("",!0),n.roomActions.length?(kg(),Rg(m_,{key:1,name:"vac-slide-left"},{default:xh((()=>[r.roomMenuOpened===n.room.roomId?pm((kg(),Ag("div",wS,[Lg("div",kS,[(kg(!0),Ag(vg,null,km(n.roomActions,(e=>(kg(),Ag("div",{key:e.name},[Lg("div",{class:"vac-menu-item",onClick:V_((t=>s.roomActionHandler(e)),["stop"])},op(e.title),9,SS)])))),128))])])),[[l,s.closeRoomMenu]]):Ug("",!0)])),_:1})):Ug("",!0)]))])],2)])]))])}var TS=Z_(dS,[["render",ES]]),MS=(e,t,n,o=!1)=>n&&""!==n?e.filter((e=>o?AS(e[t]).startsWith(AS(n)):AS(e[t]).includes(AS(n)))):e;function AS(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"")}const RS={name:"RoomsList",components:{Loader:ib,RoomsSearch:vb,RoomContent:TS},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},showRoomsList:{type:Boolean,required:!0},showSearch:{type:Boolean,required:!0},showAddRoom:{type:Boolean,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},isMobile:{type:Boolean,required:!0},rooms:{type:Array,required:!0},loadingRooms:{type:Boolean,required:!0},roomsLoaded:{type:Boolean,required:!0},room:{type:Object,required:!0},customSearchRoomEnabled:{type:[Boolean,String],default:!1},roomActions:{type:Array,required:!0},scrollDistance:{type:Number,required:!0}},emits:["add-room","search-room","room-action-handler","loading-more-rooms","fetch-room","fetch-more-rooms"],data(){return{filteredRooms:this.rooms||[],observer:null,showLoader:!0,loadingMoreRooms:!1,selectedRoomId:""}},watch:{rooms:{deep:!0,handler(e,t){this.filteredRooms=e,(e.length!==t.length||this.roomsLoaded)&&(this.loadingMoreRooms=!1)}},loadingRooms(e){e||setTimeout((()=>this.initIntersectionObserver()))},loadingMoreRooms(e){this.$emit("loading-more-rooms",e)},roomsLoaded:{immediate:!0,handler(e){e&&(this.loadingMoreRooms=!1,this.loadingRooms||(this.showLoader=!1))}},room:{immediate:!0,handler(e){e&&!this.isMobile&&(this.selectedRoomId=e.roomId)}}},methods:{initIntersectionObserver(){this.observer&&(this.showLoader=!0,this.observer.disconnect());const e=this.$el.querySelector("#infinite-loader-rooms");if(e){const t={root:this.$el.querySelector("#rooms-list"),rootMargin:`${this.scrollDistance}px`,threshold:0};this.observer=new IntersectionObserver((e=>{e[0].isIntersecting&&this.loadMoreRooms()}),t),this.observer.observe(e)}},searchRoom(e){this.customSearchRoomEnabled?this.$emit("search-room",e.target.value):this.filteredRooms=MS(this.rooms,"roomName",e.target.value)},openRoom(e){(e.roomId!==this.room.roomId||this.isMobile)&&(this.isMobile||(this.selectedRoomId=e.roomId),this.$emit("fetch-room",{room:e}))},loadMoreRooms(){if(!this.loadingMoreRooms){if(this.roomsLoaded)return this.loadingMoreRooms=!1,void(this.showLoader=!1);this.$emit("fetch-more-rooms"),this.loadingMoreRooms=!0}}}},CS={key:0,class:"vac-rooms-empty"},OS={key:1,id:"rooms-list",class:"vac-room-list"},IS=["id","onClick"],BS={key:0,id:"infinite-loader-rooms"};function PS(e,t,n,o,r,s){const i=vm("rooms-search"),a=vm("loader"),l=vm("room-content");return pm((kg(),Ag("div",{class:tp(["vac-rooms-container",{"vac-rooms-container-full":n.isMobile,"vac-app-border-r":!n.isMobile}])},[Em(e.$slots,"rooms-header"),Em(e.$slots,"rooms-list-search",{},(()=>[jg(i,{rooms:n.rooms,"loading-rooms":n.loadingRooms,"text-messages":n.textMessages,"show-search":n.showSearch,"show-add-room":n.showAddRoom,onSearchRoom:s.searchRoom,onAddRoom:t[0]||(t[0]=t=>e.$emit("add-room"))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["rooms","loading-rooms","text-messages","show-search","show-add-room","onSearchRoom"])])),jg(a,{show:n.loadingRooms,type:"rooms"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"]),n.loadingRooms||n.rooms.length?Ug("",!0):(kg(),Ag("div",CS,[Em(e.$slots,"rooms-empty",{},(()=>[Hg(op(n.textMessages.ROOMS_EMPTY),1)]))])),n.loadingRooms?Ug("",!0):(kg(),Ag("div",OS,[(kg(!0),Ag(vg,null,km(r.filteredRooms,(o=>(kg(),Ag("div",{id:o.roomId,key:o.roomId,class:tp(["vac-room-item",{"vac-room-selected":r.selectedRoomId===o.roomId}]),onClick:e=>s.openRoom(o)},[jg(l,{"current-user-id":n.currentUserId,room:o,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"text-messages":n.textMessages,"room-actions":n.roomActions,onRoomActionHandler:t[1]||(t[1]=t=>e.$emit("room-action-handler",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","room","text-formatting","link-options","text-messages","room-actions"])],10,IS)))),128)),jg(m_,{name:"vac-fade-message"},{default:xh((()=>[n.rooms.length&&!n.loadingRooms?(kg(),Ag("div",BS,[jg(a,{show:r.showLoader,infinite:!0,type:"infinite-rooms"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"])])):Ug("",!0)])),_:3})]))],2)),[[q_,n.showRoomsList]])}var LS=Z_(RS,[["render",PS]]);const jS={name:"RoomHeader",components:{SvgIcon:fb},directives:{clickOutside:rS},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},singleRoom:{type:Boolean,required:!0},showRoomsList:{type:Boolean,required:!0},isMobile:{type:Boolean,required:!0},roomInfoEnabled:{type:Boolean,required:!0},menuActions:{type:Array,required:!0},room:{type:Object,required:!0},messageSelectionEnabled:{type:Boolean,required:!0},messageSelectionActions:{type:Array,required:!0},selectedMessagesTotal:{type:Number,required:!0}},emits:["toggle-rooms-list","room-info","menu-action-handler","cancel-message-selection","message-selection-action-handler"],data(){return{menuOpened:!1,messageSelectionAnimationEnded:!0}},computed:{typingUsers(){return sS(this.room,this.currentUserId,this.textMessages)},userStatus(){if(!this.room.users||2!==this.room.users.length)return;const e=this.room.users.find((e=>e._id!==this.currentUserId));if(!(null==e?void 0:e.status))return;let t="";return"online"===e.status.state?t=this.textMessages.IS_ONLINE:e.status.lastChanged&&(t=this.textMessages.LAST_SEEN+e.status.lastChanged),t}},watch:{messageSelectionEnabled(e){e?this.messageSelectionAnimationEnded=!1:setTimeout((()=>{this.messageSelectionAnimationEnded=!0}),300)}},methods:{menuActionHandler(e){this.closeMenu(),this.$emit("menu-action-handler",e)},closeMenu(){this.menuOpened=!1},messageSelectionActionHandler(e){this.$emit("message-selection-action-handler",e)}}},NS={class:"vac-room-header vac-app-border-b"},FS={class:"vac-room-wrapper"},DS={key:0,class:"vac-room-selection"},HS=["id"],US=["onClick"],VS={class:"vac-selection-button-count"},$S={class:"vac-text-ellipsis"},zS={class:"vac-room-name vac-text-ellipsis"},qS={key:0,class:"vac-room-info vac-text-ellipsis"},YS={key:1,class:"vac-room-info vac-text-ellipsis"},GS={key:0,class:"vac-menu-options"},XS={class:"vac-menu-list"},WS=["onClick"];function KS(e,t,n,o,r,s){const i=vm("svg-icon"),a=ym("click-outside");return kg(),Ag("div",NS,[Em(e.$slots,"room-header",{},(()=>[Lg("div",FS,[jg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.messageSelectionEnabled?(kg(),Ag("div",DS,[(kg(!0),Ag(vg,null,km(n.messageSelectionActions,(e=>(kg(),Ag("div",{id:e.name,key:e.name},[Lg("div",{class:"vac-selection-button",onClick:t=>s.messageSelectionActionHandler(e)},[Hg(op(e.title)+" ",1),Lg("span",VS,op(n.selectedMessagesTotal),1)],8,US)],8,HS)))),128)),Lg("div",{class:"vac-selection-cancel vac-item-clickable",onClick:t[0]||(t[0]=t=>e.$emit("cancel-message-selection"))},op(n.textMessages.CANCEL_SELECT_MESSAGE),1)])):Ug("",!0)])),_:1}),!n.messageSelectionEnabled&&r.messageSelectionAnimationEnded?(kg(),Ag(vg,{key:0},[n.singleRoom?Ug("",!0):(kg(),Ag("div",{key:0,class:tp(["vac-svg-button vac-toggle-button",{"vac-rotate-icon-init":!n.isMobile,"vac-rotate-icon":!n.showRoomsList&&!n.isMobile}]),onClick:t[1]||(t[1]=t=>e.$emit("toggle-rooms-list"))},[Em(e.$slots,"toggle-icon",{},(()=>[jg(i,{name:"toggle"})]))],2)),Lg("div",{class:tp(["vac-info-wrapper",{"vac-item-clickable":n.roomInfoEnabled}]),onClick:t[2]||(t[2]=t=>e.$emit("room-info"))},[Em(e.$slots,"room-header-avatar",{},(()=>[n.room.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar",style:Zf({"background-image":`url('${n.room.avatar}')`})},null,4)):Ug("",!0)])),Em(e.$slots,"room-header-info",{},(()=>[Lg("div",$S,[Lg("div",zS,op(n.room.roomName),1),s.typingUsers?(kg(),Ag("div",qS,op(s.typingUsers),1)):(kg(),Ag("div",YS,op(s.userStatus),1))])]))],2),n.room.roomId?Em(e.$slots,"room-options",{key:1},(()=>[n.menuActions.length?(kg(),Ag("div",{key:0,class:"vac-svg-button vac-room-options",onClick:t[3]||(t[3]=e=>r.menuOpened=!r.menuOpened)},[Em(e.$slots,"menu-icon",{},(()=>[jg(i,{name:"menu"})]))])):Ug("",!0),n.menuActions.length?(kg(),Rg(m_,{key:1,name:"vac-slide-left"},{default:xh((()=>[r.menuOpened?pm((kg(),Ag("div",GS,[Lg("div",XS,[(kg(!0),Ag(vg,null,km(n.menuActions,(e=>(kg(),Ag("div",{key:e.name},[Lg("div",{class:"vac-menu-item",onClick:t=>s.menuActionHandler(e)},op(e.title),9,WS)])))),128))])])),[[a,s.closeMenu]]):Ug("",!0)])),_:1})):Ug("",!0)])):Ug("",!0)],64)):Ug("",!0)])]))])}var ZS=Z_(jS,[["render",KS]]);function QS(e){if("string"!==typeof e||!e)throw new Error("expected a non-empty string, got: "+e)}function JS(e){if("number"!==typeof e)throw new Error("expected a number, got: "+e)}const eE=1,tE=1,nE="emoji",oE="keyvalue",rE="favorites",sE="tokens",iE="tokens",aE="unicode",lE="count",cE="group",uE="order",dE="group-order",fE="eTag",pE="url",hE="skinTone",mE="readonly",gE="readwrite",vE="skinUnicodes",_E="skinUnicodes",bE="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",yE="en";function xE(e,t){const n=new Set,o=[];for(const r of e){const e=t(r);n.has(e)||(n.add(e),o.push(r))}return o}function wE(e){return xE(e,(e=>e.unicode))}function kE(e){function t(t,n,o){const r=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(o)for(const[e,[s,i]]of Object.entries(o))r.createIndex(e,s,{multiEntry:i});return r}t(oE),t(nE,aE,{[iE]:[sE,!0],[dE]:[[cE,uE]],[vE]:[_E,!0]}),t(rE,void 0,{[lE]:[""]})}const SE={},EE={},TE={};function ME(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function AE(e){const t=await new Promise(((t,n)=>{const o=indexedDB.open(e,eE);SE[e]=o,o.onupgradeneeded=e=>{e.oldVersion<tE&&kE(o.result)},ME(t,n,o)}));return t.onclose=()=>OE(e),t}function RE(e){return EE[e]||(EE[e]=AE(e)),EE[e]}function CE(e,t,n,o){return new Promise(((r,s)=>{const i=e.transaction(t,n,{durability:"relaxed"}),a="string"===typeof t?i.objectStore(t):t.map((e=>i.objectStore(e)));let l;o(a,i,(e=>{l=e})),i.oncomplete=()=>r(l),i.onerror=()=>s(i.error)}))}function OE(e){const t=SE[e],n=t&&t.result;if(n){n.close();const t=TE[e];if(t)for(const e of t)e()}delete SE[e],delete EE[e],delete TE[e]}function IE(e){return new Promise(((t,n)=>{OE(e);const o=indexedDB.deleteDatabase(e);ME(t,n,o)}))}function BE(e,t){let n=TE[e];n||(n=TE[e]=[]),n.push(t)}const PE=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function LE(e){return e.split(/[\s_]+/).map((e=>!e.match(/\w/)||PE.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase())).filter(Boolean)}const jE=2;function NE(e){return e.filter(Boolean).map((e=>e.toLowerCase())).filter((e=>e.length>=jE))}function FE(e){const t=e.map((({annotation:e,emoticon:t,group:n,order:o,shortcodes:r,skins:s,tags:i,emoji:a,version:l})=>{const c=[...new Set(NE([...(r||[]).map(LE).flat(),...i.map(LE).flat(),...LE(e),t]))].sort(),u={annotation:e,group:n,order:o,tags:i,tokens:c,unicode:a,version:l};if(t&&(u.emoticon=t),r&&(u.shortcodes=r),s){u.skinTones=[],u.skinUnicodes=[],u.skinVersions=[];for(const{tone:e,emoji:t,version:n}of s)u.skinTones.push(e),u.skinUnicodes.push(t),u.skinVersions.push(n)}return u}));return t}function DE(e,t,n,o){e[t](n).onsuccess=e=>o&&o(e.target.result)}function HE(e,t,n){DE(e,"get",t,n)}function UE(e,t,n){DE(e,"getAll",t,n)}function VE(e){e.commit&&e.commit()}function $E(e,t){let n=e[0];for(let o=1;o<e.length;o++){const r=e[o];t(n)>t(r)&&(n=r)}return n}function zE(e,t){const n=$E(e,(e=>e.length)),o=[];for(const r of n)e.some((e=>-1===e.findIndex((e=>t(e)===t(r)))))||o.push(r);return o}async function qE(e){return!await JE(e,oE,pE)}async function YE(e,t,n){const[o,r]=await Promise.all([fE,pE].map((t=>JE(e,oE,t))));return o===n&&r===t}async function GE(e,t){const n=50;return CE(e,nE,mE,((e,o,r)=>{let s;const i=()=>{e.getAll(s&&IDBKeyRange.lowerBound(s,!0),n).onsuccess=e=>{const o=e.target.result;for(const n of o)if(s=n.unicode,t(n))return r(n);if(o.length<n)return r();i()}};i()}))}async function XE(e,t,n,o){try{const r=FE(t);await CE(e,[nE,oE],gE,(([e,t],s)=>{let i,a,l=0;function c(){2===++l&&u()}function u(){if(i!==o||a!==n){e.clear();for(const t of r)e.put(t);t.put(o,fE),t.put(n,pE),VE(s)}}HE(t,fE,(e=>{i=e,c()})),HE(t,pE,(e=>{a=e,c()}))}))}finally{}}async function WE(e,t){return CE(e,nE,mE,((e,n,o)=>{const r=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);UE(e.index(dE),r,o)}))}async function KE(e,t){const n=NE(LE(t));return n.length?CE(e,nE,mE,((e,t,o)=>{const r=[],s=()=>{r.length===n.length&&i()},i=()=>{const e=zE(r,(e=>e.unicode));o(e.sort(((e,t)=>e.order<t.order?-1:1)))};for(let a=0;a<n.length;a++){const t=n[a],o=a===n.length-1?IDBKeyRange.bound(t,t+"￿",!1,!0):IDBKeyRange.only(t);UE(e.index(iE),o,(e=>{r.push(e),s()}))}})):[]}async function ZE(e,t){const n=await KE(e,t);if(!n.length){const n=e=>(e.shortcodes||[]).includes(t.toLowerCase());return await GE(e,n)||null}return n.filter((e=>{const n=(e.shortcodes||[]).map((e=>e.toLowerCase()));return n.includes(t.toLowerCase())}))[0]||null}async function QE(e,t){return CE(e,nE,mE,((e,n,o)=>HE(e,t,(n=>{if(n)return o(n);HE(e.index(vE),t,(e=>o(e||null)))}))))}function JE(e,t,n){return CE(e,t,mE,((e,t,o)=>HE(e,n,o)))}function eT(e,t,n,o){return CE(e,t,gE,((e,t)=>{e.put(o,n),VE(t)}))}function tT(e,t){return CE(e,rE,gE,((e,n)=>HE(e,t,(o=>{e.put((o||0)+1,t),VE(n)}))))}function nT(e,t,n){return 0===n?[]:CE(e,[rE,nE],mE,(([e,o],r,s)=>{const i=[];e.index(lE).openCursor(void 0,"prev").onsuccess=e=>{const r=e.target.result;if(!r)return s(i);function a(e){if(i.push(e),i.length===n)return s(i);r.continue()}const l=r.primaryKey,c=t.byName(l);if(c)return a(c);HE(o,l,(e=>{if(e)return a(e);r.continue()}))}}))}const oT="";function rT(e,t){const n=new Map;for(const r of e){const e=t(r);for(const t of e){let e=n;for(let n=0;n<t.length;n++){const o=t.charAt(n);let r=e.get(o);r||(r=new Map,e.set(o,r)),e=r}let o=e.get(oT);o||(o=[],e.set(oT,o)),o.push(r)}}const o=(e,t)=>{let o=n;for(let n=0;n<e.length;n++){const t=e.charAt(n),r=o.get(t);if(!r)return[];o=r}if(t){const e=o.get(oT);return e||[]}const r=[],s=[o];while(s.length){const e=s.shift(),t=[...e.entries()].sort(((e,t)=>e[0]<t[0]?-1:1));for(const[n,o]of t)n===oT?r.push(...o):s.push(o)}return r};return o}const sT=["name","url"];function iT(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||sT.some((t=>!(t in e[0]))));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function aT(e){iT(e);const t=(e,t)=>e.name.toLowerCase()<t.name.toLowerCase()?-1:1,n=e.sort(t),o=e=>[...new Set((e.shortcodes||[]).map((e=>LE(e))).flat())],r=rT(e,o),s=e=>r(e,!0),i=e=>r(e,!1),a=e=>{const n=LE(e),o=n.map(((e,t)=>(t<n.length-1?s:i)(e)));return zE(o,(e=>e.name)).sort(t)},l=new Map,c=new Map;for(const f of e){c.set(f.name.toLowerCase(),f);for(const e of f.shortcodes||[])l.set(e.toLowerCase(),f)}const u=e=>l.get(e.toLowerCase()),d=e=>c.get(e.toLowerCase());return{all:n,search:a,byShortcode:u,byName:d}}function lT(e){if(!e)return e;if(delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n<t;n++)e.skins[n]={tone:e.skinTones[n],unicode:e.skinUnicodes[n],version:e.skinVersions[n]};delete e.skinTones,delete e.skinUnicodes,delete e.skinVersions}return e}function cT(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const uT=["annotation","emoji","group","order","tags","version"];function dT(e){if(!e||!Array.isArray(e)||!e[0]||"object"!==typeof e[0]||uT.some((t=>!(t in e[0]))))throw new Error("Emoji data is in the wrong format")}function fT(e,t){if(2!==Math.floor(e.status/100))throw new Error("Failed to fetch: "+t+":  "+e.status)}async function pT(e){const t=await fetch(e,{method:"HEAD"});fT(t,e);const n=t.headers.get("etag");return cT(n),n}async function hT(e){const t=await fetch(e);fT(t,e);const n=t.headers.get("etag");cT(n);const o=await t.json();return dT(o),[n,o]}function mT(e){var t="",n=new Uint8Array(e),o=n.byteLength,r=-1;while(++r<o)t+=String.fromCharCode(n[r]);return t}function gT(e){var t=e.length,n=new ArrayBuffer(t),o=new Uint8Array(n),r=-1;while(++r<t)o[r]=e.charCodeAt(r);return n}async function vT(e){const t=JSON.stringify(e),n=gT(t),o=await crypto.subtle.digest("SHA-1",n),r=mT(o),s=btoa(r);return s}async function _T(e,t){let n,o=await pT(t);if(!o){const e=await hT(t);o=e[0],n=e[1],o||(o=await vT(n))}if(await YE(e,t,o));else{if(!n){const e=await hT(t);n=e[1]}await XE(e,n,t,o)}}async function bT(e,t){let[n,o]=await hT(t);n||(n=await vT(o)),await XE(e,o,t,n)}class yT{constructor({dataSource:e=bE,locale:t=yE,customEmoji:n=[]}={}){this.dataSource=e,this.locale=t,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=aT(n),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const e=this._db=await RE(this._dbName);BE(this._dbName,this._clear);const t=this.dataSource,n=await qE(e);n?await bT(e,t):this._lazyUpdate=_T(e,t)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return JS(e),await this.ready(),wE(await WE(this._db,e)).map(lT)}async getEmojiBySearchQuery(e){QS(e),await this.ready();const t=this._custom.search(e),n=wE(await KE(this._db,e)).map(lT);return[...t,...n]}async getEmojiByShortcode(e){QS(e),await this.ready();const t=this._custom.byShortcode(e);return t||lT(await ZE(this._db,e))}async getEmojiByUnicodeOrName(e){QS(e),await this.ready();const t=this._custom.byName(e);return t||lT(await QE(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await JE(this._db,oE,hE)||0}async setPreferredSkinTone(e){return JS(e),await this.ready(),eT(this._db,oE,hE,e)}async incrementFavoriteEmojiCount(e){return QS(e),await this.ready(),tT(this._db,e)}async getTopFavoriteEmoji(e){return JS(e),await this.ready(),(await nT(this._db,this._custom,e)).map(lT)}set customEmoji(e){this._custom=aT(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await OE(this._dbName)}async delete(){await this._shutdown(),await IE(this._dbName)}}function xT(){}function wT(e){return e()}function kT(){return Object.create(null)}function ST(e){e.forEach(wT)}function ET(e){return"function"===typeof e}function TT(e,t){return e!=e?t==t:e!==t||e&&"object"===typeof e||"function"===typeof e}let MT,AT;function RT(e,t){return MT||(MT=document.createElement("a")),MT.href=t,e===MT.href}function CT(e){return 0===Object.keys(e).length}function OT(e){return e&&ET(e.destroy)?e.destroy:xT}function IT(e,t){e.appendChild(t)}function BT(e,t,n){e.insertBefore(t,n||null)}function PT(e){e.parentNode.removeChild(e)}function LT(e){return document.createElement(e)}function jT(e){return document.createTextNode(e)}function NT(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function FT(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function DT(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function HT(e,t){e.value=null==t?"":t}function UT(e,t,n,o){null===n?e.style.removeProperty(t):e.style.setProperty(t,n,o?"important":"")}function VT(e){AT=e}const $T=[],zT=[],qT=[],YT=[],GT=Promise.resolve();let XT=!1;function WT(){XT||(XT=!0,GT.then(eM))}function KT(){return WT(),GT}function ZT(e){qT.push(e)}const QT=new Set;let JT=0;function eM(){const e=AT;do{while(JT<$T.length){const e=$T[JT];JT++,VT(e),tM(e.$$)}VT(null),$T.length=0,JT=0;while(zT.length)zT.pop()();for(let e=0;e<qT.length;e+=1){const t=qT[e];QT.has(t)||(QT.add(t),t())}qT.length=0}while($T.length);while(YT.length)YT.pop()();XT=!1,QT.clear(),VT(e)}function tM(e){if(null!==e.fragment){e.update(),ST(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(ZT)}}const nM=new Set;function oM(e,t){e&&e.i&&(nM.delete(e),e.i(t))}const rM="undefined"!==typeof window?window:"undefined"!==typeof globalThis?globalThis:n.g;function sM(e,t){e.d(1),t.delete(e.key)}function iM(e,t,n,o,r,s,i,a,l,c,u,d){let f=e.length,p=s.length,h=f;const m={};while(h--)m[e[h].key]=h;const g=[],v=new Map,_=new Map;h=p;while(h--){const e=d(r,s,h),a=n(e);let l=i.get(a);l?o&&l.p(e,t):(l=c(a,e),l.c()),v.set(a,g[h]=l),a in m&&_.set(a,Math.abs(h-m[a]))}const b=new Set,y=new Set;function x(e){oM(e,1),e.m(a,u),i.set(e.key,e),u=e.first,p--}while(f&&p){const t=g[p-1],n=e[f-1],o=t.key,r=n.key;t===n?(u=t.first,f--,p--):v.has(r)?!i.has(o)||b.has(o)?x(t):y.has(r)?f--:_.get(o)>_.get(r)?(y.add(o),x(t)):(b.add(r),f--):(l(n,i),f--)}while(f--){const t=e[f];v.has(t.key)||l(t,i)}while(p)x(g[p-1]);return g}function aM(e,t,n,o){const{fragment:r,on_mount:s,on_destroy:i,after_update:a}=e.$$;r&&r.m(t,n),o||ZT((()=>{const t=s.map(wT).filter(ET);i?i.push(...t):ST(t),e.$$.on_mount=[]})),a.forEach(ZT)}function lM(e,t){const n=e.$$;null!==n.fragment&&(ST(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function cM(e,t){-1===e.$$.dirty[0]&&($T.push(e),WT(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function uM(e,t,n,o,r,s,i,a=[-1]){const l=AT;VT(e);const c=e.$$={fragment:null,ctx:null,props:s,update:xT,not_equal:r,bound:kT(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(l?l.$$.context:[]),callbacks:kT(),dirty:a,skip_bound:!1,root:t.target||l.$$.root};i&&i(c.root);let u=!1;c.ctx=n?n(e,t.props||{},((t,n,...o)=>{const s=o.length?o[0]:n;return c.ctx&&r(c.ctx[t],c.ctx[t]=s)&&(!c.skip_bound&&c.bound[t]&&c.bound[t](s),u&&cM(e,t)),n})):[],c.update(),u=!0,ST(c.before_update),c.fragment=!!o&&o(c.ctx),t.target&&(c.fragment&&c.fragment.c(),aM(e,t.target,void 0,void 0),eM()),VT(l)}class dM{$destroy(){lM(this,1),this.$destroy=xT}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){this.$$set&&!CT(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const fM=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map((([e,t,n])=>({id:e,emoji:t,name:n}))),pM=fM.slice(1),hM=fM[0],mM=2,gM=6,vM="function"===typeof requestIdleCallback?requestIdleCallback:setTimeout;function _M(e){return e.unicode.includes("‍")}const bM={"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},yM=1e3,xM="🖐️",wM=8,kM=["😊","😒","♥️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],SM='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',EM=(e,t)=>e<t?-1:e>t?1:0,TM=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const o=n.getContext("2d");return o.textBaseline="top",o.font=`100px ${SM}`,o.fillStyle=t,o.scale(.01,.01),o.fillText(e,0,0),o.getImageData(0,0,1,1).data},MM=(e,t)=>{const n=[...e].join(","),o=[...t].join(",");return n===o&&!n.startsWith("0,0,0,")};function AM(e){const t=TM(e,"#000"),n=TM(e,"#fff");return t&&n&&MM(t,n)}function RM(){const e=Object.entries(bM);try{for(const[t,n]of e)if(AM(t))return n}catch(t){}return e[0][1]}const CM=new Promise((e=>vM((()=>e(RM()))))),OM=new Map,IM="️",BM="\ud83c",PM="‍",LM=127995,jM=57339;function NM(e,t){if(0===t)return e;const n=e.indexOf(PM);return-1!==n?e.substring(0,n)+String.fromCodePoint(LM+t-1)+e.substring(n):(e.endsWith(IM)&&(e=e.substring(0,e.length-1)),e+BM+String.fromCodePoint(jM+t-1))}function FM(e){e.preventDefault(),e.stopPropagation()}function DM(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function HM(e,t){const n=new Set,o=[];for(const r of e){const e=t(r);n.has(e)||(n.add(e),o.push(r))}return o}function UM(e,t){const n=e=>{const n={};for(const o of e)"number"===typeof o.tone&&o.version<=t&&(n[o.tone]=o.unicode);return n};return e.map((({unicode:e,skins:t,shortcodes:o,url:r,name:s,category:i})=>({unicode:e,name:s,shortcodes:o,url:r,category:i,id:e||s,skins:t&&n(t),title:(o||[]).join(", ")})))}const VM=requestAnimationFrame;let $M,zM="function"===typeof ResizeObserver;function qM(e,t){let n;return zM?(n=new ResizeObserver((e=>t(e[0].contentRect.width))),n.observe(e)):VM((()=>t(e.getBoundingClientRect().width))),{destroy(){n&&n.disconnect()}}}function YM(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}function GM(e,t,n){for(const o of e){const e=n(o),r=YM(e);"undefined"===typeof $M&&($M=YM(t));const s=r/1.8<$M;OM.set(o.unicode,s)}}function XM(e){return HM(e,(e=>e))}const{Map:WM}=rM;function KM(e,t,n){const o=e.slice();return o[63]=t[n],o[65]=n,o}function ZM(e,t,n){const o=e.slice();return o[66]=t[n],o[65]=n,o}function QM(e,t,n){const o=e.slice();return o[63]=t[n],o[65]=n,o}function JM(e,t,n){const o=e.slice();return o[69]=t[n],o}function eA(e,t,n){const o=e.slice();return o[72]=t[n],o[65]=n,o}function tA(e,t){let n,o,r,s,i,a,l,c=t[72]+"";return{key:e,first:null,c(){n=LT("div"),o=jT(c),FT(n,"id",r="skintone-"+t[65]),FT(n,"class",s="emoji hide-focus "+(t[65]===t[20]?"active":"")),FT(n,"aria-selected",i=t[65]===t[20]),FT(n,"role","option"),FT(n,"title",a=t[0].skinTones[t[65]]),FT(n,"tabindex","-1"),FT(n,"aria-label",l=t[0].skinTones[t[65]]),this.first=n},m(e,t){BT(e,n,t),IT(n,o)},p(e,u){t=e,512&u[0]&&c!==(c=t[72]+"")&&DT(o,c),512&u[0]&&r!==(r="skintone-"+t[65])&&FT(n,"id",r),1049088&u[0]&&s!==(s="emoji hide-focus "+(t[65]===t[20]?"active":""))&&FT(n,"class",s),1049088&u[0]&&i!==(i=t[65]===t[20])&&FT(n,"aria-selected",i),513&u[0]&&a!==(a=t[0].skinTones[t[65]])&&FT(n,"title",a),513&u[0]&&l!==(l=t[0].skinTones[t[65]])&&FT(n,"aria-label",l)},d(e){e&&PT(n)}}}function nA(e,t){let n,o,r,s,i,a,l,c,u,d=t[69].emoji+"";function f(){return t[49](t[69])}return{key:e,first:null,c(){n=LT("button"),o=LT("div"),r=jT(d),FT(o,"class","nav-emoji emoji"),FT(n,"role","tab"),FT(n,"class","nav-button"),FT(n,"aria-controls",s="tab-"+t[69].id),FT(n,"aria-label",i=t[0].categories[t[69].name]),FT(n,"aria-selected",a=!t[4]&&t[13].id===t[69].id),FT(n,"title",l=t[0].categories[t[69].name]),this.first=n},m(e,t){BT(e,n,t),IT(n,o),IT(o,r),c||(u=NT(n,"click",f),c=!0)},p(e,o){t=e,4096&o[0]&&d!==(d=t[69].emoji+"")&&DT(r,d),4096&o[0]&&s!==(s="tab-"+t[69].id)&&FT(n,"aria-controls",s),4097&o[0]&&i!==(i=t[0].categories[t[69].name])&&FT(n,"aria-label",i),12304&o[0]&&a!==(a=!t[4]&&t[13].id===t[69].id)&&FT(n,"aria-selected",a),4097&o[0]&&l!==(l=t[0].categories[t[69].name])&&FT(n,"title",l)},d(e){e&&PT(n),c=!1,u()}}}function oA(e){let t,n;return{c(){t=LT("img"),FT(t,"class","custom-emoji"),RT(t.src,n=e[63].url)||FT(t,"src",n),FT(t,"alt",""),FT(t,"loading","lazy")},m(e,n){BT(e,t,n)},p(e,o){32768&o[0]&&!RT(t.src,n=e[63].url)&&FT(t,"src",n)},d(e){e&&PT(t)}}}function rA(e){let t,n=e[27](e[63],e[8])+"";return{c(){t=jT(n)},m(e,n){BT(e,t,n)},p(e,o){33024&o[0]&&n!==(n=e[27](e[63],e[8])+"")&&DT(t,n)},d(e){e&&PT(t)}}}function sA(e,t){let n,o,r,s,i,a,l;function c(e,t){return e[63].unicode?rA:oA}let u=c(t),d=u(t);return{key:e,first:null,c(){n=LT("button"),d.c(),FT(n,"role",o=t[4]?"option":"menuitem"),FT(n,"aria-selected",r=t[4]?t[65]==t[5]:""),FT(n,"aria-label",s=t[28](t[63],t[8])),FT(n,"title",i=t[63].title),FT(n,"class",a="emoji "+(t[4]&&t[65]===t[5]?"active":"")),FT(n,"id",l="emo-"+t[63].id),this.first=n},m(e,t){BT(e,n,t),d.m(n,null)},p(e,f){t=e,u===(u=c(t))&&d?d.p(t,f):(d.d(1),d=u(t),d&&(d.c(),d.m(n,null))),16&f[0]&&o!==(o=t[4]?"option":"menuitem")&&FT(n,"role",o),32816&f[0]&&r!==(r=t[4]?t[65]==t[5]:"")&&FT(n,"aria-selected",r),33024&f[0]&&s!==(s=t[28](t[63],t[8]))&&FT(n,"aria-label",s),32768&f[0]&&i!==(i=t[63].title)&&FT(n,"title",i),32816&f[0]&&a!==(a="emoji "+(t[4]&&t[65]===t[5]?"active":""))&&FT(n,"class",a),32768&f[0]&&l!==(l="emo-"+t[63].id)&&FT(n,"id",l)},d(e){e&&PT(n),d.d()}}}function iA(e,t){let n,o,r,s,i,a,l,c,u=(t[4]?t[0].searchResultsLabel:t[66].category?t[66].category:t[15].length>1?t[0].categories.custom:t[0].categories[t[13].name])+"",d=[],f=new WM,p=t[66].emojis;const h=e=>e[63].id;for(let m=0;m<p.length;m+=1){let e=QM(t,p,m),n=h(e);f.set(n,d[m]=sA(n,e))}return{key:e,first:null,c(){n=LT("div"),o=jT(u),i=LT("div");for(let e=0;e<d.length;e+=1)d[e].c();FT(n,"id",r="menu-label-"+t[65]),FT(n,"class",s="category "+(1===t[15].length&&""===t[15][0].category?"gone":"")),FT(n,"aria-hidden","true"),FT(i,"class","emoji-menu"),FT(i,"role",a=t[4]?"listbox":"menu"),FT(i,"aria-labelledby",l="menu-label-"+t[65]),FT(i,"id",c=t[4]?"search-results":""),this.first=n},m(e,t){BT(e,n,t),IT(n,o),BT(e,i,t);for(let n=0;n<d.length;n+=1)d[n].m(i,null)},p(e,m){t=e,40977&m[0]&&u!==(u=(t[4]?t[0].searchResultsLabel:t[66].category?t[66].category:t[15].length>1?t[0].categories.custom:t[0].categories[t[13].name])+"")&&DT(o,u),32768&m[0]&&r!==(r="menu-label-"+t[65])&&FT(n,"id",r),32768&m[0]&&s!==(s="category "+(1===t[15].length&&""===t[15][0].category?"gone":""))&&FT(n,"class",s),402686256&m[0]&&(p=t[66].emojis,d=iM(d,m,h,1,t,p,f,i,sM,sA,null,QM)),16&m[0]&&a!==(a=t[4]?"listbox":"menu")&&FT(i,"role",a),32768&m[0]&&l!==(l="menu-label-"+t[65])&&FT(i,"aria-labelledby",l),16&m[0]&&c!==(c=t[4]?"search-results":"")&&FT(i,"id",c)},d(e){e&&PT(n),e&&PT(i);for(let t=0;t<d.length;t+=1)d[t].d()}}}function aA(e){let t,n;return{c(){t=LT("img"),FT(t,"class","custom-emoji"),RT(t.src,n=e[63].url)||FT(t,"src",n),FT(t,"alt",""),FT(t,"loading","lazy")},m(e,n){BT(e,t,n)},p(e,o){1024&o[0]&&!RT(t.src,n=e[63].url)&&FT(t,"src",n)},d(e){e&&PT(t)}}}function lA(e){let t,n=e[27](e[63],e[8])+"";return{c(){t=jT(n)},m(e,n){BT(e,t,n)},p(e,o){1280&o[0]&&n!==(n=e[27](e[63],e[8])+"")&&DT(t,n)},d(e){e&&PT(t)}}}function cA(e,t){let n,o,r,s;function i(e,t){return e[63].unicode?lA:aA}let a=i(t),l=a(t);return{key:e,first:null,c(){n=LT("button"),l.c(),FT(n,"role","menuitem"),FT(n,"aria-label",o=t[28](t[63],t[8])),FT(n,"title",r=t[63].title),FT(n,"class","emoji"),FT(n,"id",s="fav-"+t[63].id),this.first=n},m(e,t){BT(e,n,t),l.m(n,null)},p(e,c){t=e,a===(a=i(t))&&l?l.p(t,c):(l.d(1),l=a(t),l&&(l.c(),l.m(n,null))),1280&c[0]&&o!==(o=t[28](t[63],t[8]))&&FT(n,"aria-label",o),1024&c[0]&&r!==(r=t[63].title)&&FT(n,"title",r),1024&c[0]&&s!==(s="fav-"+t[63].id)&&FT(n,"id",s)},d(e){e&&PT(n),l.d()}}}function uA(e){let t,n,o,r,s,i,a,l,c,u,d,f,p,h,m,g,v,_,b,y,x,w,k,S,E,T,M,A,R,C,O,I,B,P,L,j,N,F,D,H,U,V,$,z,q=e[0].searchLabel+"",Y=e[0].searchDescription+"",G=e[0].skinToneDescription+"",X=[],W=new WM,K=[],Z=new WM,Q=[],J=new WM,ee=[],te=new WM,ne=e[9];const oe=e=>e[72];for(let ue=0;ue<ne.length;ue+=1){let t=eA(e,ne,ue),n=oe(t);W.set(n,X[ue]=tA(n,t))}let re=e[12];const se=e=>e[69].id;for(let ue=0;ue<re.length;ue+=1){let t=JM(e,re,ue),n=se(t);Z.set(n,K[ue]=nA(n,t))}let ie=e[15];const ae=e=>e[66].category;for(let ue=0;ue<ie.length;ue+=1){let t=ZM(e,ie,ue),n=ae(t);J.set(n,Q[ue]=iA(n,t))}let le=e[10];const ce=e=>e[63].id;for(let ue=0;ue<le.length;ue+=1){let t=KM(e,le,ue),n=ce(t);te.set(n,ee[ue]=cA(n,t))}return{c(){t=LT("section"),n=LT("div"),o=LT("div"),r=LT("div"),s=LT("input"),c=LT("label"),u=jT(q),d=LT("span"),f=jT(Y),p=LT("div"),h=LT("button"),m=jT(e[21]),_=LT("span"),b=jT(G),y=LT("div");for(let e=0;e<X.length;e+=1)X[e].c();E=LT("div");for(let e=0;e<K.length;e+=1)K[e].c();M=LT("div"),A=LT("div"),R=LT("div"),C=jT(e[18]),I=LT("div"),B=LT("div");for(let e=0;e<Q.length;e+=1)Q[e].c();F=LT("div");for(let e=0;e<ee.length;e+=1)ee[e].c();U=LT("button"),U.textContent="😀",FT(n,"class","pad-top"),FT(s,"id","search"),FT(s,"class","search"),FT(s,"type","search"),FT(s,"role","combobox"),FT(s,"enterkeyhint","search"),FT(s,"placeholder",i=e[0].searchLabel),FT(s,"autocapitalize","none"),FT(s,"autocomplete","off"),FT(s,"spellcheck","true"),FT(s,"aria-expanded",a=!(!e[4]||!e[1].length)),FT(s,"aria-controls","search-results"),FT(s,"aria-describedby","search-description"),FT(s,"aria-autocomplete","list"),FT(s,"aria-activedescendant",l=e[26]?`emo-${e[26]}`:""),FT(c,"class","sr-only"),FT(c,"for","search"),FT(d,"id","search-description"),FT(d,"class","sr-only"),FT(r,"class","search-wrapper"),FT(h,"id","skintone-button"),FT(h,"class",g="emoji "+(e[6]?"hide-focus":"")),FT(h,"aria-label",e[23]),FT(h,"title",e[23]),FT(h,"aria-describedby","skintone-description"),FT(h,"aria-haspopup","listbox"),FT(h,"aria-expanded",e[6]),FT(h,"aria-controls","skintone-list"),FT(p,"class",v="skintone-button-wrapper "+(e[19]?"expanded":"")),FT(_,"id","skintone-description"),FT(_,"class","sr-only"),FT(y,"id","skintone-list"),FT(y,"class",x="skintone-list "+(e[6]?"":"hidden no-animate")),UT(y,"transform","translateY("+(e[6]?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))")+")"),FT(y,"role","listbox"),FT(y,"aria-label",w=e[0].skinTonesLabel),FT(y,"aria-activedescendant",k="skintone-"+e[20]),FT(y,"aria-hidden",S=!e[6]),FT(o,"class","search-row"),FT(E,"class","nav"),FT(E,"role","tablist"),UT(E,"grid-template-columns","repeat("+e[12].length+", 1fr)"),FT(E,"aria-label",T=e[0].categoriesLabel),FT(A,"class","indicator"),UT(A,"transform","translateX("+(e[24]?-1:1)*e[11]*100+"%)"),FT(M,"class","indicator-wrapper"),FT(R,"class",O="message "+(e[18]?"":"gone")),FT(R,"role","alert"),FT(R,"aria-live","polite"),FT(I,"class",P="tabpanel "+(!e[14]||e[18]?"gone":"")),FT(I,"role",L=e[4]?"region":"tabpanel"),FT(I,"aria-label",j=e[4]?e[0].searchResultsLabel:e[0].categories[e[13].name]),FT(I,"id",N=e[4]?"":`tab-${e[13].id}`),FT(I,"tabindex","0"),FT(F,"class",D="favorites emoji-menu "+(e[18]?"gone":"")),FT(F,"role","menu"),FT(F,"aria-label",H=e[0].favoritesLabel),UT(F,"padding-inline-end",e[25]+"px"),FT(U,"aria-hidden","true"),FT(U,"tabindex","-1"),FT(U,"class","abs-pos hidden emoji"),FT(t,"class","picker"),FT(t,"aria-label",V=e[0].regionLabel),FT(t,"style",e[22])},m(i,a){BT(i,t,a),IT(t,n),IT(t,o),IT(o,r),IT(r,s),HT(s,e[2]),IT(r,c),IT(c,u),IT(r,d),IT(d,f),IT(o,p),IT(p,h),IT(h,m),IT(o,_),IT(_,b),IT(o,y);for(let e=0;e<X.length;e+=1)X[e].m(y,null);e[48](y),IT(t,E);for(let e=0;e<K.length;e+=1)K[e].m(E,null);IT(t,M),IT(M,A),IT(t,R),IT(R,C),IT(t,I),IT(I,B);for(let e=0;e<Q.length;e+=1)Q[e].m(B,null);e[50](I),IT(t,F);for(let e=0;e<ee.length;e+=1)ee[e].m(F,null);IT(t,U),e[51](U),e[52](t),$||(z=[NT(s,"input",e[47]),NT(s,"keydown",e[30]),NT(h,"click",e[35]),NT(y,"focusout",e[38]),NT(y,"click",e[34]),NT(y,"keydown",e[36]),NT(y,"keyup",e[37]),NT(E,"keydown",e[32]),OT(e[29].call(null,B)),NT(I,"click",e[33]),NT(F,"click",e[33])],$=!0)},p(e,n){1&n[0]&&i!==(i=e[0].searchLabel)&&FT(s,"placeholder",i),18&n[0]&&a!==(a=!(!e[4]||!e[1].length))&&FT(s,"aria-expanded",a),67108864&n[0]&&l!==(l=e[26]?`emo-${e[26]}`:"")&&FT(s,"aria-activedescendant",l),4&n[0]&&HT(s,e[2]),1&n[0]&&q!==(q=e[0].searchLabel+"")&&DT(u,q),1&n[0]&&Y!==(Y=e[0].searchDescription+"")&&DT(f,Y),2097152&n[0]&&DT(m,e[21]),64&n[0]&&g!==(g="emoji "+(e[6]?"hide-focus":""))&&FT(h,"class",g),8388608&n[0]&&FT(h,"aria-label",e[23]),8388608&n[0]&&FT(h,"title",e[23]),64&n[0]&&FT(h,"aria-expanded",e[6]),524288&n[0]&&v!==(v="skintone-button-wrapper "+(e[19]?"expanded":""))&&FT(p,"class",v),1&n[0]&&G!==(G=e[0].skinToneDescription+"")&&DT(b,G),1049089&n[0]&&(ne=e[9],X=iM(X,n,oe,1,e,ne,W,y,sM,tA,null,eA)),64&n[0]&&x!==(x="skintone-list "+(e[6]?"":"hidden no-animate"))&&FT(y,"class",x),64&n[0]&&UT(y,"transform","translateY("+(e[6]?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))")+")"),1&n[0]&&w!==(w=e[0].skinTonesLabel)&&FT(y,"aria-label",w),1048576&n[0]&&k!==(k="skintone-"+e[20])&&FT(y,"aria-activedescendant",k),64&n[0]&&S!==(S=!e[6])&&FT(y,"aria-hidden",S),12305&n[0]|1&n[1]&&(re=e[12],K=iM(K,n,se,1,e,re,Z,E,sM,nA,null,JM)),4096&n[0]&&UT(E,"grid-template-columns","repeat("+e[12].length+", 1fr)"),1&n[0]&&T!==(T=e[0].categoriesLabel)&&FT(E,"aria-label",T),16779264&n[0]&&UT(A,"transform","translateX("+(e[24]?-1:1)*e[11]*100+"%)"),262144&n[0]&&DT(C,e[18]),262144&n[0]&&O!==(O="message "+(e[18]?"":"gone"))&&FT(R,"class",O),402694449&n[0]&&(ie=e[15],Q=iM(Q,n,ae,1,e,ie,J,B,sM,iA,null,ZM)),278528&n[0]&&P!==(P="tabpanel "+(!e[14]||e[18]?"gone":""))&&FT(I,"class",P),16&n[0]&&L!==(L=e[4]?"region":"tabpanel")&&FT(I,"role",L),8209&n[0]&&j!==(j=e[4]?e[0].searchResultsLabel:e[0].categories[e[13].name])&&FT(I,"aria-label",j),8208&n[0]&&N!==(N=e[4]?"":`tab-${e[13].id}`)&&FT(I,"id",N),402654464&n[0]&&(le=e[10],ee=iM(ee,n,ce,1,e,le,te,F,sM,cA,null,KM)),262144&n[0]&&D!==(D="favorites emoji-menu "+(e[18]?"gone":""))&&FT(F,"class",D),1&n[0]&&H!==(H=e[0].favoritesLabel)&&FT(F,"aria-label",H),33554432&n[0]&&UT(F,"padding-inline-end",e[25]+"px"),1&n[0]&&V!==(V=e[0].regionLabel)&&FT(t,"aria-label",V),4194304&n[0]&&FT(t,"style",e[22])},i:xT,o:xT,d(n){n&&PT(t);for(let e=0;e<X.length;e+=1)X[e].d();e[48](null);for(let e=0;e<K.length;e+=1)K[e].d();for(let e=0;e<Q.length;e+=1)Q[e].d();e[50](null);for(let e=0;e<ee.length;e+=1)ee[e].d();e[51](null),e[52](null),$=!1,ST(z)}}}function dA(e,t,n){let o,r,s,i,a,l,c,u,d,f,{skinToneEmoji:p}=t,{i18n:h}=t,{database:m}=t,{customEmoji:g}=t,{customCategorySorting:v}=t,_=!0,b=[],y=[],x="",w="",k=!1,S=-1,E=!1,T=!1,M=0,A=0,R="",C=[],O=[],I=wM,B=!1,P=0,L=0,j=pM,N=!1;const F=e=>{o.getRootNode().getElementById(e).focus()},D=(e,t)=>{o.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))},H=(e,t)=>t&&e.skins&&e.skins[t]||e.unicode,U=(e,t)=>XM([e.name||H(e,t),...e.shortcodes||[]]).join(", "),V=e=>/^skintone-/.test(e.id);function $(e){return qM(e,(t=>{{const r=getComputedStyle(o),s=parseInt(r.getPropertyValue("--num-columns"),10),i="rtl"===r.getPropertyValue("direction"),a=e.parentElement.getBoundingClientRect().width,l=a-t;n(46,I=s),n(25,P=l),n(24,B=i)}}))}function z(e){const t=o.getRootNode(),s=e=>t.getElementById(`emo-${e.id}`);GM(e,r,s),n(1,b)}function q(e){return!e.unicode||!_M(e)||OM.get(e.unicode)}async function Y(e){const t=await CM;return e.filter((({version:e})=>!e||e<=t))}async function G(e){return UM(e,await CM)}async function X(e){if("undefined"===typeof e)return[];const t=-1===e?g:await m.getEmojiByGroup(e);return G(await Y(t))}async function W(e){return G(await Y(await m.getEmojiBySearchQuery(e)))}function K(e){if(!k||!b.length)return;const t=t=>{FM(e),n(5,S=DM(t,S,b))};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==S)return FM(e),J(b[S].id);b.length&&n(5,S=0)}}function Z(e){n(2,x=""),n(44,w=""),n(5,S=-1),n(11,L=j.findIndex((t=>t.id===e.id)))}function Q(e){const{target:t,key:n}=e,o=t=>{t&&(FM(e),t.focus())};switch(n){case"ArrowLeft":return o(t.previousSibling);case"ArrowRight":return o(t.nextSibling);case"Home":return o(t.parentElement.firstChild);case"End":return o(t.parentElement.lastChild)}}async function J(e){const t=await m.getEmojiByUnicodeOrName(e),n=[...b,...O].find((t=>t.id===e)),o=n.unicode&&H(n,M);await m.incrementFavoriteEmojiCount(e),D("emoji-click",{emoji:t,skinTone:M,...o&&{unicode:o},...n.name&&{name:n.name}})}async function ee(e){const{target:t}=e;if(!t.classList.contains("emoji"))return;FM(e);const n=t.id.substring(4);J(n)}async function te(e){const{target:t}=e;if(!V(t))return;FM(e);const o=parseInt(t.id.slice(9),10);n(8,M=o),n(6,E=!1),F("skintone-button"),D("skin-tone-change",{skinTone:o}),m.setPreferredSkinTone(o)}async function ne(e){n(6,E=!E),n(20,A=M),E&&(FM(e),VM((()=>F(`skintone-${A}`))))}function oe(e){if(!E)return;const t=async t=>{FM(e),n(20,A=t),await KT(),F(`skintone-${A}`)};switch(e.key){case"ArrowUp":return t(DM(!0,A,C));case"ArrowDown":return t(DM(!1,A,C));case"Home":return t(0);case"End":return t(C.length-1);case"Enter":return te(e);case"Escape":return FM(e),n(6,E=!1),F("skintone-button")}}function re(e){if(E)switch(e.key){case" ":return te(e)}}async function se(e){const{relatedTarget:t}=e;t&&V(t)||n(6,E=!1)}function ie(){x=this.value,n(2,x)}function ae(e){zT[e?"unshift":"push"]((()=>{a=e,n(7,a)}))}CM.then((e=>{e||n(18,i=h.emojiUnsupportedMessage)}));const le=e=>Z(e);function ce(e){zT[e?"unshift":"push"]((()=>{s=e,n(3,s)}))}function ue(e){zT[e?"unshift":"push"]((()=>{r=e,n(17,r)}))}function de(e){zT[e?"unshift":"push"]((()=>{o=e,n(16,o)}))}return e.$$set=e=>{"skinToneEmoji"in e&&n(40,p=e.skinToneEmoji),"i18n"in e&&n(0,h=e.i18n),"database"in e&&n(39,m=e.database),"customEmoji"in e&&n(41,g=e.customEmoji),"customCategorySorting"in e&&n(42,v=e.customCategorySorting)},e.$$.update=()=>{if(1280&e.$$.dirty[1]&&g&&m&&n(39,m.customEmoji=g,m),1&e.$$.dirty[0]|256&e.$$.dirty[1]){async function t(){let e=!1;const t=setTimeout((()=>{e=!0,n(18,i=h.loadingMessage)}),yM);try{await m.ready(),n(14,N=!0)}catch(o){console.error(o),n(18,i=h.networkErrorMessage)}finally{clearTimeout(t),e&&(e=!1,n(18,i=""))}}m&&t()}if(6144&e.$$.dirty[0]|1024&e.$$.dirty[1]&&(g&&g.length?n(12,j=[hM,...pM]):j!==pM&&(L&&n(11,L--,L),n(12,j=pM))),4&e.$$.dirty[0]&&vM((()=>{n(44,w=(x||"").trim()),n(5,S=-1)})),6144&e.$$.dirty[0]&&n(13,d=j[L]),24576&e.$$.dirty[0]|8192&e.$$.dirty[1]){async function o(){if(N){if(w.length>=mM){const e=w,t=await W(e);e===w&&(n(1,b=t),n(4,k=!0))}else if(d){const e=d.id,t=await X(e);e===d.id&&(n(1,b=t),n(4,k=!1))}}else n(1,b=[]),n(4,k=!1)}o()}if(4112&e.$$.dirty[0]&&n(22,c=`\n  --font-family: ${SM};\n  --num-groups: ${j.length}; \n  --indicator-opacity: ${k?0:1}; \n  --num-skintones: ${gM};`),16384&e.$$.dirty[0]|256&e.$$.dirty[1]){async function r(){N&&n(8,M=await m.getPreferredSkinTone())}r()}if(512&e.$$.dirty[1]&&n(9,C=Array(gM).fill().map(((e,t)=>NM(p,t)))),768&e.$$.dirty[0]&&n(21,l=C[M]),257&e.$$.dirty[0]&&n(23,R=h.skinToneLabel.replace("{skinTone}",h.skinTones[M])),16384&e.$$.dirty[0]|256&e.$$.dirty[1]){async function _(){n(45,u=(await Promise.all(kM.map((e=>m.getEmojiByUnicodeOrName(e))))).filter(Boolean))}N&&_()}if(16384&e.$$.dirty[0]|49408&e.$$.dirty[1]){async function A(){const e=await m.getTopFavoriteEmoji(I),t=await G(HM([...e,...u],(e=>e.unicode||e.name)).slice(0,I));n(10,O=t)}N&&u&&A()}if(10&e.$$.dirty[0]){const B=b.filter((e=>e.unicode)).filter((e=>_M(e)&&!OM.has(e.unicode)));B.length?VM((()=>z(B))):(n(1,b=b.filter(q)),VM((()=>{(s||{}).scrollTop=0})))}if(e.$$.dirty[0],e.$$.dirty[1],18&e.$$.dirty[0]|2048&e.$$.dirty[1]){let P=function(){if(k)return[{category:"",emojis:b}];const e=new Map;for(const t of b){const n=t.category||"";let o=e.get(n);o||(o=[],e.set(n,o)),o.push(t)}return[...e.entries()].map((([e,t])=>({category:e,emojis:t}))).sort(((e,t)=>v(e.category,t.category)))};n(15,y=P())}34&e.$$.dirty[0]&&n(26,f=-1!==S&&b[S].id),192&e.$$.dirty[0]&&(E?a.addEventListener("transitionend",(()=>{n(19,T=!0)}),{once:!0}):n(19,T=!1))},[h,b,x,s,k,S,E,a,M,C,O,L,j,d,N,y,o,r,i,T,A,l,c,R,B,P,f,H,U,$,K,Z,Q,ee,te,ne,oe,re,se,m,p,g,v,_,w,u,I,ie,ae,le,ce,ue,de]}class fA extends dM{constructor(e){super(),uM(this,e,dA,uA,TT,{skinToneEmoji:40,i18n:0,database:39,customEmoji:41,customCategorySorting:42},null,[-1,-1,-1])}}const pA="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",hA="en";var mA={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const gA=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji"];class vA extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent=":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}",this.shadowRoot.appendChild(t),this._ctx={locale:hA,dataSource:pA,skinToneEmoji:xM,customCategorySorting:EM,customEmoji:null,i18n:mA,...e};for(const n of gA)"database"!==n&&Object.prototype.hasOwnProperty.call(this,n)&&(this._ctx[n]=this[n],delete this[n]);this._dbFlush()}connectedCallback(){this._cmp=new fA({target:this.shadowRoot,props:this._ctx})}disconnectedCallback(){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e&&e.close().catch((e=>console.error(e)))}static get observedAttributes(){return["locale","data-source","skin-tone-emoji"]}attributeChangedCallback(e,t,n){this._set(e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),n)}_set(e,t){this._ctx[e]=t,this._cmp&&this._cmp.$set({[e]:t}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:t,database:n}=this._ctx;n&&n.locale===e&&n.dataSource===t||this._set("database",new yT({locale:e,dataSource:t}))}_dbFlush(){Promise.resolve().then((()=>this._dbCreate()))}}const _A={};for(const n of gA)_A[n]={get(){return"database"===n&&this._dbCreate(),this._ctx[n]},set(e){if("database"===n)throw new Error("database is read-only");this._set(n,e)}};function bA(e,t){while(e&&!e.querySelector(t)){e=e.parentNode;const n=e.querySelector(t);if(n)return n}return null}Object.defineProperties(vA.prototype,_A),customElements.get("emoji-picker")||customElements.define("emoji-picker",vA);const yA={name:"EmojiPickerContainer",components:{SvgIcon:fb},props:{emojiOpened:{type:Boolean,default:!1},emojiReaction:{type:Boolean,default:!1},positionTop:{type:Boolean,default:!1},positionRight:{type:Boolean,default:!1},messageId:{type:String,default:""},emojiDataSource:{type:String,default:void 0}},emits:["add-emoji","open-emoji"],data(){return{emojiPickerHeight:320,emojiPickerTop:0,emojiPickerRight:""}},watch:{emojiOpened(e){e&&setTimeout((()=>{this.addCustomStyling(),this.$refs.emojiPicker.shadowRoot.addEventListener("emoji-click",(({detail:e})=>{this.$emit("add-emoji",{unicode:e.unicode})}))}),0)}},methods:{addCustomStyling(){const e=".picker {\n\t\t\t\tborder: none;\n\t\t\t}",t=".nav {\n\t\t\t\toverflow-x: auto;\n\t\t\t}",n=".search-wrapper {\n\t\t\t\tpadding-right: 2px;\n\t\t\t\tpadding-left: 2px;\n\t\t\t}",o="input.search {\n\t\t\t\theight: 32px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tborder-radius: 10rem;\n\t\t\t\tborder: var(--chat-border-style);\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\toutline: none;\n\t\t\t\tbackground: var(--chat-bg-color-input);\n\t\t\t\tcolor: var(--chat-color);\n\t\t\t}",r=document.createElement("style");r.textContent=e+t+n+o,this.$refs.emojiPicker.shadowRoot.appendChild(r)},openEmoji(e){this.$emit("open-emoji",!this.emojiOpened),this.setEmojiPickerPosition(e.clientY,e.view.innerWidth,e.view.innerHeight)},setEmojiPickerPosition(e,t,n){const o=t<500||n<700,r=bA(this.$el,"#room-footer");if(r)if(o)this.emojiPickerRight=t/2-(this.positionTop?200:150)+"px",this.emojiPickerTop=100,this.emojiPickerHeight=n-200;else{const t=r.getBoundingClientRect().top,n=t-e>this.emojiPickerHeight-50;this.emojiPickerTop=n?e+10:e-this.emojiPickerHeight-10,this.emojiPickerRight=this.positionTop?"0px":this.positionRight?"60px":""}else o&&(this.emojiPickerRight="-50px")}}},xA={class:"vac-emoji-wrapper"};function wA(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("emoji-picker");return kg(),Ag("div",xA,[Lg("div",{class:tp(["vac-svg-button",{"vac-emoji-reaction":n.emojiReaction}]),onClick:t[0]||(t[0]=(...e)=>s.openEmoji&&s.openEmoji(...e))},[Em(e.$slots,n.messageId?"emoji-picker-reaction-icon_"+n.messageId:"emoji-picker-icon",{},(()=>[jg(i,{name:"emoji",param:n.emojiReaction?"reaction":""},null,8,["param"])]))],2),n.emojiOpened?(kg(),Rg(m_,{key:0,name:"vac-slide-up",appear:""},{default:xh((()=>[Lg("div",{class:tp(["vac-emoji-picker",{"vac-picker-reaction":n.emojiReaction}]),style:Zf({height:`${r.emojiPickerHeight}px`,top:n.positionTop?r.emojiPickerHeight:`${r.emojiPickerTop}px`,right:r.emojiPickerRight,display:r.emojiPickerTop||!n.emojiReaction?"initial":"none"})},[n.emojiOpened?(kg(),Rg(a,{key:0,ref:"emojiPicker","data-source":n.emojiDataSource},null,8,["data-source"])):Ug("",!0)],6)])),_:1})):Ug("",!0)])}var kA=Z_(yA,[["render",wA]]);const SA={name:"RoomFiles",components:{Loader:ib,SvgIcon:fb},props:{file:{type:Object,required:!0},index:{type:Number,required:!0}},emits:["remove-file"],computed:{isImage(){return aS(this.file)},isVideo(){return lS(this.file)}}},EA={class:"vac-room-file-container"},TA=["src"],MA={class:"vac-text-ellipsis"},AA={key:0,class:"vac-text-ellipsis vac-text-extension"};function RA(e,t,n,o,r,s){const i=vm("loader"),a=vm("svg-icon");return kg(),Ag("div",EA,[jg(i,{show:n.file.loading,type:"room-file"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"]),Lg("div",{class:"vac-svg-button vac-icon-remove",onClick:t[0]||(t[0]=t=>e.$emit("remove-file",n.index))},[Em(e.$slots,"image-close-icon",{},(()=>[jg(a,{name:"close",param:"image"})]))]),s.isImage?(kg(),Ag("div",{key:0,class:tp(["vac-message-image",{"vac-blur-loading":n.file.loading}]),style:Zf({"background-image":`url('${n.file.localUrl||n.file.url}')`})},null,6)):s.isVideo?(kg(),Ag("video",{key:1,controls:"",class:tp({"vac-blur-loading":n.file.loading})},[Lg("source",{src:n.file.localUrl||n.file.url},null,8,TA)],2)):(kg(),Ag("div",{key:2,class:tp(["vac-file-container",{"vac-blur-loading":n.file.loading}])},[Lg("div",null,[Em(e.$slots,"file-icon",{},(()=>[jg(a,{name:"file"})]))]),Lg("div",MA,op(n.file.name),1),n.file.extension?(kg(),Ag("div",AA,op(n.file.extension),1)):Ug("",!0)],2))])}var CA=Z_(SA,[["render",RA]]);const OA={name:"RoomFiles",components:{SvgIcon:fb,RoomFile:CA},props:{files:{type:Array,required:!0}},emits:["remove-file","reset-message"],computed:{}},IA={key:0,class:"vac-room-files-container"},BA={class:"vac-files-box"},PA={class:"vac-icon-close"};function LA(e,t,n,o,r,s){const i=vm("room-file"),a=vm("svg-icon");return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.files.length?(kg(),Ag("div",IA,[Lg("div",BA,[(kg(!0),Ag(vg,null,km(n.files,((n,o)=>(kg(),Ag("div",{key:o},[jg(i,{file:n,index:o,onRemoveFile:t[0]||(t[0]=t=>e.$emit("remove-file",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["file","index"])])))),128))]),Lg("div",PA,[Lg("div",{class:"vac-svg-button",onClick:t[1]||(t[1]=t=>e.$emit("reset-message"))},[Em(e.$slots,"files-close-icon",{},(()=>[jg(a,{name:"close-outline"})]))])])])):Ug("",!0)])),_:3})}var jA=Z_(OA,[["render",LA]]);const NA={props:{percentage:{type:Number,default:0},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["hover-audio-progress","change-linehead"],data(){return{isMouseDown:!1}},methods:{onMouseDown(e){if(this.messageSelectionEnabled)return;this.isMouseDown=!0;const t=this.calculateLineHeadPosition(e,this.$refs.progress);this.$emit("change-linehead",t),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)},onMouseUp(e){if(this.messageSelectionEnabled)return;this.isMouseDown=!1,document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("mousemove",this.onMouseMove);const t=this.calculateLineHeadPosition(e,this.$refs.progress);this.$emit("change-linehead",t)},onMouseMove(e){if(this.messageSelectionEnabled)return;const t=this.calculateLineHeadPosition(e,this.$refs.progress);this.$emit("change-linehead",t)},calculateLineHeadPosition(e,t){const n=t.getBoundingClientRect().width,o=t.getBoundingClientRect().left;let r=(e.clientX-o)/n;return r=r<0?0:r,r=r>1?1:r,r}}},FA={class:"vac-player-progress"},DA={class:"vac-line-container"};function HA(e,t,n,o,r,s){return kg(),Ag("div",{ref:"progress",class:"vac-player-bar",onMousedown:t[0]||(t[0]=(...e)=>s.onMouseDown&&s.onMouseDown(...e)),onMouseover:t[1]||(t[1]=t=>e.$emit("hover-audio-progress",!0)),onMouseout:t[2]||(t[2]=t=>e.$emit("hover-audio-progress",!1))},[Lg("div",FA,[Lg("div",DA,[Lg("div",{class:"vac-line-progress",style:Zf({width:`${n.percentage}%`})},null,4),Lg("div",{class:tp(["vac-line-dot",{"vac-line-dot__active":r.isMouseDown}]),style:Zf({left:`${n.percentage}%`})},null,6)])])],544)}var UA=Z_(NA,[["render",HA]]);const VA={name:"AudioPlayer",components:{SvgIcon:fb,AudioControl:UA},props:{messageId:{type:[String,Number],default:null},src:{type:String,default:null},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["hover-audio-progress","update-progress-time"],data(){return{isPlaying:!1,duration:this.convertTimeMMSS(0),playedTime:this.convertTimeMMSS(0),progress:0}},computed:{playerUniqId(){return`audio-player${this.messageId}`},audioSource(){return this.src?this.src:(this.resetProgress(),null)}},mounted(){this.player=this.$el.querySelector("#"+this.playerUniqId),this.player.addEventListener("ended",(()=>{this.isPlaying=!1})),this.player.addEventListener("loadeddata",(()=>{this.resetProgress(),this.duration=this.convertTimeMMSS(this.player.duration),this.updateProgressTime()})),this.player.addEventListener("timeupdate",this.onTimeUpdate)},methods:{convertTimeMMSS(e){return new Date(1e3*e).toISOString().substr(14,5)},playback(){!this.messageSelectionEnabled&&this.audioSource&&(this.isPlaying?this.player.pause():setTimeout((()=>this.player.play())),this.isPlaying=!this.isPlaying)},resetProgress(){this.isPlaying&&this.player.pause(),this.duration=this.convertTimeMMSS(0),this.playedTime=this.convertTimeMMSS(0),this.progress=0,this.isPlaying=!1,this.updateProgressTime()},onTimeUpdate(){this.playedTime=this.convertTimeMMSS(this.player.currentTime),this.progress=this.player.currentTime/this.player.duration*100,this.updateProgressTime()},onUpdateProgress(e){e&&(this.player.currentTime=e*this.player.duration)},updateProgressTime(){this.$emit("update-progress-time",this.progress>1?this.playedTime:this.duration)}}},$A={class:"vac-audio-player"},zA=["id","src"];function qA(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("audio-control");return kg(),Ag("div",null,[Lg("div",$A,[Lg("div",{class:"vac-svg-button",onClick:t[0]||(t[0]=(...e)=>s.playback&&s.playback(...e))},[r.isPlaying?Em(e.$slots,"audio-pause-icon_"+n.messageId,{key:0},(()=>[jg(i,{name:"audio-pause"})])):Em(e.$slots,"audio-play-icon_"+n.messageId,{key:1},(()=>[jg(i,{name:"audio-play"})]))]),jg(a,{percentage:r.progress,"message-selection-enabled":n.messageSelectionEnabled,onChangeLinehead:s.onUpdateProgress,onHoverAudioProgress:t[1]||(t[1]=t=>e.$emit("hover-audio-progress",t))},null,8,["percentage","message-selection-enabled","onChangeLinehead"]),Lg("audio",{id:s.playerUniqId,src:s.audioSource},null,8,zA)])])}var YA=Z_(VA,[["render",qA]]);const GA={name:"RoomMessageReply",components:{SvgIcon:fb,FormatMessage:zk,AudioPlayer:YA},props:{room:{type:Object,required:!0},messageReply:{type:Object,default:null},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0}},emits:["reset-message"],computed:{firstFile(){var e,t;return(null==(t=null==(e=this.messageReply)?void 0:e.files)?void 0:t.length)?this.messageReply.files[0]:{}},isImage(){return aS(this.firstFile)},isVideo(){return lS(this.firstFile)},isAudio(){return uS(this.firstFile)},isOtherFile(){var e,t;return(null==(t=null==(e=this.messageReply)?void 0:e.files)?void 0:t.length)&&!this.isAudio&&!this.isVideo&&!this.isImage}}},XA={key:0,class:"vac-reply-container"},WA={class:"vac-reply-box"},KA={class:"vac-reply-info"},ZA={class:"vac-reply-username"},QA={class:"vac-reply-content"},JA=["src"],eR={key:1,controls:"",class:"vac-image-reply"},tR=["src"],nR={key:3,class:"vac-image-reply vac-file-container"},oR={class:"vac-text-ellipsis"},rR={key:0,class:"vac-text-ellipsis vac-text-extension"},sR={class:"vac-icon-reply"};function iR(e,t,n,o,r,s){const i=vm("format-message"),a=vm("audio-player"),l=vm("svg-icon");return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.messageReply?(kg(),Ag("div",XA,[Lg("div",WA,[Lg("div",KA,[Lg("div",ZA,op(n.messageReply.username),1),Lg("div",QA,[jg(i,{"message-id":n.messageReply._id,content:n.messageReply.content,users:n.room.users,"text-formatting":n.textFormatting,"link-options":n.linkOptions,reply:!0},null,8,["message-id","content","users","text-formatting","link-options"])])]),s.isImage?(kg(),Ag("img",{key:0,src:s.firstFile.url,class:"vac-image-reply"},null,8,JA)):s.isVideo?(kg(),Ag("video",eR,[Lg("source",{src:s.firstFile.url},null,8,tR)])):s.isAudio?(kg(),Rg(a,{key:2,src:s.firstFile.url,"message-selection-enabled":!1,class:"vac-audio-reply"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["src"])):s.isOtherFile?(kg(),Ag("div",nR,[Lg("div",null,[Em(e.$slots,"file-icon",{},(()=>[jg(l,{name:"file"})]))]),Lg("div",oR,op(s.firstFile.name),1),s.firstFile.extension?(kg(),Ag("div",rR,op(s.firstFile.extension),1)):Ug("",!0)])):Ug("",!0)]),Lg("div",sR,[Lg("div",{class:"vac-svg-button",onClick:t[0]||(t[0]=t=>e.$emit("reset-message"))},[Em(e.$slots,"reply-close-icon",{},(()=>[jg(l,{name:"close-outline"})]))])])])):Ug("",!0)])),_:3})}var aR=Z_(GA,[["render",iR]]);const lR={name:"RoomUsersTag",props:{filteredUsersTag:{type:Array,required:!0},selectItem:{type:Boolean,default:null},activeUpOrDown:{type:Number,default:null}},emits:["select-user-tag","activate-item"],data(){return{activeItem:null}},watch:{filteredUsersTag(e,t){t.length&&e.length===t.length||(this.activeItem=0)},selectItem(e){e&&this.$emit("select-user-tag",this.filteredUsersTag[this.activeItem])},activeUpOrDown(){this.activeUpOrDown>0&&this.activeItem<this.filteredUsersTag.length-1?this.activeItem++:this.activeUpOrDown<0&&this.activeItem>0&&this.activeItem--,this.$emit("activate-item")}}},cR={key:0,class:"vac-tags-container"},uR=["onMouseover","onClick"],dR={class:"vac-tags-info"},fR={class:"vac-tags-username"};function pR(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.filteredUsersTag.length?(kg(),Ag("div",cR,[(kg(!0),Ag(vg,null,km(n.filteredUsersTag,((t,n)=>(kg(),Ag("div",{key:t._id,class:tp(["vac-tags-box",{"vac-tags-box-active":n===r.activeItem}]),onMouseover:e=>r.activeItem=n,onClick:n=>e.$emit("select-user-tag",t)},[Lg("div",dR,[t.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar vac-tags-avatar",style:Zf({"background-image":`url('${t.avatar}')`})},null,4)):Ug("",!0),Lg("div",fR,op(t.username),1)])],42,uR)))),128))])):Ug("",!0)])),_:1})}var hR=Z_(lR,[["render",pR]]);const mR={name:"RoomEmojis",props:{filteredEmojis:{type:Array,required:!0},selectItem:{type:Boolean,default:null},activeUpOrDown:{type:Number,default:null}},emits:["select-emoji","activate-item"],data(){return{activeItem:null}},watch:{filteredEmojis(e,t){t.length&&e.length===t.length||(this.activeItem=0)},selectItem(e){e&&this.$emit("select-emoji",this.filteredEmojis[this.activeItem])},activeUpOrDown(){this.activeUpOrDown>0&&this.activeItem<this.filteredEmojis.length-1?this.activeItem++:this.activeUpOrDown<0&&this.activeItem>0&&this.activeItem--,this.$emit("activate-item")}}},gR={key:0,class:"vac-emojis-container"},vR=["onMouseover","onClick"];function _R(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.filteredEmojis.length?(kg(),Ag("div",gR,[(kg(!0),Ag(vg,null,km(n.filteredEmojis,((t,n)=>(kg(),Ag("div",{key:t,class:tp(["vac-emoji-element",{"vac-emoji-element-active":n===r.activeItem}]),onMouseover:e=>r.activeItem=n,onClick:n=>e.$emit("select-emoji",t)},op(t),43,vR)))),128))])):Ug("",!0)])),_:1})}var bR=Z_(mR,[["render",_R]]);const yR={name:"RoomTemplatesText",props:{filteredTemplatesText:{type:Array,required:!0},selectItem:{type:Boolean,default:null},activeUpOrDown:{type:Number,default:null}},emits:["select-template-text","activate-item"],data(){return{activeItem:null}},watch:{filteredTemplatesText(e,t){t.length&&e.length===t.length||(this.activeItem=0)},selectItem(e){e&&this.$emit("select-template-text",this.filteredTemplatesText[this.activeItem])},activeUpOrDown(){this.activeUpOrDown>0&&this.activeItem<this.filteredTemplatesText.length-1?this.activeItem++:this.activeUpOrDown<0&&this.activeItem>0&&this.activeItem--,this.$emit("activate-item")}}},xR={key:0,class:"vac-template-container vac-app-box-shadow"},wR=["onMouseover","onClick"],kR={class:"vac-template-info"},SR={class:"vac-template-tag"},ER={class:"vac-template-text"};function TR(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.filteredTemplatesText.length?(kg(),Ag("div",xR,[(kg(!0),Ag(vg,null,km(n.filteredTemplatesText,((t,n)=>(kg(),Ag("div",{key:n,class:tp(["vac-template-box",{"vac-template-active":n===r.activeItem}]),onMouseover:e=>r.activeItem=n,onClick:n=>e.$emit("select-template-text",t)},[Lg("div",kR,[Lg("div",SR," /"+op(t.tag),1),Lg("div",ER,op(t.text),1)])],42,wR)))),128))])):Ug("",!0)])),_:1})}var MR=Z_(yR,[["render",TR]]);function AR(e){return new Int8Array(e)}function RR(e){return new Int16Array(e)}function CR(e){return new Int32Array(e)}function OR(e){return new Float32Array(e)}function IR(e){return new Float64Array(e)}function BR(e){if(1==e.length)return OR(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(BR(e));return n}function PR(e){if(1==e.length)return CR(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(PR(e));return n}function LR(e){if(1==e.length)return RR(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(LR(e));return n}function jR(e){if(1==e.length)return new Array(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(jR(e));return n}var NR={fill:function(e,t,n,o){if(2==arguments.length)for(var r=0;r<e.length;r++)e[r]=arguments[1];else for(r=t;r<n;r++)e[r]=o}},FR={arraycopy:function(e,t,n,o,r){var s=t+r;while(t<s)n[o++]=e[t++]},out:{}};FR.out.println=function(e){console.log(e)},FR.out.printf=function(){console.log.apply(console,arguments)};var DR={};function HR(e){this.ordinal=e}DR.SQRT2=1.4142135623730951,DR.FAST_LOG10=function(e){return Math.log10(e)},DR.FAST_LOG10_X=function(e,t){return Math.log10(e)*t},HR.short_block_allowed=new HR(0),HR.short_block_coupled=new HR(1),HR.short_block_dispensed=new HR(2),HR.short_block_forced=new HR(3);var UR={};function VR(e){this.ordinal=e}UR.MAX_VALUE=34028235e31,VR.vbr_off=new VR(0),VR.vbr_mt=new VR(1),VR.vbr_rh=new VR(2),VR.vbr_abr=new VR(3),VR.vbr_mtrh=new VR(4),VR.vbr_default=VR.vbr_mtrh;var $R=function(e){},zR={System:FR,VbrMode:VR,Float:UR,ShortBlock:HR,Util:DR,Arrays:NR,new_array_n:jR,new_byte:AR,new_double:IR,new_float:OR,new_float_n:BR,new_int:CR,new_int_n:PR,new_short:RR,new_short_n:LR,assert:$R},qR=zR.System,YR=zR.Util,GR=zR.Arrays,XR=zR.new_float;function WR(){var e=[-.1482523854003001,32.308141959636465,296.40344946382766,883.1344870032432,11113.947376231741,1057.2713659324597,305.7402417275812,30.825928907280012,3.8533188138216365,59.42900443849514,709.5899960123345,5281.91112291017,-5829.66483675846,-817.6293103748613,-76.91656988279972,-4.594269939176596,.9063471690191471,.1960342806591213,-.15466694054279598,34.324387823855965,301.8067566458425,817.599602898885,11573.795901679885,1181.2520595540152,321.59731579894424,31.232021761053772,3.7107095756221318,53.650946155329365,684.167428119626,5224.56624370173,-6366.391851890084,-908.9766368219582,-89.83068876699639,-5.411397422890401,.8206787908286602,.3901806440322567,-.16070888947830023,36.147034243915876,304.11815768187864,732.7429163887613,11989.60988270091,1300.012278487897,335.28490093152146,31.48816102859945,3.373875931311736,47.232241542899175,652.7371796173471,5132.414255594984,-6909.087078780055,-1001.9990371107289,-103.62185754286375,-6.104916304710272,.7416505462720353,.5805693545089249,-.16636367662261495,37.751650073343995,303.01103387567713,627.9747488785183,12358.763425278165,1412.2779918482834,346.7496836825721,31.598286663170416,3.1598635433980946,40.57878626349686,616.1671130880391,5007.833007176154,-7454.040671756168,-1095.7960341867115,-118.24411666465777,-6.818469345853504,.6681786379192989,.7653668647301797,-.1716176790982088,39.11551877123304,298.3413246578966,503.5259106886539,12679.589408408976,1516.5821921214542,355.9850766329023,31.395241710249053,2.9164211881972335,33.79716964664243,574.8943997801362,4853.234992253242,-7997.57021486075,-1189.7624067269965,-133.6444792601766,-7.7202770609839915,.5993769336819237,.9427934736519954,-.17645823955292173,40.21879108166477,289.9982036694474,359.3226160751053,12950.259102786438,1612.1013903507662,362.85067106591504,31.045922092242872,2.822222032597987,26.988862316190684,529.8996541764288,4671.371946949588,-8535.899136645805,-1282.5898586244496,-149.58553632943463,-8.643494270763135,.5345111359507916,1.111140466039205,-.36174739330527045,41.04429910497807,277.5463268268618,195.6386023135583,13169.43812144731,1697.6433561479398,367.40983966190305,30.557037410382826,2.531473372857427,20.070154905927314,481.50208566532336,4464.970341588308,-9065.36882077239,-1373.62841526722,-166.1660487028118,-9.58289321133207,.4729647758913199,1.268786568327291,-.36970682634889585,41.393213350082036,261.2935935556502,12.935476055240873,13336.131683328815,1772.508612059496,369.76534388639965,29.751323653701338,2.4023193045459172,13.304795348228817,430.5615775526625,4237.0568611071185,-9581.931701634761,-1461.6913552409758,-183.12733958476446,-10.718010163869403,.41421356237309503,1.414213562373095,-.37677560326535325,41.619486213528496,241.05423794991074,-187.94665032361226,13450.063605744153,1836.153896465782,369.4908799925761,29.001847876923147,2.0714759319987186,6.779591200894186,377.7767837205709,3990.386575512536,-10081.709459700915,-1545.947424837898,-200.3762958015653,-11.864482073055006,.3578057213145241,1.546020906725474,-.3829366947518991,41.1516456456653,216.47684307105183,-406.1569483347166,13511.136535077321,1887.8076599260432,367.3025214564151,28.136213436723654,1.913880671464418,.3829366947518991,323.85365704338597,3728.1472257487526,-10561.233882199509,-1625.2025997821418,-217.62525175416,-13.015432208941645,.3033466836073424,1.66293922460509,-.5822628872992417,40.35639251440489,188.20071124269245,-640.2706748618148,13519.21490106562,1927.6022433578062,362.8197642637487,26.968821921868447,1.7463817695935329,-5.62650678237171,269.3016715297017,3453.386536448852,-11016.145278780888,-1698.6569643425091,-234.7658734267683,-14.16351421663124,.2504869601913055,1.76384252869671,-.5887180101749253,39.23429103868072,155.76096234403798,-889.2492977967378,13475.470561874661,1955.0535223723712,356.4450994756727,25.894952980042156,1.5695032905781554,-11.181939564328772,214.80884394039484,3169.1640829158237,-11443.321309975563,-1765.1588461316153,-251.68908574481912,-15.49755935939164,.198912367379658,1.847759065022573,-.7912582233652842,37.39369355329111,119.699486012458,-1151.0956593239027,13380.446257078214,1970.3952110853447,348.01959814116185,24.731487364283044,1.3850130831637748,-16.421408865300393,161.05030052864092,2878.3322807850063,-11838.991423510031,-1823.985884688674,-268.2854986386903,-16.81724543849939,.1483359875383474,1.913880671464418,-.7960642926861912,35.2322109610459,80.01928065061526,-1424.0212633405113,13235.794061869668,1973.804052543835,337.9908651258184,23.289159354463873,1.3934255946442087,-21.099669467133474,108.48348407242611,2583.700758091299,-12199.726194855148,-1874.2780658979746,-284.2467154529415,-18.11369784385905,.09849140335716425,1.961570560806461,-.998795456205172,32.56307803611191,36.958364584370486,-1706.075448829146,13043.287458812016,1965.3831106103316,326.43182772364605,22.175018750622293,1.198638339011324,-25.371248002043963,57.53505923036915,2288.41886619975,-12522.674544337233,-1914.8400385312243,-299.26241273417224,-19.37805630698734,.04912684976946725,1.990369453344394,.035780907*YR.SQRT2*.5/2384e-9,.017876148*YR.SQRT2*.5/2384e-9,.003134727*YR.SQRT2*.5/2384e-9,.002457142*YR.SQRT2*.5/2384e-9,971317e-9*YR.SQRT2*.5/2384e-9,218868e-9*YR.SQRT2*.5/2384e-9,101566e-9*YR.SQRT2*.5/2384e-9,13828e-9*YR.SQRT2*.5/2384e-9,12804.797818791945,1945.5515939597317,313.4244966442953,20.801593959731544,1995.1556208053692,9.000838926174497,-29.20218120805369],t=12,n=36,o=[[2382191739347913e-28,6423305872147834e-28,9400849094049688e-28,1122435026096556e-27,1183840321267481e-27,1122435026096556e-27,940084909404969e-27,6423305872147839e-28,2382191739347918e-28,5456116108943412e-27,4878985199565852e-27,4240448995017367e-27,3559909094758252e-27,2858043359288075e-27,2156177623817898e-27,1475637723558783e-27,8371015190102974e-28,2599706096327376e-28,-5456116108943412e-27,-4878985199565852e-27,-4240448995017367e-27,-3559909094758252e-27,-2858043359288076e-27,-2156177623817898e-27,-1475637723558783e-27,-8371015190102975e-28,-2599706096327376e-28,-2382191739347923e-28,-6423305872147843e-28,-9400849094049696e-28,-1122435026096556e-27,-1183840321267481e-27,-1122435026096556e-27,-9400849094049694e-28,-642330587214784e-27,-2382191739347918e-28],[2382191739347913e-28,6423305872147834e-28,9400849094049688e-28,1122435026096556e-27,1183840321267481e-27,1122435026096556e-27,9400849094049688e-28,6423305872147841e-28,2382191739347918e-28,5456116108943413e-27,4878985199565852e-27,4240448995017367e-27,3559909094758253e-27,2858043359288075e-27,2156177623817898e-27,1475637723558782e-27,8371015190102975e-28,2599706096327376e-28,-5461314069809755e-27,-4921085770524055e-27,-4343405037091838e-27,-3732668368707687e-27,-3093523840190885e-27,-2430835727329465e-27,-1734679010007751e-27,-974825365660928e-27,-2797435120168326e-28,0,0,0,0,0,0,-2283748241799531e-28,-4037858874020686e-28,-2146547464825323e-28],[.1316524975873958,.414213562373095,.7673269879789602,1.091308501069271,1.303225372841206,1.56968557711749,1.920982126971166,2.414213562373094,3.171594802363212,4.510708503662055,7.595754112725146,22.90376554843115,.984807753012208,.6427876096865394,.3420201433256688,.9396926207859084,-.1736481776669303,-.7660444431189779,.8660254037844387,.5,-.5144957554275265,-.4717319685649723,-.3133774542039019,-.1819131996109812,-.09457419252642064,-.04096558288530405,-.01419856857247115,-.003699974673760037,.8574929257125442,.8817419973177052,.9496286491027329,.9833145924917901,.9955178160675857,.9991605581781475,.999899195244447,.9999931550702802],[0,0,0,0,0,0,2283748241799531e-28,4037858874020686e-28,2146547464825323e-28,5461314069809755e-27,4921085770524055e-27,4343405037091838e-27,3732668368707687e-27,3093523840190885e-27,2430835727329466e-27,1734679010007751e-27,974825365660928e-27,2797435120168326e-28,-5456116108943413e-27,-4878985199565852e-27,-4240448995017367e-27,-3559909094758253e-27,-2858043359288075e-27,-2156177623817898e-27,-1475637723558782e-27,-8371015190102975e-28,-2599706096327376e-28,-2382191739347913e-28,-6423305872147834e-28,-9400849094049688e-28,-1122435026096556e-27,-1183840321267481e-27,-1122435026096556e-27,-9400849094049688e-28,-6423305872147841e-28,-2382191739347918e-28]],r=o[cC.SHORT_TYPE],s=o[cC.SHORT_TYPE],i=o[cC.SHORT_TYPE],a=o[cC.SHORT_TYPE],l=[0,1,16,17,8,9,24,25,4,5,20,21,12,13,28,29,2,3,18,19,10,11,26,27,6,7,22,23,14,15,30,31];function c(t,n,o){for(var r,s,i,a=10,l=n+238-14-286,c=-15;c<0;c++){var u,d,f;u=e[a+-10],d=t[l+-224]*u,f=t[n+224]*u,u=e[a+-9],d+=t[l+-160]*u,f+=t[n+160]*u,u=e[a+-8],d+=t[l+-96]*u,f+=t[n+96]*u,u=e[a+-7],d+=t[l+-32]*u,f+=t[n+32]*u,u=e[a+-6],d+=t[l+32]*u,f+=t[n+-32]*u,u=e[a+-5],d+=t[l+96]*u,f+=t[n+-96]*u,u=e[a+-4],d+=t[l+160]*u,f+=t[n+-160]*u,u=e[a+-3],d+=t[l+224]*u,f+=t[n+-224]*u,u=e[a+-2],d+=t[n+-256]*u,f-=t[l+256]*u,u=e[a+-1],d+=t[n+-192]*u,f-=t[l+192]*u,u=e[a+0],d+=t[n+-128]*u,f-=t[l+128]*u,u=e[a+1],d+=t[n+-64]*u,f-=t[l+64]*u,u=e[a+2],d+=t[n+0]*u,f-=t[l+0]*u,u=e[a+3],d+=t[n+64]*u,f-=t[l+-64]*u,u=e[a+4],d+=t[n+128]*u,f-=t[l+-128]*u,u=e[a+5],d+=t[n+192]*u,f-=t[l+-192]*u,d*=e[a+6],u=f-d,o[30+2*c]=f+d,o[31+2*c]=e[a+7]*u,a+=18,n--,l++}f=t[n+-16]*e[a+-10],d=t[n+-32]*e[a+-2],f+=(t[n+-48]-t[n+16])*e[a+-9],d+=t[n+-96]*e[a+-1],f+=(t[n+-80]+t[n+48])*e[a+-8],d+=t[n+-160]*e[a+0],f+=(t[n+-112]-t[n+80])*e[a+-7],d+=t[n+-224]*e[a+1],f+=(t[n+-144]+t[n+112])*e[a+-6],d-=t[n+32]*e[a+2],f+=(t[n+-176]-t[n+144])*e[a+-5],d-=t[n+96]*e[a+3],f+=(t[n+-208]+t[n+176])*e[a+-4],d-=t[n+160]*e[a+4],f+=(t[n+-240]-t[n+208])*e[a+-3],d-=t[n+224],r=d-f,s=d+f,f=o[14],d=o[15]-f,o[31]=s+f,o[30]=r+d,o[15]=r-d,o[14]=s-f,i=o[28]-o[0],o[0]+=o[28],o[28]=i*e[a+-36+7],i=o[29]-o[1],o[1]+=o[29],o[29]=i*e[a+-36+7],i=o[26]-o[2],o[2]+=o[26],o[26]=i*e[a+-72+7],i=o[27]-o[3],o[3]+=o[27],o[27]=i*e[a+-72+7],i=o[24]-o[4],o[4]+=o[24],o[24]=i*e[a+-108+7],i=o[25]-o[5],o[5]+=o[25],o[25]=i*e[a+-108+7],i=o[22]-o[6],o[6]+=o[22],o[22]=i*YR.SQRT2,i=o[23]-o[7],o[7]+=o[23],o[23]=i*YR.SQRT2-o[7],o[7]-=o[6],o[22]-=o[7],o[23]-=o[22],i=o[6],o[6]=o[31]-i,o[31]=o[31]+i,i=o[7],o[7]=o[30]-i,o[30]=o[30]+i,i=o[22],o[22]=o[15]-i,o[15]=o[15]+i,i=o[23],o[23]=o[14]-i,o[14]=o[14]+i,i=o[20]-o[8],o[8]+=o[20],o[20]=i*e[a+-180+7],i=o[21]-o[9],o[9]+=o[21],o[21]=i*e[a+-180+7],i=o[18]-o[10],o[10]+=o[18],o[18]=i*e[a+-216+7],i=o[19]-o[11],o[11]+=o[19],o[19]=i*e[a+-216+7],i=o[16]-o[12],o[12]+=o[16],o[16]=i*e[a+-252+7],i=o[17]-o[13],o[13]+=o[17],o[17]=i*e[a+-252+7],i=-o[20]+o[24],o[20]+=o[24],o[24]=i*e[a+-216+7],i=-o[21]+o[25],o[21]+=o[25],o[25]=i*e[a+-216+7],i=o[4]-o[8],o[4]+=o[8],o[8]=i*e[a+-216+7],i=o[5]-o[9],o[5]+=o[9],o[9]=i*e[a+-216+7],i=o[0]-o[12],o[0]+=o[12],o[12]=i*e[a+-72+7],i=o[1]-o[13],o[1]+=o[13],o[13]=i*e[a+-72+7],i=o[16]-o[28],o[16]+=o[28],o[28]=i*e[a+-72+7],i=-o[17]+o[29],o[17]+=o[29],o[29]=i*e[a+-72+7],i=YR.SQRT2*(o[2]-o[10]),o[2]+=o[10],o[10]=i,i=YR.SQRT2*(o[3]-o[11]),o[3]+=o[11],o[11]=i,i=YR.SQRT2*(-o[18]+o[26]),o[18]+=o[26],o[26]=i-o[18],i=YR.SQRT2*(-o[19]+o[27]),o[19]+=o[27],o[27]=i-o[19],i=o[2],o[19]-=o[3],o[3]-=i,o[2]=o[31]-i,o[31]+=i,i=o[3],o[11]-=o[19],o[18]-=i,o[3]=o[30]-i,o[30]+=i,i=o[18],o[27]-=o[11],o[19]-=i,o[18]=o[15]-i,o[15]+=i,i=o[19],o[10]-=i,o[19]=o[14]-i,o[14]+=i,i=o[10],o[11]-=i,o[10]=o[23]-i,o[23]+=i,i=o[11],o[26]-=i,o[11]=o[22]-i,o[22]+=i,i=o[26],o[27]-=i,o[26]=o[7]-i,o[7]+=i,i=o[27],o[27]=o[6]-i,o[6]+=i,i=YR.SQRT2*(o[0]-o[4]),o[0]+=o[4],o[4]=i,i=YR.SQRT2*(o[1]-o[5]),o[1]+=o[5],o[5]=i,i=YR.SQRT2*(o[16]-o[20]),o[16]+=o[20],o[20]=i,i=YR.SQRT2*(o[17]-o[21]),o[17]+=o[21],o[21]=i,i=-YR.SQRT2*(o[8]-o[12]),o[8]+=o[12],o[12]=i-o[8],i=-YR.SQRT2*(o[9]-o[13]),o[9]+=o[13],o[13]=i-o[9],i=-YR.SQRT2*(o[25]-o[29]),o[25]+=o[29],o[29]=i-o[25],i=-YR.SQRT2*(o[24]+o[28]),o[24]-=o[28],o[28]=i-o[24],i=o[24]-o[16],o[24]=i,i=o[20]-i,o[20]=i,i=o[28]-i,o[28]=i,i=o[25]-o[17],o[25]=i,i=o[21]-i,o[21]=i,i=o[29]-i,o[29]=i,i=o[17]-o[1],o[17]=i,i=o[9]-i,o[9]=i,i=o[25]-i,o[25]=i,i=o[5]-i,o[5]=i,i=o[21]-i,o[21]=i,i=o[13]-i,o[13]=i,i=o[29]-i,o[29]=i,i=o[1]-o[0],o[1]=i,i=o[16]-i,o[16]=i,i=o[17]-i,o[17]=i,i=o[8]-i,o[8]=i,i=o[9]-i,o[9]=i,i=o[24]-i,o[24]=i,i=o[25]-i,o[25]=i,i=o[4]-i,o[4]=i,i=o[5]-i,o[5]=i,i=o[20]-i,o[20]=i,i=o[21]-i,o[21]=i,i=o[12]-i,o[12]=i,i=o[13]-i,o[13]=i,i=o[28]-i,o[28]=i,i=o[29]-i,o[29]=i,i=o[0],o[0]+=o[31],o[31]-=i,i=o[1],o[1]+=o[30],o[30]-=i,i=o[16],o[16]+=o[15],o[15]-=i,i=o[17],o[17]+=o[14],o[14]-=i,i=o[8],o[8]+=o[23],o[23]-=i,i=o[9],o[9]+=o[22],o[22]-=i,i=o[24],o[24]+=o[7],o[7]-=i,i=o[25],o[25]+=o[6],o[6]-=i,i=o[4],o[4]+=o[27],o[27]-=i,i=o[5],o[5]+=o[26],o[26]-=i,i=o[20],o[20]+=o[11],o[11]-=i,i=o[21],o[21]+=o[10],o[10]-=i,i=o[12],o[12]+=o[19],o[19]-=i,i=o[13],o[13]+=o[18],o[18]-=i,i=o[28],o[28]+=o[3],o[3]-=i,i=o[29],o[29]+=o[2],o[2]-=i}function u(e,t){for(var n=0;n<3;n++){var r,s,i,a,l,c;a=e[t+6]*o[cC.SHORT_TYPE][0]-e[t+15],r=e[t+0]*o[cC.SHORT_TYPE][2]-e[t+9],s=a+r,i=a-r,a=e[t+15]*o[cC.SHORT_TYPE][0]+e[t+6],r=e[t+9]*o[cC.SHORT_TYPE][2]+e[t+0],l=a+r,c=-a+r,r=2069978111953089e-26*(e[t+3]*o[cC.SHORT_TYPE][1]-e[t+12]),a=2069978111953089e-26*(e[t+12]*o[cC.SHORT_TYPE][1]+e[t+3]),e[t+0]=190752519173728e-25*s+r,e[t+15]=190752519173728e-25*-l+a,i=.8660254037844387*i*1907525191737281e-26,l=.5*l*1907525191737281e-26+a,e[t+3]=i-l,e[t+6]=i+l,s=.5*s*1907525191737281e-26-r,c=.8660254037844387*c*1907525191737281e-26,e[t+9]=s+c,e[t+12]=s-c,t++}}function d(e,t,n){var o,r,i,a,l,c,u,d,f,p,h,m,g,v,_,b,y,x;i=n[17]-n[9],l=n[15]-n[11],c=n[14]-n[12],u=n[0]+n[8],d=n[1]+n[7],f=n[2]+n[6],p=n[3]+n[5],e[t+17]=u+f-p-(d-n[4]),r=(u+f-p)*s[19]+(d-n[4]),o=(i-l-c)*s[18],e[t+5]=o+r,e[t+6]=o-r,a=(n[16]-n[10])*s[18],d=d*s[19]+n[4],o=i*s[12]+a+l*s[13]+c*s[14],r=-u*s[16]+d-f*s[17]+p*s[15],e[t+1]=o+r,e[t+2]=o-r,o=i*s[13]-a-l*s[14]+c*s[12],r=-u*s[17]+d-f*s[15]+p*s[16],e[t+9]=o+r,e[t+10]=o-r,o=i*s[14]-a+l*s[12]-c*s[13],r=u*s[15]-d+f*s[16]-p*s[17],e[t+13]=o+r,e[t+14]=o-r,h=n[8]-n[0],g=n[6]-n[2],v=n[5]-n[3],_=n[17]+n[9],b=n[16]+n[10],y=n[15]+n[11],x=n[14]+n[12],e[t+0]=_+y+x+(b+n[13]),o=(_+y+x)*s[19]-(b+n[13]),r=(h-g+v)*s[18],e[t+11]=o+r,e[t+12]=o-r,m=(n[7]-n[1])*s[18],b=n[13]-b*s[19],o=_*s[15]-b+y*s[16]+x*s[17],r=h*s[14]+m+g*s[12]+v*s[13],e[t+3]=o+r,e[t+4]=o-r,o=-_*s[17]+b-y*s[15]-x*s[16],r=h*s[13]+m-g*s[14]-v*s[12],e[t+7]=o+r,e[t+8]=o-r,o=-_*s[16]+b-y*s[17]-x*s[15],r=h*s[12]-m+g*s[13]-v*s[14],e[t+15]=o+r,e[t+16]=o-r}this.mdct_sub48=function(e,s,f){for(var p=s,h=286,m=0;m<e.channels_out;m++){for(var g=0;g<e.mode_gr;g++){for(var v,_=e.l3_side.tt[g][m],b=_.xr,y=0,x=e.sb_sample[m][1-g],w=0,k=0;k<9;k++)for(c(p,h,x[w]),c(p,h+32,x[w+1]),w+=2,h+=64,v=1;v<32;v+=2)x[w-1][v]*=-1;for(v=0;v<32;v++,y+=18){var S=_.block_type,E=e.sb_sample[m][g],T=e.sb_sample[m][1-g];if(0!=_.mixed_block_flag&&v<2&&(S=0),e.amp_filter[v]<1e-12)GR.fill(b,y+0,y+18,0);else{if(e.amp_filter[v]<1)for(k=0;k<18;k++)T[k][l[v]]*=e.amp_filter[v];if(S==cC.SHORT_TYPE){for(k=-t/4;k<0;k++){var M=o[cC.SHORT_TYPE][k+3];b[y+3*k+9]=E[9+k][l[v]]*M-E[8-k][l[v]],b[y+3*k+18]=E[14-k][l[v]]*M+E[15+k][l[v]],b[y+3*k+10]=E[15+k][l[v]]*M-E[14-k][l[v]],b[y+3*k+19]=T[2-k][l[v]]*M+T[3+k][l[v]],b[y+3*k+11]=T[3+k][l[v]]*M-T[2-k][l[v]],b[y+3*k+20]=T[8-k][l[v]]*M+T[9+k][l[v]]}u(b,y)}else{var A=XR(18);for(k=-n/4;k<0;k++){var R,C;R=o[S][k+27]*T[k+9][l[v]]+o[S][k+36]*T[8-k][l[v]],C=o[S][k+9]*E[k+9][l[v]]-o[S][k+18]*E[8-k][l[v]],A[k+9]=R-C*r[3+k+9],A[k+18]=R*r[3+k+9]+C}d(b,y,A)}}if(S!=cC.SHORT_TYPE&&0!=v)for(k=7;k>=0;--k){var O,I;O=b[y+k]*i[20+k]+b[y+-1-k]*a[28+k],I=b[y+k]*a[28+k]-b[y+-1-k]*i[20+k],b[y+-1-k]=O,b[y+k]=I}}}if(p=f,h=286,1==e.mode_gr)for(var B=0;B<18;B++)qR.arraycopy(e.sb_sample[m][1][B],0,e.sb_sample[m][0][B],0,32)}}}var KR=zR.System,ZR=zR.new_float,QR=zR.new_float_n;function JR(){this.l=ZR(cC.SBMAX_l),this.s=QR([cC.SBMAX_s,3]);var e=this;this.assign=function(t){KR.arraycopy(t.l,0,e.l,0,cC.SBMAX_l);for(var n=0;n<cC.SBMAX_s;n++)for(var o=0;o<3;o++)e.s[n][o]=t.s[n][o]}}function eC(){this.thm=new JR,this.en=new JR}function tC(e){var t=e;this.ordinal=function(){return t}}tC.STEREO=new tC(0),tC.JOINT_STEREO=new tC(1),tC.DUAL_CHANNEL=new tC(2),tC.MONO=new tC(3),tC.NOT_SET=new tC(4);var nC=zR.System,oC=zR.VbrMode,rC=zR.new_array_n,sC=zR.new_float,iC=zR.new_float_n,aC=zR.new_int,lC=zR.assert;function cC(){var e=cC.FFTOFFSET,t=cC.MPG_MD_MS_LR,n=null;this.psy=null;var o=null,r=null,s=null;this.setModules=function(e,t,i,a){n=e,this.psy=t,o=t,r=a,s=i};var i=new WR;function a(e){var t,n;if(0!=e.ATH.useAdjust)if(n=e.loudness_sq[0][0],t=e.loudness_sq[1][0],2==e.channels_out?(n+=e.loudness_sq[0][1],t+=e.loudness_sq[1][1]):(n+=n,t+=t),2==e.mode_gr&&(n=Math.max(n,t)),n*=.5,n*=e.ATH.aaSensitivityP,n>.03125)e.ATH.adjust>=1?e.ATH.adjust=1:e.ATH.adjust<e.ATH.adjustLimit&&(e.ATH.adjust=e.ATH.adjustLimit),e.ATH.adjustLimit=1;else{var o=31.98*n+625e-6;e.ATH.adjust>=o?(e.ATH.adjust*=.075*o+.925,e.ATH.adjust<o&&(e.ATH.adjust=o)):e.ATH.adjustLimit>=o?e.ATH.adjust=o:e.ATH.adjust<e.ATH.adjustLimit&&(e.ATH.adjust=e.ATH.adjustLimit),e.ATH.adjustLimit=o}else e.ATH.adjust=1}function l(e){var t,n;for(lC(e.bitrate_index>=0&&e.bitrate_index<16),lC(e.mode_ext>=0&&e.mode_ext<4),e.bitrate_stereoMode_Hist[e.bitrate_index][4]++,e.bitrate_stereoMode_Hist[15][4]++,2==e.channels_out&&(e.bitrate_stereoMode_Hist[e.bitrate_index][e.mode_ext]++,e.bitrate_stereoMode_Hist[15][e.mode_ext]++),t=0;t<e.mode_gr;++t)for(n=0;n<e.channels_out;++n){var o=0|e.l3_side.tt[t][n].block_type;0!=e.l3_side.tt[t][n].mixed_block_flag&&(o=4),e.bitrate_blockType_Hist[e.bitrate_index][o]++,e.bitrate_blockType_Hist[e.bitrate_index][5]++,e.bitrate_blockType_Hist[15][o]++,e.bitrate_blockType_Hist[15][5]++}}function c(e,t){var n,o,r=e.internal_flags;if(0==r.lame_encode_frame_init){var s,a,l=sC(2014),c=sC(2014);for(r.lame_encode_frame_init=1,s=0,a=0;s<286+576*(1+r.mode_gr);++s)s<576*r.mode_gr?(l[s]=0,2==r.channels_out&&(c[s]=0)):(l[s]=t[0][a],2==r.channels_out&&(c[s]=t[1][a]),++a);for(o=0;o<r.mode_gr;o++)for(n=0;n<r.channels_out;n++)r.l3_side.tt[o][n].block_type=cC.SHORT_TYPE;i.mdct_sub48(r,l,c),lC(r.mf_size>=cC.BLKSIZE+e.framesize-cC.FFTOFFSET),lC(r.mf_size>=512+e.framesize-32)}}this.lame_encode_mp3_frame=function(u,d,f,p,h,m){var g,v=rC([2,2]);v[0][0]=new eC,v[0][1]=new eC,v[1][0]=new eC,v[1][1]=new eC;var _,b=rC([2,2]);b[0][0]=new eC,b[0][1]=new eC,b[1][0]=new eC,b[1][1]=new eC;var y,x,w,k=[null,null],S=u.internal_flags,E=iC([2,4]),T=[.5,.5],M=[[0,0],[0,0]],A=[[0,0],[0,0]];if(k[0]=d,k[1]=f,0==S.lame_encode_frame_init&&c(u,k),S.padding=0,(S.slot_lag-=S.frac_SpF)<0&&(S.slot_lag+=u.out_samplerate,S.padding=1),0!=S.psymodel){var R,C=[null,null],O=0,I=aC(2);for(w=0;w<S.mode_gr;w++){for(x=0;x<S.channels_out;x++)C[x]=k[x],O=576+576*w-cC.FFTOFFSET;if(R=u.VBR==oC.vbr_mtrh||u.VBR==oC.vbr_mt?o.L3psycho_anal_vbr(u,C,O,w,v,b,M[w],A[w],E[w],I):o.L3psycho_anal_ns(u,C,O,w,v,b,M[w],A[w],E[w],I),0!=R)return-4;for(u.mode==tC.JOINT_STEREO&&(T[w]=E[w][2]+E[w][3],T[w]>0&&(T[w]=E[w][3]/T[w])),x=0;x<S.channels_out;x++){var B=S.l3_side.tt[w][x];B.block_type=I[x],B.mixed_block_flag=0}}}else for(w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)S.l3_side.tt[w][x].block_type=cC.NORM_TYPE,S.l3_side.tt[w][x].mixed_block_flag=0,A[w][x]=M[w][x]=700;if(a(S),i.mdct_sub48(S,k[0],k[1]),S.mode_ext=cC.MPG_MD_LR_LR,u.force_ms)S.mode_ext=cC.MPG_MD_MS_LR;else if(u.mode==tC.JOINT_STEREO){var P=0,L=0;for(w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)P+=A[w][x],L+=M[w][x];if(P<=1*L){var j=S.l3_side.tt[0],N=S.l3_side.tt[S.mode_gr-1];j[0].block_type==j[1].block_type&&N[0].block_type==N[1].block_type&&(S.mode_ext=cC.MPG_MD_MS_LR)}}if(S.mode_ext==t?(_=b,y=A):(_=v,y=M),u.analysis&&null!=S.pinfo)for(w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)S.pinfo.ms_ratio[w]=S.ms_ratio[w],S.pinfo.ms_ener_ratio[w]=T[w],S.pinfo.blocktype[w][x]=S.l3_side.tt[w][x].block_type,S.pinfo.pe[w][x]=y[w][x],nC.arraycopy(S.l3_side.tt[w][x].xr,0,S.pinfo.xr[w][x],0,576),S.mode_ext==t&&(S.pinfo.ers[w][x]=S.pinfo.ers[w][x+2],nC.arraycopy(S.pinfo.energy[w][x+2],0,S.pinfo.energy[w][x],0,S.pinfo.energy[w][x].length));if(u.VBR==oC.vbr_off||u.VBR==oC.vbr_abr){var F,D;for(F=0;F<18;F++)S.nsPsy.pefirbuf[F]=S.nsPsy.pefirbuf[F+1];for(D=0,w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)D+=y[w][x];for(S.nsPsy.pefirbuf[18]=D,D=S.nsPsy.pefirbuf[9],F=0;F<9;F++)D+=(S.nsPsy.pefirbuf[F]+S.nsPsy.pefirbuf[18-F])*cC.fircoef[F];for(D=3350*S.mode_gr*S.channels_out/D,w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)y[w][x]*=D}if(S.iteration_loop.iteration_loop(u,y,T,_),n.format_bitstream(u),g=n.copy_buffer(S,p,h,m,1),u.bWriteVbrTag&&r.addVbrFrame(u),u.analysis&&null!=S.pinfo){for(x=0;x<S.channels_out;x++){var H;for(H=0;H<e;H++)S.pinfo.pcmdata[x][H]=S.pinfo.pcmdata[x][H+u.framesize];for(H=e;H<1600;H++)S.pinfo.pcmdata[x][H]=k[x][H-e]}s.set_frame_pinfo(u,_)}return l(S),g}}cC.ENCDELAY=576,cC.POSTDELAY=1152,cC.MDCTDELAY=48,cC.FFTOFFSET=224+cC.MDCTDELAY,cC.DECDELAY=528,cC.SBLIMIT=32,cC.CBANDS=64,cC.SBPSY_l=21,cC.SBPSY_s=12,cC.SBMAX_l=22,cC.SBMAX_s=13,cC.PSFB21=6,cC.PSFB12=6,cC.BLKSIZE=1024,cC.HBLKSIZE=cC.BLKSIZE/2+1,cC.BLKSIZE_s=256,cC.HBLKSIZE_s=cC.BLKSIZE_s/2+1,cC.NORM_TYPE=0,cC.START_TYPE=1,cC.SHORT_TYPE=2,cC.STOP_TYPE=3,cC.MPG_MD_LR_LR=0,cC.MPG_MD_LR_I=1,cC.MPG_MD_MS_LR=2,cC.MPG_MD_MS_I=3,cC.fircoef=[-.1039435,-.1892065,5*-.0432472,-.155915,3898045e-23,.0467745*5,.50455,.756825,.187098*5];var uC=zR.Util,dC=zR.new_float;function fC(){var e=dC(cC.BLKSIZE),t=dC(cC.BLKSIZE_s/2),n=[.9238795325112867,.3826834323650898,.9951847266721969,.0980171403295606,.9996988186962042,.02454122852291229,.9999811752826011,.006135884649154475];function o(e,t,o){var r,s,i,a=0;o<<=1;var l=t+o;r=4;do{var c,u,d,f,p,h,m;m=r>>1,f=r,p=r<<1,h=p+f,r=p<<1,s=t,i=s+m;do{w=e[s+0]-e[s+f],x=e[s+0]+e[s+f],T=e[s+p]-e[s+h],S=e[s+p]+e[s+h],e[s+p]=x-S,e[s+0]=x+S,e[s+h]=w-T,e[s+f]=w+T,w=e[i+0]-e[i+f],x=e[i+0]+e[i+f],T=uC.SQRT2*e[i+h],S=uC.SQRT2*e[i+p],e[i+p]=x-S,e[i+0]=x+S,e[i+h]=w-T,e[i+f]=w+T,i+=r,s+=r}while(s<l);for(u=n[a+0],c=n[a+1],d=1;d<m;d++){var g,v;g=1-2*c*c,v=2*c*u,s=t+d,i=t+f-d;do{var _,b,y,x,w,k,S,E,T,M;b=v*e[s+f]-g*e[i+f],_=g*e[s+f]+v*e[i+f],w=e[s+0]-_,x=e[s+0]+_,k=e[i+0]-b,y=e[i+0]+b,b=v*e[s+h]-g*e[i+h],_=g*e[s+h]+v*e[i+h],T=e[s+p]-_,S=e[s+p]+_,M=e[i+p]-b,E=e[i+p]+b,b=c*S-u*M,_=u*S+c*M,e[s+p]=x-_,e[s+0]=x+_,e[i+h]=k-b,e[i+f]=k+b,b=u*E-c*T,_=c*E+u*T,e[i+p]=y-_,e[i+0]=y+_,e[s+h]=w-b,e[s+f]=w+b,i+=r,s+=r}while(s<l);g=u,u=g*n[a+0]-c*n[a+1],c=g*n[a+1]+c*n[a+0]}a+=2}while(r<o)}var r=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254];this.fft_short=function(e,n,s,i,a){for(var l=0;l<3;l++){var c=cC.BLKSIZE_s/2,u=65535&192*(l+1),d=cC.BLKSIZE_s/8-1;do{var f,p,h,m,g,v=255&r[d<<2];f=t[v]*i[s][a+v+u],g=t[127-v]*i[s][a+v+u+128],p=f-g,f+=g,h=t[v+64]*i[s][a+v+u+64],g=t[63-v]*i[s][a+v+u+192],m=h-g,h+=g,c-=4,n[l][c+0]=f+h,n[l][c+2]=f-h,n[l][c+1]=p+m,n[l][c+3]=p-m,f=t[v+1]*i[s][a+v+u+1],g=t[126-v]*i[s][a+v+u+129],p=f-g,f+=g,h=t[v+65]*i[s][a+v+u+65],g=t[62-v]*i[s][a+v+u+193],m=h-g,h+=g,n[l][c+cC.BLKSIZE_s/2+0]=f+h,n[l][c+cC.BLKSIZE_s/2+2]=f-h,n[l][c+cC.BLKSIZE_s/2+1]=p+m,n[l][c+cC.BLKSIZE_s/2+3]=p-m}while(--d>=0);o(n[l],c,cC.BLKSIZE_s/2)}},this.fft_long=function(t,n,s,i,a){var l=cC.BLKSIZE/8-1,c=cC.BLKSIZE/2;do{var u,d,f,p,h,m=255&r[l];u=e[m]*i[s][a+m],h=e[m+512]*i[s][a+m+512],d=u-h,u+=h,f=e[m+256]*i[s][a+m+256],h=e[m+768]*i[s][a+m+768],p=f-h,f+=h,c-=4,n[c+0]=u+f,n[c+2]=u-f,n[c+1]=d+p,n[c+3]=d-p,u=e[m+1]*i[s][a+m+1],h=e[m+513]*i[s][a+m+513],d=u-h,u+=h,f=e[m+257]*i[s][a+m+257],h=e[m+769]*i[s][a+m+769],p=f-h,f+=h,n[c+cC.BLKSIZE/2+0]=u+f,n[c+cC.BLKSIZE/2+2]=u-f,n[c+cC.BLKSIZE/2+1]=d+p,n[c+cC.BLKSIZE/2+3]=d-p}while(--l>=0);o(n,c,cC.BLKSIZE/2)},this.init_fft=function(n){for(var o=0;o<cC.BLKSIZE;o++)e[o]=.42-.5*Math.cos(2*Math.PI*(o+.5)/cC.BLKSIZE)+.08*Math.cos(4*Math.PI*(o+.5)/cC.BLKSIZE);for(o=0;o<cC.BLKSIZE_s/2;o++)t[o]=.5*(1-Math.cos(2*Math.PI*(o+.5)/cC.BLKSIZE_s))}}var pC=zR.VbrMode,hC=zR.Float,mC=zR.ShortBlock,gC=zR.Util,vC=zR.Arrays,_C=zR.new_float,bC=zR.new_float_n,yC=zR.new_int,xC=zR.assert;function wC(){var e=new fC,t=2.302585092994046,n=2,o=16,r=2,s=16,i=.34,a=1/217621504/(cC.BLKSIZE/2),l=.01,c=.8,u=.6,d=.3,f=3.5,p=21,h=.2302585093;function m(e){return e}function g(e,t){for(var n=0,o=0;o<cC.BLKSIZE/2;++o)n+=e[o]*t.ATH.eql_w[o];return n*=a,n}function v(t,n,o,r,s,i,a,l,c,u,d){var f=t.internal_flags;if(c<2)e.fft_long(f,r[s],c,u,d),e.fft_short(f,i[a],c,u,d);else if(2==c){for(var p=cC.BLKSIZE-1;p>=0;--p){var h=r[s+0][p],v=r[s+1][p];r[s+0][p]=(h+v)*gC.SQRT2*.5,r[s+1][p]=(h-v)*gC.SQRT2*.5}for(var _=2;_>=0;--_)for(p=cC.BLKSIZE_s-1;p>=0;--p){h=i[a+0][_][p],v=i[a+1][_][p];i[a+0][_][p]=(h+v)*gC.SQRT2*.5,i[a+1][_][p]=(h-v)*gC.SQRT2*.5}}n[0]=m(r[s+0][0]),n[0]*=n[0];for(p=cC.BLKSIZE/2-1;p>=0;--p){var b=r[s+0][cC.BLKSIZE/2-p],y=r[s+0][cC.BLKSIZE/2+p];n[cC.BLKSIZE/2-p]=m(.5*(b*b+y*y))}for(_=2;_>=0;--_){o[_][0]=i[a+0][_][0],o[_][0]*=o[_][0];for(p=cC.BLKSIZE_s/2-1;p>=0;--p){b=i[a+0][_][cC.BLKSIZE_s/2-p],y=i[a+0][_][cC.BLKSIZE_s/2+p];o[_][cC.BLKSIZE_s/2-p]=m(.5*(b*b+y*y))}}var x=0;for(p=11;p<cC.HBLKSIZE;p++)x+=n[p];if(f.tot_ener[c]=x,t.analysis){for(p=0;p<cC.HBLKSIZE;p++)f.pinfo.energy[l][c][p]=f.pinfo.energy_save[c][p],f.pinfo.energy_save[c][p]=n[p];f.pinfo.pe[l][c]=f.pe[c]}2==t.athaa_loudapprox&&c<2&&(f.loudness_sq[l][c]=f.loudness_sq_save[c],f.loudness_sq_save[c]=g(n,f))}var _,b,y,x=8,w=23,k=15,S=[1,.79433,.63096,.63096,.63096,.63096,.63096,.25119,.11749];function E(){_=Math.pow(10,(x+1)/16),b=Math.pow(10,(w+1)/16),y=Math.pow(10,k/10)}var T=[3.3246*3.3246,3.23837*3.23837,9.9500500969,9.0247369744,8.1854926609,7.0440875649,2.46209*2.46209,2.284*2.284,4.4892710641,1.96552*1.96552,1.82335*1.82335,1.69146*1.69146,2.4621061921,2.1508568964,1.37074*1.37074,1.31036*1.31036,1.5691069696,1.4555939904,1.16203*1.16203,1.2715945225,1.09428*1.09428,1.0659*1.0659,1.0779838276,1.0382591025,1],M=[1.7782755904,1.35879*1.35879,1.38454*1.38454,1.39497*1.39497,1.40548*1.40548,1.3537*1.3537,1.6999465924,1.22321*1.22321,1.3169398564,1],A=[5.5396212496,2.29259*2.29259,4.9868695969,2.12675*2.12675,2.02545*2.02545,1.87894*1.87894,1.74303*1.74303,1.61695*1.61695,2.2499700001,1.39148*1.39148,1.29083*1.29083,1.19746*1.19746,1.2339655056,1.0779838276];function R(e,t,n,o,r,s){var i;if(t>e){if(!(t<e*b))return e+t;i=t/e}else{if(e>=t*b)return e+t;i=e/t}if(e+=t,o+3<=6){if(i>=_)return e;var a=0|gC.FAST_LOG10_X(i,16);return e*M[a]}var l,c;a=0|gC.FAST_LOG10_X(i,16);return t=0!=s?r.ATH.cb_s[n]*r.ATH.adjust:r.ATH.cb_l[n]*r.ATH.adjust,e<y*t?e>t?(l=1,a<=13&&(l=A[a]),c=gC.FAST_LOG10_X(e/t,10/15),e*((T[a]-l)*c+l)):a>13?e:e*A[a]:e*T[a]}var C=[1.7782755904,1.35879*1.35879,1.38454*1.38454,1.39497*1.39497,1.40548*1.40548,1.3537*1.3537,1.6999465924,1.22321*1.22321,1.3169398564,1];function O(e,t,n){var o;if(e<0&&(e=0),t<0&&(t=0),e<=0)return t;if(t<=0)return e;if(o=t>e?t/e:e/t,n>=-2&&n<=2){if(o>=_)return e+t;var r=0|gC.FAST_LOG10_X(o,16);return(e+t)*C[r]}return o<b?e+t:(e<t&&(e=t),e)}function I(e,t){var n=e.internal_flags;if(n.channels_out>1){for(var o=0;o<cC.SBMAX_l;o++){var r=n.thm[0].l[o],s=n.thm[1].l[o];n.thm[0].l[o]+=s*t,n.thm[1].l[o]+=r*t}for(o=0;o<cC.SBMAX_s;o++)for(var i=0;i<3;i++){r=n.thm[0].s[o][i],s=n.thm[1].s[o][i];n.thm[0].s[o][i]+=s*t,n.thm[1].s[o][i]+=r*t}}}function B(e){for(var t=0;t<cC.SBMAX_l;t++)if(!(e.thm[0].l[t]>1.58*e.thm[1].l[t]||e.thm[1].l[t]>1.58*e.thm[0].l[t])){var n=e.mld_l[t]*e.en[3].l[t],o=Math.max(e.thm[2].l[t],Math.min(e.thm[3].l[t],n));n=e.mld_l[t]*e.en[2].l[t];var r=Math.max(e.thm[3].l[t],Math.min(e.thm[2].l[t],n));e.thm[2].l[t]=o,e.thm[3].l[t]=r}for(t=0;t<cC.SBMAX_s;t++)for(var s=0;s<3;s++)if(!(e.thm[0].s[t][s]>1.58*e.thm[1].s[t][s]||e.thm[1].s[t][s]>1.58*e.thm[0].s[t][s])){n=e.mld_s[t]*e.en[3].s[t][s],o=Math.max(e.thm[2].s[t][s],Math.min(e.thm[3].s[t][s],n));n=e.mld_s[t]*e.en[2].s[t][s];r=Math.max(e.thm[3].s[t][s],Math.min(e.thm[2].s[t][s],n));e.thm[2].s[t][s]=o,e.thm[3].s[t][s]=r}}function P(e,t,n){var o=t,r=Math.pow(10,n);t*=2,o*=2;for(var s=0;s<cC.SBMAX_l;s++){if(d=e.ATH.cb_l[e.bm_l[s]]*r,l=Math.min(Math.max(e.thm[0].l[s],d),Math.max(e.thm[1].l[s],d)),c=Math.max(e.thm[2].l[s],d),u=Math.max(e.thm[3].l[s],d),l*t<c+u){var i=l*o/(c+u);c*=i,u*=i}e.thm[2].l[s]=Math.min(c,e.thm[2].l[s]),e.thm[3].l[s]=Math.min(u,e.thm[3].l[s])}r*=cC.BLKSIZE_s/cC.BLKSIZE;for(s=0;s<cC.SBMAX_s;s++)for(var a=0;a<3;a++){var l,c,u,d;if(d=e.ATH.cb_s[e.bm_s[s]]*r,l=Math.min(Math.max(e.thm[0].s[s][a],d),Math.max(e.thm[1].s[s][a],d)),c=Math.max(e.thm[2].s[s][a],d),u=Math.max(e.thm[3].s[s][a],d),l*t<c+u){i=l*t/(c+u);c*=i,u*=i}e.thm[2].s[s][a]=Math.min(e.thm[2].s[s][a],c),e.thm[3].s[s][a]=Math.min(e.thm[3].s[s][a],u)}}function L(e,t,n,o,r){var s,i,a=0,l=0;for(s=i=0;s<cC.SBMAX_s;++i,++s){var c=e.bo_s[s],u=e.npart_s,d=c<u?c:u;while(i<d)xC(t[i]>=0),xC(n[i]>=0),a+=t[i],l+=n[i],i++;if(e.en[o].s[s][r]=a,e.thm[o].s[s][r]=l,i>=u){++s;break}xC(t[i]>=0),xC(n[i]>=0);var f=e.PSY.bo_s_weight[s],p=1-f;a=f*t[i],l=f*n[i],e.en[o].s[s][r]+=a,e.thm[o].s[s][r]+=l,a=p*t[i],l=p*n[i]}for(;s<cC.SBMAX_s;++s)e.en[o].s[s][r]=0,e.thm[o].s[s][r]=0}function j(e,t,n,o){var r,s,i=0,a=0;for(r=s=0;r<cC.SBMAX_l;++s,++r){var l=e.bo_l[r],c=e.npart_l,u=l<c?l:c;while(s<u)xC(t[s]>=0),xC(n[s]>=0),i+=t[s],a+=n[s],s++;if(e.en[o].l[r]=i,e.thm[o].l[r]=a,s>=c){++r;break}xC(t[s]>=0),xC(n[s]>=0);var d=e.PSY.bo_l_weight[r],f=1-d;i=d*t[s],a=d*n[s],e.en[o].l[r]+=i,e.thm[o].l[r]+=a,i=f*t[s],a=f*n[s]}for(;r<cC.SBMAX_l;++r)e.en[o].l[r]=0,e.thm[o].l[r]=0}function N(e,t,n,o,i,a){var l,c,u=e.internal_flags;for(c=l=0;c<u.npart_s;++c){for(var d=0,f=u.numlines_s[c],p=0;p<f;++p,++l){var h=t[a][l];d+=h}n[c]=d}for(xC(c==u.npart_s),l=c=0;c<u.npart_s;c++){var m=u.s3ind_s[c][0],g=u.s3_ss[l++]*n[m];++m;while(m<=u.s3ind_s[c][1])g+=u.s3_ss[l]*n[m],++l,++m;var v=r*u.nb_s1[i][c];if(o[c]=Math.min(g,v),u.blocktype_old[1&i]==cC.SHORT_TYPE){v=s*u.nb_s2[i][c];var _=o[c];o[c]=Math.min(v,_)}u.nb_s2[i][c]=u.nb_s1[i][c],u.nb_s1[i][c]=g,xC(o[c]>=0)}for(;c<=cC.CBANDS;++c)n[c]=0,o[c]=0}function F(e,t,n,o){var r=e.internal_flags;e.short_blocks!=mC.short_block_coupled||0!=t[0]&&0!=t[1]||(t[0]=t[1]=0);for(var s=0;s<r.channels_out;s++)o[s]=cC.NORM_TYPE,e.short_blocks==mC.short_block_dispensed&&(t[s]=1),e.short_blocks==mC.short_block_forced&&(t[s]=0),0!=t[s]?(xC(r.blocktype_old[s]!=cC.START_TYPE),r.blocktype_old[s]==cC.SHORT_TYPE&&(o[s]=cC.STOP_TYPE)):(o[s]=cC.SHORT_TYPE,r.blocktype_old[s]==cC.NORM_TYPE&&(r.blocktype_old[s]=cC.START_TYPE),r.blocktype_old[s]==cC.STOP_TYPE&&(r.blocktype_old[s]=cC.SHORT_TYPE)),n[s]=r.blocktype_old[s],r.blocktype_old[s]=o[s]}function D(e,t,n){return n>=1?e:n<=0?t:t>0?Math.pow(e/t,n)*t:0}var H=[11.8,13.6,17.2,32,46.5,51.3,57.5,67.1,71.5,84.6,97.6,130];function U(e,n){for(var o=309.07,r=0;r<cC.SBMAX_s-1;r++)for(var s=0;s<3;s++){var i=e.thm.s[r][s];if(i>0){var a=i*n,l=e.en.s[r][s];l>a&&(o+=l>1e10*a?H[r]*(10*t):H[r]*gC.FAST_LOG10(l/a))}}return o}var V=[6.8,5.8,5.8,6.4,6.5,9.9,12.1,14.4,15,18.9,21.6,26.9,34.2,40.2,46.8,56.5,60.7,73.9,85.7,93.4,126.1];function $(e,n){for(var o=281.0575,r=0;r<cC.SBMAX_l-1;r++){var s=e.thm.l[r];if(s>0){var i=s*n,a=e.en.l[r];a>i&&(o+=a>1e10*i?V[r]*(10*t):V[r]*gC.FAST_LOG10(a/i))}}return o}function z(e,t,n,o,r){var s,i;for(s=i=0;s<e.npart_l;++s){var a,l=0,c=0;for(a=0;a<e.numlines_l[s];++a,++i){var u=t[i];l+=u,c<u&&(c=u)}n[s]=l,o[s]=c,r[s]=l*e.rnumlines_l[s],xC(e.rnumlines_l[s]>=0),xC(n[s]>=0),xC(o[s]>=0),xC(r[s]>=0)}}function q(e,t,n,o){var r=S.length-1,s=0,i=n[s]+n[s+1];if(i>0){var a=t[s];a<t[s+1]&&(a=t[s+1]),xC(e.numlines_l[s]+e.numlines_l[s+1]-1>0),i=20*(2*a-i)/(i*(e.numlines_l[s]+e.numlines_l[s+1]-1));var l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;for(s=1;s<e.npart_l-1;s++)if(i=n[s-1]+n[s]+n[s+1],i>0){a=t[s-1];a<t[s]&&(a=t[s]),a<t[s+1]&&(a=t[s+1]),xC(e.numlines_l[s-1]+e.numlines_l[s]+e.numlines_l[s+1]-1>0),i=20*(3*a-i)/(i*(e.numlines_l[s-1]+e.numlines_l[s]+e.numlines_l[s+1]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;if(xC(s==e.npart_l-1),i=n[s-1]+n[s],i>0){a=t[s-1];a<t[s]&&(a=t[s]),xC(e.numlines_l[s-1]+e.numlines_l[s]-1>0),i=20*(2*a-i)/(i*(e.numlines_l[s-1]+e.numlines_l[s]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;xC(s==e.npart_l-1)}var Y=[-1730326e-23,-.01703172,-1349528e-23,.0418072,-673278e-22,-.0876324,-30835e-21,.1863476,-1104424e-22,-.627638];function G(t,n,o,r,s,i,a,l){var c=t.internal_flags;if(r<2)e.fft_long(c,a[l],r,n,o);else if(2==r)for(var u=cC.BLKSIZE-1;u>=0;--u){var d=a[l+0][u],f=a[l+1][u];a[l+0][u]=(d+f)*gC.SQRT2*.5,a[l+1][u]=(d-f)*gC.SQRT2*.5}i[0]=m(a[l+0][0]),i[0]*=i[0];for(u=cC.BLKSIZE/2-1;u>=0;--u){var p=a[l+0][cC.BLKSIZE/2-u],h=a[l+0][cC.BLKSIZE/2+u];i[cC.BLKSIZE/2-u]=m(.5*(p*p+h*h))}var g=0;for(u=11;u<cC.HBLKSIZE;u++)g+=i[u];if(c.tot_ener[r]=g,t.analysis){for(u=0;u<cC.HBLKSIZE;u++)c.pinfo.energy[s][r][u]=c.pinfo.energy_save[r][u],c.pinfo.energy_save[r][u]=i[u];c.pinfo.pe[s][r]=c.pe[r]}}function X(t,n,o,r,s,i,a,l){var c=t.internal_flags;if(0==s&&r<2&&e.fft_short(c,a[l],r,n,o),2==r)for(var u=cC.BLKSIZE_s-1;u>=0;--u){var d=a[l+0][s][u],f=a[l+1][s][u];a[l+0][s][u]=(d+f)*gC.SQRT2*.5,a[l+1][s][u]=(d-f)*gC.SQRT2*.5}i[s][0]=a[l+0][s][0],i[s][0]*=i[s][0];for(u=cC.BLKSIZE_s/2-1;u>=0;--u){var p=a[l+0][s][cC.BLKSIZE_s/2-u],h=a[l+0][s][cC.BLKSIZE_s/2+u];i[s][cC.BLKSIZE_s/2-u]=m(.5*(p*p+h*h))}}function W(e,t,n,o){var r=e.internal_flags;2==e.athaa_loudapprox&&n<2&&(r.loudness_sq[t][n]=r.loudness_sq_save[n],r.loudness_sq_save[n]=g(o,r))}this.L3psycho_anal_ns=function(e,t,r,s,i,a,l,f,h,m){var g,_,b,y,x,w,k,E,T,M,A=e.internal_flags,C=bC([2,cC.BLKSIZE]),O=bC([2,3,cC.BLKSIZE_s]),H=_C(cC.CBANDS+1),V=_C(cC.CBANDS+1),G=_C(cC.CBANDS+2),X=yC(2),W=yC(2),K=bC([2,576]),Z=yC(cC.CBANDS+2),Q=yC(cC.CBANDS+2);for(vC.fill(Q,0),g=A.channels_out,e.mode==tC.JOINT_STEREO&&(g=4),T=e.VBR==pC.vbr_off?0==A.ResvMax?0:A.ResvSize/A.ResvMax*.5:e.VBR==pC.vbr_rh||e.VBR==pC.vbr_mtrh||e.VBR==pC.vbr_mt?.6:1,_=0;_<A.channels_out;_++){var J=t[_],ee=r+576-350-p+192;for(y=0;y<576;y++){var te,ne;for(te=J[ee+y+10],ne=0,x=0;x<(p-1)/2-1;x+=2)te+=Y[x]*(J[ee+y+x]+J[ee+y+p-x]),ne+=Y[x+1]*(J[ee+y+x+1]+J[ee+y+p-x-1]);K[_][y]=te+ne}i[s][_].en.assign(A.en[_]),i[s][_].thm.assign(A.thm[_]),g>2&&(a[s][_].en.assign(A.en[_+2]),a[s][_].thm.assign(A.thm[_+2]))}for(_=0;_<g;_++){var oe,re,se,ie=_C(12),ae=[0,0,0,0],le=_C(12),ce=1,ue=_C(cC.CBANDS),de=_C(cC.CBANDS),fe=[0,0,0,0],pe=_C(cC.HBLKSIZE),he=bC([3,cC.HBLKSIZE_s]);for(xC(A.npart_s<=cC.CBANDS),xC(A.npart_l<=cC.CBANDS),y=0;y<3;y++)ie[y]=A.nsPsy.last_en_subshort[_][y+6],xC(A.nsPsy.last_en_subshort[_][y+4]>0),le[y]=ie[y]/A.nsPsy.last_en_subshort[_][y+4],ae[0]+=ie[y];if(2==_)for(y=0;y<576;y++){var me,ge;me=K[0][y],ge=K[1][y],K[0][y]=me+ge,K[1][y]=me-ge}var ve=K[1&_],_e=0;for(y=0;y<9;y++){for(var be=_e+64,ye=1;_e<be;_e++)ye<Math.abs(ve[_e])&&(ye=Math.abs(ve[_e]));A.nsPsy.last_en_subshort[_][y]=ie[y+3]=ye,ae[1+y/3]+=ye,ye>ie[y+3-2]?(xC(ie[y+3-2]>0),ye/=ie[y+3-2]):ye=ie[y+3-2]>10*ye?ie[y+3-2]/(10*ye):0,le[y+3]=ye}if(e.analysis){var xe=le[0];for(y=1;y<12;y++)xe<le[y]&&(xe=le[y]);A.pinfo.ers[s][_]=A.pinfo.ers_save[_],A.pinfo.ers_save[_]=xe}for(se=3==_?A.nsPsy.attackthre_s:A.nsPsy.attackthre,y=0;y<12;y++)0==fe[y/3]&&le[y]>se&&(fe[y/3]=y%3+1);for(y=1;y<4;y++){var we;ae[y-1]>ae[y]?(xC(ae[y]>0),we=ae[y-1]/ae[y]):(xC(ae[y-1]>0),we=ae[y]/ae[y-1]),we<1.7&&(fe[y]=0,1==y&&(fe[0]=0))}for(0!=fe[0]&&0!=A.nsPsy.lastAttacks[_]&&(fe[0]=0),3!=A.nsPsy.lastAttacks[_]&&fe[0]+fe[1]+fe[2]+fe[3]==0||(ce=0,0!=fe[1]&&0!=fe[0]&&(fe[1]=0),0!=fe[2]&&0!=fe[1]&&(fe[2]=0),0!=fe[3]&&0!=fe[2]&&(fe[3]=0)),_<2?W[_]=ce:0==ce&&(W[0]=W[1]=0),h[_]=A.tot_ener[_],re=O,oe=C,v(e,pe,he,oe,1&_,re,1&_,s,_,t,r),z(A,pe,H,ue,de),q(A,ue,de,Z),E=0;E<3;E++){var ke,Se;for(N(e,he,V,G,_,E),L(A,V,G,_,E),k=0;k<cC.SBMAX_s;k++){if(Se=A.thm[_].s[k][E],Se*=c,fe[E]>=2||1==fe[E+1]){var Ee=0!=E?E-1:2;ye=D(A.thm[_].s[k][Ee],Se,u*T);Se=Math.min(Se,ye)}if(1==fe[E]){Ee=0!=E?E-1:2,ye=D(A.thm[_].s[k][Ee],Se,d*T);Se=Math.min(Se,ye)}else if(0!=E&&3==fe[E-1]||0==E&&3==A.nsPsy.lastAttacks[_]){Ee=2!=E?E+1:0,ye=D(A.thm[_].s[k][Ee],Se,d*T);Se=Math.min(Se,ye)}ke=ie[3*E+3]+ie[3*E+4]+ie[3*E+5],6*ie[3*E+5]<ke&&(Se*=.5,6*ie[3*E+4]<ke&&(Se*=.5)),A.thm[_].s[k][E]=Se}}for(A.nsPsy.lastAttacks[_]=fe[2],w=0,b=0;b<A.npart_l;b++){var Te=A.s3ind[b][0],Me=H[Te]*S[Z[Te]],Ae=A.s3_ll[w++]*Me;while(++Te<=A.s3ind[b][1])Me=H[Te]*S[Z[Te]],Ae=R(Ae,A.s3_ll[w++]*Me,Te,Te-b,A,0);Ae*=.158489319246111,A.blocktype_old[1&_]==cC.SHORT_TYPE?G[b]=Ae:G[b]=D(Math.min(Ae,Math.min(n*A.nb_1[_][b],o*A.nb_2[_][b])),Ae,T),A.nb_2[_][b]=A.nb_1[_][b],A.nb_1[_][b]=Ae}for(;b<=cC.CBANDS;++b)H[b]=0,G[b]=0;j(A,H,G,_)}(e.mode!=tC.STEREO&&e.mode!=tC.JOINT_STEREO||e.interChRatio>0&&I(e,e.interChRatio),e.mode==tC.JOINT_STEREO)&&(B(A),M=e.msfix,Math.abs(M)>0&&P(A,M,e.ATHlower*A.ATH.adjust));for(F(e,W,m,X),_=0;_<g;_++){var Re,Ce,Oe,Ie=0;_>1?(Re=f,Ie=-2,Ce=cC.NORM_TYPE,m[0]!=cC.SHORT_TYPE&&m[1]!=cC.SHORT_TYPE||(Ce=cC.SHORT_TYPE),Oe=a[s][_-2]):(Re=l,Ie=0,Ce=m[_],Oe=i[s][_]),Ce==cC.SHORT_TYPE?Re[Ie+_]=U(Oe,A.masking_lower):Re[Ie+_]=$(Oe,A.masking_lower),e.analysis&&(A.pinfo.pe[s][_]=Re[Ie+_])}return 0};var K=[-1730326e-23,-.01703172,-1349528e-23,.0418072,-673278e-22,-.0876324,-30835e-21,.1863476,-1104424e-22,-.627638];function Z(e,t,n,o,r,s,i,a,l,c){for(var u=bC([2,576]),d=e.internal_flags,f=d.channels_out,h=e.mode==tC.JOINT_STEREO?4:f,m=0;m<f;m++){firbuf=t[m];for(var g=n+576-350-p+192,v=0;v<576;v++){var _,b;_=firbuf[g+v+10],b=0;for(var y=0;y<(p-1)/2-1;y+=2)_+=K[y]*(firbuf[g+v+y]+firbuf[g+v+p-y]),b+=K[y+1]*(firbuf[g+v+y+1]+firbuf[g+v+p-y-1]);u[m][v]=_+b}r[o][m].en.assign(d.en[m]),r[o][m].thm.assign(d.thm[m]),h>2&&(s[o][m].en.assign(d.en[m+2]),s[o][m].thm.assign(d.thm[m+2]))}for(m=0;m<h;m++){var x=_C(12),w=_C(12),k=[0,0,0,0],S=u[1&m],E=0,T=3==m?d.nsPsy.attackthre_s:d.nsPsy.attackthre,M=1;if(2==m)for(v=0,y=576;y>0;++v,--y){var A=u[0][v],R=u[1][v];u[0][v]=A+R,u[1][v]=A-R}for(v=0;v<3;v++)w[v]=d.nsPsy.last_en_subshort[m][v+6],xC(d.nsPsy.last_en_subshort[m][v+4]>0),x[v]=w[v]/d.nsPsy.last_en_subshort[m][v+4],k[0]+=w[v];for(v=0;v<9;v++){for(var C=E+64,O=1;E<C;E++)O<Math.abs(S[E])&&(O=Math.abs(S[E]));d.nsPsy.last_en_subshort[m][v]=w[v+3]=O,k[1+v/3]+=O,O>w[v+3-2]?(xC(w[v+3-2]>0),O/=w[v+3-2]):O=w[v+3-2]>10*O?w[v+3-2]/(10*O):0,x[v+3]=O}for(v=0;v<3;++v){var I=w[3*v+3]+w[3*v+4]+w[3*v+5],B=1;6*w[3*v+5]<I&&(B*=.5,6*w[3*v+4]<I&&(B*=.5)),a[m][v]=B}if(e.analysis){var P=x[0];for(v=1;v<12;v++)P<x[v]&&(P=x[v]);d.pinfo.ers[o][m]=d.pinfo.ers_save[m],d.pinfo.ers_save[m]=P}for(v=0;v<12;v++)0==l[m][v/3]&&x[v]>T&&(l[m][v/3]=v%3+1);for(v=1;v<4;v++){var L=k[v-1],j=k[v],N=Math.max(L,j);N<4e4&&L<1.7*j&&j<1.7*L&&(1==v&&l[m][0]<=l[m][v]&&(l[m][0]=0),l[m][v]=0)}l[m][0]<=d.nsPsy.lastAttacks[m]&&(l[m][0]=0),3!=d.nsPsy.lastAttacks[m]&&l[m][0]+l[m][1]+l[m][2]+l[m][3]==0||(M=0,0!=l[m][1]&&0!=l[m][0]&&(l[m][1]=0),0!=l[m][2]&&0!=l[m][1]&&(l[m][2]=0),0!=l[m][3]&&0!=l[m][2]&&(l[m][3]=0)),m<2?c[m]=M:0==M&&(c[0]=c[1]=0),i[m]=d.tot_ener[m]}}function Q(e,t,n){if(0==n)for(var o=0;o<e.npart_s;o++)e.nb_s2[t][o]=e.nb_s1[t][o],e.nb_s1[t][o]=0}function J(e,t){for(var n=0;n<e.npart_l;n++)e.nb_2[t][n]=e.nb_1[t][n],e.nb_1[t][n]=0}function ee(e,t,n,o){var r=S.length-1,s=0,i=n[s]+n[s+1];if(i>0){var a=t[s];a<t[s+1]&&(a=t[s+1]),xC(e.numlines_s[s]+e.numlines_s[s+1]-1>0),i=20*(2*a-i)/(i*(e.numlines_s[s]+e.numlines_s[s+1]-1));var l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;for(s=1;s<e.npart_s-1;s++)if(i=n[s-1]+n[s]+n[s+1],xC(s+1<e.npart_s),i>0){a=t[s-1];a<t[s]&&(a=t[s]),a<t[s+1]&&(a=t[s+1]),xC(e.numlines_s[s-1]+e.numlines_s[s]+e.numlines_s[s+1]-1>0),i=20*(3*a-i)/(i*(e.numlines_s[s-1]+e.numlines_s[s]+e.numlines_s[s+1]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;if(xC(s==e.npart_s-1),i=n[s-1]+n[s],i>0){a=t[s-1];a<t[s]&&(a=t[s]),xC(e.numlines_s[s-1]+e.numlines_s[s]-1>0),i=20*(2*a-i)/(i*(e.numlines_s[s-1]+e.numlines_s[s]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;xC(s==e.npart_s-1)}function te(e,t,n,o,r,s){var i,a,l,c=e.internal_flags,u=new float[cC.CBANDS],d=_C(cC.CBANDS),f=new int[cC.CBANDS];for(l=a=0;l<c.npart_s;++l){var p=0,h=0,m=c.numlines_s[l];for(i=0;i<m;++i,++a){var g=t[s][a];p+=g,h<g&&(h=g)}n[l]=p,u[l]=h,d[l]=p/m,xC(d[l]>=0)}for(xC(l==c.npart_s);l<cC.CBANDS;++l)u[l]=0,d[l]=0;for(ee(c,u,d,f),a=l=0;l<c.npart_s;l++){var v,_,b,y,x,w=c.s3ind_s[l][0],k=c.s3ind_s[l][1];v=f[w],_=1,y=c.s3_ss[a]*n[w]*S[f[w]],++a,++w;while(w<=k)v+=f[w],_+=1,b=c.s3_ss[a]*n[w]*S[f[w]],y=O(y,b,w-l),++a,++w;v=(1+2*v)/(2*_),x=.5*S[v],y*=x,o[l]=y,c.nb_s2[r][l]=c.nb_s1[r][l],c.nb_s1[r][l]=y,b=u[l],b*=c.minval_s[l],b*=x,o[l]>b&&(o[l]=b),c.masking_lower>1&&(o[l]*=c.masking_lower),o[l]>n[l]&&(o[l]=n[l]),c.masking_lower<1&&(o[l]*=c.masking_lower),xC(o[l]>=0)}for(;l<cC.CBANDS;++l)n[l]=0,o[l]=0}function ne(e,t,r,s,i){var a,l=_C(cC.CBANDS),c=_C(cC.CBANDS),u=yC(cC.CBANDS+2);z(e,t,r,l,c),q(e,l,c,u);var f=0;for(a=0;a<e.npart_l;a++){var p,h,m,g,v=e.s3ind[a][0],_=e.s3ind[a][1],b=0,y=0;b=u[v],y+=1,h=e.s3_ll[f]*r[v]*S[u[v]],++f,++v;while(v<=_)b+=u[v],y+=1,p=e.s3_ll[f]*r[v]*S[u[v]],g=O(h,p,v-a),h=g,++f,++v;if(b=(1+2*b)/(2*y),m=.5*S[b],h*=m,e.blocktype_old[1&i]==cC.SHORT_TYPE){var x=n*e.nb_1[i][a];s[a]=x>0?Math.min(h,x):Math.min(h,r[a]*d)}else{var w=o*e.nb_2[i][a],k=n*e.nb_1[i][a];w<=0&&(w=h),k<=0&&(k=h),x=e.blocktype_old[1&i]==cC.NORM_TYPE?Math.min(k,w):k,s[a]=Math.min(h,x)}e.nb_2[i][a]=e.nb_1[i][a],e.nb_1[i][a]=h,p=l[a],p*=e.minval_l[a],p*=m,s[a]>p&&(s[a]=p),e.masking_lower>1&&(s[a]*=e.masking_lower),s[a]>r[a]&&(s[a]=r[a]),e.masking_lower<1&&(s[a]*=e.masking_lower),xC(s[a]>=0)}for(;a<cC.CBANDS;++a)r[a]=0,s[a]=0}function oe(e,t){var n=e.internal_flags;e.short_blocks!=mC.short_block_coupled||0!=t[0]&&0!=t[1]||(t[0]=t[1]=0);for(var o=0;o<n.channels_out;o++)e.short_blocks==mC.short_block_dispensed&&(t[o]=1),e.short_blocks==mC.short_block_forced&&(t[o]=0)}function re(e,t,n){for(var o=e.internal_flags,r=0;r<o.channels_out;r++){var s=cC.NORM_TYPE;0!=t[r]?(xC(o.blocktype_old[r]!=cC.START_TYPE),o.blocktype_old[r]==cC.SHORT_TYPE&&(s=cC.STOP_TYPE)):(s=cC.SHORT_TYPE,o.blocktype_old[r]==cC.NORM_TYPE&&(o.blocktype_old[r]=cC.START_TYPE),o.blocktype_old[r]==cC.STOP_TYPE&&(o.blocktype_old[r]=cC.SHORT_TYPE)),n[r]=o.blocktype_old[r],o.blocktype_old[r]=s}}function se(e,t,n,o,r,s,i){for(var a,l,c=2*s,u=s>0?Math.pow(10,r):1,d=0;d<i;++d){var f=e[2][d],p=e[3][d],h=t[0][d],m=t[1][d],g=t[2][d],v=t[3][d];if(h<=1.58*m&&m<=1.58*h){var _=n[d]*p,b=n[d]*f;l=Math.max(g,Math.min(v,_)),a=Math.max(v,Math.min(g,b))}else l=g,a=v;if(s>0){var y,x,w=o[d]*u;if(y=Math.min(Math.max(h,w),Math.max(m,w)),g=Math.max(l,w),v=Math.max(a,w),x=g+v,x>0&&y*c<x){var k=y*c/x;g*=k,v*=k}l=Math.min(g,l),a=Math.min(v,a)}l>f&&(l=f),a>p&&(a=p),t[2][d]=l,t[3][d]=a}}function ie(e,t){var n,o=e;return n=o>=0?27*-o:o*t,n<=-72?0:Math.exp(n*h)}function ae(e){var t=0,n=0,o=0;for(o=0;ie(o,e)>1e-20;o-=1);r=o,s=0;while(Math.abs(s-r)>1e-12)o=(s+r)/2,ie(o,e)>0?s=o:r=o;t=r;var r,s;o=0;for(o=0;ie(o,e)>1e-20;o+=1);r=0,s=o;while(Math.abs(s-r)>1e-12)o=(s+r)/2,ie(o,e)>0?r=o:s=o;n=s;var i,a=0,l=1e3;for(i=0;i<=l;++i){o=t+i*(n-t)/l;var c=ie(o,e);a+=c}var u=(l+1)/(a*(n-t));return u}function le(e){var t,n,o,r;return t=e,t*=t>=0?3:1.5,t>=.5&&t<=2.5?(r=t-.5,n=8*(r*r-2*r)):n=0,t+=.474,o=15.811389+7.5*t-17.5*Math.sqrt(1+t*t),o<=-60?0:(t=Math.exp((n+o)*h),t/=.6609193,t)}function ce(e){return e<0&&(e=0),e*=.001,13*Math.atan(.76*e)+3.5*Math.atan(e*e/56.25)}function ue(e,t,n,o,r,s,a,l,c,u,d,f){var p,h=_C(cC.CBANDS+1),m=l/(f>15?1152:384),g=yC(cC.HBLKSIZE);l/=c;var v=0,_=0;for(p=0;p<cC.CBANDS;p++){var b;for(A=ce(l*v),h[p]=l*v,b=v;ce(l*b)-A<i&&b<=c/2;b++);e[p]=b-v,_=p+1;while(v<b)g[v++]=p;if(v>c/2){v=c/2,++p;break}}h[p]=l*v;for(var y=0;y<f;y++){var x,w,k,S,E;k=u[y],S=u[y+1],x=0|Math.floor(.5+d*(k-.5)),x<0&&(x=0),w=0|Math.floor(.5+d*(S-.5)),w>c/2&&(w=c/2),n[y]=(g[x]+g[w])/2,t[y]=g[w];var T=m*S;a[y]=(T-h[t[y]])/(h[t[y]+1]-h[t[y]]),a[y]<0?a[y]=0:a[y]>1&&(a[y]=1),E=ce(l*u[y]*d),E=Math.min(E,15.5)/15.5,s[y]=Math.pow(10,1.25*(1-Math.cos(Math.PI*E))-2.5)}v=0;for(var M=0;M<_;M++){var A,R,C=e[M];A=ce(l*v),R=ce(l*(v+C-1)),o[M]=.5*(A+R),A=ce(l*(v-.5)),R=ce(l*(v+C-.5)),r[M]=R-A,v+=C}return _}function de(e,t,n,o,r,s){var i,a=bC([cC.CBANDS,cC.CBANDS]),l=0;if(s)for(var c=0;c<t;c++)for(i=0;i<t;i++){var u=le(n[c]-n[i])*o[i];a[c][i]=u*r[c]}else for(i=0;i<t;i++){var d=15+Math.min(21/n[i],12),f=ae(d);for(c=0;c<t;c++){u=f*ie(n[c]-n[i],d)*o[i];a[c][i]=u*r[c]}}for(c=0;c<t;c++){for(i=0;i<t;i++)if(a[c][i]>0)break;for(e[c][0]=i,i=t-1;i>0;i--)if(a[c][i]>0)break;e[c][1]=i,l+=e[c][1]-e[c][0]+1}var p=_C(l),h=0;for(c=0;c<t;c++)for(i=e[c][0];i<=e[c][1];i++)p[h++]=a[c][i];return p}function fe(e){var t=ce(e);return t=Math.min(t,15.5)/15.5,Math.pow(10,1.25*(1-Math.cos(Math.PI*t))-2.5)}function pe(e,t){e<-.3&&(e=3410),e/=1e3,e=Math.max(.1,e);var n=3.64*Math.pow(e,-.8)-6.8*Math.exp(-.6*Math.pow(e-3.4,2))+6*Math.exp(-.15*Math.pow(e-8.7,2))+.001*(.6+.04*t)*Math.pow(e,4);return n}this.L3psycho_anal_vbr=function(e,t,n,o,r,s,i,a,l,f){var p,h,m=e.internal_flags,g=_C(cC.HBLKSIZE),v=bC([3,cC.HBLKSIZE_s]),_=bC([2,cC.BLKSIZE]),b=bC([2,3,cC.BLKSIZE_s]),y=bC([4,cC.CBANDS]),x=bC([4,cC.CBANDS]),w=bC([4,3]),k=.6,S=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],E=yC(2),T=e.mode==tC.JOINT_STEREO?4:m.channels_out;Z(e,t,n,o,r,s,l,w,S,E),oe(e,E);for(var M=0;M<T;M++){var A=1&M;p=_,G(e,t,n,M,o,g,p,A),W(e,o,M,g),0!=E[A]?ne(m,g,y[M],x[M],M):J(m,M)}E[0]+E[1]==2&&e.mode==tC.JOINT_STEREO&&se(y,x,m.mld_cb_l,m.ATH.cb_l,e.ATHlower*m.ATH.adjust,e.msfix,m.npart_l);for(M=0;M<T;M++){A=1&M;0!=E[A]&&j(m,y[M],x[M],M)}for(var R=0;R<3;R++){for(M=0;M<T;++M){A=1&M;0!=E[A]?Q(m,M,R):(h=b,X(e,t,n,M,R,v,h,A),te(e,v,y[M],x[M],M,R))}E[0]+E[1]==0&&e.mode==tC.JOINT_STEREO&&se(y,x,m.mld_cb_s,m.ATH.cb_s,e.ATHlower*m.ATH.adjust,e.msfix,m.npart_s);for(M=0;M<T;++M){A=1&M;0==E[A]&&L(m,y[M],x[M],M,R)}}for(M=0;M<T;M++){A=1&M;if(0==E[A])for(var C=0;C<cC.SBMAX_s;C++){var O=_C(3);for(R=0;R<3;R++){var I=m.thm[M].s[C][R];if(I*=c,S[M][R]>=2||1==S[M][R+1]){var B=0!=R?R-1:2,P=D(m.thm[M].s[C][B],I,u*k);I=Math.min(I,P)}else if(1==S[M][R]){B=0!=R?R-1:2,P=D(m.thm[M].s[C][B],I,d*k);I=Math.min(I,P)}else if(0!=R&&3==S[M][R-1]||0==R&&3==m.nsPsy.lastAttacks[M]){B=2!=R?R+1:0,P=D(m.thm[M].s[C][B],I,d*k);I=Math.min(I,P)}I*=w[M][R],O[R]=I}for(R=0;R<3;R++)m.thm[M].s[C][R]=O[R]}}for(M=0;M<T;M++)m.nsPsy.lastAttacks[M]=S[M][2];re(e,E,f);for(M=0;M<T;M++){var N,F,H,V;M>1?(N=a,F=-2,H=cC.NORM_TYPE,f[0]!=cC.SHORT_TYPE&&f[1]!=cC.SHORT_TYPE||(H=cC.SHORT_TYPE),V=s[o][M-2]):(N=i,F=0,H=f[M],V=r[o][M]),H==cC.SHORT_TYPE?N[F+M]=U(V,m.masking_lower):N[F+M]=$(V,m.masking_lower),e.analysis&&(m.pinfo.pe[o][M]=N[F+M])}return 0},this.psymodel_init=function(n){var o,r=n.internal_flags,s=!0,i=13,a=24,c=0,u=0,d=-8.25,p=-4.5,h=_C(cC.CBANDS),m=_C(cC.CBANDS),g=_C(cC.CBANDS),v=n.out_samplerate;switch(n.experimentalZ){default:case 0:s=!0;break;case 1:s=!(n.VBR==pC.vbr_mtrh||n.VBR==pC.vbr_mt);break;case 2:s=!1;break;case 3:i=8,c=-1.75,u=-.0125,d=-8.25,p=-2.25;break}for(r.ms_ener_ratio_old=.25,r.blocktype_old[0]=r.blocktype_old[1]=cC.NORM_TYPE,o=0;o<4;++o){for(var _=0;_<cC.CBANDS;++_)r.nb_1[o][_]=1e20,r.nb_2[o][_]=1e20,r.nb_s1[o][_]=r.nb_s2[o][_]=1;for(var b=0;b<cC.SBMAX_l;b++)r.en[o].l[b]=1e20,r.thm[o].l[b]=1e20;for(_=0;_<3;++_){for(b=0;b<cC.SBMAX_s;b++)r.en[o].s[b][_]=1e20,r.thm[o].s[b][_]=1e20;r.nsPsy.lastAttacks[o]=0}for(_=0;_<9;_++)r.nsPsy.last_en_subshort[o][_]=10}for(r.loudness_sq_save[0]=r.loudness_sq_save[1]=0,r.npart_l=ue(r.numlines_l,r.bo_l,r.bm_l,h,m,r.mld_l,r.PSY.bo_l_weight,v,cC.BLKSIZE,r.scalefac_band.l,cC.BLKSIZE/1152,cC.SBMAX_l),xC(r.npart_l<cC.CBANDS),o=0;o<r.npart_l;o++){var y=c;h[o]>=i&&(y=u*(h[o]-i)/(a-i)+c*(a-h[o])/(a-i)),g[o]=Math.pow(10,y/10),r.numlines_l[o]>0?r.rnumlines_l[o]=1/r.numlines_l[o]:r.rnumlines_l[o]=0}r.s3_ll=de(r.s3ind,r.npart_l,h,m,g,s);var x;_=0;for(o=0;o<r.npart_l;o++){S=hC.MAX_VALUE;for(var w=0;w<r.numlines_l[o];w++,_++){var k=v*_/(1e3*cC.BLKSIZE);T=this.ATHformula(1e3*k,n)-20,T=Math.pow(10,.1*T),T*=r.numlines_l[o],S>T&&(S=T)}r.ATH.cb_l[o]=S,S=20*h[o]/10-20,S>6&&(S=100),S<-15&&(S=-15),S-=8,r.minval_l[o]=Math.pow(10,S/10)*r.numlines_l[o]}for(r.npart_s=ue(r.numlines_s,r.bo_s,r.bm_s,h,m,r.mld_s,r.PSY.bo_s_weight,v,cC.BLKSIZE_s,r.scalefac_band.s,cC.BLKSIZE_s/384,cC.SBMAX_s),xC(r.npart_s<cC.CBANDS),_=0,o=0;o<r.npart_s;o++){var S;y=d;h[o]>=i&&(y=p*(h[o]-i)/(a-i)+d*(a-h[o])/(a-i)),g[o]=Math.pow(10,y/10),S=hC.MAX_VALUE;for(w=0;w<r.numlines_s[o];w++,_++){var T;k=v*_/(1e3*cC.BLKSIZE_s);T=this.ATHformula(1e3*k,n)-20,T=Math.pow(10,.1*T),T*=r.numlines_s[o],S>T&&(S=T)}r.ATH.cb_s[o]=S,S=7*h[o]/12-7,h[o]>12&&(S*=1+3.1*Math.log(1+S)),h[o]<12&&(S*=1+2.3*Math.log(1-S)),S<-15&&(S=-15),S-=8,r.minval_s[o]=Math.pow(10,S/10)*r.numlines_s[o]}r.s3_ss=de(r.s3ind_s,r.npart_s,h,m,g,s),E(),e.init_fft(r),r.decay=Math.exp(-1*t/(l*v/192)),x=f,0!=(2&n.exp_nspsytune)&&(x=1),Math.abs(n.msfix)>0&&(x=n.msfix),n.msfix=x;for(var M=0;M<r.npart_l;M++)r.s3ind[M][1]>r.npart_l-1&&(r.s3ind[M][1]=r.npart_l-1);var A=576*r.mode_gr/v;if(r.ATH.decay=Math.pow(10,-1.2*A),r.ATH.adjust=.01,r.ATH.adjustLimit=1,xC(r.bo_l[cC.SBMAX_l-1]<=r.npart_l),xC(r.bo_s[cC.SBMAX_s-1]<=r.npart_s),-1!=n.ATHtype){var R=n.out_samplerate/cC.BLKSIZE,C=0;for(k=0,o=0;o<cC.BLKSIZE/2;++o)k+=R,r.ATH.eql_w[o]=1/Math.pow(10,this.ATHformula(k,n)/10),C+=r.ATH.eql_w[o];for(C=1/C,o=cC.BLKSIZE/2;--o>=0;)r.ATH.eql_w[o]*=C}for(M=_=0;M<r.npart_s;++M)for(o=0;o<r.numlines_s[M];++o)++_;for(M=_=0;M<r.npart_l;++M)for(o=0;o<r.numlines_l[M];++o)++_;for(_=0,o=0;o<r.npart_l;o++){k=v*(_+r.numlines_l[o]/2)/(1*cC.BLKSIZE);r.mld_cb_l[o]=fe(k),_+=r.numlines_l[o]}for(;o<cC.CBANDS;++o)r.mld_cb_l[o]=1;for(_=0,o=0;o<r.npart_s;o++){k=v*(_+r.numlines_s[o]/2)/(1*cC.BLKSIZE_s);r.mld_cb_s[o]=fe(k),_+=r.numlines_s[o]}for(;o<cC.CBANDS;++o)r.mld_cb_s[o]=1;return 0},this.ATHformula=function(e,t){var n;switch(t.ATHtype){case 0:n=pe(e,9);break;case 1:n=pe(e,-1);break;case 2:n=pe(e,0);break;case 3:n=pe(e,1)+6;break;case 4:n=pe(e,t.ATHcurve);break;default:n=pe(e,0);break}return n}}function kC(){this.class_id=0,this.num_samples=0,this.num_channels=0,this.in_samplerate=0,this.out_samplerate=0,this.scale=0,this.scale_left=0,this.scale_right=0,this.analysis=!1,this.bWriteVbrTag=!1,this.decode_only=!1,this.quality=0,this.mode=tC.STEREO,this.force_ms=!1,this.free_format=!1,this.findReplayGain=!1,this.decode_on_the_fly=!1,this.write_id3tag_automatic=!1,this.brate=0,this.compression_ratio=0,this.copyright=0,this.original=0,this.extension=0,this.emphasis=0,this.error_protection=0,this.strict_ISO=!1,this.disable_reservoir=!1,this.quant_comp=0,this.quant_comp_short=0,this.experimentalY=!1,this.experimentalZ=0,this.exp_nspsytune=0,this.preset=0,this.VBR=null,this.VBR_q_frac=0,this.VBR_q=0,this.VBR_mean_bitrate_kbps=0,this.VBR_min_bitrate_kbps=0,this.VBR_max_bitrate_kbps=0,this.VBR_hard_min=0,this.lowpassfreq=0,this.highpassfreq=0,this.lowpasswidth=0,this.highpasswidth=0,this.maskingadjust=0,this.maskingadjust_short=0,this.ATHonly=!1,this.ATHshort=!1,this.noATH=!1,this.ATHtype=0,this.ATHcurve=0,this.ATHlower=0,this.athaa_type=0,this.athaa_loudapprox=0,this.athaa_sensitivity=0,this.short_blocks=null,this.useTemporal=!1,this.interChRatio=0,this.msfix=0,this.tune=!1,this.tune_value_a=0,this.version=0,this.encoder_delay=0,this.encoder_padding=0,this.framesize=0,this.frameNum=0,this.lame_allocated_gfp=0,this.internal_flags=null}var SC={};SC.SFBMAX=3*cC.SBMAX_s;var EC=zR.new_float,TC=zR.new_int;function MC(){this.xr=EC(576),this.l3_enc=TC(576),this.scalefac=TC(SC.SFBMAX),this.xrpow_max=0,this.part2_3_length=0,this.big_values=0,this.count1=0,this.global_gain=0,this.scalefac_compress=0,this.block_type=0,this.mixed_block_flag=0,this.table_select=TC(3),this.subblock_gain=TC(4),this.region0_count=0,this.region1_count=0,this.preflag=0,this.scalefac_scale=0,this.count1table_select=0,this.part2_length=0,this.sfb_lmax=0,this.sfb_smin=0,this.psy_lmax=0,this.sfbmax=0,this.psymax=0,this.sfbdivide=0,this.width=TC(SC.SFBMAX),this.window=TC(SC.SFBMAX),this.count1bits=0,this.sfb_partition_table=null,this.slen=TC(4),this.max_nonzero_coeff=0;var e=this;function t(e){return new Int32Array(e)}function n(e){return new Float32Array(e)}this.assign=function(o){e.xr=n(o.xr),e.l3_enc=t(o.l3_enc),e.scalefac=t(o.scalefac),e.xrpow_max=o.xrpow_max,e.part2_3_length=o.part2_3_length,e.big_values=o.big_values,e.count1=o.count1,e.global_gain=o.global_gain,e.scalefac_compress=o.scalefac_compress,e.block_type=o.block_type,e.mixed_block_flag=o.mixed_block_flag,e.table_select=t(o.table_select),e.subblock_gain=t(o.subblock_gain),e.region0_count=o.region0_count,e.region1_count=o.region1_count,e.preflag=o.preflag,e.scalefac_scale=o.scalefac_scale,e.count1table_select=o.count1table_select,e.part2_length=o.part2_length,e.sfb_lmax=o.sfb_lmax,e.sfb_smin=o.sfb_smin,e.psy_lmax=o.psy_lmax,e.sfbmax=o.sfbmax,e.psymax=o.psymax,e.sfbdivide=o.sfbdivide,e.width=t(o.width),e.window=t(o.window),e.count1bits=o.count1bits,e.sfb_partition_table=o.sfb_partition_table.slice(0),e.slen=t(o.slen),e.max_nonzero_coeff=o.max_nonzero_coeff}}var AC=zR.new_int;function RC(){this.tt=[[null,null],[null,null]],this.main_data_begin=0,this.private_bits=0,this.resvDrain_pre=0,this.resvDrain_post=0,this.scfsi=[AC(4),AC(4)];for(var e=0;e<2;e++)for(var t=0;t<2;t++)this.tt[e][t]=new MC}var CC=zR.System,OC=zR.new_int;function IC(e,t,n,o){this.l=OC(1+cC.SBMAX_l),this.s=OC(1+cC.SBMAX_s),this.psfb21=OC(1+cC.PSFB21),this.psfb12=OC(1+cC.PSFB12);var r=this.l,s=this.s;4==arguments.length&&(this.arrL=arguments[0],this.arrS=arguments[1],this.arr21=arguments[2],this.arr12=arguments[3],CC.arraycopy(this.arrL,0,r,0,Math.min(this.arrL.length,this.l.length)),CC.arraycopy(this.arrS,0,s,0,Math.min(this.arrS.length,this.s.length)),CC.arraycopy(this.arr21,0,this.psfb21,0,Math.min(this.arr21.length,this.psfb21.length)),CC.arraycopy(this.arr12,0,this.psfb12,0,Math.min(this.arr12.length,this.psfb12.length)))}var BC=zR.new_float,PC=zR.new_float_n,LC=zR.new_int;function jC(){this.last_en_subshort=PC([4,9]),this.lastAttacks=LC(4),this.pefirbuf=BC(19),this.longfact=BC(cC.SBMAX_l),this.shortfact=BC(cC.SBMAX_s),this.attackthre=0,this.attackthre_s=0}function NC(){this.sum=0,this.seen=0,this.want=0,this.pos=0,this.size=0,this.bag=null,this.nVbrNumFrames=0,this.nBytesWritten=0,this.TotalFrameSize=0}var FC=zR.new_byte,DC=zR.new_double,HC=zR.new_float,UC=zR.new_float_n,VC=zR.new_int,$C=zR.new_int_n;function zC(){var e=40;function t(){this.write_timing=0,this.ptr=0,this.buf=FC(e)}this.Class_ID=0,this.lame_encode_frame_init=0,this.iteration_init_init=0,this.fill_buffer_resample_init=0,this.mfbuf=UC([2,zC.MFSIZE]),this.mode_gr=0,this.channels_in=0,this.channels_out=0,this.resample_ratio=0,this.mf_samples_to_encode=0,this.mf_size=0,this.VBR_min_bitrate=0,this.VBR_max_bitrate=0,this.bitrate_index=0,this.samplerate_index=0,this.mode_ext=0,this.lowpass1=0,this.lowpass2=0,this.highpass1=0,this.highpass2=0,this.noise_shaping=0,this.noise_shaping_amp=0,this.substep_shaping=0,this.psymodel=0,this.noise_shaping_stop=0,this.subblock_gain=0,this.use_best_huffman=0,this.full_outer_loop=0,this.l3_side=new RC,this.ms_ratio=HC(2),this.padding=0,this.frac_SpF=0,this.slot_lag=0,this.tag_spec=null,this.nMusicCRC=0,this.OldValue=VC(2),this.CurrentStep=VC(2),this.masking_lower=0,this.bv_scf=VC(576),this.pseudohalf=VC(SC.SFBMAX),this.sfb21_extra=!1,this.inbuf_old=new Array(2),this.blackfilt=new Array(2*zC.BPC+1),this.itime=DC(2),this.sideinfo_len=0,this.sb_sample=UC([2,2,18,cC.SBLIMIT]),this.amp_filter=HC(32),this.header=new Array(zC.MAX_HEADER_BUF),this.h_ptr=0,this.w_ptr=0,this.ancillary_flag=0,this.ResvSize=0,this.ResvMax=0,this.scalefac_band=new IC,this.minval_l=HC(cC.CBANDS),this.minval_s=HC(cC.CBANDS),this.nb_1=UC([4,cC.CBANDS]),this.nb_2=UC([4,cC.CBANDS]),this.nb_s1=UC([4,cC.CBANDS]),this.nb_s2=UC([4,cC.CBANDS]),this.s3_ss=null,this.s3_ll=null,this.decay=0,this.thm=new Array(4),this.en=new Array(4),this.tot_ener=HC(4),this.loudness_sq=UC([2,2]),this.loudness_sq_save=HC(2),this.mld_l=HC(cC.SBMAX_l),this.mld_s=HC(cC.SBMAX_s),this.bm_l=VC(cC.SBMAX_l),this.bo_l=VC(cC.SBMAX_l),this.bm_s=VC(cC.SBMAX_s),this.bo_s=VC(cC.SBMAX_s),this.npart_l=0,this.npart_s=0,this.s3ind=$C([cC.CBANDS,2]),this.s3ind_s=$C([cC.CBANDS,2]),this.numlines_s=VC(cC.CBANDS),this.numlines_l=VC(cC.CBANDS),this.rnumlines_l=HC(cC.CBANDS),this.mld_cb_l=HC(cC.CBANDS),this.mld_cb_s=HC(cC.CBANDS),this.numlines_s_num1=0,this.numlines_l_num1=0,this.pe=HC(4),this.ms_ratio_s_old=0,this.ms_ratio_l_old=0,this.ms_ener_ratio_old=0,this.blocktype_old=VC(2),this.nsPsy=new jC,this.VBR_seek_table=new NC,this.ATH=null,this.PSY=null,this.nogap_total=0,this.nogap_current=0,this.decode_on_the_fly=!0,this.findReplayGain=!0,this.findPeakSample=!0,this.PeakSample=0,this.RadioGain=0,this.AudiophileGain=0,this.rgdata=null,this.noclipGainChange=0,this.noclipScale=0,this.bitrate_stereoMode_Hist=$C([16,5]),this.bitrate_blockType_Hist=$C([16,6]),this.pinfo=null,this.hip=null,this.in_buffer_nsamples=0,this.in_buffer_0=null,this.in_buffer_1=null,this.iteration_loop=null;for(var n=0;n<this.en.length;n++)this.en[n]=new JR;for(n=0;n<this.thm.length;n++)this.thm[n]=new JR;for(n=0;n<this.header.length;n++)this.header[n]=new t}zC.MFSIZE=3456+cC.ENCDELAY-cC.MDCTDELAY,zC.MAX_HEADER_BUF=256,zC.MAX_BITS_PER_CHANNEL=4095,zC.MAX_BITS_PER_GRANULE=7680,zC.BPC=320;var qC=zR.new_float;function YC(){this.useAdjust=0,this.aaSensitivityP=0,this.adjust=0,this.adjustLimit=0,this.decay=0,this.floor=0,this.l=qC(cC.SBMAX_l),this.s=qC(cC.SBMAX_s),this.psfb21=qC(cC.PSFB21),this.psfb12=qC(cC.PSFB12),this.cb_l=qC(cC.CBANDS),this.cb_s=qC(cC.CBANDS),this.eql_w=qC(cC.BLKSIZE/2)}var GC=zR.System,XC=zR.Arrays;function WC(){var e=64.82,t=.95,n=WC.RMS_WINDOW_TIME_NUMERATOR,o=WC.RMS_WINDOW_TIME_DENOMINATOR,r=[[.038575994352,-3.84664617118067,-.02160367184185,7.81501653005538,-.00123395316851,-11.34170355132042,-9291677959e-14,13.05504219327545,-.01655260341619,-12.28759895145294,.02161526843274,9.4829380631979,-.02074045215285,-5.87257861775999,.00594298065125,2.75465861874613,.00306428023191,-.86984376593551,.00012025322027,.13919314567432,.00288463683916],[.0541865640643,-3.47845948550071,-.02911007808948,6.36317777566148,-.00848709379851,-8.54751527471874,-.00851165645469,9.4769360780128,-.00834990904936,-8.81498681370155,.02245293253339,6.85401540936998,-.02596338512915,-4.39470996079559,.01624864962975,2.19611684890774,-.00240879051584,-.75104302451432,.00674613682247,.13149317958808,-.00187763777362],[.15457299681924,-2.37898834973084,-.09331049056315,2.84868151156327,-.06247880153653,-2.64577170229825,.02163541888798,2.23697657451713,-.05588393329856,-1.67148153367602,.04781476674921,1.00595954808547,.00222312597743,-.45953458054983,.03174092540049,.16378164858596,-.01390589421898,-.05032077717131,.00651420667831,.0234789740702,-.00881362733839],[.30296907319327,-1.61273165137247,-.22613988682123,1.0797749225997,-.08587323730772,-.2565625775407,.03282930172664,-.1627671912044,-.00915702933434,-.22638893773906,-.02364141202522,.39120800788284,-.00584456039913,-.22138138954925,.06276101321749,.04500235387352,-828086748e-14,.02005851806501,.00205861885564,.00302439095741,-.02950134983287],[.33642304856132,-1.49858979367799,-.2557224142557,.87350271418188,-.11828570177555,.12205022308084,.11921148675203,-.80774944671438,-.07834489609479,.47854794562326,-.0046997791438,-.12453458140019,-.0058950022444,-.04067510197014,.05724228140351,.08333755284107,.00832043980773,-.04237348025746,-.0163538138454,.02977207319925,-.0176017656815],[.4491525660845,-.62820619233671,-.14351757464547,.29661783706366,-.22784394429749,-.372563729424,-.01419140100551,.00213767857124,.04078262797139,-.42029820170918,-.12398163381748,.22199650564824,.04097565135648,.00613424350682,.10478503600251,.06747620744683,-.01863887810927,.05784820375801,-.03193428438915,.03222754072173,.00541907748707],[.56619470757641,-1.04800335126349,-.75464456939302,.29156311971249,.1624213774223,-.26806001042947,.16744243493672,.00819999645858,-.18901604199609,.45054734505008,.3093178284183,-.33032403314006,-.27562961986224,.0673936833311,.00647310677246,-.04784254229033,.08647503780351,.01639907836189,-.0378898455484,.01807364323573,-.00588215443421],[.58100494960553,-.51035327095184,-.53174909058578,-.31863563325245,-.14289799034253,-.20256413484477,.17520704835522,.1472815413433,.02377945217615,.38952639978999,.15558449135573,-.23313271880868,-.25344790059353,-.05246019024463,.01628462406333,-.02505961724053,.06920467763959,.02442357316099,-.03721611395801,.01818801111503,-.00749618797172],[.53648789255105,-.2504987195602,-.42163034350696,-.43193942311114,-.00275953611929,-.03424681017675,.04267842219415,-.04678328784242,-.10214864179676,.26408300200955,.14590772289388,.15113130533216,-.02459864859345,-.17556493366449,-.11202315195388,-.18823009262115,-.04060034127,.05477720428674,.0478866554818,.0470440968812,-.02217936801134]],s=[[.98621192462708,-1.97223372919527,-1.97242384925416,.97261396931306,.98621192462708],[.98500175787242,-1.96977855582618,-1.97000351574484,.9702284756635,.98500175787242],[.97938932735214,-1.95835380975398,-1.95877865470428,.95920349965459,.97938932735214],[.97531843204928,-1.95002759149878,-1.95063686409857,.95124613669835,.97531843204928],[.97316523498161,-1.94561023566527,-1.94633046996323,.94705070426118,.97316523498161],[.96454515552826,-1.92783286977036,-1.92909031105652,.93034775234268,.96454515552826],[.96009142950541,-1.91858953033784,-1.92018285901082,.92177618768381,.96009142950541],[.95856916599601,-1.9154210807478,-1.91713833199203,.91885558323625,.95856916599601],[.94597685600279,-1.88903307939452,-1.89195371200558,.89487434461664,.94597685600279]];function i(e,t,n,o,r,s){while(0!=r--)n[o]=1e-10+e[t+0]*s[0]-n[o-1]*s[1]+e[t-1]*s[2]-n[o-2]*s[3]+e[t-2]*s[4]-n[o-3]*s[5]+e[t-3]*s[6]-n[o-4]*s[7]+e[t-4]*s[8]-n[o-5]*s[9]+e[t-5]*s[10]-n[o-6]*s[11]+e[t-6]*s[12]-n[o-7]*s[13]+e[t-7]*s[14]-n[o-8]*s[15]+e[t-8]*s[16]-n[o-9]*s[17]+e[t-9]*s[18]-n[o-10]*s[19]+e[t-10]*s[20],++o,++t}function a(e,t,n,o,r,s){while(0!=r--)n[o]=e[t+0]*s[0]-n[o-1]*s[1]+e[t-1]*s[2]-n[o-2]*s[3]+e[t-2]*s[4],++o,++t}function l(e,t){for(var r=0;r<MAX_ORDER;r++)e.linprebuf[r]=e.lstepbuf[r]=e.loutbuf[r]=e.rinprebuf[r]=e.rstepbuf[r]=e.routbuf[r]=0;switch(0|t){case 48e3:e.reqindex=0;break;case 44100:e.reqindex=1;break;case 32e3:e.reqindex=2;break;case 24e3:e.reqindex=3;break;case 22050:e.reqindex=4;break;case 16e3:e.reqindex=5;break;case 12e3:e.reqindex=6;break;case 11025:e.reqindex=7;break;case 8e3:e.reqindex=8;break;default:return INIT_GAIN_ANALYSIS_ERROR}return e.sampleWindow=0|(t*n+o-1)/o,e.lsum=0,e.rsum=0,e.totsamp=0,XC.ill(e.A,0),INIT_GAIN_ANALYSIS_OK}function c(e){return e*e}function u(n,o){var r,s=0;for(r=0;r<o;r++)s+=n[r];if(0==s)return GAIN_NOT_ENOUGH_SAMPLES;var i=0|Math.ceil(s*(1-t));for(r=o;r-- >0;)if((i-=n[r])<=0)break;return e-r/WC.STEPS_per_dB}this.InitGainAnalysis=function(e,t){return l(e,t)!=INIT_GAIN_ANALYSIS_OK?INIT_GAIN_ANALYSIS_ERROR:(e.linpre=MAX_ORDER,e.rinpre=MAX_ORDER,e.lstep=MAX_ORDER,e.rstep=MAX_ORDER,e.lout=MAX_ORDER,e.rout=MAX_ORDER,XC.fill(e.B,0),INIT_GAIN_ANALYSIS_OK)},this.AnalyzeSamples=function(e,t,n,o,l,u,d){var f,p,h,m,g,v,_;if(0==u)return GAIN_ANALYSIS_OK;switch(_=0,g=u,d){case 1:o=t,l=n;break;case 2:break;default:return GAIN_ANALYSIS_ERROR}u<MAX_ORDER?(GC.arraycopy(t,n,e.linprebuf,MAX_ORDER,u),GC.arraycopy(o,l,e.rinprebuf,MAX_ORDER,u)):(GC.arraycopy(t,n,e.linprebuf,MAX_ORDER,MAX_ORDER),GC.arraycopy(o,l,e.rinprebuf,MAX_ORDER,MAX_ORDER));while(g>0){v=g>e.sampleWindow-e.totsamp?e.sampleWindow-e.totsamp:g,_<MAX_ORDER?(f=e.linpre+_,p=e.linprebuf,h=e.rinpre+_,m=e.rinprebuf,v>MAX_ORDER-_&&(v=MAX_ORDER-_)):(f=n+_,p=t,h=l+_,m=o),i(p,f,e.lstepbuf,e.lstep+e.totsamp,v,r[e.reqindex]),i(m,h,e.rstepbuf,e.rstep+e.totsamp,v,r[e.reqindex]),a(e.lstepbuf,e.lstep+e.totsamp,e.loutbuf,e.lout+e.totsamp,v,s[e.reqindex]),a(e.rstepbuf,e.rstep+e.totsamp,e.routbuf,e.rout+e.totsamp,v,s[e.reqindex]),f=e.lout+e.totsamp,p=e.loutbuf,h=e.rout+e.totsamp,m=e.routbuf;var b=v%8;while(0!=b--)e.lsum+=c(p[f++]),e.rsum+=c(m[h++]);b=v/8;while(0!=b--)e.lsum+=c(p[f+0])+c(p[f+1])+c(p[f+2])+c(p[f+3])+c(p[f+4])+c(p[f+5])+c(p[f+6])+c(p[f+7]),f+=8,e.rsum+=c(m[h+0])+c(m[h+1])+c(m[h+2])+c(m[h+3])+c(m[h+4])+c(m[h+5])+c(m[h+6])+c(m[h+7]),h+=8;if(g-=v,_+=v,e.totsamp+=v,e.totsamp==e.sampleWindow){var y=10*WC.STEPS_per_dB*Math.log10((e.lsum+e.rsum)/e.totsamp*.5+1e-37),x=y<=0?0:0|y;x>=e.A.length&&(x=e.A.length-1),e.A[x]++,e.lsum=e.rsum=0,GC.arraycopy(e.loutbuf,e.totsamp,e.loutbuf,0,MAX_ORDER),GC.arraycopy(e.routbuf,e.totsamp,e.routbuf,0,MAX_ORDER),GC.arraycopy(e.lstepbuf,e.totsamp,e.lstepbuf,0,MAX_ORDER),GC.arraycopy(e.rstepbuf,e.totsamp,e.rstepbuf,0,MAX_ORDER),e.totsamp=0}if(e.totsamp>e.sampleWindow)return GAIN_ANALYSIS_ERROR}return u<MAX_ORDER?(GC.arraycopy(e.linprebuf,u,e.linprebuf,0,MAX_ORDER-u),GC.arraycopy(e.rinprebuf,u,e.rinprebuf,0,MAX_ORDER-u),GC.arraycopy(t,n,e.linprebuf,MAX_ORDER-u,u),GC.arraycopy(o,l,e.rinprebuf,MAX_ORDER-u,u)):(GC.arraycopy(t,n+u-MAX_ORDER,e.linprebuf,0,MAX_ORDER),GC.arraycopy(o,l+u-MAX_ORDER,e.rinprebuf,0,MAX_ORDER)),GAIN_ANALYSIS_OK},this.GetTitleGain=function(e){for(var t=u(e.A,e.A.length),n=0;n<e.A.length;n++)e.B[n]+=e.A[n],e.A[n]=0;for(n=0;n<MAX_ORDER;n++)e.linprebuf[n]=e.lstepbuf[n]=e.loutbuf[n]=e.rinprebuf[n]=e.rstepbuf[n]=e.routbuf[n]=0;return e.totsamp=0,e.lsum=e.rsum=0,t}}WC.STEPS_per_dB=100,WC.MAX_dB=120,WC.GAIN_NOT_ENOUGH_SAMPLES=-24601,WC.GAIN_ANALYSIS_ERROR=0,WC.GAIN_ANALYSIS_OK=1,WC.INIT_GAIN_ANALYSIS_ERROR=0,WC.INIT_GAIN_ANALYSIS_OK=1,WC.YULE_ORDER=10,WC.MAX_ORDER=WC.YULE_ORDER,WC.MAX_SAMP_FREQ=48e3,WC.RMS_WINDOW_TIME_NUMERATOR=1,WC.RMS_WINDOW_TIME_DENOMINATOR=20,WC.MAX_SAMPLES_PER_WINDOW=WC.MAX_SAMP_FREQ*WC.RMS_WINDOW_TIME_NUMERATOR/WC.RMS_WINDOW_TIME_DENOMINATOR+1;var KC=zR.new_float,ZC=zR.new_int;function QC(){this.linprebuf=KC(NaN),this.linpre=0,this.lstepbuf=KC(NaN),this.lstep=0,this.loutbuf=KC(NaN),this.lout=0,this.rinprebuf=KC(NaN),this.rinpre=0,this.rstepbuf=KC(NaN),this.rstep=0,this.routbuf=KC(NaN),this.rout=0,this.sampleWindow=0,this.totsamp=0,this.lsum=0,this.rsum=0,this.freqindex=0,this.first=0,this.A=ZC(0),this.B=ZC(0)}function JC(e){this.bits=e}var eO=zR.new_float,tO=zR.new_int,nO=zR.assert;function oO(e){var t=e;this.quantize=t,this.iteration_loop=function(e,t,n,o){var r,s=e.internal_flags,i=eO(SC.SFBMAX),a=eO(576),l=tO(2),c=0,u=s.l3_side,d=new JC(c);this.quantize.rv.ResvFrameBegin(e,d),c=d.bits;for(var f=0;f<s.mode_gr;f++){r=this.quantize.qupvt.on_pe(e,t,l,c,f,f),s.mode_ext==cC.MPG_MD_MS_LR&&(this.quantize.ms_convert(s.l3_side,f),this.quantize.qupvt.reduce_side(l,n[f],c,r));for(var p=0;p<s.channels_out;p++){var h,m,g=u.tt[f][p];g.block_type!=cC.SHORT_TYPE?(h=0,m=s.PSY.mask_adjust-h):(h=0,m=s.PSY.mask_adjust_short-h),s.masking_lower=Math.pow(10,.1*m),this.quantize.init_outer_loop(s,g),this.quantize.init_xrpow(s,g,a)&&(this.quantize.qupvt.calc_xmin(e,o[f][p],g,i),this.quantize.outer_loop(e,g,i,a,p,l[p])),this.quantize.iteration_finish_one(s,f,p),nO(g.part2_3_length<=zC.MAX_BITS_PER_CHANNEL),nO(g.part2_3_length<=l[p])}}this.quantize.rv.ResvFrameEnd(s,c)}}function rO(e,t,n,o){this.xlen=e,this.linmax=t,this.table=n,this.hlen=o}var sO={t1HB:[1,1,1,0],t2HB:[1,2,1,3,1,1,3,2,0],t3HB:[3,2,1,1,1,1,3,2,0],t5HB:[1,2,6,5,3,1,4,4,7,5,7,1,6,1,1,0],t6HB:[7,3,5,1,6,2,3,2,5,4,4,1,3,3,2,0],t7HB:[1,2,10,19,16,10,3,3,7,10,5,3,11,4,13,17,8,4,12,11,18,15,11,2,7,6,9,14,3,1,6,4,5,3,2,0],t8HB:[3,4,6,18,12,5,5,1,2,16,9,3,7,3,5,14,7,3,19,17,15,13,10,4,13,5,8,11,5,1,12,4,4,1,1,0],t9HB:[7,5,9,14,15,7,6,4,5,5,6,7,7,6,8,8,8,5,15,6,9,10,5,1,11,7,9,6,4,1,14,4,6,2,6,0],t10HB:[1,2,10,23,35,30,12,17,3,3,8,12,18,21,12,7,11,9,15,21,32,40,19,6,14,13,22,34,46,23,18,7,20,19,33,47,27,22,9,3,31,22,41,26,21,20,5,3,14,13,10,11,16,6,5,1,9,8,7,8,4,4,2,0],t11HB:[3,4,10,24,34,33,21,15,5,3,4,10,32,17,11,10,11,7,13,18,30,31,20,5,25,11,19,59,27,18,12,5,35,33,31,58,30,16,7,5,28,26,32,19,17,15,8,14,14,12,9,13,14,9,4,1,11,4,6,6,6,3,2,0],t12HB:[9,6,16,33,41,39,38,26,7,5,6,9,23,16,26,11,17,7,11,14,21,30,10,7,17,10,15,12,18,28,14,5,32,13,22,19,18,16,9,5,40,17,31,29,17,13,4,2,27,12,11,15,10,7,4,1,27,12,8,12,6,3,1,0],t13HB:[1,5,14,21,34,51,46,71,42,52,68,52,67,44,43,19,3,4,12,19,31,26,44,33,31,24,32,24,31,35,22,14,15,13,23,36,59,49,77,65,29,40,30,40,27,33,42,16,22,20,37,61,56,79,73,64,43,76,56,37,26,31,25,14,35,16,60,57,97,75,114,91,54,73,55,41,48,53,23,24,58,27,50,96,76,70,93,84,77,58,79,29,74,49,41,17,47,45,78,74,115,94,90,79,69,83,71,50,59,38,36,15,72,34,56,95,92,85,91,90,86,73,77,65,51,44,43,42,43,20,30,44,55,78,72,87,78,61,46,54,37,30,20,16,53,25,41,37,44,59,54,81,66,76,57,54,37,18,39,11,35,33,31,57,42,82,72,80,47,58,55,21,22,26,38,22,53,25,23,38,70,60,51,36,55,26,34,23,27,14,9,7,34,32,28,39,49,75,30,52,48,40,52,28,18,17,9,5,45,21,34,64,56,50,49,45,31,19,12,15,10,7,6,3,48,23,20,39,36,35,53,21,16,23,13,10,6,1,4,2,16,15,17,27,25,20,29,11,17,12,16,8,1,1,0,1],t15HB:[7,12,18,53,47,76,124,108,89,123,108,119,107,81,122,63,13,5,16,27,46,36,61,51,42,70,52,83,65,41,59,36,19,17,15,24,41,34,59,48,40,64,50,78,62,80,56,33,29,28,25,43,39,63,55,93,76,59,93,72,54,75,50,29,52,22,42,40,67,57,95,79,72,57,89,69,49,66,46,27,77,37,35,66,58,52,91,74,62,48,79,63,90,62,40,38,125,32,60,56,50,92,78,65,55,87,71,51,73,51,70,30,109,53,49,94,88,75,66,122,91,73,56,42,64,44,21,25,90,43,41,77,73,63,56,92,77,66,47,67,48,53,36,20,71,34,67,60,58,49,88,76,67,106,71,54,38,39,23,15,109,53,51,47,90,82,58,57,48,72,57,41,23,27,62,9,86,42,40,37,70,64,52,43,70,55,42,25,29,18,11,11,118,68,30,55,50,46,74,65,49,39,24,16,22,13,14,7,91,44,39,38,34,63,52,45,31,52,28,19,14,8,9,3,123,60,58,53,47,43,32,22,37,24,17,12,15,10,2,1,71,37,34,30,28,20,17,26,21,16,10,6,8,6,2,0],t16HB:[1,5,14,44,74,63,110,93,172,149,138,242,225,195,376,17,3,4,12,20,35,62,53,47,83,75,68,119,201,107,207,9,15,13,23,38,67,58,103,90,161,72,127,117,110,209,206,16,45,21,39,69,64,114,99,87,158,140,252,212,199,387,365,26,75,36,68,65,115,101,179,164,155,264,246,226,395,382,362,9,66,30,59,56,102,185,173,265,142,253,232,400,388,378,445,16,111,54,52,100,184,178,160,133,257,244,228,217,385,366,715,10,98,48,91,88,165,157,148,261,248,407,397,372,380,889,884,8,85,84,81,159,156,143,260,249,427,401,392,383,727,713,708,7,154,76,73,141,131,256,245,426,406,394,384,735,359,710,352,11,139,129,67,125,247,233,229,219,393,743,737,720,885,882,439,4,243,120,118,115,227,223,396,746,742,736,721,712,706,223,436,6,202,224,222,218,216,389,386,381,364,888,443,707,440,437,1728,4,747,211,210,208,370,379,734,723,714,1735,883,877,876,3459,865,2,377,369,102,187,726,722,358,711,709,866,1734,871,3458,870,434,0,12,10,7,11,10,17,11,9,13,12,10,7,5,3,1,3],t24HB:[15,13,46,80,146,262,248,434,426,669,653,649,621,517,1032,88,14,12,21,38,71,130,122,216,209,198,327,345,319,297,279,42,47,22,41,74,68,128,120,221,207,194,182,340,315,295,541,18,81,39,75,70,134,125,116,220,204,190,178,325,311,293,271,16,147,72,69,135,127,118,112,210,200,188,352,323,306,285,540,14,263,66,129,126,119,114,214,202,192,180,341,317,301,281,262,12,249,123,121,117,113,215,206,195,185,347,330,308,291,272,520,10,435,115,111,109,211,203,196,187,353,332,313,298,283,531,381,17,427,212,208,205,201,193,186,177,169,320,303,286,268,514,377,16,335,199,197,191,189,181,174,333,321,305,289,275,521,379,371,11,668,184,183,179,175,344,331,314,304,290,277,530,383,373,366,10,652,346,171,168,164,318,309,299,287,276,263,513,375,368,362,6,648,322,316,312,307,302,292,284,269,261,512,376,370,364,359,4,620,300,296,294,288,282,273,266,515,380,374,369,365,361,357,2,1033,280,278,274,267,264,259,382,378,372,367,363,360,358,356,0,43,20,19,17,15,13,11,9,7,6,4,7,5,3,1,3],t32HB:[1,10,8,20,12,20,16,32,14,12,24,0,28,16,24,16],t33HB:[15,28,26,48,22,40,36,64,14,24,20,32,12,16,8,0],t1l:[1,4,3,5],t2l:[1,4,7,4,5,7,6,7,8],t3l:[2,3,7,4,4,7,6,7,8],t5l:[1,4,7,8,4,5,8,9,7,8,9,10,8,8,9,10],t6l:[3,4,6,8,4,4,6,7,5,6,7,8,7,7,8,9],t7l:[1,4,7,9,9,10,4,6,8,9,9,10,7,7,9,10,10,11,8,9,10,11,11,11,8,9,10,11,11,12,9,10,11,12,12,12],t8l:[2,4,7,9,9,10,4,4,6,10,10,10,7,6,8,10,10,11,9,10,10,11,11,12,9,9,10,11,12,12,10,10,11,11,13,13],t9l:[3,4,6,7,9,10,4,5,6,7,8,10,5,6,7,8,9,10,7,7,8,9,9,10,8,8,9,9,10,11,9,9,10,10,11,11],t10l:[1,4,7,9,10,10,10,11,4,6,8,9,10,11,10,10,7,8,9,10,11,12,11,11,8,9,10,11,12,12,11,12,9,10,11,12,12,12,12,12,10,11,12,12,13,13,12,13,9,10,11,12,12,12,13,13,10,10,11,12,12,13,13,13],t11l:[2,4,6,8,9,10,9,10,4,5,6,8,10,10,9,10,6,7,8,9,10,11,10,10,8,8,9,11,10,12,10,11,9,10,10,11,11,12,11,12,9,10,11,12,12,13,12,13,9,9,9,10,11,12,12,12,9,9,10,11,12,12,12,12],t12l:[4,4,6,8,9,10,10,10,4,5,6,7,9,9,10,10,6,6,7,8,9,10,9,10,7,7,8,8,9,10,10,10,8,8,9,9,10,10,10,11,9,9,10,10,10,11,10,11,9,9,9,10,10,11,11,12,10,10,10,11,11,11,11,12],t13l:[1,5,7,8,9,10,10,11,10,11,12,12,13,13,14,14,4,6,8,9,10,10,11,11,11,11,12,12,13,14,14,14,7,8,9,10,11,11,12,12,11,12,12,13,13,14,15,15,8,9,10,11,11,12,12,12,12,13,13,13,13,14,15,15,9,9,11,11,12,12,13,13,12,13,13,14,14,15,15,16,10,10,11,12,12,12,13,13,13,13,14,13,15,15,16,16,10,11,12,12,13,13,13,13,13,14,14,14,15,15,16,16,11,11,12,13,13,13,14,14,14,14,15,15,15,16,18,18,10,10,11,12,12,13,13,14,14,14,14,15,15,16,17,17,11,11,12,12,13,13,13,15,14,15,15,16,16,16,18,17,11,12,12,13,13,14,14,15,14,15,16,15,16,17,18,19,12,12,12,13,14,14,14,14,15,15,15,16,17,17,17,18,12,13,13,14,14,15,14,15,16,16,17,17,17,18,18,18,13,13,14,15,15,15,16,16,16,16,16,17,18,17,18,18,14,14,14,15,15,15,17,16,16,19,17,17,17,19,18,18,13,14,15,16,16,16,17,16,17,17,18,18,21,20,21,18],t15l:[3,5,6,8,8,9,10,10,10,11,11,12,12,12,13,14,5,5,7,8,9,9,10,10,10,11,11,12,12,12,13,13,6,7,7,8,9,9,10,10,10,11,11,12,12,13,13,13,7,8,8,9,9,10,10,11,11,11,12,12,12,13,13,13,8,8,9,9,10,10,11,11,11,11,12,12,12,13,13,13,9,9,9,10,10,10,11,11,11,11,12,12,13,13,13,14,10,9,10,10,10,11,11,11,11,12,12,12,13,13,14,14,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,14,10,10,10,11,11,11,11,12,12,12,12,13,13,14,14,14,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,11,11,11,11,12,12,12,12,12,13,13,13,13,14,15,14,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,12,12,11,12,12,12,13,13,13,13,13,13,14,14,15,15,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,13,13,13,13,13,13,13,13,14,14,14,14,15,15,14,15,13,13,13,13,13,13,13,14,14,14,14,14,15,15,15,15],t16_5l:[1,5,7,9,10,10,11,11,12,12,12,13,13,13,14,11,4,6,8,9,10,11,11,11,12,12,12,13,14,13,14,11,7,8,9,10,11,11,12,12,13,12,13,13,13,14,14,12,9,9,10,11,11,12,12,12,13,13,14,14,14,15,15,13,10,10,11,11,12,12,13,13,13,14,14,14,15,15,15,12,10,10,11,11,12,13,13,14,13,14,14,15,15,15,16,13,11,11,11,12,13,13,13,13,14,14,14,14,15,15,16,13,11,11,12,12,13,13,13,14,14,15,15,15,15,17,17,13,11,12,12,13,13,13,14,14,15,15,15,15,16,16,16,13,12,12,12,13,13,14,14,15,15,15,15,16,15,16,15,14,12,13,12,13,14,14,14,14,15,16,16,16,17,17,16,13,13,13,13,13,14,14,15,16,16,16,16,16,16,15,16,14,13,14,14,14,14,15,15,15,15,17,16,16,16,16,18,14,15,14,14,14,15,15,16,16,16,18,17,17,17,19,17,14,14,15,13,14,16,16,15,16,16,17,18,17,19,17,16,14,11,11,11,12,12,13,13,13,14,14,14,14,14,14,14,12],t16l:[1,5,7,9,10,10,11,11,12,12,12,13,13,13,14,10,4,6,8,9,10,11,11,11,12,12,12,13,14,13,14,10,7,8,9,10,11,11,12,12,13,12,13,13,13,14,14,11,9,9,10,11,11,12,12,12,13,13,14,14,14,15,15,12,10,10,11,11,12,12,13,13,13,14,14,14,15,15,15,11,10,10,11,11,12,13,13,14,13,14,14,15,15,15,16,12,11,11,11,12,13,13,13,13,14,14,14,14,15,15,16,12,11,11,12,12,13,13,13,14,14,15,15,15,15,17,17,12,11,12,12,13,13,13,14,14,15,15,15,15,16,16,16,12,12,12,12,13,13,14,14,15,15,15,15,16,15,16,15,13,12,13,12,13,14,14,14,14,15,16,16,16,17,17,16,12,13,13,13,13,14,14,15,16,16,16,16,16,16,15,16,13,13,14,14,14,14,15,15,15,15,17,16,16,16,16,18,13,15,14,14,14,15,15,16,16,16,18,17,17,17,19,17,13,14,15,13,14,16,16,15,16,16,17,18,17,19,17,16,13,10,10,10,11,11,12,12,12,13,13,13,13,13,13,13,10],t24l:[4,5,7,8,9,10,10,11,11,12,12,12,12,12,13,10,5,6,7,8,9,10,10,11,11,11,12,12,12,12,12,10,7,7,8,9,9,10,10,11,11,11,11,12,12,12,13,9,8,8,9,9,10,10,10,11,11,11,11,12,12,12,12,9,9,9,9,10,10,10,10,11,11,11,12,12,12,12,13,9,10,9,10,10,10,10,11,11,11,11,12,12,12,12,12,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,9,11,10,10,10,11,11,11,11,12,12,12,12,12,13,13,10,11,11,11,11,11,11,11,11,11,12,12,12,12,13,13,10,11,11,11,11,11,11,11,12,12,12,12,12,13,13,13,10,12,11,11,11,11,12,12,12,12,12,12,13,13,13,13,10,12,12,11,11,11,12,12,12,12,12,12,13,13,13,13,10,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,10,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,10,13,12,12,12,12,12,12,13,13,13,13,13,13,13,13,10,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,6],t32l:[1,5,5,7,5,8,7,9,5,7,7,9,7,9,9,10],t33l:[4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]};sO.ht=[new rO(0,0,null,null),new rO(2,0,sO.t1HB,sO.t1l),new rO(3,0,sO.t2HB,sO.t2l),new rO(3,0,sO.t3HB,sO.t3l),new rO(0,0,null,null),new rO(4,0,sO.t5HB,sO.t5l),new rO(4,0,sO.t6HB,sO.t6l),new rO(6,0,sO.t7HB,sO.t7l),new rO(6,0,sO.t8HB,sO.t8l),new rO(6,0,sO.t9HB,sO.t9l),new rO(8,0,sO.t10HB,sO.t10l),new rO(8,0,sO.t11HB,sO.t11l),new rO(8,0,sO.t12HB,sO.t12l),new rO(16,0,sO.t13HB,sO.t13l),new rO(0,0,null,sO.t16_5l),new rO(16,0,sO.t15HB,sO.t15l),new rO(1,1,sO.t16HB,sO.t16l),new rO(2,3,sO.t16HB,sO.t16l),new rO(3,7,sO.t16HB,sO.t16l),new rO(4,15,sO.t16HB,sO.t16l),new rO(6,63,sO.t16HB,sO.t16l),new rO(8,255,sO.t16HB,sO.t16l),new rO(10,1023,sO.t16HB,sO.t16l),new rO(13,8191,sO.t16HB,sO.t16l),new rO(4,15,sO.t24HB,sO.t24l),new rO(5,31,sO.t24HB,sO.t24l),new rO(6,63,sO.t24HB,sO.t24l),new rO(7,127,sO.t24HB,sO.t24l),new rO(8,255,sO.t24HB,sO.t24l),new rO(9,511,sO.t24HB,sO.t24l),new rO(11,2047,sO.t24HB,sO.t24l),new rO(13,8191,sO.t24HB,sO.t24l),new rO(0,0,sO.t32HB,sO.t32l),new rO(0,0,sO.t33HB,sO.t33l)],sO.largetbl=[65540,327685,458759,589832,655369,655370,720906,720907,786443,786444,786444,851980,851980,851980,917517,655370,262149,393222,524295,589832,655369,720906,720906,720907,786443,786443,786444,851980,917516,851980,917516,655370,458759,524295,589832,655369,720905,720906,786442,786443,851979,786443,851979,851980,851980,917516,917517,720905,589832,589832,655369,720905,720906,786442,786442,786443,851979,851979,917515,917516,917516,983052,983052,786441,655369,655369,720905,720906,786442,786442,851978,851979,851979,917515,917516,917516,983052,983052,983053,720905,655370,655369,720906,720906,786442,851978,851979,917515,851979,917515,917516,983052,983052,983052,1048588,786441,720906,720906,720906,786442,851978,851979,851979,851979,917515,917516,917516,917516,983052,983052,1048589,786441,720907,720906,786442,786442,851979,851979,851979,917515,917516,983052,983052,983052,983052,1114125,1114125,786442,720907,786443,786443,851979,851979,851979,917515,917515,983051,983052,983052,983052,1048588,1048589,1048589,786442,786443,786443,786443,851979,851979,917515,917515,983052,983052,983052,983052,1048588,983053,1048589,983053,851978,786444,851979,786443,851979,917515,917516,917516,917516,983052,1048588,1048588,1048589,1114125,1114125,1048589,786442,851980,851980,851979,851979,917515,917516,983052,1048588,1048588,1048588,1048588,1048589,1048589,983053,1048589,851978,851980,917516,917516,917516,917516,983052,983052,983052,983052,1114124,1048589,1048589,1048589,1048589,1179661,851978,983052,917516,917516,917516,983052,983052,1048588,1048588,1048589,1179661,1114125,1114125,1114125,1245197,1114125,851978,917517,983052,851980,917516,1048588,1048588,983052,1048589,1048589,1114125,1179661,1114125,1245197,1114125,1048589,851978,655369,655369,655369,720905,720905,786441,786441,786441,851977,851977,851977,851978,851978,851978,851978,655366],sO.table23=[65538,262147,458759,262148,327684,458759,393222,458759,524296],sO.table56=[65539,262148,458758,524296,262148,327684,524294,589831,458757,524294,589831,655368,524295,524295,589832,655369],sO.bitrate_table=[[0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1],[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],[0,8,16,24,32,40,48,56,64,-1,-1,-1,-1,-1,-1,-1]],sO.samplerate_table=[[22050,24e3,16e3,-1],[44100,48e3,32e3,-1],[11025,12e3,8e3,-1]],sO.scfsi_band=[0,6,11,16,21];var iO=zR.VbrMode,aO=zR.Float,lO=zR.Util,cO=zR.new_float,uO=zR.new_int,dO=zR.assert;function fO(){var e=null,t=null,n=null;function o(e){return d[e+fO.Q_MAX2]}this.setModules=function(o,r,s){e=o,t=r,n=s},this.IPOW20=function(e){return f[e]};var r=2220446049250313e-31,s=fO.IXMAX_VAL,i=s+2,a=fO.Q_MAX,l=fO.Q_MAX2,c=100;this.nr_of_sfb_block=[[[6,5,5,5],[9,9,9,9],[6,9,9,9]],[[6,5,7,3],[9,9,12,6],[6,9,12,6]],[[11,10,0,0],[18,18,0,0],[15,18,0,0]],[[7,7,7,0],[12,12,12,0],[6,15,12,0]],[[6,6,6,3],[12,9,9,6],[6,12,9,6]],[[8,8,5,0],[15,12,9,0],[6,18,9,0]]];var u=[0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0];this.pretab=u,this.sfBandIndex=[new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,24,32,42,56,74,100,132,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576],[0,4,8,12,18,26,36,48,62,80,104,136,180,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,26,36,48,62,80,104,134,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576],[0,4,8,12,16,22,30,40,52,66,84,106,136,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576],[0,4,8,12,16,22,28,38,50,64,80,100,126,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576],[0,4,8,12,16,22,30,42,58,78,104,138,180,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,26,36,48,62,80,104,134,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,26,36,48,62,80,104,134,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576],[0,8,16,24,36,52,72,96,124,160,162,164,166,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0])];var d=cO(a+l+1),f=cO(a),p=cO(i),h=cO(i);function m(e,t){var o=n.ATHformula(t,e);return o-=c,o=Math.pow(10,o/10+e.ATHlower),o}function g(e){for(var t=e.internal_flags.ATH.l,n=e.internal_flags.ATH.psfb21,o=e.internal_flags.ATH.s,r=e.internal_flags.ATH.psfb12,s=e.internal_flags,i=e.out_samplerate,a=0;a<cC.SBMAX_l;a++){var l=s.scalefac_band.l[a],c=s.scalefac_band.l[a+1];t[a]=aO.MAX_VALUE;for(var u=l;u<c;u++){var d=u*i/1152,f=m(e,d);t[a]=Math.min(t[a],f)}}for(a=0;a<cC.PSFB21;a++){l=s.scalefac_band.psfb21[a],c=s.scalefac_band.psfb21[a+1];n[a]=aO.MAX_VALUE;for(u=l;u<c;u++){d=u*i/1152,f=m(e,d);n[a]=Math.min(n[a],f)}}for(a=0;a<cC.SBMAX_s;a++){l=s.scalefac_band.s[a],c=s.scalefac_band.s[a+1];o[a]=aO.MAX_VALUE;for(u=l;u<c;u++){d=u*i/384,f=m(e,d);o[a]=Math.min(o[a],f)}o[a]*=s.scalefac_band.s[a+1]-s.scalefac_band.s[a]}for(a=0;a<cC.PSFB12;a++){l=s.scalefac_band.psfb12[a],c=s.scalefac_band.psfb12[a+1];r[a]=aO.MAX_VALUE;for(u=l;u<c;u++){d=u*i/384,f=m(e,d);r[a]=Math.min(r[a],f)}r[a]*=s.scalefac_band.s[13]-s.scalefac_band.s[12]}if(e.noATH){for(a=0;a<cC.SBMAX_l;a++)t[a]=1e-20;for(a=0;a<cC.PSFB21;a++)n[a]=1e-20;for(a=0;a<cC.SBMAX_s;a++)o[a]=1e-20;for(a=0;a<cC.PSFB12;a++)r[a]=1e-20}s.ATH.floor=10*Math.log10(m(e,-1))}function v(e){this.s=e}this.adj43=h,this.iteration_init=function(t){var n,o=t.internal_flags,r=o.l3_side;if(0==o.iteration_init_init){for(o.iteration_init_init=1,r.main_data_begin=0,g(t),p[0]=0,n=1;n<i;n++)p[n]=Math.pow(n,4/3);for(n=0;n<i-1;n++)h[n]=n+1-Math.pow(.5*(p[n]+p[n+1]),.75);for(h[n]=.5,n=0;n<a;n++)f[n]=Math.pow(2,-.1875*(n-210));for(n=0;n<=a+l;n++)d[n]=Math.pow(2,.25*(n-210-l));var s,c,u,m;for(e.huffman_init(o),n=t.exp_nspsytune>>2&63,n>=32&&(n-=64),s=Math.pow(10,n/4/10),n=t.exp_nspsytune>>8&63,n>=32&&(n-=64),c=Math.pow(10,n/4/10),n=t.exp_nspsytune>>14&63,n>=32&&(n-=64),u=Math.pow(10,n/4/10),n=t.exp_nspsytune>>20&63,n>=32&&(n-=64),m=u*Math.pow(10,n/4/10),n=0;n<cC.SBMAX_l;n++){v=n<=6?s:n<=13?c:n<=20?u:m,o.nsPsy.longfact[n]=v}for(n=0;n<cC.SBMAX_s;n++){var v;v=n<=5?s:n<=10?c:n<=11?u:m,o.nsPsy.shortfact[n]=v}}},this.on_pe=function(e,n,o,r,s,i){var a,l,c=e.internal_flags,u=0,d=uO(2),f=new JC(u),p=t.ResvMaxBits(e,r,f,i);u=f.bits;var h=u+p;for(h>zC.MAX_BITS_PER_GRANULE&&(h=zC.MAX_BITS_PER_GRANULE),a=0,l=0;l<c.channels_out;++l)o[l]=Math.min(zC.MAX_BITS_PER_CHANNEL,u/c.channels_out),d[l]=0|o[l]*n[s][l]/700-o[l],d[l]>3*r/4&&(d[l]=3*r/4),d[l]<0&&(d[l]=0),d[l]+o[l]>zC.MAX_BITS_PER_CHANNEL&&(d[l]=Math.max(0,zC.MAX_BITS_PER_CHANNEL-o[l])),a+=d[l];if(a>p)for(l=0;l<c.channels_out;++l)d[l]=p*d[l]/a;for(l=0;l<c.channels_out;++l)o[l]+=d[l],p-=d[l];for(a=0,l=0;l<c.channels_out;++l)a+=o[l];if(a>zC.MAX_BITS_PER_GRANULE){for(l=0;l<c.channels_out;++l)o[l]*=zC.MAX_BITS_PER_GRANULE,o[l]/=a,o[l]}return h},this.reduce_side=function(e,t,n,o){dO(e[0]+e[1]<=zC.MAX_BITS_PER_GRANULE);var r=.33*(.5-t)/.5;r<0&&(r=0),r>.5&&(r=.5);var s=0|.5*r*(e[0]+e[1]);s>zC.MAX_BITS_PER_CHANNEL-e[0]&&(s=zC.MAX_BITS_PER_CHANNEL-e[0]),s<0&&(s=0),e[1]>=125&&(e[1]-s>125?(e[0]<n&&(e[0]+=s),e[1]-=s):(e[0]+=e[1]-125,e[1]=125)),s=e[0]+e[1],s>o&&(e[0]=o*e[0]/s,e[1]=o*e[1]/s),dO(e[0]<=zC.MAX_BITS_PER_CHANNEL),dO(e[1]<=zC.MAX_BITS_PER_CHANNEL),dO(e[0]+e[1]<=zC.MAX_BITS_PER_GRANULE)},this.athAdjust=function(e,t,n){var o=90.30873362,r=94.82444863,s=lO.FAST_LOG10_X(t,10),i=e*e,a=0;return s-=n,i>1e-20&&(a=1+lO.FAST_LOG10_X(i,10/o)),a<0&&(a=0),s*=a,s+=n+o-r,Math.pow(10,.1*s)},this.calc_xmin=function(e,t,n,o){var s,i=0,a=e.internal_flags,l=0,c=0,u=a.ATH,d=n.xr,f=e.VBR==iO.vbr_mtrh?1:0,p=a.masking_lower;for(e.VBR!=iO.vbr_mtrh&&e.VBR!=iO.vbr_mt||(p=1),s=0;s<n.psy_lmax;s++){w=e.VBR==iO.vbr_rh||e.VBR==iO.vbr_mtrh?athAdjust(u.adjust,u.l[s],u.floor):u.adjust*u.l[s],b=n.width[s],k=w/b,S=r,T=b>>1,E=0;do{M=d[l]*d[l],E+=M,S+=M<k?M:k,l++,A=d[l]*d[l],E+=A,S+=A<k?A:k,l++}while(--T>0);if(E>w&&c++,s==cC.SBPSY_l){var h=w*a.nsPsy.longfact[s];S<h&&(S=h)}if(0!=f&&(w=S),!e.ATHonly){var m=t.en.l[s];if(m>0)h=E*t.thm.l[s]*p/m,0!=f&&(h*=a.nsPsy.longfact[s]),w<h&&(w=h)}o[i++]=0!=f?w:w*a.nsPsy.longfact[s]}var g=575;if(n.block_type!=cC.SHORT_TYPE){var v=576;while(0!=v--&&SO.EQ(d[v],0))g=v}n.max_nonzero_coeff=g;for(var _=n.sfb_smin;s<n.psymax;_++,s+=3){var b,y,x;for(x=e.VBR==iO.vbr_rh||e.VBR==iO.vbr_mtrh?athAdjust(u.adjust,u.s[_],u.floor):u.adjust*u.s[_],b=n.width[s],y=0;y<3;y++){var w,k,S,E=0,T=b>>1;k=x/b,S=r;do{var M,A;M=d[l]*d[l],E+=M,S+=M<k?M:k,l++,A=d[l]*d[l],E+=A,S+=A<k?A:k,l++}while(--T>0);if(E>x&&c++,_==cC.SBPSY_s){h=x*a.nsPsy.shortfact[_];S<h&&(S=h)}if(w=0!=f?S:x,!e.ATHonly&&!e.ATHshort){m=t.en.s[_][y];if(m>0)h=E*t.thm.s[_][y]*p/m,0!=f&&(h*=a.nsPsy.shortfact[_]),w<h&&(w=h)}o[i++]=0!=f?w:w*a.nsPsy.shortfact[_]}e.useTemporal&&(o[i-3]>o[i-3+1]&&(o[i-3+1]+=(o[i-3]-o[i-3+1])*a.decay),o[i-3+1]>o[i-3+2]&&(o[i-3+2]+=(o[i-3+1]-o[i-3+2])*a.decay))}return c},this.calc_noise_core=function(e,t,n,o){var r=0,s=t.s,i=e.l3_enc;if(s>e.count1)while(0!=n--){l=e.xr[s],s++,r+=l*l,l=e.xr[s],s++,r+=l*l}else if(s>e.big_values){var a=cO(2);a[0]=0,a[1]=o;while(0!=n--){l=Math.abs(e.xr[s])-a[i[s]],s++,r+=l*l,l=Math.abs(e.xr[s])-a[i[s]],s++,r+=l*l}}else while(0!=n--){var l;l=Math.abs(e.xr[s])-p[i[s]]*o,s++,r+=l*l,l=Math.abs(e.xr[s])-p[i[s]]*o,s++,r+=l*l}return t.s=s,r},this.calc_noise=function(e,t,n,r,s){var i,a,l=0,c=0,d=0,f=0,p=0,h=-20,m=0,g=e.scalefac,_=0;for(r.over_SSD=0,i=0;i<e.psymax;i++){var b,y=e.global_gain-(g[_++]+(0!=e.preflag?u[i]:0)<<e.scalefac_scale+1)-8*e.subblock_gain[e.window[i]],x=0;if(null!=s&&s.step[i]==y)x=s.noise[i],m+=e.width[i],n[l++]=x/t[c++],x=s.noise_log[i];else{var w,k=o(y);if(a=e.width[i]>>1,m+e.width[i]>e.max_nonzero_coeff)w=e.max_nonzero_coeff-m+1,a=w>0?w>>1:0;var S=new v(m);x=this.calc_noise_core(e,S,a,k),m=S.s,null!=s&&(s.step[i]=y,s.noise[i]=x),x=n[l++]=x/t[c++],x=lO.FAST_LOG10(Math.max(x,1e-20)),null!=s&&(s.noise_log[i]=x)}if(null!=s&&(s.global_gain=e.global_gain),p+=x,x>0)b=Math.max(0|10*x+.5,1),r.over_SSD+=b*b,d++,f+=x;h=Math.max(h,x)}return r.over_count=d,r.tot_noise=p,r.over_noise=f,r.max_noise=h,d},this.set_pinfo=function(e,t,n,o,r){var s,i,a,l,c,d=e.internal_flags,f=0==t.scalefac_scale?.5:1,p=t.scalefac,h=cO(L3Side.SFBMAX),m=cO(L3Side.SFBMAX),g=new CalcNoiseResult;calc_xmin(e,n,t,h),calc_noise(t,h,m,g,null);var v=0;for(i=t.sfb_lmax,t.block_type!=cC.SHORT_TYPE&&0==t.mixed_block_flag&&(i=22),s=0;s<i;s++){var _=d.scalefac_band.l[s],b=d.scalefac_band.l[s+1],y=b-_;for(l=0;v<b;v++)l+=t.xr[v]*t.xr[v];l/=y,c=1e15,d.pinfo.en[o][r][s]=c*l,d.pinfo.xfsf[o][r][s]=c*h[s]*m[s]/y,n.en.l[s]>0&&!e.ATHonly?l/=n.en.l[s]:l=0,d.pinfo.thr[o][r][s]=c*Math.max(l*n.thm.l[s],d.ATH.l[s]),d.pinfo.LAMEsfb[o][r][s]=0,0!=t.preflag&&s>=11&&(d.pinfo.LAMEsfb[o][r][s]=-f*u[s]),s<cC.SBPSY_l&&(dO(p[s]>=0),d.pinfo.LAMEsfb[o][r][s]-=f*p[s])}if(t.block_type==cC.SHORT_TYPE)for(i=s,s=t.sfb_smin;s<cC.SBMAX_s;s++){_=d.scalefac_band.s[s],b=d.scalefac_band.s[s+1],y=b-_;for(var x=0;x<3;x++){for(l=0,a=_;a<b;a++)l+=t.xr[v]*t.xr[v],v++;l=Math.max(l/y,1e-20),c=1e15,d.pinfo.en_s[o][r][3*s+x]=c*l,d.pinfo.xfsf_s[o][r][3*s+x]=c*h[i]*m[i]/y,n.en.s[s][x]>0?l/=n.en.s[s][x]:l=0,(e.ATHonly||e.ATHshort)&&(l=0),d.pinfo.thr_s[o][r][3*s+x]=c*Math.max(l*n.thm.s[s][x],d.ATH.s[s]),d.pinfo.LAMEsfb_s[o][r][3*s+x]=-2*t.subblock_gain[x],s<cC.SBPSY_s&&(d.pinfo.LAMEsfb_s[o][r][3*s+x]-=f*p[i]),i++}}d.pinfo.LAMEqss[o][r]=t.global_gain,d.pinfo.LAMEmainbits[o][r]=t.part2_3_length+t.part2_length,d.pinfo.LAMEsfbits[o][r]=t.part2_length,d.pinfo.over[o][r]=g.over_count,d.pinfo.max_noise[o][r]=10*g.max_noise,d.pinfo.over_noise[o][r]=10*g.over_noise,d.pinfo.tot_noise[o][r]=10*g.tot_noise,d.pinfo.over_SSD[o][r]=g.over_SSD}}fO.Q_MAX=257,fO.Q_MAX2=116,fO.LARGE_BITS=1e5,fO.IXMAX_VAL=8206;var pO=zR.System,hO=zR.Arrays,mO=zR.new_int,gO=zR.assert;function vO(){var e=null;function t(e){this.bits=0|e}this.qupvt=null,this.setModules=function(t){this.qupvt=t,e=t};var n=[[0,0],[0,0],[0,0],[0,0],[0,0],[0,1],[1,1],[1,1],[1,2],[2,2],[2,3],[2,3],[3,4],[3,4],[3,4],[4,5],[4,5],[4,6],[5,6],[5,6],[5,7],[6,7],[6,7]];function o(e,t,n,o,r,s){var i=.5946/t;e>>=1;while(0!=e--)r[s++]=i>n[o++]?0:1,r[s++]=i>n[o++]?0:1}function r(t,n,o,r,s,i){t>>=1;var a=t%2;t>>=1;while(0!=t--){var l,c,u,d,f,p,h,m;l=o[r++]*n,c=o[r++]*n,f=0|l,u=o[r++]*n,p=0|c,d=o[r++]*n,h=0|u,l+=e.adj43[f],m=0|d,c+=e.adj43[p],s[i++]=0|l,u+=e.adj43[h],s[i++]=0|c,d+=e.adj43[m],s[i++]=0|u,s[i++]=0|d}0!=a&&(l=o[r++]*n,c=o[r++]*n,f=0|l,p=0|c,l+=e.adj43[f],c+=e.adj43[p],s[i++]=0|l,s[i++]=0|c)}function s(t,n,s,i,a){var l,c,u,d=0,f=0,p=0,h=0,m=n,g=0,v=m,_=0,b=t,y=0;for(u=null!=a&&i.global_gain==a.global_gain,c=i.block_type==cC.SHORT_TYPE?38:21,l=0;l<=c;l++){var x=-1;if((u||i.block_type==cC.NORM_TYPE)&&(x=i.global_gain-(i.scalefac[l]+(0!=i.preflag?e.pretab[l]:0)<<i.scalefac_scale+1)-8*i.subblock_gain[i.window[l]]),gO(i.width[l]>=0),u&&a.step[l]==x)0!=f&&(r(f,s,b,y,v,_),f=0),0!=p&&(o(p,s,b,y,v,_),p=0);else{var w,k=i.width[l];if(d+i.width[l]>i.max_nonzero_coeff)w=i.max_nonzero_coeff-d+1,hO.fill(n,i.max_nonzero_coeff,576,0),k=w,k<0&&(k=0),l=c+1;if(0==f&&0==p&&(v=m,_=g,b=t,y=h),null!=a&&a.sfb_count1>0&&l>=a.sfb_count1&&a.step[l]>0&&x>=a.step[l]?(0!=f&&(r(f,s,b,y,v,_),f=0,v=m,_=g,b=t,y=h),p+=k):(0!=p&&(o(p,s,b,y,v,_),p=0,v=m,_=g,b=t,y=h),f+=k),k<=0){0!=p&&(o(p,s,b,y,v,_),p=0),0!=f&&(r(f,s,b,y,v,_),f=0);break}}l<=c&&(g+=i.width[l],h+=i.width[l],d+=i.width[l])}0!=f&&(r(f,s,b,y,v,_),f=0),0!=p&&(o(p,s,b,y,v,_),p=0)}function i(e,t,n){var o=0,r=0;do{var s=e[t++],i=e[t++];o<s&&(o=s),r<i&&(r=i)}while(t<n);return o<r&&(o=r),o}function a(e,t,n,o,r,s){var i,a=65536*sO.ht[o].xlen+sO.ht[r].xlen,l=0;do{var c=e[t++],u=e[t++];0!=c&&(c>14&&(c=15,l+=a),c*=16),0!=u&&(u>14&&(u=15,l+=a),c+=u),l+=sO.largetbl[c]}while(t<n);return i=65535&l,l>>=16,l>i&&(l=i,o=r),s.bits+=l,o}function l(e,t,n,o){var r=0,s=sO.ht[1].hlen;do{var i=2*e[t+0]+e[t+1];t+=2,r+=s[i]}while(t<n);return o.bits+=r,1}function c(e,t,n,o,r){var s,i,a=0,l=sO.ht[o].xlen;i=2==o?sO.table23:sO.table56;do{var c=e[t+0]*l+e[t+1];t+=2,a+=i[c]}while(t<n);return s=65535&a,a>>=16,a>s&&(a=s,o++),r.bits+=a,o}function u(e,t,n,o,r){var s=0,i=0,a=0,l=sO.ht[o].xlen,c=sO.ht[o].hlen,u=sO.ht[o+1].hlen,d=sO.ht[o+2].hlen;do{var f=e[t+0]*l+e[t+1];t+=2,s+=c[f],i+=u[f],a+=d[f]}while(t<n);var p=o;return s>i&&(s=i,p++),s>a&&(s=a,p=o+2),r.bits+=s,p}var d=[1,2,5,7,7,10,10,13,13,13,13,13,13,13,13];function f(e,t,n,o){var r=i(e,t,n);switch(r){case 0:return r;case 1:return l(e,t,n,o);case 2:case 3:return c(e,t,n,d[r-1],o);case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:return u(e,t,n,d[r-1],o);default:if(r>fO.IXMAX_VAL)return o.bits=fO.LARGE_BITS,-1;var s,f;for(r-=15,s=24;s<32;s++)if(sO.ht[s].linmax>=r)break;for(f=s-8;f<24;f++)if(sO.ht[f].linmax>=r)break;return a(e,t,n,f,s,o)}}function p(e,n,o,r,s,i,a){for(var l=n.big_values,c=0;c<=22;c++)r[c]=fO.LARGE_BITS;for(c=0;c<16;c++){var u=e.scalefac_band.l[c+1];if(u>=l)break;var d=0,p=new t(d),h=f(o,0,u,p);d=p.bits;for(var m=0;m<8;m++){var g=e.scalefac_band.l[c+m+2];if(g>=l)break;var v=d;p=new t(v);var _=f(o,u,g,p);v=p.bits,r[c+m]>v&&(r[c+m]=v,s[c+m]=c,i[c+m]=h,a[c+m]=_)}}}function h(e,n,o,r,s,i,a,l){for(var c=n.big_values,u=2;u<cC.SBMAX_l+1;u++){var d=e.scalefac_band.l[u];if(d>=c)break;var p=s[u-2]+n.count1bits;if(o.part2_3_length<=p)break;var h=new t(p),m=f(r,d,c,h);p=h.bits,o.part2_3_length<=p||(o.assign(n),o.part2_3_length=p,o.region0_count=i[u-2],o.region1_count=u-2-i[u-2],o.table_select[0]=a[u-2],o.table_select[1]=l[u-2],o.table_select[2]=m)}}this.noquant_count_bits=function(e,n,o){var r=n.l3_enc,s=Math.min(576,n.max_nonzero_coeff+2>>1<<1);for(null!=o&&(o.sfb_count1=0);s>1;s-=2)if(0!=(r[s-1]|r[s-2]))break;n.count1=s;for(var i=0,a=0;s>3;s-=4){var l;if((2147483647&(r[s-1]|r[s-2]|r[s-3]|r[s-4]))>1)break;l=2*(2*(2*r[s-4]+r[s-3])+r[s-2])+r[s-1],i+=sO.t32l[l],a+=sO.t33l[l]}var c=i;if(n.count1table_select=0,i>a&&(c=a,n.count1table_select=1),n.count1bits=c,n.big_values=s,0==s)return c;if(n.block_type==cC.SHORT_TYPE)i=3*e.scalefac_band.s[3],i>n.big_values&&(i=n.big_values),a=n.big_values;else if(n.block_type==cC.NORM_TYPE){if(i=n.region0_count=e.bv_scf[s-2],a=n.region1_count=e.bv_scf[s-1],a=e.scalefac_band.l[i+a+2],i=e.scalefac_band.l[i+1],a<s){var u=new t(c);n.table_select[2]=f(r,a,s,u),c=u.bits}}else n.region0_count=7,n.region1_count=cC.SBMAX_l-1-7-1,i=e.scalefac_band.l[8],a=s,i>a&&(i=a);if(i=Math.min(i,s),a=Math.min(a,s),i>0){u=new t(c);n.table_select[0]=f(r,0,i,u),c=u.bits}if(i<a){u=new t(c);n.table_select[1]=f(r,i,a,u),c=u.bits}if(2==e.use_best_huffman&&(n.part2_3_length=c,best_huffman_divide(e,n),c=n.part2_3_length),null!=o&&n.block_type==cC.NORM_TYPE){var d=0;while(e.scalefac_band.l[d]<n.big_values)d++;o.sfb_count1=d}return c},this.count_bits=function(t,n,o,r){var i=o.l3_enc,a=fO.IXMAX_VAL/e.IPOW20(o.global_gain);if(o.xrpow_max>a)return fO.LARGE_BITS;if(s(n,i,e.IPOW20(o.global_gain),o,r),0!=(2&t.substep_shaping))for(var l=0,c=o.global_gain+o.scalefac_scale,u=.634521682242439/e.IPOW20(c),d=0;d<o.sfbmax;d++){var f,p=o.width[d];if(0==t.pseudohalf[d])l+=p;else for(f=l,l+=p;f<l;++f)i[f]=n[f]>=u?i[f]:0}return this.noquant_count_bits(t,o,r)},this.best_huffman_divide=function(e,n){var o=new MC,r=n.l3_enc,s=mO(23),i=mO(23),a=mO(23),l=mO(23);if(n.block_type!=cC.SHORT_TYPE||1!=e.mode_gr){o.assign(n),n.block_type==cC.NORM_TYPE&&(p(e,n,r,s,i,a,l),h(e,o,n,r,s,i,a,l));var c=o.big_values;if(!(0==c||(r[c-2]|r[c-1])>1)&&(c=n.count1+2,!(c>576))){o.assign(n),o.count1=c;for(var u=0,d=0;c>o.big_values;c-=4){var m=2*(2*(2*r[c-4]+r[c-3])+r[c-2])+r[c-1];u+=sO.t32l[m],d+=sO.t33l[m]}if(o.big_values=c,o.count1table_select=0,u>d&&(u=d,o.count1table_select=1),o.count1bits=u,o.block_type==cC.NORM_TYPE)h(e,o,n,r,s,i,a,l);else{if(o.part2_3_length=u,u=e.scalefac_band.l[8],u>c&&(u=c),u>0){var g=new t(o.part2_3_length);o.table_select[0]=f(r,0,u,g),o.part2_3_length=g.bits}if(c>u){g=new t(o.part2_3_length);o.table_select[1]=f(r,u,c,g),o.part2_3_length=g.bits}n.part2_3_length>o.part2_3_length&&n.assign(o)}}}};var m=[1,1,1,1,8,2,2,2,4,4,4,8,8,8,16,16],g=[1,2,4,8,1,2,4,8,2,4,8,2,4,8,4,8],v=[0,0,0,0,3,1,1,1,2,2,2,3,3,3,4,4],_=[0,1,2,3,0,1,2,3,1,2,3,1,2,3,2,3];function b(e,t){for(var n,o=t.tt[1][e],r=t.tt[0][e],s=0;s<sO.scfsi_band.length-1;s++){for(n=sO.scfsi_band[s];n<sO.scfsi_band[s+1];n++)if(r.scalefac[n]!=o.scalefac[n]&&o.scalefac[n]>=0)break;if(n==sO.scfsi_band[s+1]){for(n=sO.scfsi_band[s];n<sO.scfsi_band[s+1];n++)o.scalefac[n]=-1;t.scfsi[e][s]=1}}var i=0,a=0;for(n=0;n<11;n++)-1!=o.scalefac[n]&&(a++,i<o.scalefac[n]&&(i=o.scalefac[n]));for(var l=0,c=0;n<cC.SBPSY_l;n++)-1!=o.scalefac[n]&&(c++,l<o.scalefac[n]&&(l=o.scalefac[n]));for(s=0;s<16;s++)if(i<m[s]&&l<g[s]){var u=v[s]*a+_[s]*c;o.part2_length>u&&(o.part2_length=u,o.scalefac_compress=s)}}function y(e,t){for(var n=0;n<t;++n)if(e[n]<0)return!1;return!0}vO.slen1_tab=v,vO.slen2_tab=_,this.best_scalefac_store=function(t,n,o,r){var s,i,a,l,c=r.tt[n][o],u=0;for(a=0,s=0;s<c.sfbmax;s++){var d=c.width[s];for(a+=d,l=-d;l<0;l++)if(0!=c.l3_enc[l+a])break;0==l&&(c.scalefac[s]=u=-2)}if(0==c.scalefac_scale&&0==c.preflag){var f=0;for(s=0;s<c.sfbmax;s++)c.scalefac[s]>0&&(f|=c.scalefac[s]);if(0==(1&f)&&0!=f){for(s=0;s<c.sfbmax;s++)c.scalefac[s]>0&&(c.scalefac[s]>>=1);c.scalefac_scale=u=1}}if(0==c.preflag&&c.block_type!=cC.SHORT_TYPE&&2==t.mode_gr){for(s=11;s<cC.SBPSY_l;s++)if(c.scalefac[s]<e.pretab[s]&&-2!=c.scalefac[s])break;if(s==cC.SBPSY_l){for(s=11;s<cC.SBPSY_l;s++)c.scalefac[s]>0&&(c.scalefac[s]-=e.pretab[s]);c.preflag=u=1}}for(i=0;i<4;i++)r.scfsi[o][i]=0;for(2==t.mode_gr&&1==n&&r.tt[0][o].block_type!=cC.SHORT_TYPE&&r.tt[1][o].block_type!=cC.SHORT_TYPE&&(b(o,r),u=0),s=0;s<c.sfbmax;s++)-2==c.scalefac[s]&&(c.scalefac[s]=0);0!=u&&(2==t.mode_gr?this.scale_bitcount(c):this.scale_bitcount_lsf(t,c))};var x=[0,18,36,54,54,36,54,72,54,72,90,72,90,108,108,126],w=[0,18,36,54,51,35,53,71,52,70,88,69,87,105,104,122],k=[0,10,20,30,33,21,31,41,32,42,52,43,53,63,64,74];this.scale_bitcount=function(t){var n,o,r,s=0,i=0,a=t.scalefac;if(gO(y(a,t.sfbmax)),t.block_type==cC.SHORT_TYPE)r=x,0!=t.mixed_block_flag&&(r=w);else if(r=k,0==t.preflag){for(o=11;o<cC.SBPSY_l;o++)if(a[o]<e.pretab[o])break;if(o==cC.SBPSY_l)for(t.preflag=1,o=11;o<cC.SBPSY_l;o++)a[o]-=e.pretab[o]}for(o=0;o<t.sfbdivide;o++)s<a[o]&&(s=a[o]);for(;o<t.sfbmax;o++)i<a[o]&&(i=a[o]);for(t.part2_length=fO.LARGE_BITS,n=0;n<16;n++)s<m[n]&&i<g[n]&&t.part2_length>r[n]&&(t.part2_length=r[n],t.scalefac_compress=n);return t.part2_length==fO.LARGE_BITS};var S=[[15,15,7,7],[15,15,7,0],[7,3,0,0],[15,31,31,0],[7,7,7,0],[3,3,0,0]];this.scale_bitcount_lsf=function(t,n){var o,r,s,i,a,l,c,u,d=mO(4),f=n.scalefac;for(o=0!=n.preflag?2:0,c=0;c<4;c++)d[c]=0;if(n.block_type==cC.SHORT_TYPE){r=1;var p=e.nr_of_sfb_block[o][r];for(u=0,s=0;s<4;s++)for(i=p[s]/3,c=0;c<i;c++,u++)for(a=0;a<3;a++)f[3*u+a]>d[s]&&(d[s]=f[3*u+a])}else{r=0;p=e.nr_of_sfb_block[o][r];for(u=0,s=0;s<4;s++)for(i=p[s],c=0;c<i;c++,u++)f[u]>d[s]&&(d[s]=f[u])}for(l=!1,s=0;s<4;s++)d[s]>S[o][s]&&(l=!0);if(!l){var h,m,g,v;for(n.sfb_partition_table=e.nr_of_sfb_block[o][r],s=0;s<4;s++)n.slen[s]=E[d[s]];switch(h=n.slen[0],m=n.slen[1],g=n.slen[2],v=n.slen[3],o){case 0:n.scalefac_compress=(5*h+m<<4)+(g<<2)+v;break;case 1:n.scalefac_compress=400+(5*h+m<<2)+g;break;case 2:n.scalefac_compress=500+3*h+m;break;default:pO.err.printf("intensity stereo not implemented yet\n");break}}if(!l)for(gO(null!=n.sfb_partition_table),n.part2_length=0,s=0;s<4;s++)n.part2_length+=n.slen[s]*n.sfb_partition_table[s];return l};var E=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];this.huffman_init=function(e){for(var t=2;t<=576;t+=2){var o,r=0;while(e.scalefac_band.l[++r]<t);o=n[r][0];while(e.scalefac_band.l[o+1]>t)o--;o<0&&(o=n[r][0]),e.bv_scf[t-2]=o,o=n[r][1];while(e.scalefac_band.l[o+e.bv_scf[t-2]+2]>t)o--;o<0&&(o=n[r][1]),e.bv_scf[t-1]=o}}}var _O=zR.System,bO=zR.Arrays,yO=zR.new_byte,xO=zR.new_float_n,wO=zR.new_int,kO=zR.assert;function SO(){var e=this,t=32773,n=null,o=null,r=null,s=null;this.setModules=function(e,t,i,a){n=e,o=t,r=i,s=a};var i=null,a=0,l=0,c=0;function u(e){_O.arraycopy(e.header[e.w_ptr].buf,0,i,l,e.sideinfo_len),l+=e.sideinfo_len,a+=8*e.sideinfo_len,e.w_ptr=e.w_ptr+1&zC.MAX_HEADER_BUF-1}function d(e,t,n){while(n>0){var o;0==c&&(c=8,l++,kO(e.header[e.w_ptr].write_timing>=a),e.header[e.w_ptr].write_timing==a&&u(e),i[l]=0),o=Math.min(n,c),n-=o,c-=o,i[l]|=t>>n<<c,a+=o}}function f(e,t,n){while(n>0){var o;0==c&&(c=8,l++,i[l]=0),o=Math.min(n,c),n-=o,c-=o,i[l]|=t>>n<<c,a+=o}}function p(e,t){var n,o=e.internal_flags;if(t>=8&&(d(o,76,8),t-=8),t>=8&&(d(o,65,8),t-=8),t>=8&&(d(o,77,8),t-=8),t>=8&&(d(o,69,8),t-=8),t>=32){var s=r.getLameShortVersion();if(t>=32)for(n=0;n<s.length&&t>=8;++n)t-=8,d(o,s.charAt(n),8)}for(;t>=1;t-=1)d(o,o.ancillary_flag,1),o.ancillary_flag^=e.disable_reservoir?0:1}function h(e,t,n){var o=e.header[e.h_ptr].ptr;while(n>0){var r=Math.min(n,8-(7&o));n-=r,e.header[e.h_ptr].buf[o>>3]|=t>>n<<8-(7&o)-r,o+=r}e.header[e.h_ptr].ptr=o}function m(e,n){e<<=8;for(var o=0;o<8;o++)e<<=1,n<<=1,0!=(65536&(n^e))&&(n^=t);return n}function g(e,t){var n,o,r,s=e.internal_flags;if(n=s.l3_side,s.header[s.h_ptr].ptr=0,bO.fill(s.header[s.h_ptr].buf,0,s.sideinfo_len,0),e.out_samplerate<16e3?h(s,4094,12):h(s,4095,12),h(s,e.version,1),h(s,1,2),h(s,e.error_protection?0:1,1),h(s,s.bitrate_index,4),h(s,s.samplerate_index,2),h(s,s.padding,1),h(s,e.extension,1),h(s,e.mode.ordinal(),2),h(s,s.mode_ext,2),h(s,e.copyright,1),h(s,e.original,1),h(s,e.emphasis,2),e.error_protection&&h(s,0,16),1==e.version){for(kO(n.main_data_begin>=0),h(s,n.main_data_begin,9),2==s.channels_out?h(s,n.private_bits,3):h(s,n.private_bits,5),r=0;r<s.channels_out;r++){var i;for(i=0;i<4;i++)h(s,n.scfsi[r][i],1)}for(o=0;o<2;o++)for(r=0;r<s.channels_out;r++){var a=n.tt[o][r];h(s,a.part2_3_length+a.part2_length,12),h(s,a.big_values/2,9),h(s,a.global_gain,8),h(s,a.scalefac_compress,4),a.block_type!=cC.NORM_TYPE?(h(s,1,1),h(s,a.block_type,2),h(s,a.mixed_block_flag,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),h(s,a.subblock_gain[0],3),h(s,a.subblock_gain[1],3),h(s,a.subblock_gain[2],3)):(h(s,0,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),14==a.table_select[2]&&(a.table_select[2]=16),h(s,a.table_select[2],5),kO(a.region0_count>=0&&a.region0_count<16),kO(a.region1_count>=0&&a.region1_count<8),h(s,a.region0_count,4),h(s,a.region1_count,3)),h(s,a.preflag,1),h(s,a.scalefac_scale,1),h(s,a.count1table_select,1)}}else for(kO(n.main_data_begin>=0),h(s,n.main_data_begin,8),h(s,n.private_bits,s.channels_out),o=0,r=0;r<s.channels_out;r++){a=n.tt[o][r];h(s,a.part2_3_length+a.part2_length,12),h(s,a.big_values/2,9),h(s,a.global_gain,8),h(s,a.scalefac_compress,9),a.block_type!=cC.NORM_TYPE?(h(s,1,1),h(s,a.block_type,2),h(s,a.mixed_block_flag,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),h(s,a.subblock_gain[0],3),h(s,a.subblock_gain[1],3),h(s,a.subblock_gain[2],3)):(h(s,0,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),14==a.table_select[2]&&(a.table_select[2]=16),h(s,a.table_select[2],5),kO(a.region0_count>=0&&a.region0_count<16),kO(a.region1_count>=0&&a.region1_count<8),h(s,a.region0_count,4),h(s,a.region1_count,3)),h(s,a.scalefac_scale,1),h(s,a.count1table_select,1)}e.error_protection&&CRC_writeheader(s,s.header[s.h_ptr].buf);var l=s.h_ptr;kO(s.header[l].ptr==8*s.sideinfo_len),s.h_ptr=l+1&zC.MAX_HEADER_BUF-1,s.header[s.h_ptr].write_timing=s.header[l].write_timing+t,s.h_ptr==s.w_ptr&&_O.err.println("Error: MAX_HEADER_BUF too small in bitstream.c \n")}function v(e,t){var n,o=sO.ht[t.count1table_select+32],r=0,s=t.big_values,i=t.big_values;for(kO(t.count1table_select<2),n=(t.count1-t.big_values)/4;n>0;--n){var a,l=0,c=0;a=t.l3_enc[s+0],0!=a&&(c+=8,t.xr[i+0]<0&&l++),a=t.l3_enc[s+1],0!=a&&(c+=4,l*=2,t.xr[i+1]<0&&l++),a=t.l3_enc[s+2],0!=a&&(c+=2,l*=2,t.xr[i+2]<0&&l++),a=t.l3_enc[s+3],0!=a&&(c++,l*=2,t.xr[i+3]<0&&l++),s+=4,i+=4,d(e,l+o.table[c],o.hlen[c]),r+=o.hlen[c]}return r}function _(e,t,n,o,r){var s=sO.ht[t],i=0;if(0==t)return i;for(var a=n;a<o;a+=2){var l=0,c=0,u=s.xlen,f=s.xlen,p=0,h=r.l3_enc[a],m=r.l3_enc[a+1];if(0!=h&&(r.xr[a]<0&&p++,l--),t>15){if(h>14){var g=h-15;kO(g<=s.linmax),p|=g<<1,c=u,h=15}if(m>14){var v=m-15;kO(v<=s.linmax),p<<=u,p|=v,c+=u,m=15}f=16}0!=m&&(p<<=1,r.xr[a+1]<0&&p++,l--),h=h*f+m,c-=l,l+=s.hlen[h],d(e,s.table[h],l),d(e,p,c),i+=l+c}return i}function b(e,t){var n=3*e.scalefac_band.s[3];n>t.big_values&&(n=t.big_values);var o=_(e,t.table_select[0],0,n,t);return o+=_(e,t.table_select[1],n,t.big_values,t),o}function y(e,t){var n,o,r,s;n=t.big_values;var i=t.region0_count+1;return kO(i<e.scalefac_band.l.length),r=e.scalefac_band.l[i],i+=t.region1_count+1,kO(i<e.scalefac_band.l.length),s=e.scalefac_band.l[i],r>n&&(r=n),s>n&&(s=n),o=_(e,t.table_select[0],0,r,t),o+=_(e,t.table_select[1],r,s,t),o+=_(e,t.table_select[2],s,n,t),o}function x(e){var t,n,o,r,s=0,i=e.internal_flags,a=i.l3_side;if(1==e.version)for(t=0;t<2;t++)for(n=0;n<i.channels_out;n++){var l=a.tt[t][n],c=vO.slen1_tab[l.scalefac_compress],u=vO.slen2_tab[l.scalefac_compress];for(r=0,o=0;o<l.sfbdivide;o++)-1!=l.scalefac[o]&&(d(i,l.scalefac[o],c),r+=c);for(;o<l.sfbmax;o++)-1!=l.scalefac[o]&&(d(i,l.scalefac[o],u),r+=u);kO(r==l.part2_length),l.block_type==cC.SHORT_TYPE?r+=b(i,l):r+=y(i,l),r+=v(i,l),kO(r==l.part2_3_length+l.part2_length),s+=r}else for(t=0,n=0;n<i.channels_out;n++){l=a.tt[t][n];var f,p,h=0;if(kO(null!=l.sfb_partition_table),r=0,o=0,p=0,l.block_type==cC.SHORT_TYPE){for(;p<4;p++){var m=l.sfb_partition_table[p]/3,g=l.slen[p];for(f=0;f<m;f++,o++)d(i,Math.max(l.scalefac[3*o+0],0),g),d(i,Math.max(l.scalefac[3*o+1],0),g),d(i,Math.max(l.scalefac[3*o+2],0),g),h+=3*g}r+=b(i,l)}else{for(;p<4;p++){m=l.sfb_partition_table[p],g=l.slen[p];for(f=0;f<m;f++,o++)d(i,Math.max(l.scalefac[o],0),g),h+=g}r+=y(i,l)}r+=v(i,l),kO(r==l.part2_3_length),kO(h==l.part2_length),s+=h+r}return s}function w(){this.total=0}function k(t,n){var o,r,s,i,c,u=t.internal_flags;return c=u.w_ptr,i=u.h_ptr-1,-1==i&&(i=zC.MAX_HEADER_BUF-1),o=u.header[i].write_timing-a,n.total=o,o>=0&&(r=1+i-c,i<c&&(r=1+i-c+zC.MAX_HEADER_BUF),o-=8*r*u.sideinfo_len),s=e.getframebits(t),o+=s,n.total+=s,n.total%8!=0?n.total=1+n.total/8:n.total=n.total/8,n.total+=l+1,o<0&&_O.err.println("strange error flushing buffer ... \n"),o}this.getframebits=function(e){var t,n=e.internal_flags;t=0!=n.bitrate_index?sO.bitrate_table[e.version][n.bitrate_index]:e.brate;var o=0|72e3*(e.version+1)*t/e.out_samplerate+n.padding;return 8*o},this.CRC_writeheader=function(e,t){var n=65535;n=m(255&t[2],n),n=m(255&t[3],n);for(var o=6;o<e.sideinfo_len;o++)n=m(255&t[o],n);t[4]=byte(n>>8),t[5]=byte(255&n)},this.flush_bitstream=function(e){var t,o,r=e.internal_flags,s=r.h_ptr-1;if(-1==s&&(s=zC.MAX_HEADER_BUF-1),t=r.l3_side,!((o=k(e,new w))<0)){if(p(e,o),kO(r.header[s].write_timing+this.getframebits(e)==a),r.ResvSize=0,t.main_data_begin=0,r.findReplayGain){var i=n.GetTitleGain(r.rgdata);kO(NEQ(i,GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES)),r.RadioGain=0|Math.floor(10*i+.5)}r.findPeakSample&&(r.noclipGainChange=0|Math.ceil(20*Math.log10(r.PeakSample/32767)*10),r.noclipGainChange>0&&(EQ(e.scale,1)||EQ(e.scale,0))?r.noclipScale=Math.floor(32767/r.PeakSample*100)/100:r.noclipScale=-1)}},this.add_dummy_byte=function(e,t,n){var o,r=e.internal_flags;while(n-- >0)for(f(r,t,8),o=0;o<zC.MAX_HEADER_BUF;++o)r.header[o].write_timing+=8},this.format_bitstream=function(e){var t,n=e.internal_flags;t=n.l3_side;var o=this.getframebits(e);p(e,t.resvDrain_pre),g(e,o);var r=8*n.sideinfo_len;if(r+=x(e),p(e,t.resvDrain_post),r+=t.resvDrain_post,t.main_data_begin+=(o-r)/8,k(e,new w)!=n.ResvSize&&_O.err.println("Internal buffer inconsistency. flushbits <> ResvSize"),8*t.main_data_begin!=n.ResvSize&&(_O.err.printf("bit reservoir error: \nl3_side.main_data_begin: %d \nResvoir size:             %d \nresv drain (post)         %d \nresv drain (pre)          %d \nheader and sideinfo:      %d \ndata bits:                %d \ntotal bits:               %d (remainder: %d) \nbitsperframe:             %d \n",8*t.main_data_begin,n.ResvSize,t.resvDrain_post,t.resvDrain_pre,8*n.sideinfo_len,r-t.resvDrain_post-8*n.sideinfo_len,r,r%8,o),_O.err.println("This is a fatal error.  It has several possible causes:"),_O.err.println("90%%  LAME compiled with buggy version of gcc using advanced optimizations"),_O.err.println(" 9%%  Your system is overclocked"),_O.err.println(" 1%%  bug in LAME encoding library"),n.ResvSize=8*t.main_data_begin),a>1e9){var s;for(s=0;s<zC.MAX_HEADER_BUF;++s)n.header[s].write_timing-=a;a=0}return 0},this.copy_buffer=function(e,t,r,a,u){var d=l+1;if(d<=0)return 0;if(0!=a&&d>a)return-1;if(_O.arraycopy(i,0,t,r,d),l=-1,c=0,0!=u){var f=wO(1);if(f[0]=e.nMusicCRC,s.updateMusicCRC(f,t,r,d),e.nMusicCRC=f[0],d>0&&(e.VBR_seek_table.nBytesWritten+=d),e.decode_on_the_fly){var p,h=xO([2,1152]),m=d,g=-1;while(0!=g)if(g=o.hip_decode1_unclipped(e.hip,t,r,m,h[0],h[1]),m=0,-1==g&&(g=0),g>0){if(e.findPeakSample){for(p=0;p<g;p++)h[0][p]>e.PeakSample?e.PeakSample=h[0][p]:-h[0][p]>e.PeakSample&&(e.PeakSample=-h[0][p]);if(e.channels_out>1)for(p=0;p<g;p++)h[1][p]>e.PeakSample?e.PeakSample=h[1][p]:-h[1][p]>e.PeakSample&&(e.PeakSample=-h[1][p])}if(e.findReplayGain&&n.AnalyzeSamples(e.rgdata,h[0],0,h[1],0,g,e.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6}}}return d},this.init_bit_stream_w=function(e){i=yO(IO.LAME_MAXMP3BUFFER),e.h_ptr=e.w_ptr=0,e.header[e.h_ptr].write_timing=0,l=-1,c=0,a=0}}SO.EQ=function(e,t){return Math.abs(e)>Math.abs(t)?Math.abs(e-t)<=1e-6*Math.abs(e):Math.abs(e-t)<=1e-6*Math.abs(t)},SO.NEQ=function(e,t){return!SO.EQ(e,t)};var EO=zR.System,TO=zR.VbrMode,MO=zR.ShortBlock,AO=zR.new_float,RO=zR.new_int_n,CO=zR.new_short_n,OO=zR.assert;function IO(){var e=this,t=131072;IO.V9=410,IO.V8=420,IO.V7=430,IO.V6=440,IO.V5=450,IO.V4=460,IO.V3=470,IO.V2=480,IO.V1=490,IO.V0=500,IO.R3MIX=1e3,IO.STANDARD=1001,IO.EXTREME=1002,IO.INSANE=1003,IO.STANDARD_FAST=1004,IO.EXTREME_FAST=1005,IO.MEDIUM=1006,IO.MEDIUM_FAST=1007;var n,o,r,s,i,a=16384+t;IO.LAME_MAXMP3BUFFER=a;var l,c,u,d=new wC;function f(){this.mask_adjust=0,this.mask_adjust_short=0,this.bo_l_weight=AO(cC.SBMAX_l),this.bo_s_weight=AO(cC.SBMAX_s)}function p(){this.lowerlimit=0}function h(e,t){this.lowpass=t}this.enc=new cC,this.setModules=function(e,t,a,f,p,h,m,g,v){n=e,o=t,r=a,s=f,i=p,l=h,c=g,u=v,this.enc.setModules(o,d,s,l)};var m=4294479419;function g(e){var t;return e.class_id=m,t=e.internal_flags=new zC,e.mode=tC.NOT_SET,e.original=1,e.in_samplerate=44100,e.num_channels=2,e.num_samples=-1,e.bWriteVbrTag=!0,e.quality=-1,e.short_blocks=null,t.subblock_gain=-1,e.lowpassfreq=0,e.highpassfreq=0,e.lowpasswidth=-1,e.highpasswidth=-1,e.VBR=TO.vbr_off,e.VBR_q=4,e.ATHcurve=-1,e.VBR_mean_bitrate_kbps=128,e.VBR_min_bitrate_kbps=0,e.VBR_max_bitrate_kbps=0,e.VBR_hard_min=0,t.VBR_min_bitrate=1,t.VBR_max_bitrate=13,e.quant_comp=-1,e.quant_comp_short=-1,e.msfix=-1,t.resample_ratio=1,t.OldValue[0]=180,t.OldValue[1]=180,t.CurrentStep[0]=4,t.CurrentStep[1]=4,t.masking_lower=1,t.nsPsy.attackthre=-1,t.nsPsy.attackthre_s=-1,e.scale=-1,e.athaa_type=-1,e.ATHtype=-1,e.athaa_loudapprox=-1,e.athaa_sensitivity=0,e.useTemporal=null,e.interChRatio=-1,t.mf_samples_to_encode=cC.ENCDELAY+cC.POSTDELAY,e.encoder_padding=0,t.mf_size=cC.ENCDELAY-cC.MDCTDELAY,e.findReplayGain=!1,e.decode_on_the_fly=!1,t.decode_on_the_fly=!1,t.findReplayGain=!1,t.findPeakSample=!1,t.RadioGain=0,t.AudiophileGain=0,t.noclipGainChange=0,t.noclipScale=-1,e.preset=0,e.write_id3tag_automatic=!0,0}function v(e){return e>1?0:e<=0?1:Math.cos(Math.PI/2*e)}function _(e,t){var n=44100;return t>=48e3?n=48e3:t>=44100?n=44100:t>=32e3?n=32e3:t>=24e3?n=24e3:t>=22050?n=22050:t>=16e3?n=16e3:t>=12e3?n=12e3:t>=11025?n=11025:t>=8e3&&(n=8e3),-1==e?n:(e<=15960&&(n=44100),e<=15250&&(n=32e3),e<=11220&&(n=24e3),e<=9970&&(n=22050),e<=7230&&(n=16e3),e<=5420&&(n=12e3),e<=4510&&(n=11025),e<=3970&&(n=8e3),t<n?t>44100?48e3:t>32e3?44100:t>24e3?32e3:t>22050?24e3:t>16e3?22050:t>12e3?16e3:t>11025?12e3:t>8e3?11025:8e3:n)}function b(e,t){switch(e){case 44100:return t.version=1,0;case 48e3:return t.version=1,1;case 32e3:return t.version=1,2;case 22050:return t.version=0,0;case 24e3:return t.version=0,1;case 16e3:return t.version=0,2;case 11025:return t.version=0,0;case 12e3:return t.version=0,1;case 8e3:return t.version=0,2;default:return t.version=0,-1}}function y(e,t,n){n<16e3&&(t=2);for(var o=sO.bitrate_table[t][1],r=2;r<=14;r++)sO.bitrate_table[t][r]>0&&Math.abs(sO.bitrate_table[t][r]-e)<Math.abs(o-e)&&(o=sO.bitrate_table[t][r]);return o}function x(e,t,n){n<16e3&&(t=2);for(var o=0;o<=14;o++)if(sO.bitrate_table[t][o]>0&&sO.bitrate_table[t][o]==e)return o;return-1}function w(t,n){var o=[new h(8,2e3),new h(16,3700),new h(24,3900),new h(32,5500),new h(40,7e3),new h(48,7500),new h(56,1e4),new h(64,11e3),new h(80,13500),new h(96,15100),new h(112,15600),new h(128,17e3),new h(160,17500),new h(192,18600),new h(224,19400),new h(256,19700),new h(320,20500)],r=e.nearestBitrateFullIndex(n);t.lowerlimit=o[r].lowpass}function k(e){var t=e.internal_flags,n=32,o=-1;if(t.lowpass1>0){for(var r=999,s=0;s<=31;s++){var i=s/31;i>=t.lowpass2&&(n=Math.min(n,s)),t.lowpass1<i&&i<t.lowpass2&&(r=Math.min(r,s))}t.lowpass1=999==r?(n-.75)/31:(r-.75)/31,t.lowpass2=n/31}if(t.highpass2>0&&t.highpass2<.75/31*.9&&(t.highpass1=0,t.highpass2=0,EO.err.println("Warning: highpass filter disabled.  highpass frequency too small\n")),t.highpass2>0){var a=-1;for(s=0;s<=31;s++){i=s/31;i<=t.highpass1&&(o=Math.max(o,s)),t.highpass1<i&&i<t.highpass2&&(a=Math.max(a,s))}t.highpass1=o/31,t.highpass2=-1==a?(o+.75)/31:(a+.75)/31}for(s=0;s<32;s++){var l,c;i=s/31;l=t.highpass2>t.highpass1?v((t.highpass2-i)/(t.highpass2-t.highpass1+1e-20)):1,c=t.lowpass2>t.lowpass1?v((i-t.lowpass1)/(t.lowpass2-t.lowpass1+1e-20)):1,t.amp_filter[s]=l*c}}function S(e){var t=e.internal_flags;switch(e.quality){default:case 9:t.psymodel=0,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 8:e.quality=7;case 7:t.psymodel=1,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 6:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 5:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 4:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 3:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=1,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 2:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),0==t.substep_shaping&&(t.substep_shaping=2),t.noise_shaping_amp=1,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 1:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),0==t.substep_shaping&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 0:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),0==t.substep_shaping&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break}}function E(e){var t=e.internal_flags;e.frameNum=0,e.write_id3tag_automatic&&c.id3tag_write_v2(e),t.bitrate_stereoMode_Hist=RO([16,5]),t.bitrate_blockType_Hist=RO([16,6]),t.PeakSample=0,e.bWriteVbrTag&&l.InitVbrTag(e)}function T(e,t){(null==e.in_buffer_0||e.in_buffer_nsamples<t)&&(e.in_buffer_0=AO(t),e.in_buffer_1=AO(t),e.in_buffer_nsamples=t)}function M(e){var t=cC.BLKSIZE+e.framesize-cC.FFTOFFSET;return t=Math.max(t,512+e.framesize-32),t}function A(e,t,r,s,i,a,l){var c,u,d,f,p,h=e.internal_flags,g=0,v=[null,null],_=[null,null];if(h.Class_ID!=m)return-3;if(0==s)return 0;if(p=o.copy_buffer(h,i,a,l,0),p<0)return p;if(a+=p,g+=p,_[0]=t,_[1]=r,SO.NEQ(e.scale,0)&&SO.NEQ(e.scale,1))for(u=0;u<s;++u)_[0][u]*=e.scale,2==h.channels_out&&(_[1][u]*=e.scale);if(SO.NEQ(e.scale_left,0)&&SO.NEQ(e.scale_left,1))for(u=0;u<s;++u)_[0][u]*=e.scale_left;if(SO.NEQ(e.scale_right,0)&&SO.NEQ(e.scale_right,1))for(u=0;u<s;++u)_[1][u]*=e.scale_right;if(2==e.num_channels&&1==h.channels_out)for(u=0;u<s;++u)_[0][u]=.5*(_[0][u]+_[1][u]),_[1][u]=0;f=M(e),v[0]=h.mfbuf[0],v[1]=h.mfbuf[1];var b=0;while(s>0){var y=[null,null],x=0,w=0;y[0]=_[0],y[1]=_[1];var k=new C;if(L(e,v,y,b,s,k),x=k.n_in,w=k.n_out,h.findReplayGain&&!h.decode_on_the_fly&&n.AnalyzeSamples(h.rgdata,v[0],h.mf_size,v[1],h.mf_size,w,h.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6;if(s-=x,b+=x,h.channels_out,h.mf_size+=w,OO(h.mf_size<=zC.MFSIZE),h.mf_samples_to_encode<1&&(h.mf_samples_to_encode=cC.ENCDELAY+cC.POSTDELAY),h.mf_samples_to_encode+=w,h.mf_size>=f){var S=l-g;if(0==l&&(S=0),c=R(e,v[0],v[1],i,a,S),c<0)return c;for(a+=c,g+=c,h.mf_size-=e.framesize,h.mf_samples_to_encode-=e.framesize,d=0;d<h.channels_out;d++)for(u=0;u<h.mf_size;u++)v[d][u]=v[d][u+e.framesize]}}return g}function R(t,n,o,r,s,i){var a=e.enc.lame_encode_mp3_frame(t,n,o,r,s,i);return t.frameNum++,a}function C(){this.n_in=0,this.n_out=0}function O(){this.num_used=0}function I(e,t){return 0!=t?I(t,e%t):e}function B(e,t,n){var o=Math.PI*t;e/=n,e<0&&(e=0),e>1&&(e=1);var r=e-.5,s=.42-.5*Math.cos(2*e*Math.PI)+.08*Math.cos(4*e*Math.PI);return Math.abs(r)<1e-9?o/Math.PI:s*Math.sin(n*o*r)/(Math.PI*n*r)}function P(e,t,n,o,r,s,i,a,l){var c,u,d=e.internal_flags,f=0,p=e.out_samplerate/I(e.out_samplerate,e.in_samplerate);p>zC.BPC&&(p=zC.BPC);var h=Math.abs(d.resample_ratio-Math.floor(.5+d.resample_ratio))<1e-4?1:0,m=1/d.resample_ratio;m>1&&(m=1);var g=31;g%2==0&&--g,g+=h;var v=g+1;if(0==d.fill_buffer_resample_init){for(d.inbuf_old[0]=AO(v),d.inbuf_old[1]=AO(v),c=0;c<=2*p;++c)d.blackfilt[c]=AO(v);for(d.itime[0]=0,d.itime[1]=0,f=0;f<=2*p;f++){var _=0,b=(f-p)/(2*p);for(c=0;c<=g;c++)_+=d.blackfilt[f][c]=B(c-b,m,g);for(c=0;c<=g;c++)d.blackfilt[f][c]/=_}d.fill_buffer_resample_init=1}var y=d.inbuf_old[l];for(u=0;u<o;u++){var x,w;if(x=u*d.resample_ratio,f=0|Math.floor(x-d.itime[l]),g+f-g/2>=i)break;b=x-d.itime[l]-(f+g%2*.5);w=0|Math.floor(2*b*p+p+.5);var k=0;for(c=0;c<=g;++c){var S,E=0|c+f-g/2;S=E<0?y[v+E]:r[s+E],k+=S*d.blackfilt[w][c]}t[n+u]=k}if(a.num_used=Math.min(i,g+f-g/2),d.itime[l]+=a.num_used-u*d.resample_ratio,a.num_used>=v)for(c=0;c<v;c++)y[c]=r[s+a.num_used+c-v];else{var T=v-a.num_used;for(c=0;c<T;++c)y[c]=y[c+a.num_used];for(f=0;c<v;++c,++f)y[c]=r[s+f];OO(f==a.num_used)}return u}function L(e,t,n,o,r,s){var i=e.internal_flags;if(i.resample_ratio<.9999||i.resample_ratio>1.0001)for(var a=0;a<i.channels_out;a++){var l=new O;s.n_out=P(e,t[a],i.mf_size,e.framesize,n[a],o,r,l,a),s.n_in=l.num_used}else{s.n_out=Math.min(e.framesize,r),s.n_in=s.n_out;for(var c=0;c<s.n_out;++c)t[0][i.mf_size+c]=n[0][o+c],2==i.channels_out&&(t[1][i.mf_size+c]=n[1][o+c])}}this.lame_init=function(){var e=new kC;return g(e),e.lame_allocated_gfp=1,e},this.nearestBitrateFullIndex=function(e){var t=[8,16,24,32,40,48,56,64,80,96,112,128,160,192,224,256,320],n=0,o=0,r=0,s=0;s=t[16],r=16,o=t[16],n=16;for(var i=0;i<16;i++)if(Math.max(e,t[i+1])!=e){s=t[i+1],r=i+1,o=t[i],n=i;break}return s-e>e-o?n:r},this.lame_init_params=function(e){var t=e.internal_flags;if(t.Class_ID=0,null==t.ATH&&(t.ATH=new YC),null==t.PSY&&(t.PSY=new f),null==t.rgdata&&(t.rgdata=new QC),t.channels_in=e.num_channels,1==t.channels_in&&(e.mode=tC.MONO),t.channels_out=e.mode==tC.MONO?1:2,t.mode_ext=cC.MPG_MD_MS_LR,e.mode==tC.MONO&&(e.force_ms=!1),e.VBR==TO.vbr_off&&128!=e.VBR_mean_bitrate_kbps&&0==e.brate&&(e.brate=e.VBR_mean_bitrate_kbps),e.VBR==TO.vbr_off||e.VBR==TO.vbr_mtrh||e.VBR==TO.vbr_mt||(e.free_format=!1),e.VBR==TO.vbr_off&&0==e.brate&&SO.EQ(e.compression_ratio,0)&&(e.compression_ratio=11.025),e.VBR==TO.vbr_off&&e.compression_ratio>0&&(0==e.out_samplerate&&(e.out_samplerate=map2MP3Frequency(int(.97*e.in_samplerate))),e.brate=0|16*e.out_samplerate*t.channels_out/(1e3*e.compression_ratio),t.samplerate_index=b(e.out_samplerate,e),e.free_format||(e.brate=y(e.brate,e.version,e.out_samplerate))),0!=e.out_samplerate&&(e.out_samplerate<16e3?(e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,64)):e.out_samplerate<32e3?(e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,160)):(e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,32),e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,320))),0==e.lowpassfreq){var a=16e3;switch(e.VBR){case TO.vbr_off:var l=new p;w(l,e.brate),a=l.lowerlimit;break;case TO.vbr_abr:l=new p;w(l,e.VBR_mean_bitrate_kbps),a=l.lowerlimit;break;case TO.vbr_rh:var c=[19500,19e3,18600,18e3,17500,16e3,15600,14900,12500,1e4,3950];if(e.VBR_q>=0&&e.VBR_q<=9){var h=c[e.VBR_q],g=c[e.VBR_q+1],v=e.VBR_q_frac;a=linear_int(h,g,v)}else a=19500;break;default:c=[19500,19e3,18500,18e3,17500,16500,15500,14500,12500,9500,3950];if(e.VBR_q>=0&&e.VBR_q<=9){h=c[e.VBR_q],g=c[e.VBR_q+1],v=e.VBR_q_frac;a=linear_int(h,g,v)}else a=19500}e.mode!=tC.MONO||e.VBR!=TO.vbr_off&&e.VBR!=TO.vbr_abr||(a*=1.5),e.lowpassfreq=0|a}if(0==e.out_samplerate&&(2*e.lowpassfreq>e.in_samplerate&&(e.lowpassfreq=e.in_samplerate/2),e.out_samplerate=_(0|e.lowpassfreq,e.in_samplerate)),e.lowpassfreq=Math.min(20500,e.lowpassfreq),e.lowpassfreq=Math.min(e.out_samplerate/2,e.lowpassfreq),e.VBR==TO.vbr_off&&(e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.brate)),e.VBR==TO.vbr_abr&&(e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.VBR_mean_bitrate_kbps)),e.bWriteVbrTag||(e.findReplayGain=!1,e.decode_on_the_fly=!1,t.findPeakSample=!1),t.findReplayGain=e.findReplayGain,t.decode_on_the_fly=e.decode_on_the_fly,t.decode_on_the_fly&&(t.findPeakSample=!0),t.findReplayGain&&n.InitGainAnalysis(t.rgdata,e.out_samplerate)==GainAnalysis.INIT_GAIN_ANALYSIS_ERROR)return e.internal_flags=null,-6;switch(t.decode_on_the_fly&&!e.decode_only&&(null!=t.hip&&u.hip_decode_exit(t.hip),t.hip=u.hip_decode_init()),t.mode_gr=e.out_samplerate<=24e3?1:2,e.framesize=576*t.mode_gr,e.encoder_delay=cC.ENCDELAY,t.resample_ratio=e.in_samplerate/e.out_samplerate,e.VBR){case TO.vbr_mt:case TO.vbr_rh:case TO.vbr_mtrh:var T=[5.7,6.5,7.3,8.2,10,11.9,13,14,15,16.5];e.compression_ratio=T[e.VBR_q];break;case TO.vbr_abr:e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.VBR_mean_bitrate_kbps);break;default:e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.brate);break}if(e.mode==tC.NOT_SET&&(e.mode=tC.JOINT_STEREO),e.highpassfreq>0?(t.highpass1=2*e.highpassfreq,e.highpasswidth>=0?t.highpass2=2*(e.highpassfreq+e.highpasswidth):t.highpass2=2*e.highpassfreq,t.highpass1/=e.out_samplerate,t.highpass2/=e.out_samplerate):(t.highpass1=0,t.highpass2=0),e.lowpassfreq>0?(t.lowpass2=2*e.lowpassfreq,e.lowpasswidth>=0?(t.lowpass1=2*(e.lowpassfreq-e.lowpasswidth),t.lowpass1<0&&(t.lowpass1=0)):t.lowpass1=2*e.lowpassfreq,t.lowpass1/=e.out_samplerate,t.lowpass2/=e.out_samplerate):(t.lowpass1=0,t.lowpass2=0),k(e),t.samplerate_index=b(e.out_samplerate,e),t.samplerate_index<0)return e.internal_flags=null,-1;if(e.VBR==TO.vbr_off){if(e.free_format)t.bitrate_index=0;else if(e.brate=y(e.brate,e.version,e.out_samplerate),t.bitrate_index=x(e.brate,e.version,e.out_samplerate),t.bitrate_index<=0)return e.internal_flags=null,-1}else t.bitrate_index=1;e.analysis&&(e.bWriteVbrTag=!1),null!=t.pinfo&&(e.bWriteVbrTag=!1),o.init_bit_stream_w(t);for(var M,A=t.samplerate_index+3*e.version+6*(e.out_samplerate<16e3?1:0),R=0;R<cC.SBMAX_l+1;R++)t.scalefac_band.l[R]=s.sfBandIndex[A].l[R];for(R=0;R<cC.PSFB21+1;R++){var C=(t.scalefac_band.l[22]-t.scalefac_band.l[21])/cC.PSFB21,O=t.scalefac_band.l[21]+R*C;t.scalefac_band.psfb21[R]=O}t.scalefac_band.psfb21[cC.PSFB21]=576;for(R=0;R<cC.SBMAX_s+1;R++)t.scalefac_band.s[R]=s.sfBandIndex[A].s[R];for(R=0;R<cC.PSFB12+1;R++){C=(t.scalefac_band.s[13]-t.scalefac_band.s[12])/cC.PSFB12,O=t.scalefac_band.s[12]+R*C;t.scalefac_band.psfb12[R]=O}for(t.scalefac_band.psfb12[cC.PSFB12]=192,1==e.version?t.sideinfo_len=1==t.channels_out?21:36:t.sideinfo_len=1==t.channels_out?13:21,e.error_protection&&(t.sideinfo_len+=2),E(e),t.Class_ID=m,M=0;M<19;M++)t.nsPsy.pefirbuf[M]=700*t.mode_gr*t.channels_out;switch(-1==e.ATHtype&&(e.ATHtype=4),OO(e.VBR_q<=9),OO(e.VBR_q>=0),e.VBR){case TO.vbr_mt:e.VBR=TO.vbr_mtrh;case TO.vbr_mtrh:null==e.useTemporal&&(e.useTemporal=!1),r.apply_preset(e,500-10*e.VBR_q,0),e.quality<0&&(e.quality=LAME_DEFAULT_QUALITY),e.quality<5&&(e.quality=0),e.quality>5&&(e.quality=5),t.PSY.mask_adjust=e.maskingadjust,t.PSY.mask_adjust_short=e.maskingadjust_short,e.experimentalY?t.sfb21_extra=!1:t.sfb21_extra=e.out_samplerate>44e3,t.iteration_loop=new VBRNewIterationLoop(i);break;case TO.vbr_rh:r.apply_preset(e,500-10*e.VBR_q,0),t.PSY.mask_adjust=e.maskingadjust,t.PSY.mask_adjust_short=e.maskingadjust_short,e.experimentalY?t.sfb21_extra=!1:t.sfb21_extra=e.out_samplerate>44e3,e.quality>6&&(e.quality=6),e.quality<0&&(e.quality=LAME_DEFAULT_QUALITY),t.iteration_loop=new VBROldIterationLoop(i);break;default:var I;t.sfb21_extra=!1,e.quality<0&&(e.quality=LAME_DEFAULT_QUALITY),I=e.VBR,I==TO.vbr_off&&(e.VBR_mean_bitrate_kbps=e.brate),r.apply_preset(e,e.VBR_mean_bitrate_kbps,0),e.VBR=I,t.PSY.mask_adjust=e.maskingadjust,t.PSY.mask_adjust_short=e.maskingadjust_short,I==TO.vbr_off?t.iteration_loop=new oO(i):t.iteration_loop=new ABRIterationLoop(i);break}if(OO(e.scale>=0),e.VBR!=TO.vbr_off){if(t.VBR_min_bitrate=1,t.VBR_max_bitrate=14,e.out_samplerate<16e3&&(t.VBR_max_bitrate=8),0!=e.VBR_min_bitrate_kbps&&(e.VBR_min_bitrate_kbps=y(e.VBR_min_bitrate_kbps,e.version,e.out_samplerate),t.VBR_min_bitrate=x(e.VBR_min_bitrate_kbps,e.version,e.out_samplerate),t.VBR_min_bitrate<0))return-1;if(0!=e.VBR_max_bitrate_kbps&&(e.VBR_max_bitrate_kbps=y(e.VBR_max_bitrate_kbps,e.version,e.out_samplerate),t.VBR_max_bitrate=x(e.VBR_max_bitrate_kbps,e.version,e.out_samplerate),t.VBR_max_bitrate<0))return-1;e.VBR_min_bitrate_kbps=sO.bitrate_table[e.version][t.VBR_min_bitrate],e.VBR_max_bitrate_kbps=sO.bitrate_table[e.version][t.VBR_max_bitrate],e.VBR_mean_bitrate_kbps=Math.min(sO.bitrate_table[e.version][t.VBR_max_bitrate],e.VBR_mean_bitrate_kbps),e.VBR_mean_bitrate_kbps=Math.max(sO.bitrate_table[e.version][t.VBR_min_bitrate],e.VBR_mean_bitrate_kbps)}return e.tune&&(t.PSY.mask_adjust+=e.tune_value_a,t.PSY.mask_adjust_short+=e.tune_value_a),S(e),OO(e.scale>=0),e.athaa_type<0?t.ATH.useAdjust=3:t.ATH.useAdjust=e.athaa_type,t.ATH.aaSensitivityP=Math.pow(10,e.athaa_sensitivity/-10),null==e.short_blocks&&(e.short_blocks=MO.short_block_allowed),e.short_blocks!=MO.short_block_allowed||e.mode!=tC.JOINT_STEREO&&e.mode!=tC.STEREO||(e.short_blocks=MO.short_block_coupled),e.quant_comp<0&&(e.quant_comp=1),e.quant_comp_short<0&&(e.quant_comp_short=0),e.msfix<0&&(e.msfix=0),e.exp_nspsytune=1|e.exp_nspsytune,e.internal_flags.nsPsy.attackthre<0&&(e.internal_flags.nsPsy.attackthre=wC.NSATTACKTHRE),e.internal_flags.nsPsy.attackthre_s<0&&(e.internal_flags.nsPsy.attackthre_s=wC.NSATTACKTHRE_S),OO(e.scale>=0),e.scale<0&&(e.scale=1),e.ATHtype<0&&(e.ATHtype=4),e.ATHcurve<0&&(e.ATHcurve=4),e.athaa_loudapprox<0&&(e.athaa_loudapprox=2),e.interChRatio<0&&(e.interChRatio=0),null==e.useTemporal&&(e.useTemporal=!0),t.slot_lag=t.frac_SpF=0,e.VBR==TO.vbr_off&&(t.slot_lag=t.frac_SpF=72e3*(e.version+1)*e.brate%e.out_samplerate|0),s.iteration_init(e),d.psymodel_init(e),OO(e.scale>=0),0},this.lame_encode_flush=function(e,t,n,r){var s,i,a,l,u=e.internal_flags,d=CO([2,1152]),f=0,p=u.mf_samples_to_encode-cC.POSTDELAY,h=M(e);if(u.mf_samples_to_encode<1)return 0;s=0,e.in_samplerate!=e.out_samplerate&&(p+=16*e.out_samplerate/e.in_samplerate),a=e.framesize-p%e.framesize,a<576&&(a+=e.framesize),e.encoder_padding=a,l=(p+a)/e.framesize;while(l>0&&f>=0){var m=h-u.mf_size,g=e.frameNum;m*=e.in_samplerate,m/=e.out_samplerate,m>1152&&(m=1152),m<1&&(m=1),i=r-s,0==r&&(i=0),f=this.lame_encode_buffer(e,d[0],d[1],m,t,n,i),n+=f,s+=f,l-=g!=e.frameNum?1:0}if(u.mf_samples_to_encode=0,f<0)return f;if(i=r-s,0==r&&(i=0),o.flush_bitstream(e),f=o.copy_buffer(u,t,n,i,1),f<0)return f;if(n+=f,s+=f,i=r-s,0==r&&(i=0),e.write_id3tag_automatic){if(c.id3tag_write_v1(e),f=o.copy_buffer(u,t,n,i,0),f<0)return f;s+=f}return s},this.lame_encode_buffer=function(e,t,n,o,r,s,i){var a=e.internal_flags,l=[null,null];if(a.Class_ID!=m)return-3;if(0==o)return 0;T(a,o),l[0]=a.in_buffer_0,l[1]=a.in_buffer_1;for(var c=0;c<o;c++)l[0][c]=t[c],a.channels_in>1&&(l[1][c]=n[c]);return A(e,l[0],l[1],o,r,s,i)}}var BO=zR.VbrMode;function PO(){function e(e,t,n,o,r,s,i,a,l,c,u,d,f,p,h){this.vbr_q=e,this.quant_comp=t,this.quant_comp_s=n,this.expY=o,this.st_lrm=r,this.st_s=s,this.masking_adj=i,this.masking_adj_short=a,this.ath_lower=l,this.ath_curve=c,this.ath_sensitivity=u,this.interch=d,this.safejoint=f,this.sfb21mod=p,this.msfix=h}function t(e,t,n,o,r,s,i,a,l,c,u,d,f,p){this.quant_comp=t,this.quant_comp_s=n,this.safejoint=o,this.nsmsfix=r,this.st_lrm=s,this.st_s=i,this.nsbass=a,this.scale=l,this.masking_adj=c,this.ath_lower=u,this.ath_curve=d,this.interch=f,this.sfscale=p}var n;this.setModules=function(e){n=e};var o=[new e(0,9,9,0,5.2,125,-4.2,-6.3,4.8,1,0,0,2,21,.97),new e(1,9,9,0,5.3,125,-3.6,-5.6,4.5,1.5,0,0,2,21,1.35),new e(2,9,9,0,5.6,125,-2.2,-3.5,2.8,2,0,0,2,21,1.49),new e(3,9,9,1,5.8,130,-1.8,-2.8,2.6,3,-4,0,2,20,1.64),new e(4,9,9,1,6,135,-.7,-1.1,1.1,3.5,-8,0,2,0,1.79),new e(5,9,9,1,6.4,140,.5,.4,-7.5,4,-12,2e-4,0,0,1.95),new e(6,9,9,1,6.6,145,.67,.65,-14.7,6.5,-19,4e-4,0,0,2.3),new e(7,9,9,1,6.6,145,.8,.75,-19.7,8,-22,6e-4,0,0,2.7),new e(8,9,9,1,6.6,145,1.2,1.15,-27.5,10,-23,7e-4,0,0,0),new e(9,9,9,1,6.6,145,1.6,1.6,-36,11,-25,8e-4,0,0,0),new e(10,9,9,1,6.6,145,2,2,-36,12,-25,8e-4,0,0,0)],r=[new e(0,9,9,0,4.2,25,-7,-4,7.5,1,0,0,2,26,.97),new e(1,9,9,0,4.2,25,-5.6,-3.6,4.5,1.5,0,0,2,21,1.35),new e(2,9,9,0,4.2,25,-4.4,-1.8,2,2,0,0,2,18,1.49),new e(3,9,9,1,4.2,25,-3.4,-1.25,1.1,3,-4,0,2,15,1.64),new e(4,9,9,1,4.2,25,-2.2,.1,0,3.5,-8,0,2,0,1.79),new e(5,9,9,1,4.2,25,-1,1.65,-7.7,4,-12,2e-4,0,0,1.95),new e(6,9,9,1,4.2,25,-0,2.47,-7.7,6.5,-19,4e-4,0,0,2),new e(7,9,9,1,4.2,25,.5,2,-14.5,8,-22,6e-4,0,0,2),new e(8,9,9,1,4.2,25,1,2.4,-22,10,-23,7e-4,0,0,2),new e(9,9,9,1,4.2,25,1.5,2.95,-30,11,-25,8e-4,0,0,2),new e(10,9,9,1,4.2,25,2,2.95,-36,12,-30,8e-4,0,0,2)];function s(e,t,n){var s=e.VBR==BO.vbr_rh?o:r,i=e.VBR_q_frac,a=s[t],c=s[t+1],u=a;a.st_lrm=a.st_lrm+i*(c.st_lrm-a.st_lrm),a.st_s=a.st_s+i*(c.st_s-a.st_s),a.masking_adj=a.masking_adj+i*(c.masking_adj-a.masking_adj),a.masking_adj_short=a.masking_adj_short+i*(c.masking_adj_short-a.masking_adj_short),a.ath_lower=a.ath_lower+i*(c.ath_lower-a.ath_lower),a.ath_curve=a.ath_curve+i*(c.ath_curve-a.ath_curve),a.ath_sensitivity=a.ath_sensitivity+i*(c.ath_sensitivity-a.ath_sensitivity),a.interch=a.interch+i*(c.interch-a.interch),a.msfix=a.msfix+i*(c.msfix-a.msfix),l(e,u.vbr_q),0!=n?e.quant_comp=u.quant_comp:Math.abs(e.quant_comp- -1)>0||(e.quant_comp=u.quant_comp),0!=n?e.quant_comp_short=u.quant_comp_s:Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=u.quant_comp_s),0!=u.expY&&(e.experimentalY=0!=u.expY),0!=n?e.internal_flags.nsPsy.attackthre=u.st_lrm:Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=u.st_lrm),0!=n?e.internal_flags.nsPsy.attackthre_s=u.st_s:Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=u.st_s),0!=n?e.maskingadjust=u.masking_adj:Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=u.masking_adj),0!=n?e.maskingadjust_short=u.masking_adj_short:Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=u.masking_adj_short),0!=n?e.ATHlower=-u.ath_lower/10:Math.abs(10*-e.ATHlower-0)>0||(e.ATHlower=-u.ath_lower/10),0!=n?e.ATHcurve=u.ath_curve:Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=u.ath_curve),0!=n?e.athaa_sensitivity=u.ath_sensitivity:Math.abs(e.athaa_sensitivity- -1)>0||(e.athaa_sensitivity=u.ath_sensitivity),u.interch>0&&(0!=n?e.interChRatio=u.interch:Math.abs(e.interChRatio- -1)>0||(e.interChRatio=u.interch)),u.safejoint>0&&(e.exp_nspsytune=e.exp_nspsytune|u.safejoint),u.sfb21mod>0&&(e.exp_nspsytune=e.exp_nspsytune|u.sfb21mod<<20),0!=n?e.msfix=u.msfix:Math.abs(e.msfix- -1)>0||(e.msfix=u.msfix),0==n&&(e.VBR_q=t,e.VBR_q_frac=i)}var i=[new t(8,9,9,0,0,6.6,145,0,.95,0,-30,11,.0012,1),new t(16,9,9,0,0,6.6,145,0,.95,0,-25,11,.001,1),new t(24,9,9,0,0,6.6,145,0,.95,0,-20,11,.001,1),new t(32,9,9,0,0,6.6,145,0,.95,0,-15,11,.001,1),new t(40,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new t(48,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new t(56,9,9,0,0,6.6,145,0,.95,0,-6,11,8e-4,1),new t(64,9,9,0,0,6.6,145,0,.95,0,-2,11,8e-4,1),new t(80,9,9,0,0,6.6,145,0,.95,0,0,8,7e-4,1),new t(96,9,9,0,2.5,6.6,145,0,.95,0,1,5.5,6e-4,1),new t(112,9,9,0,2.25,6.6,145,0,.95,0,2,4.5,5e-4,1),new t(128,9,9,0,1.95,6.4,140,0,.95,0,3,4,2e-4,1),new t(160,9,9,1,1.79,6,135,0,.95,-2,5,3.5,0,1),new t(192,9,9,1,1.49,5.6,125,0,.97,-4,7,3,0,0),new t(224,9,9,1,1.25,5.2,125,0,.98,-6,9,2,0,0),new t(256,9,9,1,.97,5.2,125,0,1,-8,10,1,0,0),new t(320,9,9,1,.9,5.2,125,0,1,-10,12,0,0,0)];function a(e,t,o){var r=t,s=n.nearestBitrateFullIndex(t);if(e.VBR=BO.vbr_abr,e.VBR_mean_bitrate_kbps=r,e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,320),e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.brate=e.VBR_mean_bitrate_kbps,e.VBR_mean_bitrate_kbps>320&&(e.disable_reservoir=!0),i[s].safejoint>0&&(e.exp_nspsytune=2|e.exp_nspsytune),i[s].sfscale>0&&(e.internal_flags.noise_shaping=2),Math.abs(i[s].nsbass)>0){var a=int(4*i[s].nsbass);a<0&&(a+=64),e.exp_nspsytune=e.exp_nspsytune|a<<2}return 0!=o?e.quant_comp=i[s].quant_comp:Math.abs(e.quant_comp- -1)>0||(e.quant_comp=i[s].quant_comp),0!=o?e.quant_comp_short=i[s].quant_comp_s:Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=i[s].quant_comp_s),0!=o?e.msfix=i[s].nsmsfix:Math.abs(e.msfix- -1)>0||(e.msfix=i[s].nsmsfix),0!=o?e.internal_flags.nsPsy.attackthre=i[s].st_lrm:Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=i[s].st_lrm),0!=o?e.internal_flags.nsPsy.attackthre_s=i[s].st_s:Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=i[s].st_s),0!=o?e.scale=i[s].scale:Math.abs(e.scale- -1)>0||(e.scale=i[s].scale),0!=o?e.maskingadjust=i[s].masking_adj:Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=i[s].masking_adj),i[s].masking_adj>0?0!=o?e.maskingadjust_short=.9*i[s].masking_adj:Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=.9*i[s].masking_adj):0!=o?e.maskingadjust_short=1.1*i[s].masking_adj:Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=1.1*i[s].masking_adj),0!=o?e.ATHlower=-i[s].ath_lower/10:Math.abs(10*-e.ATHlower-0)>0||(e.ATHlower=-i[s].ath_lower/10),0!=o?e.ATHcurve=i[s].ath_curve:Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=i[s].ath_curve),0!=o?e.interChRatio=i[s].interch:Math.abs(e.interChRatio- -1)>0||(e.interChRatio=i[s].interch),t}function l(e,t){var n=0;return t<0&&(n=-1,t=0),t>9&&(n=-1,t=9),e.VBR_q=t,e.VBR_q_frac=0,n}this.apply_preset=function(e,t,n){switch(t){case IO.R3MIX:t=IO.V3,e.VBR=BO.vbr_mtrh;break;case IO.MEDIUM:t=IO.V4,e.VBR=BO.vbr_rh;break;case IO.MEDIUM_FAST:t=IO.V4,e.VBR=BO.vbr_mtrh;break;case IO.STANDARD:t=IO.V2,e.VBR=BO.vbr_rh;break;case IO.STANDARD_FAST:t=IO.V2,e.VBR=BO.vbr_mtrh;break;case IO.EXTREME:t=IO.V0,e.VBR=BO.vbr_rh;break;case IO.EXTREME_FAST:t=IO.V0,e.VBR=BO.vbr_mtrh;break;case IO.INSANE:return t=320,e.preset=t,a(e,t,n),e.VBR=BO.vbr_off,t}switch(e.preset=t,t){case IO.V9:return s(e,9,n),t;case IO.V8:return s(e,8,n),t;case IO.V7:return s(e,7,n),t;case IO.V6:return s(e,6,n),t;case IO.V5:return s(e,5,n),t;case IO.V4:return s(e,4,n),t;case IO.V3:return s(e,3,n),t;case IO.V2:return s(e,2,n),t;case IO.V1:return s(e,1,n),t;case IO.V0:return s(e,0,n),t}return t>=8&&t<=320?a(e,t,n):(e.preset=0,t)}}function LO(){this.setModules=function(e,t){}}function jO(){this.over_noise=0,this.tot_noise=0,this.max_noise=0,this.over_count=0,this.over_SSD=0,this.bits=0}var NO=zR.new_float,FO=zR.new_int;function DO(){this.global_gain=0,this.sfb_count1=0,this.step=FO(39),this.noise=NO(39),this.noise_log=NO(39)}var HO=zR.System,UO=zR.VbrMode,VO=zR.Util,$O=zR.Arrays,zO=zR.new_float,qO=zR.assert;function YO(){var e,t,n;this.rv=null,this.qupvt=null;var o,r=new LO;function s(e,t,n,o){o=0;for(var r=0;r<=n;++r){var s=Math.abs(e.xr[r]);o+=s,t[r]=Math.sqrt(s*Math.sqrt(s)),t[r]>e.xrpow_max&&(e.xrpow_max=t[r])}return o}function i(e,t){var o=e.ATH,r=t.xr;if(t.block_type!=cC.SHORT_TYPE)for(var s=!1,i=cC.PSFB21-1;i>=0&&!s;i--){var a=e.scalefac_band.psfb21[i],l=e.scalefac_band.psfb21[i+1],c=n.athAdjust(o.adjust,o.psfb21[i],o.floor);e.nsPsy.longfact[21]>1e-12&&(c*=e.nsPsy.longfact[21]);for(var u=l-1;u>=a;u--){if(!(Math.abs(r[u])<c)){s=!0;break}r[u]=0}}else for(var d=0;d<3;d++)for(s=!1,i=cC.PSFB12-1;i>=0&&!s;i--){a=3*e.scalefac_band.s[12]+(e.scalefac_band.s[13]-e.scalefac_band.s[12])*d+(e.scalefac_band.psfb12[i]-e.scalefac_band.psfb12[0]),l=a+(e.scalefac_band.psfb12[i+1]-e.scalefac_band.psfb12[i]);var f=n.athAdjust(o.adjust,o.psfb12[i],o.floor);e.nsPsy.shortfact[12]>1e-12&&(f*=e.nsPsy.shortfact[12]);for(u=l-1;u>=a;u--){if(!(Math.abs(r[u])<f)){s=!0;break}r[u]=0}}}function a(e){this.ordinal=e}function l(e,t,n,r,s){var i,l=e.CurrentStep[r],c=!1,u=e.OldValue[r],d=a.BINSEARCH_NONE;for(t.global_gain=u,n-=t.part2_length;;){var f;if(i=o.count_bits(e,s,t,null),1==l||i==n)break;i>n?(d==a.BINSEARCH_DOWN&&(c=!0),c&&(l/=2),d=a.BINSEARCH_UP,f=l):(d==a.BINSEARCH_UP&&(c=!0),c&&(l/=2),d=a.BINSEARCH_DOWN,f=-l),t.global_gain+=f,t.global_gain<0&&(t.global_gain=0,c=!0),t.global_gain>255&&(t.global_gain=255,c=!0)}qO(t.global_gain>=0),qO(t.global_gain<256);while(i>n&&t.global_gain<255)t.global_gain++,i=o.count_bits(e,s,t,null);return e.CurrentStep[r]=u-t.global_gain>=4?4:2,e.OldValue[r]=t.global_gain,t.part2_3_length=i,i}function c(e){for(var t=0;t<e.sfbmax;t++)if(e.scalefac[t]+e.subblock_gain[e.window[t]]==0)return!1;return!0}function u(e){return VO.FAST_LOG10(.368+.632*e*e*e)}function d(e,t){for(var n=1e-37,o=0;o<t.psymax;o++)n+=u(e[o]);return Math.max(1e-20,n)}function f(e,t,n,o,r){var s;switch(e){default:case 9:t.over_count>0?(s=n.over_SSD<=t.over_SSD,n.over_SSD==t.over_SSD&&(s=n.bits<t.bits)):s=n.max_noise<0&&10*n.max_noise+n.bits<=10*t.max_noise+t.bits;break;case 0:s=n.over_count<t.over_count||n.over_count==t.over_count&&n.over_noise<t.over_noise||n.over_count==t.over_count&&BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 8:n.max_noise=d(r,o);case 1:s=n.max_noise<t.max_noise;break;case 2:s=n.tot_noise<t.tot_noise;break;case 3:s=n.tot_noise<t.tot_noise&&n.max_noise<t.max_noise;break;case 4:s=n.max_noise<=0&&t.max_noise>.2||n.max_noise<=0&&t.max_noise<0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise||n.max_noise<=0&&t.max_noise>0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.05&&t.max_noise>n.max_noise-.1&&n.tot_noise+n.over_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.1&&t.max_noise>n.max_noise-.15&&n.tot_noise+n.over_noise+n.over_noise<t.tot_noise+t.over_noise+t.over_noise;break;case 5:s=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 6:s=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&(n.max_noise<t.max_noise||BitStream.EQ(n.max_noise,t.max_noise)&&n.tot_noise<=t.tot_noise);break;case 7:s=n.over_count<t.over_count||n.over_noise<t.over_noise;break}return 0==t.over_count&&(s=s&&n.bits<t.bits),s}function p(e,t,n,o,r){var s,i=e.internal_flags;s=0==t.scalefac_scale?1.2968395546510096:1.6817928305074292;for(var a=0,l=0;l<t.sfbmax;l++)a<n[l]&&(a=n[l]);var c=i.noise_shaping_amp;switch(3==c&&(c=r?2:1),c){case 2:break;case 1:a>1?a=Math.pow(a,.5):a*=.95;break;case 0:default:a>1?a=1:a*=.95;break}var u=0;for(l=0;l<t.sfbmax;l++){var d,f=t.width[l];if(u+=f,!(n[l]<a)){if(0!=(2&i.substep_shaping)&&(i.pseudohalf[l]=0==i.pseudohalf[l]?1:0,0==i.pseudohalf[l]&&2==i.noise_shaping_amp))return;for(t.scalefac[l]++,d=-f;d<0;d++)o[u+d]*=s,o[u+d]>t.xrpow_max&&(t.xrpow_max=o[u+d]);if(2==i.noise_shaping_amp)return}}}function h(e,t){for(var o=1.2968395546510096,r=0,s=0;s<e.sfbmax;s++){var i=e.width[s],a=e.scalefac[s];if(0!=e.preflag&&(a+=n.pretab[s]),r+=i,0!=(1&a)){a++;for(var l=-i;l<0;l++)t[r+l]*=o,t[r+l]>e.xrpow_max&&(e.xrpow_max=t[r+l])}e.scalefac[s]=a>>1}e.preflag=0,e.scalefac_scale=1}function m(e,t,o){var r,s=t.scalefac;for(r=0;r<t.sfb_lmax;r++)if(s[r]>=16)return!0;for(var i=0;i<3;i++){var a=0,l=0;for(r=t.sfb_lmax+i;r<t.sfbdivide;r+=3)a<s[r]&&(a=s[r]);for(;r<t.sfbmax;r+=3)l<s[r]&&(l=s[r]);if(!(a<16&&l<8)){if(t.subblock_gain[i]>=7)return!0;t.subblock_gain[i]++;var c=e.scalefac_band.l[t.sfb_lmax];for(r=t.sfb_lmax+i;r<t.sfbmax;r+=3){var u=t.width[r],d=s[r];if(d-=4>>t.scalefac_scale,d>=0)s[r]=d,c+=3*u;else{s[r]=0;var f=210+(d<<t.scalefac_scale+1);h=n.IPOW20(f),c+=u*(i+1);for(var p=-u;p<0;p++)o[c+p]*=h,o[c+p]>t.xrpow_max&&(t.xrpow_max=o[c+p]);c+=u*(3-i-1)}}var h=n.IPOW20(202);c+=t.width[r]*(i+1);for(p=-t.width[r];p<0;p++)o[c+p]*=h,o[c+p]>t.xrpow_max&&(t.xrpow_max=o[c+p])}}return!1}function g(e,t,n,r,s){var i=e.internal_flags;p(e,t,n,r,s);var a=c(t);return!a&&(a=2==i.mode_gr?o.scale_bitcount(t):o.scale_bitcount_lsf(i,t),!a||(i.noise_shaping>1&&($O.fill(i.pseudohalf,0),0==t.scalefac_scale?(h(t,r),a=!1):t.block_type==cC.SHORT_TYPE&&i.subblock_gain>0&&(a=m(i,t,r)||c(t))),a||(a=2==i.mode_gr?o.scale_bitcount(t):o.scale_bitcount_lsf(i,t)),!a))}this.setModules=function(s,i,a,l){e=s,t=i,this.rv=i,n=a,this.qupvt=a,o=l,r.setModules(n,o)},this.ms_convert=function(e,t){for(var n=0;n<576;++n){var o=e.tt[t][0].xr[n],r=e.tt[t][1].xr[n];e.tt[t][0].xr[n]=(o+r)*(.5*VO.SQRT2),e.tt[t][1].xr[n]=(o-r)*(.5*VO.SQRT2)}},this.init_xrpow=function(e,t,n){var o=0,r=0|t.max_nonzero_coeff;if(t.xrpow_max=0,$O.fill(n,r,576,0),o=s(t,n,r,o),o>1e-20){var i=0;0!=(2&e.substep_shaping)&&(i=1);for(var a=0;a<t.psymax;a++)e.pseudohalf[a]=i;return!0}return $O.fill(t.l3_enc,0,576,0),!1},this.init_outer_loop=function(e,t){t.part2_3_length=0,t.big_values=0,t.count1=0,t.global_gain=210,t.scalefac_compress=0,t.table_select[0]=0,t.table_select[1]=0,t.table_select[2]=0,t.subblock_gain[0]=0,t.subblock_gain[1]=0,t.subblock_gain[2]=0,t.subblock_gain[3]=0,t.region0_count=0,t.region1_count=0,t.preflag=0,t.scalefac_scale=0,t.count1table_select=0,t.part2_length=0,t.sfb_lmax=cC.SBPSY_l,t.sfb_smin=cC.SBPSY_s,t.psy_lmax=e.sfb21_extra?cC.SBMAX_l:cC.SBPSY_l,t.psymax=t.psy_lmax,t.sfbmax=t.sfb_lmax,t.sfbdivide=11;for(var o=0;o<cC.SBMAX_l;o++)t.width[o]=e.scalefac_band.l[o+1]-e.scalefac_band.l[o],t.window[o]=3;if(t.block_type==cC.SHORT_TYPE){var r=zO(576);t.sfb_smin=0,t.sfb_lmax=0,0!=t.mixed_block_flag&&(t.sfb_smin=3,t.sfb_lmax=2*e.mode_gr+4),t.psymax=t.sfb_lmax+3*((e.sfb21_extra?cC.SBMAX_s:cC.SBPSY_s)-t.sfb_smin),t.sfbmax=t.sfb_lmax+3*(cC.SBPSY_s-t.sfb_smin),t.sfbdivide=t.sfbmax-18,t.psy_lmax=t.sfb_lmax;var s=e.scalefac_band.l[t.sfb_lmax];HO.arraycopy(t.xr,0,r,0,576);for(o=t.sfb_smin;o<cC.SBMAX_s;o++)for(var a=e.scalefac_band.s[o],l=e.scalefac_band.s[o+1],c=0;c<3;c++)for(var u=a;u<l;u++)t.xr[s++]=r[3*u+c];var d=t.sfb_lmax;for(o=t.sfb_smin;o<cC.SBMAX_s;o++)t.width[d]=t.width[d+1]=t.width[d+2]=e.scalefac_band.s[o+1]-e.scalefac_band.s[o],t.window[d]=0,t.window[d+1]=1,t.window[d+2]=2,d+=3}t.count1bits=0,t.sfb_partition_table=n.nr_of_sfb_block[0][0],t.slen[0]=0,t.slen[1]=0,t.slen[2]=0,t.slen[3]=0,t.max_nonzero_coeff=575,$O.fill(t.scalefac,0),i(e,t)},a.BINSEARCH_NONE=new a(0),a.BINSEARCH_UP=new a(1),a.BINSEARCH_DOWN=new a(2),this.trancate_smallspectrums=function(e,t,r,s){var i=zO(SC.SFBMAX);if((0!=(4&e.substep_shaping)||t.block_type!=cC.SHORT_TYPE)&&0==(128&e.substep_shaping)){n.calc_noise(t,r,i,new jO,null);for(var a=0;a<576;a++){var l=0;0!=t.l3_enc[a]&&(l=Math.abs(t.xr[a])),s[a]=l}a=0;var c=8;t.block_type==cC.SHORT_TYPE&&(c=6);do{var u,d,f,p,h=t.width[c];if(a+=h,!(i[c]>=1)&&($O.sort(s,a-h,h),!BitStream.EQ(s[a-1],0))){u=(1-i[c])*r[c],d=0,p=0;do{var m;for(f=1;p+f<h;f++)if(BitStream.NEQ(s[p+a-h],s[p+a+f-h]))break;if(m=s[p+a-h]*s[p+a-h]*f,u<m){0!=p&&(d=s[p+a-h-1]);break}u-=m,p+=f}while(p<h);if(!BitStream.EQ(d,0))do{Math.abs(t.xr[a-h])<=d&&(t.l3_enc[a-h]=0)}while(--h>0)}}while(++c<t.psymax);t.part2_3_length=o.noquant_count_bits(e,t,null)}},this.outer_loop=function(e,t,r,s,i,a){var c,u=e.internal_flags,d=new MC,p=zO(576),h=zO(SC.SFBMAX),m=new jO,v=new DO,_=9999999,b=!1,y=!1,x=0;if(l(u,t,a,i,s),0==u.noise_shaping)return 100;n.calc_noise(t,r,h,m,v),m.bits=t.part2_3_length,d.assign(t);var w=0;HO.arraycopy(s,0,p,0,576);while(!b){do{var k,S=new jO,E=255;if(k=0!=(2&u.substep_shaping)?20:3,u.sfb21_extra){if(h[d.sfbmax]>1)break;if(d.block_type==cC.SHORT_TYPE&&(h[d.sfbmax+1]>1||h[d.sfbmax+2]>1))break}if(!g(e,d,h,s,y))break;0!=d.scalefac_scale&&(E=254);var T=a-d.part2_length;if(T<=0)break;while((d.part2_3_length=o.count_bits(u,s,d,v))>T&&d.global_gain<=E)d.global_gain++;if(d.global_gain>E)break;if(0==m.over_count){while((d.part2_3_length=o.count_bits(u,s,d,v))>_&&d.global_gain<=E)d.global_gain++;if(d.global_gain>E)break}if(n.calc_noise(d,r,h,S,v),S.bits=d.part2_3_length,c=t.block_type!=cC.SHORT_TYPE?e.quant_comp:e.quant_comp_short,c=f(c,m,S,d,h)?1:0,0!=c)_=t.part2_3_length,m=S,t.assign(d),w=0,HO.arraycopy(s,0,p,0,576);else if(0==u.full_outer_loop){if(++w>k&&0==m.over_count)break;if(3==u.noise_shaping_amp&&y&&w>30)break;if(3==u.noise_shaping_amp&&y&&d.global_gain-x>15)break}}while(d.global_gain+d.scalefac_scale<255);3==u.noise_shaping_amp?y?b=!0:(d.assign(t),HO.arraycopy(p,0,s,0,576),w=0,x=d.global_gain,y=!0):b=!0}return qO(t.global_gain+t.scalefac_scale<=255),e.VBR==UO.vbr_rh||e.VBR==UO.vbr_mtrh?HO.arraycopy(p,0,s,0,576):0!=(1&u.substep_shaping)&&trancate_smallspectrums(u,t,r,s),m.over_count},this.iteration_finish_one=function(e,n,r){var s=e.l3_side,i=s.tt[n][r];o.best_scalefac_store(e,n,r,s),1==e.use_best_huffman&&o.best_huffman_divide(e,i),t.ResvAdjust(e,i)},this.VBR_encode_granule=function(e,t,n,o,r,s,i){var a,l,c=e.internal_flags,u=new MC,d=zO(576),f=i,p=i+1,h=(i+s)/2,m=0,g=c.sfb21_extra;qO(f<=LameInternalFlags.MAX_BITS_PER_CHANNEL),$O.fill(u.l3_enc,0);do{c.sfb21_extra=!(h>f-42)&&g,l=outer_loop(e,t,n,o,r,h),l<=0?(m=1,p=t.part2_3_length,u.assign(t),HO.arraycopy(o,0,d,0,576),i=p-32,a=i-s,h=(i+s)/2):(s=h+32,a=i-s,h=(i+s)/2,0!=m&&(m=2,t.assign(u),HO.arraycopy(d,0,o,0,576)))}while(a>12);c.sfb21_extra=g,2==m&&HO.arraycopy(u.l3_enc,0,t.l3_enc,0,576),qO(t.part2_3_length<=f)},this.get_framebits=function(n,o){var r=n.internal_flags;r.bitrate_index=r.VBR_min_bitrate;var s=e.getframebits(n);r.bitrate_index=1,s=e.getframebits(n);for(var i=1;i<=r.VBR_max_bitrate;i++){r.bitrate_index=i;var a=new MeanBits(s);o[i]=t.ResvFrameBegin(n,a),s=a.bits}},this.VBR_old_prepare=function(e,o,r,s,i,a,l,c,u){var d,f=e.internal_flags,p=0,h=1,m=0;f.bitrate_index=f.VBR_max_bitrate;var g=t.ResvFrameBegin(e,new MeanBits(0))/f.mode_gr;get_framebits(e,a);for(var v=0;v<f.mode_gr;v++){var _=n.on_pe(e,o,c[v],g,v,0);f.mode_ext==cC.MPG_MD_MS_LR&&(ms_convert(f.l3_side,v),n.reduce_side(c[v],r[v],g,_));for(var b=0;b<f.channels_out;++b){var y=f.l3_side.tt[v][b];y.block_type!=cC.SHORT_TYPE?(p=1.28/(1+Math.exp(3.5-o[v][b]/300))-.05,d=f.PSY.mask_adjust-p):(p=2.56/(1+Math.exp(3.5-o[v][b]/300))-.14,d=f.PSY.mask_adjust_short-p),f.masking_lower=Math.pow(10,.1*d),init_outer_loop(f,y),u[v][b]=n.calc_xmin(e,s[v][b],y,i[v][b]),0!=u[v][b]&&(h=0),l[v][b]=126,m+=c[v][b]}}for(v=0;v<f.mode_gr;v++)for(b=0;b<f.channels_out;b++)m>a[f.VBR_max_bitrate]&&(c[v][b]*=a[f.VBR_max_bitrate],c[v][b]/=m),l[v][b]>c[v][b]&&(l[v][b]=c[v][b]);return h},this.bitpressure_strategy=function(e,t,n,o){for(var r=0;r<e.mode_gr;r++)for(var s=0;s<e.channels_out;s++){for(var i=e.l3_side.tt[r][s],a=t[r][s],l=0,c=0;c<i.psy_lmax;c++)a[l++]*=1+.029*c*c/cC.SBMAX_l/cC.SBMAX_l;if(i.block_type==cC.SHORT_TYPE)for(c=i.sfb_smin;c<cC.SBMAX_s;c++)a[l++]*=1+.029*c*c/cC.SBMAX_s/cC.SBMAX_s,a[l++]*=1+.029*c*c/cC.SBMAX_s/cC.SBMAX_s,a[l++]*=1+.029*c*c/cC.SBMAX_s/cC.SBMAX_s;o[r][s]=0|Math.max(n[r][s],.9*o[r][s])}},this.VBR_new_prepare=function(e,o,r,s,i,a){var l,c=e.internal_flags,u=1,d=0,f=0;if(e.free_format){c.bitrate_index=0;p=new MeanBits(d);l=t.ResvFrameBegin(e,p),d=p.bits,i[0]=l}else{c.bitrate_index=c.VBR_max_bitrate;var p=new MeanBits(d);t.ResvFrameBegin(e,p),d=p.bits,get_framebits(e,i),l=i[c.VBR_max_bitrate]}for(var h=0;h<c.mode_gr;h++){n.on_pe(e,o,a[h],d,h,0),c.mode_ext==cC.MPG_MD_MS_LR&&ms_convert(c.l3_side,h);for(var m=0;m<c.channels_out;++m){var g=c.l3_side.tt[h][m];c.masking_lower=Math.pow(10,.1*c.PSY.mask_adjust),init_outer_loop(c,g),0!=n.calc_xmin(e,r[h][m],g,s[h][m])&&(u=0),f+=a[h][m]}}for(h=0;h<c.mode_gr;h++)for(m=0;m<c.channels_out;m++)f>l&&(a[h][m]*=l,a[h][m]/=f);return u},this.calc_target_bits=function(o,r,s,i,a,l){var c,u,d,f,p=o.internal_flags,h=p.l3_side,m=0;p.bitrate_index=p.VBR_max_bitrate;var g=new MeanBits(m);for(l[0]=t.ResvFrameBegin(o,g),m=g.bits,p.bitrate_index=1,m=e.getframebits(o)-8*p.sideinfo_len,a[0]=m/(p.mode_gr*p.channels_out),m=o.VBR_mean_bitrate_kbps*o.framesize*1e3,0!=(1&p.substep_shaping)&&(m*=1.09),m/=o.out_samplerate,m-=8*p.sideinfo_len,m/=p.mode_gr*p.channels_out,c=.93+.07*(11-o.compression_ratio)/5.5,c<.9&&(c=.9),c>1&&(c=1),u=0;u<p.mode_gr;u++){var v=0;for(d=0;d<p.channels_out;d++){if(i[u][d]=int(c*m),r[u][d]>700){var _=int((r[u][d]-700)/1.4),b=h.tt[u][d];i[u][d]=int(c*m),b.block_type==cC.SHORT_TYPE&&_<m/2&&(_=m/2),_>3*m/2?_=3*m/2:_<0&&(_=0),i[u][d]+=_}i[u][d]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(i[u][d]=LameInternalFlags.MAX_BITS_PER_CHANNEL),v+=i[u][d]}if(v>LameInternalFlags.MAX_BITS_PER_GRANULE)for(d=0;d<p.channels_out;++d)i[u][d]*=LameInternalFlags.MAX_BITS_PER_GRANULE,i[u][d]/=v}if(p.mode_ext==cC.MPG_MD_MS_LR)for(u=0;u<p.mode_gr;u++)n.reduce_side(i[u],s[u],m*p.channels_out,LameInternalFlags.MAX_BITS_PER_GRANULE);for(f=0,u=0;u<p.mode_gr;u++)for(d=0;d<p.channels_out;d++)i[u][d]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(i[u][d]=LameInternalFlags.MAX_BITS_PER_CHANNEL),f+=i[u][d];if(f>l[0])for(u=0;u<p.mode_gr;u++)for(d=0;d<p.channels_out;d++)i[u][d]*=l[0],i[u][d]/=f}}var GO=zR.assert;function XO(){var e;this.setModules=function(t){e=t},this.ResvFrameBegin=function(t,n){var o,r=t.internal_flags,s=r.l3_side,i=e.getframebits(t);n.bits=(i-8*r.sideinfo_len)/r.mode_gr;var a=2048*r.mode_gr-8;t.brate>320?o=8*int(1e3*t.brate/(t.out_samplerate/1152)/8+.5):(o=11520,t.strict_ISO&&(o=8*int(32e4/(t.out_samplerate/1152)/8+.5))),r.ResvMax=o-i,r.ResvMax>a&&(r.ResvMax=a),(r.ResvMax<0||t.disable_reservoir)&&(r.ResvMax=0);var l=n.bits*r.mode_gr+Math.min(r.ResvSize,r.ResvMax);return l>o&&(l=o),GO(r.ResvMax%8==0),GO(r.ResvMax>=0),s.resvDrain_pre=0,null!=r.pinfo&&(r.pinfo.mean_bits=n.bits/2,r.pinfo.resvsize=r.ResvSize),l},this.ResvMaxBits=function(e,t,n,o){var r,s=e.internal_flags,i=s.ResvSize,a=s.ResvMax;0!=o&&(i+=t),0!=(1&s.substep_shaping)&&(a*=.9),n.bits=t,10*i>9*a?(r=i-9*a/10,n.bits+=r,s.substep_shaping|=128):(r=0,s.substep_shaping&=127,e.disable_reservoir||0!=(1&s.substep_shaping)||(n.bits-=.1*t));var l=i<6*s.ResvMax/10?i:6*s.ResvMax/10;return l-=r,l<0&&(l=0),l},this.ResvAdjust=function(e,t){e.ResvSize-=t.part2_3_length+t.part2_length},this.ResvFrameEnd=function(e,t){var n,o=e.l3_side;e.ResvSize+=t*e.mode_gr;var r=0;o.resvDrain_post=0,o.resvDrain_pre=0,0!=(n=e.ResvSize%8)&&(r+=n),n=e.ResvSize-r-e.ResvMax,n>0&&(r+=n);var s=Math.min(8*o.main_data_begin,r)/8;o.resvDrain_pre+=8*s,r-=8*s,e.ResvSize-=8*s,o.main_data_begin-=s,o.resvDrain_post+=r,e.ResvSize-=r}}function WO(){var e="http://www.mp3dev.org/",t=3,n=98,o=4,r=0,s=93;this.getLameVersion=function(){return t+"."+n+"."+o},this.getLameShortVersion=function(){return t+"."+n+"."+o},this.getLameVeryShortVersion=function(){return"LAME"+t+"."+n+"r"},this.getPsyVersion=function(){return r+"."+s},this.getLameUrl=function(){return e},this.getLameOsBitness=function(){return"32bits"}}var KO=zR.System,ZO=zR.VbrMode,QO=zR.ShortBlock,JO=zR.Arrays,eI=zR.new_byte,tI=zR.assert;function nI(){var e,t,n;this.setModules=function(o,r,s){e=o,t=r,n=s};var o=1,r=2,s=4,i=8,a=nI.NUMTOCENTRIES,l=nI.MAXFRAMESIZE,c=a+4+4+4+4+4,u=c+9+1+1+8+1+1+3+1+1+2+4+2+2,d=128,f=64,p=32,h=null,m="Xing",g="Info",v=[0,49345,49537,320,49921,960,640,49729,50689,1728,1920,51009,1280,50625,50305,1088,52225,3264,3456,52545,3840,53185,52865,3648,2560,51905,52097,2880,51457,2496,2176,51265,55297,6336,6528,55617,6912,56257,55937,6720,7680,57025,57217,8e3,56577,7616,7296,56385,5120,54465,54657,5440,55041,6080,5760,54849,53761,4800,4992,54081,4352,53697,53377,4160,61441,12480,12672,61761,13056,62401,62081,12864,13824,63169,63361,14144,62721,13760,13440,62529,15360,64705,64897,15680,65281,16320,16e3,65089,64001,15040,15232,64321,14592,63937,63617,14400,10240,59585,59777,10560,60161,11200,10880,59969,60929,11968,12160,61249,11520,60865,60545,11328,58369,9408,9600,58689,9984,59329,59009,9792,8704,58049,58241,9024,57601,8640,8320,57409,40961,24768,24960,41281,25344,41921,41601,25152,26112,42689,42881,26432,42241,26048,25728,42049,27648,44225,44417,27968,44801,28608,28288,44609,43521,27328,27520,43841,26880,43457,43137,26688,30720,47297,47489,31040,47873,31680,31360,47681,48641,32448,32640,48961,32e3,48577,48257,31808,46081,29888,30080,46401,30464,47041,46721,30272,29184,45761,45953,29504,45313,29120,28800,45121,20480,37057,37249,20800,37633,21440,21120,37441,38401,22208,22400,38721,21760,38337,38017,21568,39937,23744,23936,40257,24320,40897,40577,24128,23040,39617,39809,23360,39169,22976,22656,38977,34817,18624,18816,35137,19200,35777,35457,19008,19968,36545,36737,20288,36097,19904,19584,35905,17408,33985,34177,17728,34561,18368,18048,34369,33281,17088,17280,33601,16640,33217,32897,16448];function _(e,t){if(e.nVbrNumFrames++,e.sum+=t,e.seen++,!(e.seen<e.want)&&(e.pos<e.size&&(e.bag[e.pos]=e.sum,e.pos++,e.seen=0),e.pos==e.size)){for(var n=1;n<e.size;n+=2)e.bag[n/2]=e.bag[n];e.want*=2,e.pos/=2}}function b(e,t){if(!(e.pos<=0))for(var n=1;n<a;++n){var o,r,s=n/a,i=0|Math.floor(s*e.pos);i>e.pos-1&&(i=e.pos-1),o=e.bag[i],r=e.sum;var l=0|256*o/r;l>255&&(l=255),t[n]=255&l}}function y(e,t){var n=255&e[t+0];return n<<=8,n|=255&e[t+1],n<<=8,n|=255&e[t+2],n<<=8,n|=255&e[t+3],n}function x(e,t,n){e[t+0]=255&n>>24,e[t+1]=255&n>>16,e[t+2]=255&n>>8,e[t+3]=255&n}function w(e,t,n){e[t+0]=255&n>>8,e[t+1]=255&n}function k(e,t){return new String(e,t,m.length(),h).equals(m)||new String(e,t,g.length(),h).equals(g)}function S(e,t,n){return 255&(e<<t|n&~(-1<<t))}function E(t,n){var o=t.internal_flags;n[0]=S(n[0],8,255),n[1]=S(n[1],3,7),n[1]=S(n[1],1,t.out_samplerate<16e3?0:1),n[1]=S(n[1],1,t.version),n[1]=S(n[1],2,1),n[1]=S(n[1],1,t.error_protection?0:1),n[2]=S(n[2],4,o.bitrate_index),n[2]=S(n[2],2,o.samplerate_index),n[2]=S(n[2],1,0),n[2]=S(n[2],1,t.extension),n[3]=S(n[3],2,t.mode.ordinal()),n[3]=S(n[3],2,o.mode_ext),n[3]=S(n[3],1,t.copyright),n[3]=S(n[3],1,t.original),n[3]=S(n[3],2,t.emphasis),n[0]=255;var r,s,i=241&n[1];r=1==t.version?d:t.out_samplerate<16e3?p:f,t.VBR==ZO.vbr_off&&(r=t.brate),s=t.free_format?0:255&16*e.BitrateIndex(r,t.version,t.out_samplerate),1==t.version?(n[1]=255&(10|i),i=13&n[2],n[2]=255&(s|i)):(n[1]=255&(2|i),i=13&n[2],n[2]=255&(s|i))}function T(e,t){var n=t^e;return t=t>>8^v[255&n],t}function M(e,t,o,r,s){var i,a,l,c=e.internal_flags,u=0,d=e.encoder_delay,f=e.encoder_padding,p=100-10*e.VBR_q-e.quality,h=n.getLameVeryShortVersion(),m=0,g=[1,5,3,2,4,0,3],v=0|(e.lowpassfreq/100+.5>255?255:e.lowpassfreq/100+.5),_=0,b=0,y=0,k=e.internal_flags.noise_shaping,S=0,E=0,M=0,A=0,R=0,C=0!=(1&e.exp_nspsytune),O=0!=(2&e.exp_nspsytune),I=!1,B=!1,P=e.internal_flags.nogap_total,L=e.internal_flags.nogap_current,j=e.ATHtype,N=0;switch(e.VBR){case vbr_abr:l=e.VBR_mean_bitrate_kbps;break;case vbr_off:l=e.brate;break;default:l=e.VBR_min_bitrate_kbps}switch(i=e.VBR.ordinal()<g.length?g[e.VBR.ordinal()]:0,a=16*m+i,c.findReplayGain&&(c.RadioGain>510&&(c.RadioGain=510),c.RadioGain<-510&&(c.RadioGain=-510),b=8192,b|=3072,c.RadioGain>=0?b|=c.RadioGain:(b|=512,b|=-c.RadioGain)),c.findPeakSample&&(_=Math.abs(0|c.PeakSample/32767*Math.pow(2,23)+.5)),-1!=P&&(L>0&&(B=!0),L<P-1&&(I=!0)),N=j+((C?1:0)<<4)+((O?1:0)<<5)+((I?1:0)<<6)+((B?1:0)<<7),p<0&&(p=0),e.mode){case MONO:S=0;break;case STEREO:S=1;break;case DUAL_CHANNEL:S=2;break;case JOINT_STEREO:S=e.force_ms?4:3;break;case NOT_SET:default:S=7;break}M=e.in_samplerate<=32e3?0:48e3==e.in_samplerate?2:e.in_samplerate>48e3?3:1,(e.short_blocks==QO.short_block_forced||e.short_blocks==QO.short_block_dispensed||-1==e.lowpassfreq&&-1==e.highpassfreq||e.scale_left<e.scale_right||e.scale_left>e.scale_right||e.disable_reservoir&&e.brate<320||e.noATH||e.ATHonly||0==j||e.in_samplerate<=32e3)&&(E=1),A=k+(S<<2)+(E<<5)+(M<<6),R=c.nMusicCRC,x(o,r+u,p),u+=4;for(var F=0;F<9;F++)o[r+u+F]=255&h.charAt(F);u+=9,o[r+u]=255&a,u++,o[r+u]=255&v,u++,x(o,r+u,_),u+=4,w(o,r+u,b),u+=2,w(o,r+u,y),u+=2,o[r+u]=255&N,u++,o[r+u]=l>=255?255:255&l,u++,o[r+u]=255&d>>4,o[r+u+1]=255&(d<<4)+(f>>8),o[r+u+2]=255&f,u+=3,o[r+u]=255&A,u++,o[r+u++]=0,w(o,r+u,e.preset),u+=2,x(o,r+u,t),u+=4,w(o,r+u,R),u+=2;for(var D=0;D<u;D++)s=T(o[r+D],s);return w(o,r+u,s),u+=2,u}function A(e){e.seek(0);var t,n=eI(10);return e.readFully(n),t=new String(n,"ISO-8859-1").startsWith("ID3")?0:((127&n[6])<<21|(127&n[7])<<14|(127&n[8])<<7|127&n[9])+n.length,t}this.addVbrFrame=function(e){var t=e.internal_flags,n=Tables.bitrate_table[e.version][t.bitrate_index];tI(null!=t.VBR_seek_table.bag),_(t.VBR_seek_table,n)},this.getVbrTag=function(e){var t=new VBRTagData,n=0;t.flags=0;var l=e[n+1]>>3&1,c=e[n+2]>>2&3,u=e[n+3]>>6&3,d=e[n+2]>>4&15;if(d=Tables.bitrate_table[l][d],e[n+1]>>4==14?t.samprate=Tables.samplerate_table[2][c]:t.samprate=Tables.samplerate_table[l][c],n+=0!=l?3!=u?36:21:3!=u?21:13,!k(e,n))return null;n+=4,t.hId=l;var f=t.flags=y(e,n);if(n+=4,0!=(f&o)&&(t.frames=y(e,n),n+=4),0!=(f&r)&&(t.bytes=y(e,n),n+=4),0!=(f&s)){if(null!=t.toc)for(var p=0;p<a;p++)t.toc[p]=e[n+p];n+=a}t.vbrScale=-1,0!=(f&i)&&(t.vbrScale=y(e,n),n+=4),t.headersize=72e3*(l+1)*d/t.samprate,n+=21;var h=e[n+0]<<4;h+=e[n+1]>>4;var m=(15&e[n+1])<<8;return m+=255&e[n+2],(h<0||h>3e3)&&(h=-1),(m<0||m>3e3)&&(m=-1),t.encDelay=h,t.encPadding=m,t},this.InitVbrTag=function(e){var n,o=e.internal_flags;n=1==e.version?d:e.out_samplerate<16e3?p:f,e.VBR==ZO.vbr_off&&(n=e.brate);var r=72e3*(e.version+1)*n/e.out_samplerate,s=o.sideinfo_len+u;if(o.VBR_seek_table.TotalFrameSize=r,r<s||r>l)e.bWriteVbrTag=!1;else{o.VBR_seek_table.nVbrNumFrames=0,o.VBR_seek_table.nBytesWritten=0,o.VBR_seek_table.sum=0,o.VBR_seek_table.seen=0,o.VBR_seek_table.want=1,o.VBR_seek_table.pos=0,null==o.VBR_seek_table.bag&&(o.VBR_seek_table.bag=new int[400],o.VBR_seek_table.size=400);var i=eI(l);E(e,i);for(var a=o.VBR_seek_table.TotalFrameSize,c=0;c<a;++c)t.add_dummy_byte(e,255&i[c],1)}},this.updateMusicCRC=function(e,t,n,o){for(var r=0;r<o;++r)e[0]=T(t[n+r],e[0])},this.getLameTagFrame=function(e,n){var l=e.internal_flags;if(!e.bWriteVbrTag)return 0;if(l.Class_ID!=Lame.LAME_ID)return 0;if(l.VBR_seek_table.pos<=0)return 0;if(n.length<l.VBR_seek_table.TotalFrameSize)return l.VBR_seek_table.TotalFrameSize;JO.fill(n,0,l.VBR_seek_table.TotalFrameSize,0),E(e,n);var c=eI(a);if(e.free_format)for(var u=1;u<a;++u)c[u]=255&255*u/100;else b(l.VBR_seek_table,c);var d=l.sideinfo_len;e.error_protection&&(d-=2),e.VBR==ZO.vbr_off?(n[d++]=255&g.charAt(0),n[d++]=255&g.charAt(1),n[d++]=255&g.charAt(2),n[d++]=255&g.charAt(3)):(n[d++]=255&m.charAt(0),n[d++]=255&m.charAt(1),n[d++]=255&m.charAt(2),n[d++]=255&m.charAt(3)),x(n,d,o+r+s+i),d+=4,x(n,d,l.VBR_seek_table.nVbrNumFrames),d+=4;var f=l.VBR_seek_table.nBytesWritten+l.VBR_seek_table.TotalFrameSize;x(n,d,0|f),d+=4,KO.arraycopy(c,0,n,d,c.length),d+=c.length,e.error_protection&&t.CRC_writeheader(l,n);var p=0;for(u=0;u<d;u++)p=T(n[u],p);return d+=M(e,f,n,d,p),l.VBR_seek_table.TotalFrameSize},this.putVbrTag=function(e,t){var n=e.internal_flags;if(n.VBR_seek_table.pos<=0)return-1;if(t.seek(t.length()),0==t.length())return-1;var o=A(t);t.seek(o);var r=eI(l),s=getLameTagFrame(e,r);return s>r.length?-1:(s<1||t.write(r,0,s),0)}}nI.NUMTOCENTRIES=100,nI.MAXFRAMESIZE=2880;var oI=zR.new_byte,rI=zR.assert;function sI(){this.setModules=function(e,t){}}function iI(){this.setModules=function(e,t,n){}}function aI(){}function lI(){this.setModules=function(e,t){}}function cI(e,t,n){3!=arguments.length&&(console.error("WARN: Mp3Encoder(channels, samplerate, kbps) not specified"),e=1,t=44100,n=128);var o=new IO,r=new sI,s=new WC,i=new SO,a=new PO,l=new fO,c=new YO,u=new nI,d=new WO,f=new lI,p=new XO,h=new vO,m=new iI,g=new aI;o.setModules(s,i,a,l,c,u,d,f,g),i.setModules(s,g,d,u),f.setModules(i,d),a.setModules(o),c.setModules(i,p,l,h),l.setModules(h,p,o.enc.psy),p.setModules(i),h.setModules(l),u.setModules(o,i,d),r.setModules(m,g),m.setModules(d,f,a);var v=o.lame_init();v.num_channels=e,v.in_samplerate=t,v.brate=n,v.mode=tC.STEREO,v.quality=3,v.bWriteVbrTag=!1,v.disable_reservoir=!0,v.write_id3tag_automatic=!1,o.lame_init_params(v);var _=1152,b=0|1.25*_+7200,y=oI(b);this.encodeBuffer=function(t,n){1==e&&(n=t),rI(t.length==n.length),t.length>_&&(_=t.length,b=0|1.25*_+7200,y=oI(b));var r=o.lame_encode_buffer(v,t,n,t.length,y,0,b);return new Int8Array(y.subarray(0,r))},this.flush=function(){var e=o.lame_encode_flush(v,y,0,b);return new Int8Array(y.subarray(0,e))}}function uI(e){return e.charCodeAt(0)<<24|e.charCodeAt(1)<<16|e.charCodeAt(2)<<8|e.charCodeAt(3)}uI("RIFF"),uI("WAVE"),uI("fmt "),uI("data");class dI{constructor(e){this.bitRate=e.bitRate,this.sampleRate=e.sampleRate,this.dataBuffer=[],this.encoder=new cI(1,this.sampleRate,this.bitRate)}encode(e){const t=1152,n=this._convertBuffer(e);let o=n.length;for(let r=0;o>=0;r+=t){const e=n.subarray(r,r+t),s=this.encoder.encodeBuffer(e);this.dataBuffer.push(new Int8Array(s)),o-=t}}finish(){this.dataBuffer.push(this.encoder.flush());const e=new Blob(this.dataBuffer,{type:"audio/mp3"});return this.dataBuffer=[],{id:Date.now(),blob:e,url:URL.createObjectURL(e)}}_floatTo16BitPCM(e,t){for(let n=0;n<e.length;n++){const o=Math.max(-1,Math.min(1,e[n]));t[n]=o<0?32768*o:32767*o}}_convertBuffer(e){const t=new Float32Array(e),n=new Int16Array(e.length);return this._floatTo16BitPCM(t,n),n}}class fI{constructor(e={}){this.beforeRecording=e.beforeRecording,this.pauseRecording=e.pauseRecording,this.afterRecording=e.afterRecording,this.micFailed=e.micFailed,this.encoderOptions={bitRate:e.bitRate,sampleRate:e.sampleRate},this.bufferSize=4096,this.records=[],this.isPause=!1,this.isRecording=!1,this.duration=0,this.volume=0,this._duration=0}start(){const e={video:!1,audio:{channelCount:1,echoCancellation:!1}};this.beforeRecording&&this.beforeRecording("start recording"),navigator.mediaDevices.getUserMedia(e).then(this._micCaptured.bind(this)).catch(this._micError.bind(this)),this.isPause=!1,this.isRecording=!0,this.lameEncoder||(this.lameEncoder=new dI(this.encoderOptions))}stop(){this.stream.getTracks().forEach((e=>e.stop())),this.input.disconnect(),this.processor.disconnect(),this.context.close();let e=null;e=this.lameEncoder.finish(),e.duration=this.duration,this.records.push(e),this._duration=0,this.duration=0,this.isPause=!1,this.isRecording=!1,this.afterRecording&&this.afterRecording(e)}pause(){this.stream.getTracks().forEach((e=>e.stop())),this.input.disconnect(),this.processor.disconnect(),this._duration=this.duration,this.isPause=!0,this.pauseRecording&&this.pauseRecording("pause recording")}_micCaptured(e){this.context=new(window.AudioContext||window.webkitAudioContext),this.duration=this._duration,this.input=this.context.createMediaStreamSource(e),this.processor=this.context.createScriptProcessor(this.bufferSize,1,1),this.stream=e,this.processor.onaudioprocess=e=>{const t=e.inputBuffer.getChannelData(0);let n=0;this.lameEncoder&&this.lameEncoder.encode(t);for(let o=0;o<t.length;++o)n+=t[o]*t[o];this.duration=parseFloat(this._duration)+parseFloat(this.context.currentTime.toFixed(2)),this.volume=Math.sqrt(n/t.length).toFixed(2)},this.input.connect(this.processor),this.processor.connect(this.context.destination)}_micError(e){this.micFailed&&this.micFailed(e)}}var pI=window.chrome,hI=window.navigator,mI=hI.vendor,gI="undefined"!==typeof window.opr,vI=hI.userAgent.indexOf("Edg")>-1,_I=hI.userAgent.match("CriOS");function bI(){return!!_I||null!==pI&&"undefined"!==typeof pI&&"Google Inc."===mI&&!1===gI&&!1===vI}function yI(){var e=xI(),t=e.substr(0,4);return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(t)}function xI(){var e=navigator.userAgent||navigator.vendor||window.opera||null;if(!e)throw new Error("Failed to look for user agent information.");return e}const wI={name:"RoomFooter",components:{SvgIcon:fb,EmojiPickerContainer:kA,RoomFiles:jA,RoomMessageReply:aR,RoomUsersTag:hR,RoomEmojis:bR,RoomTemplatesText:MR},directives:{clickOutside:rS},props:{room:{type:Object,required:!0},roomId:{type:[String,Number],required:!0},roomMessage:{type:String,default:null},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},textMessages:{type:Object,required:!0},showSendIcon:{type:Boolean,required:!0},showFiles:{type:Boolean,required:!0},showAudio:{type:Boolean,required:!0},showEmojis:{type:Boolean,required:!0},showFooter:{type:Boolean,required:!0},acceptedFiles:{type:String,required:!0},multipleFiles:{type:Boolean,default:!0},captureFiles:{type:String,required:!0},textareaActionEnabled:{type:Boolean,required:!0},textareaAutoFocus:{type:Boolean,required:!0},userTagsEnabled:{type:Boolean,required:!0},emojisSuggestionEnabled:{type:Boolean,required:!0},templatesText:{type:Array,default:null},audioBitRate:{type:Number,required:!0},audioSampleRate:{type:Number,required:!0},initReplyMessage:{type:Object,default:null},initEditMessage:{type:Object,default:null},droppedFiles:{type:Array,default:null},emojiDataSource:{type:String,default:void 0}},emits:["edit-message","send-message","update-edited-message-id","textarea-action-handler","typing-message"],data(){return{message:"",editedMessage:{},messageReply:null,cursorRangePosition:null,files:[],fileDialog:!1,selectUsersTagItem:null,selectEmojiItem:null,selectTemplatesTextItem:null,format:"mp3",activeUpOrDownEmojis:null,activeUpOrDownUsersTag:null,activeUpOrDownTemplatesText:null,emojisDB:new yT({dataSource:this.emojiDataSource}),emojiOpened:!1,keepKeyboardOpen:!1,filteredEmojis:[],filteredUsersTag:[],selectedUsersTag:[],filteredTemplatesText:[],recorder:this.initRecorder(),isRecording:!1}},computed:{isMessageEmpty(){return!this.files.length&&!this.message.trim()},isFileLoading(){return this.files.some((e=>e.loading))},recordedTime(){return new Date(1e3*this.recorder.duration).toISOString().substr(14,5)},shadowFooter(){return!!this.filteredEmojis.length||!!this.filteredUsersTag.length||!!this.filteredTemplatesText.length||!!this.files.length||!!this.messageReply}},watch:{roomId(){this.resetMessage(!0,!0),this.roomMessage&&(this.message=this.roomMessage,setTimeout((()=>this.onChangeInput())))},message(e){this.getTextareaRef().value=e},roomMessage:{immediate:!0,handler(e){e&&(this.message=this.roomMessage)}},editedMessage(e){this.$emit("update-edited-message-id",e._id)},initReplyMessage(e){e&&this.replyMessage(e)},initEditMessage(e){e&&this.editMessage(e)},droppedFiles(e){e&&this.onFileChange(e)}},mounted(){const e=yI();let t=!0;this.getTextareaRef().addEventListener("keyup",(n=>{"Enter"!==n.key||n.shiftKey||this.fileDialog||(e?(this.message=this.message+"\n",setTimeout((()=>this.onChangeInput()))):!t||this.filteredEmojis.length||this.filteredUsersTag.length||this.filteredTemplatesText.length||this.sendMessage()),t=!n.isComposing,setTimeout((()=>{this.updateFooterLists()}),60)})),this.getTextareaRef().addEventListener("click",(()=>{e&&(this.keepKeyboardOpen=!0),this.updateFooterLists()})),this.getTextareaRef().addEventListener("blur",(()=>{setTimeout((()=>{this.resetFooterList()}),100),e&&setTimeout((()=>this.keepKeyboardOpen=!1))}))},beforeUnmount(){this.stopRecorder()},methods:{getTextareaRef(){return this.$refs.roomTextarea},focusTextarea(e){yI()&&e||this.getTextareaRef()&&(this.getTextareaRef().focus(),this.cursorRangePosition&&setTimeout((()=>{const e=bI()?0:1;this.getTextareaRef().setSelectionRange(this.cursorRangePosition+e,this.cursorRangePosition+e),this.cursorRangePosition=null})))},onChangeInput(){var e,t,n;((null==(e=this.getTextareaRef())?void 0:e.value)||""===(null==(t=this.getTextareaRef())?void 0:t.value))&&(this.message=null==(n=this.getTextareaRef())?void 0:n.value),this.keepKeyboardOpen=!0,this.resizeTextarea(),this.$emit("typing-message",this.message)},resizeTextarea(){const e=this.getTextareaRef();if(!e)return;const t=window.getComputedStyle(e,null).getPropertyValue("padding-top").replace("px","");e.style.height=0,e.style.height=e.scrollHeight-2*t+"px"},escapeTextarea(){this.filteredEmojis.length?this.filteredEmojis=[]:this.filteredUsersTag.length?this.filteredUsersTag=[]:this.filteredTemplatesText.length?this.filteredTemplatesText=[]:this.resetMessage()},onPasteImage(e){var t;const n=null==(t=e.clipboardData)?void 0:t.items;n&&Array.from(n).forEach((e=>{if(e.type.includes("image")){const t=e.getAsFile();this.onFileChange([t])}}))},updateActiveUpOrDown(e,t){this.filteredEmojis.length?(this.activeUpOrDownEmojis=t,e.preventDefault()):this.filteredUsersTag.length?(this.activeUpOrDownUsersTag=t,e.preventDefault()):this.filteredTemplatesText.length&&(this.activeUpOrDownTemplatesText=t,e.preventDefault())},selectItem(){this.filteredEmojis.length?this.selectEmojiItem=!0:this.filteredUsersTag.length?this.selectUsersTagItem=!0:this.filteredTemplatesText.length&&(this.selectTemplatesTextItem=!0)},selectEmoji(e){if(this.selectEmojiItem=!1,!e)return;const{position:t,endPosition:n}=this.getCharPosition(":");this.message=this.message.substr(0,t-1)+e+this.message.substr(n,this.message.length-1),this.cursorRangePosition=t,this.focusTextarea()},selectTemplateText(e){if(this.selectTemplatesTextItem=!1,!e)return;const{position:t,endPosition:n}=this.getCharPosition("/"),o=this.message.substr(n,n).length?"":" ";this.message=this.message.substr(0,t-1)+e.text+o+this.message.substr(n,this.message.length-1),this.cursorRangePosition=t+e.text.length+o.length+1,this.focusTextarea()},addEmoji(e){this.message+=e.unicode,this.focusTextarea(!0)},launchFilePicker(){this.$refs.file.value="",this.$refs.file.click()},async onFileChange(e){this.fileDialog=!0,this.focusTextarea(),Array.from(e).forEach((async e=>{const t=URL.createObjectURL(e),n=e.name.lastIndexOf(".");this.files.push({loading:!0,name:e.name.substring(0,n),size:e.size,type:e.type,extension:e.name.substring(n+1),localUrl:t});const o=await fetch(t).then((e=>e.blob()));let r=this.files.find((e=>e.localUrl===t));r&&(r.blob=o,r.loading=!1,delete r.loading)})),setTimeout((()=>this.fileDialog=!1),500)},removeFile(e){this.files.splice(e,1),this.focusTextarea()},toggleRecorder(e){if(this.isRecording=e,this.recorder.isRecording)try{this.recorder.stop();const e=this.recorder.records[0];this.files.push({blob:e.blob,name:`audio.${this.format}`,size:e.blob.size,duration:e.duration,type:e.blob.type,audio:!0,localUrl:URL.createObjectURL(e.blob)}),this.recorder=this.initRecorder(),this.sendMessage()}catch{setTimeout((()=>this.stopRecorder()),100)}else setTimeout((()=>this.recorder.start()),200)},stopRecorder(){if(this.recorder.isRecording)try{this.recorder.stop(),this.recorder=this.initRecorder()}catch{setTimeout((()=>this.stopRecorder()),100)}},textareaActionHandler(){this.$emit("textarea-action-handler",this.message)},sendMessage(){var e;let t=this.message.trim();if(!this.files.length&&!t)return;if(this.isFileLoading)return;this.selectedUsersTag.forEach((e=>{t=t.replace(`@${e.username}`,`<usertag>${e._id}</usertag>`)}));const n=this.files.length?this.files:null;this.editedMessage._id?(this.editedMessage.content!==t||(null==(e=this.editedMessage.files)?void 0:e.length)||this.files.length)&&this.$emit("edit-message",{messageId:this.editedMessage._id,newContent:t,files:n,replyMessage:this.messageReply,usersTag:this.selectedUsersTag}):this.$emit("send-message",{content:t,files:n,replyMessage:this.messageReply,usersTag:this.selectedUsersTag}),this.resetMessage(!0)},editMessage(e){this.resetMessage(),this.editedMessage={...e};let t=e.content;const n=t,o="<usertag>",r="</usertag>",s=[...t.matchAll(new RegExp(o,"gi"))].map((e=>e.index));s.forEach((e=>{const s=n.substring(e+o.length,n.indexOf(r,e)),i=this.room.users.find((e=>e._id===s));t=t.replace(`${o}${s}${r}`,`@${(null==i?void 0:i.username)||"unknown"}`),this.selectUserTag(i,!0)})),this.message=t,e.files&&(this.files=[...e.files]),setTimeout((()=>this.resizeTextarea()))},replyMessage(e){this.editedMessage={},this.messageReply=e,this.focusTextarea()},updateFooterLists(){this.updateFooterList("@"),this.updateFooterList(":"),this.updateFooterList("/")},updateFooterList(e){if(!this.getTextareaRef())return;if(":"===e&&!this.emojisSuggestionEnabled)return;if("@"===e&&(!this.userTagsEnabled||!this.room.users))return;if("/"===e&&!this.templatesText)return;const t=this.getTextareaRef().selectionStart;let n=t;while(n>0&&this.message.charAt(n-1)!==e&&(" "!==this.message.charAt(n-1)||":"!==e))n--;const o=this.message.charAt(n-2),r=!o.match(/^[0-9a-zA-Z]+$/);if(this.message.charAt(n-1)!==e||o&&" "!==o&&!r)this.resetFooterList(e);else{const o=this.message.substring(n,t);":"===e?this.updateEmojis(o):"@"===e?this.updateShowUsersTag(o):"/"===e&&this.updateShowTemplatesText(o)}},updateShowUsersTag(e){this.filteredUsersTag=MS(this.room.users,"username",e,!0).filter((e=>e._id!==this.currentUserId))},selectUserTag(e,t=!1){if(this.selectUsersTagItem=!1,!e)return;const{position:n,endPosition:o}=this.getCharPosition("@"),r=this.message.substr(o,o).length?"":" ";this.message=this.message.substr(0,n)+e.username+r+this.message.substr(o,this.message.length-1),this.selectedUsersTag=[...this.selectedUsersTag,{...e}],t||(this.cursorRangePosition=n+e.username.length+r.length+1),this.focusTextarea()},updateShowTemplatesText(e){this.filteredTemplatesText=MS(this.templatesText,"tag",e,!0)},getCharPosition(e){const t=this.getTextareaRef().selectionStart;let n=t;while(n>0&&this.message.charAt(n-1)!==e)n--;const o=this.getTextareaRef().selectionEnd;return{position:n,endPosition:o}},async updateEmojis(e){if(!e)return;const t=await this.emojisDB.getEmojiBySearchQuery(e);this.filteredEmojis=t.map((e=>e.unicode))},resetFooterList(e=null){":"===e?this.filteredEmojis=[]:"@"===e?this.filteredUsersTag=[]:("/"===e||(this.filteredEmojis=[],this.filteredUsersTag=[]),this.filteredTemplatesText=[])},resetMessage(e=!1,t=!1){t||this.$emit("typing-message",null),this.selectedUsersTag=[],this.resetFooterList(),this.resetTextareaSize(),this.message="",this.editedMessage={},this.messageReply=null,this.files=[],this.emojiOpened=!1,this.preventKeyboardFromClosing(),!this.textareaAutoFocus&&t||setTimeout((()=>this.focusTextarea(e)))},resetTextareaSize(){this.getTextareaRef()&&(this.getTextareaRef().style.height="20px")},preventKeyboardFromClosing(){this.keepKeyboardOpen&&this.getTextareaRef().focus()},initRecorder(){return this.isRecording=!1,new fI({bitRate:Number(this.audioBitRate),sampleRate:Number(this.audioSampleRate),beforeRecording:null,afterRecording:null,pauseRecording:null,micFailed:this.micFailed})},micFailed(){this.isRecording=!1,this.recorder=this.initRecorder()}}},kI={key:0,class:"vac-icon-textarea-left"},SI=Lg("div",{class:"vac-dot-audio-record"},null,-1),EI={class:"vac-dot-audio-record-time"},TI=["placeholder"],MI={class:"vac-icon-textarea"},AI={key:1},RI=["multiple","accept","capture"];function CI(e,t,n,o,r,s){const i=vm("room-emojis"),a=vm("room-users-tag"),l=vm("room-templates-text"),c=vm("room-message-reply"),u=vm("room-files"),d=vm("svg-icon"),f=vm("emoji-picker-container"),p=ym("click-outside");return pm((kg(),Ag("div",{id:"room-footer",class:tp(["vac-room-footer",{"vac-app-box-shadow":s.shadowFooter}])},[jg(i,{"filtered-emojis":r.filteredEmojis,"select-item":r.selectEmojiItem,"active-up-or-down":r.activeUpOrDownEmojis,onSelectEmoji:t[0]||(t[0]=e=>s.selectEmoji(e)),onActivateItem:t[1]||(t[1]=e=>r.activeUpOrDownEmojis=0)},null,8,["filtered-emojis","select-item","active-up-or-down"]),jg(a,{"filtered-users-tag":r.filteredUsersTag,"select-item":r.selectUsersTagItem,"active-up-or-down":r.activeUpOrDownUsersTag,onSelectUserTag:t[2]||(t[2]=e=>s.selectUserTag(e)),onActivateItem:t[3]||(t[3]=e=>r.activeUpOrDownUsersTag=0)},null,8,["filtered-users-tag","select-item","active-up-or-down"]),jg(l,{"filtered-templates-text":r.filteredTemplatesText,"select-item":r.selectTemplatesTextItem,"active-up-or-down":r.activeUpOrDownTemplatesText,onSelectTemplateText:t[4]||(t[4]=e=>s.selectTemplateText(e)),onActivateItem:t[5]||(t[5]=e=>r.activeUpOrDownTemplatesText=0)},null,8,["filtered-templates-text","select-item","active-up-or-down"]),jg(c,{room:n.room,"message-reply":r.messageReply,"text-formatting":n.textFormatting,"link-options":n.linkOptions,onResetMessage:s.resetMessage},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["room","message-reply","text-formatting","link-options","onResetMessage"]),jg(u,{files:r.files,onRemoveFile:s.removeFile,onResetMessage:s.resetMessage},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["files","onRemoveFile","onResetMessage"]),Lg("div",{class:tp(["vac-box-footer",{"vac-box-footer-border":!r.files.length}])},[n.showAudio&&!r.files.length?(kg(),Ag("div",kI,[r.isRecording?(kg(),Ag(vg,{key:0},[Lg("div",{class:"vac-svg-button vac-icon-audio-stop",onClick:t[6]||(t[6]=(...e)=>s.stopRecorder&&s.stopRecorder(...e))},[Em(e.$slots,"audio-stop-icon",{},(()=>[jg(d,{name:"close-outline"})]))]),SI,Lg("div",EI,op(s.recordedTime),1),Lg("div",{class:"vac-svg-button vac-icon-audio-confirm",onClick:t[7]||(t[7]=e=>s.toggleRecorder(!1))},[Em(e.$slots,"audio-check-icon",{},(()=>[jg(d,{name:"checkmark"})]))])],64)):(kg(),Ag("div",{key:1,class:"vac-svg-button",onClick:t[8]||(t[8]=e=>s.toggleRecorder(!0))},[Em(e.$slots,"microphone-icon",{},(()=>[jg(d,{name:"microphone",class:"vac-icon-microphone"})]))]))])):Ug("",!0),Lg("textarea",{id:"roomTextarea",ref:"roomTextarea",placeholder:n.textMessages.TYPE_MESSAGE,class:tp(["vac-textarea",{"vac-textarea-outline":r.editedMessage._id}]),style:{"min-height":"20px","padding-left":"12px"},onInput:t[9]||(t[9]=(...e)=>s.onChangeInput&&s.onChangeInput(...e)),onKeydown:[t[10]||(t[10]=z_(((...e)=>s.escapeTextarea&&s.escapeTextarea(...e)),["esc"])),t[11]||(t[11]=z_(V_(((...e)=>s.selectItem&&s.selectItem(...e)),["exact","prevent"]),["enter"])),t[13]||(t[13]=z_(V_((()=>{}),["exact","prevent"]),["tab"])),t[14]||(t[14]=z_(((...e)=>s.selectItem&&s.selectItem(...e)),["tab"])),t[15]||(t[15]=z_((e=>s.updateActiveUpOrDown(e,-1)),["up"])),t[16]||(t[16]=z_((e=>s.updateActiveUpOrDown(e,1)),["down"]))],onPaste:t[12]||(t[12]=(...e)=>s.onPasteImage&&s.onPasteImage(...e))},null,42,TI),Lg("div",MI,[r.editedMessage._id?(kg(),Ag("div",{key:0,class:"vac-svg-button",onClick:t[17]||(t[17]=(...e)=>s.resetMessage&&s.resetMessage(...e))},[Em(e.$slots,"edit-close-icon",{},(()=>[jg(d,{name:"close-outline"})]))])):Ug("",!0),n.showEmojis?pm((kg(),Ag("div",AI,[Em(e.$slots,"emoji-picker",qg({emojiOpened:r.emojiOpened},{addEmoji:s.addEmoji}),(()=>[jg(f,{"emoji-opened":r.emojiOpened,"position-top":!0,"emoji-data-source":n.emojiDataSource,onAddEmoji:s.addEmoji,onOpenEmoji:t[18]||(t[18]=e=>r.emojiOpened=e)},{"emoji-picker-icon":xh((()=>[Em(e.$slots,"emoji-picker-icon")])),_:3},8,["emoji-opened","emoji-data-source","onAddEmoji"])]))])),[[p,()=>r.emojiOpened=!1]]):Ug("",!0),n.showFiles?(kg(),Ag("div",{key:2,class:"vac-svg-button",onClick:t[19]||(t[19]=(...e)=>s.launchFilePicker&&s.launchFilePicker(...e))},[Em(e.$slots,"paperclip-icon",{},(()=>[jg(d,{name:"paperclip"})]))])):Ug("",!0),n.textareaActionEnabled?(kg(),Ag("div",{key:3,class:"vac-svg-button",onClick:t[20]||(t[20]=(...e)=>s.textareaActionHandler&&s.textareaActionHandler(...e))},[Em(e.$slots,"custom-action-icon",{},(()=>[jg(d,{name:"deleted"})]))])):Ug("",!0),n.showFiles?(kg(),Ag("input",{key:4,ref:"file",type:"file",multiple:!!n.multipleFiles||null,accept:n.acceptedFiles,capture:n.captureFiles,style:{display:"none"},onChange:t[21]||(t[21]=e=>s.onFileChange(e.target.files))},null,40,RI)):Ug("",!0),n.showSendIcon?(kg(),Ag("div",{key:5,class:tp(["vac-svg-button",{"vac-send-disabled":s.isMessageEmpty}]),onClick:t[22]||(t[22]=(...e)=>s.sendMessage&&s.sendMessage(...e))},[Em(e.$slots,"send-icon",{},(()=>[jg(d,{name:"send",param:s.isMessageEmpty||s.isFileLoading?"disabled":""},null,8,["param"])]))],2)):Ug("",!0)])],2)],2)),[[q_,Object.keys(n.room).length&&n.showFooter]])}var OI=Z_(wI,[["render",CI]]);const II={name:"MessageReply",components:{AudioPlayer:YA,SvgIcon:fb,FormatMessage:zk},props:{message:{type:Object,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},roomUsers:{type:Array,required:!0}},computed:{replyUsername(){const{senderId:e}=this.message.replyMessage,t=this.roomUsers.find((t=>t._id===e));return t?t.username:""},firstFile(){var e,t;return(null==(t=null==(e=this.message.replyMessage)?void 0:e.files)?void 0:t.length)?this.message.replyMessage.files[0]:{}},isAudio(){return uS(this.firstFile)},isImage(){return aS(this.firstFile)},isVideo(){return lS(this.firstFile)},isOtherFile(){var e;return(null==(e=this.message.replyMessage.files)?void 0:e.length)&&!this.isAudio&&!this.isVideo&&!this.isImage}}},BI={class:"vac-reply-message"},PI={class:"vac-reply-username"},LI={key:0,class:"vac-image-reply-container"},jI={key:1,class:"vac-video-reply-container"},NI={controls:""},FI=["src"],DI={key:3,class:"vac-file-container"},HI={class:"vac-text-ellipsis"},UI={key:0,class:"vac-text-ellipsis vac-text-extension"},VI={class:"vac-reply-content"};function $I(e,t,n,o,r,s){const i=vm("audio-player"),a=vm("svg-icon"),l=vm("format-message");return kg(),Ag("div",BI,[Lg("div",PI,op(s.replyUsername),1),s.isImage?(kg(),Ag("div",LI,[Lg("div",{class:"vac-message-image vac-message-image-reply",style:Zf({"background-image":`url('${s.firstFile.url}')`})},null,4)])):s.isVideo?(kg(),Ag("div",jI,[Lg("video",NI,[Lg("source",{src:s.firstFile.url},null,8,FI)])])):s.isAudio?(kg(),Rg(i,{key:2,src:s.firstFile.url,"message-selection-enabled":!1,onUpdateProgressTime:t[0]||(t[0]=t=>e.progressTime=t),onHoverAudioProgress:t[1]||(t[1]=t=>e.hoverAudioProgress=t)},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["src"])):s.isOtherFile?(kg(),Ag("div",DI,[Lg("div",null,[Em(e.$slots,"file-icon",{},(()=>[jg(a,{name:"file"})]))]),Lg("div",HI,op(s.firstFile.name),1),s.firstFile.extension?(kg(),Ag("div",UI,op(s.firstFile.extension),1)):Ug("",!0)])):Ug("",!0),Lg("div",VI,[jg(l,{"message-id":n.message.replyMessage._id,content:n.message.replyMessage.content,users:n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions,reply:!0},null,8,["message-id","content","users","text-formatting","link-options"])])])}var zI=Z_(II,[["render",$I]]);const qI={name:"ProgressBar",props:{progress:{type:Number,default:0}},data(){const e=35,t=4,n=e-2*t,o=2*n*Math.PI;return{radius:e,stroke:t,normalizedRadius:n,circumference:o}},computed:{strokeDashoffset(){return this.circumference-this.progress/100*this.circumference}}},YI={ref:"progress",class:"vac-progress-wrapper"},GI=["height","width"],XI=["stroke-dasharray","stroke-width","r","cx","cy"],WI={class:"vac-progress-text"},KI=Lg("span",{class:"vac-progress-pourcent"},"%",-1);function ZI(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-fade-spinner",appear:""},{default:xh((()=>[Lg("div",YI,[(kg(),Ag("svg",{height:2*r.radius,width:2*r.radius},[Lg("circle",{stroke:"rgba(255, 255, 255, 0.7)","stroke-dasharray":r.circumference+" "+r.circumference,style:Zf({strokeDashoffset:s.strokeDashoffset,strokeLinecap:"round"}),"stroke-width":r.stroke,fill:"transparent",r:r.normalizedRadius,cx:r.radius,cy:r.radius},null,12,XI)],8,GI)),Lg("div",{class:"vac-progress-content",style:Zf({height:2*r.radius-19+"px",width:2*r.radius-19+"px"})},[Lg("div",WI,[Hg(op(n.progress),1),KI])],4)],512)])),_:1})}var QI=Z_(qI,[["render",ZI]]);const JI={name:"MessageFile",components:{SvgIcon:fb,Loader:ib,ProgressBar:QI},props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0},file:{type:Object,required:!0},index:{type:Number,required:!0},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["open-file"],data(){return{imageResponsive:"",imageLoading:!1,imageHover:!1}},computed:{isImageLoading(){return-1!==this.file.url.indexOf("blob:http")||this.imageLoading},isImage(){return aS(this.file)},isVideo(){return lS(this.file)}},watch:{file:{immediate:!0,handler(){this.checkImgLoad()}}},mounted(){const e=this.$refs["imageRef"+this.index];e&&(this.imageResponsive={maxHeight:e.clientWidth-18,loaderTop:e.clientHeight/2-9})},methods:{checkImgLoad(){if(!aS(this.file))return;this.imageLoading=!0;const e=new Image;e.src=this.file.url,e.addEventListener("load",(()=>this.imageLoading=!1))},openFile(e,t){this.messageSelectionEnabled||(e.stopPropagation(),this.$emit("open-file",{file:this.file,action:t}))}}},eB={class:"vac-message-file-container"},tB={key:0,class:"vac-image-buttons"},nB={controls:""},oB=["src"];function rB(e,t,n,o,r,s){const i=vm("progress-bar"),a=vm("loader"),l=vm("svg-icon");return kg(),Ag("div",eB,[s.isImage?(kg(),Ag("div",{key:0,ref:"imageRef"+n.index,class:"vac-message-image-container",onMouseover:t[2]||(t[2]=e=>r.imageHover=!0),onMouseleave:t[3]||(t[3]=e=>r.imageHover=!1),onClick:t[4]||(t[4]=e=>s.openFile(e,"preview"))},[n.file.progress>=0?(kg(),Rg(i,{key:0,progress:n.file.progress,style:Zf({top:`${r.imageResponsive.loaderTop}px`})},null,8,["progress","style"])):(kg(),Rg(a,{key:1,show:s.isImageLoading,type:"message-file","message-id":n.message._id,style:Zf({top:`${r.imageResponsive.loaderTop}px`})},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show","message-id","style"])),Lg("div",{class:tp(["vac-message-image",{"vac-blur-loading":s.isImageLoading&&n.message.senderId===n.currentUserId}]),style:Zf({"background-image":`url('${s.isImageLoading&&n.file.preview||n.file.url}')`,"max-height":`${r.imageResponsive.maxHeight}px`})},[jg(m_,{name:"vac-fade-image"},{default:xh((()=>[n.messageSelectionEnabled||!r.imageHover||s.isImageLoading?Ug("",!0):(kg(),Ag("div",tB,[Lg("div",{class:"vac-svg-button vac-button-view",onClick:t[0]||(t[0]=e=>s.openFile(e,"preview"))},[Em(e.$slots,"eye-icon_"+n.message._id,{},(()=>[jg(l,{name:"eye"})]))]),Lg("div",{class:"vac-svg-button vac-button-download",onClick:t[1]||(t[1]=e=>s.openFile(e,"download"))},[Em(e.$slots,"document-icon_"+n.message._id,{},(()=>[jg(l,{name:"document"})]))])]))])),_:3})],6)],544)):s.isVideo?(kg(),Ag("div",{key:1,class:"vac-video-container",onClick:t[5]||(t[5]=V_((e=>s.openFile(e,"preview")),["prevent"]))},[n.file.progress>=0?(kg(),Rg(i,{key:0,progress:n.file.progress},null,8,["progress"])):Ug("",!0),Lg("video",nB,[Lg("source",{src:n.file.url},null,8,oB)])])):Ug("",!0)])}var sB=Z_(JI,[["render",rB]]);const iB={name:"MessageFiles",components:{SvgIcon:fb,FormatMessage:zk,ProgressBar:QI,MessageFile:sB},props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0},roomUsers:{type:Array,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["open-file","open-user-tag"],computed:{imageVideoFiles(){return this.message.files.filter((e=>cS(e)))},otherFiles(){return this.message.files.filter((e=>!cS(e)))}},methods:{openFile(e,t,n){this.messageSelectionEnabled||(e.stopPropagation(),this.$emit("open-file",{file:t,action:n}))}}},aB={class:"vac-message-files-container"},lB=["onClick"],cB={class:"vac-svg-button"},uB={class:"vac-text-ellipsis"},dB={key:0,class:"vac-text-ellipsis vac-text-extension"};function fB(e,t,n,o,r,s){const i=vm("message-file"),a=vm("progress-bar"),l=vm("svg-icon"),c=vm("format-message");return kg(),Ag("div",aB,[(kg(!0),Ag(vg,null,km(s.imageVideoFiles,((o,r)=>(kg(),Ag("div",{key:r+"iv"},[jg(i,{file:o,"current-user-id":n.currentUserId,message:n.message,index:r,"message-selection-enabled":n.messageSelectionEnabled,onOpenFile:t[0]||(t[0]=t=>e.$emit("open-file",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["file","current-user-id","message","index","message-selection-enabled"])])))),128)),(kg(!0),Ag(vg,null,km(s.otherFiles,((t,n)=>(kg(),Ag("div",{key:n+"a",class:"vac-file-wrapper"},[t.progress>=0?(kg(),Rg(a,{key:0,progress:t.progress,style:{top:"44px"}},null,8,["progress"])):Ug("",!0),Lg("div",{class:tp(["vac-file-container",{"vac-file-container-progress":t.progress>=0}]),onClick:e=>s.openFile(e,t,"download")},[Lg("div",cB,[Em(e.$slots,"document-icon",{},(()=>[jg(l,{name:"document"})]))]),Lg("div",uB,op(t.name),1),t.extension?(kg(),Ag("div",dB,op(t.extension),1)):Ug("",!0)],10,lB)])))),128)),jg(c,{"message-id":n.message._id,content:n.message.content,users:n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions,onOpenUserTag:t[1]||(t[1]=t=>e.$emit("open-user-tag",t))},null,8,["message-id","content","users","text-formatting","link-options"])])}var pB=Z_(iB,[["render",fB]]);const hB={name:"MessageActions",components:{SvgIcon:fb,EmojiPickerContainer:kA},directives:{clickOutside:rS},props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0},messageActions:{type:Array,required:!0},showReactionEmojis:{type:Boolean,required:!0},messageHover:{type:Boolean,required:!0},hoverMessageId:{type:[String,Number],default:null},hoverAudioProgress:{type:Boolean,required:!0},emojiDataSource:{type:String,default:void 0}},emits:["update-emoji-opened","update-options-opened","update-message-hover","message-action-handler","send-message-reaction"],data(){return{menuOptionsTop:0,optionsOpened:!1,optionsClosing:!1,emojiOpened:!1}},computed:{isMessageActions(){return this.filteredMessageActions.length&&this.messageHover&&!this.message.deleted&&!this.message.disableActions&&!this.hoverAudioProgress},isMessageReactions(){return this.showReactionEmojis&&this.messageHover&&!this.message.deleted&&!this.message.disableReactions&&!this.hoverAudioProgress},filteredMessageActions(){return this.message.senderId===this.currentUserId?this.messageActions:this.messageActions.filter((e=>!e.onlyMe))}},watch:{emojiOpened(e){this.$emit("update-emoji-opened",e),e&&(this.optionsOpened=!1)},optionsOpened(e){this.$emit("update-options-opened",e)}},methods:{openOptions(){this.optionsClosing||(this.optionsOpened=!this.optionsOpened,this.optionsOpened&&setTimeout((()=>{const e=bA(this.$el,"#room-footer");if(!e||!this.$refs.menuOptions||!this.$refs.actionIcon)return;const t=this.$refs.menuOptions.getBoundingClientRect().height,n=this.$refs.actionIcon.getBoundingClientRect().top,o=e.getBoundingClientRect().top,r=o-n>t+50;this.menuOptionsTop=r?30:-t})))},closeOptions(){this.optionsOpened=!1,this.optionsClosing=!0,this.updateMessageHover(),setTimeout((()=>this.optionsClosing=!1),100)},openEmoji(){this.emojiOpened=!this.emojiOpened},closeEmoji(){this.emojiOpened=!1,this.updateMessageHover()},updateMessageHover(){this.hoverMessageId!==this.message._id&&this.$emit("update-message-hover",!1)},messageActionHandler(e){this.closeOptions(),this.$emit("message-action-handler",e)},sendMessageReaction(e,t){this.$emit("send-message-reaction",{emoji:e,reaction:t}),this.closeEmoji()}}},mB={class:"vac-message-actions-wrapper"},gB={key:"3"},vB={class:"vac-menu-list"},_B=["onClick"];function bB(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("emoji-picker-container"),l=ym("click-outside");return kg(),Ag("div",mB,[Lg("div",{class:"vac-options-container",style:Zf({display:n.hoverAudioProgress?"none":"initial",width:s.filteredMessageActions.length&&n.showReactionEmojis?"70px":"45px"})},[jg(L_,{name:"vac-slide-left",tag:"span"},{default:xh((()=>[s.isMessageActions||s.isMessageReactions?(kg(),Ag("div",{key:"1",class:tp(["vac-blur-container",{"vac-options-me":n.message.senderId===n.currentUserId}])},null,2)):Ug("",!0),s.isMessageActions?(kg(),Ag("div",{ref:"actionIcon",key:"2",class:"vac-svg-button vac-message-options",onClick:t[0]||(t[0]=(...e)=>s.openOptions&&s.openOptions(...e))},[Em(e.$slots,"dropdown-icon_"+n.message._id,{},(()=>[jg(i,{name:"dropdown",param:"message"})]))],512)):Ug("",!0),s.isMessageReactions?pm((kg(),Ag("div",gB,[Em(e.$slots,"emoji-picker",qg({emojiOpened:r.emojiOpened},{addEmoji:s.sendMessageReaction}),(()=>[jg(a,{class:"vac-message-emojis",style:Zf({right:s.isMessageActions?"30px":"5px"}),"emoji-opened":r.emojiOpened,"emoji-reaction":!0,"position-right":n.message.senderId===n.currentUserId,"message-id":n.message._id,"emoji-data-source":n.emojiDataSource,onAddEmoji:s.sendMessageReaction,onOpenEmoji:s.openEmoji},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["style","emoji-opened","position-right","message-id","emoji-data-source","onAddEmoji","onOpenEmoji"])]))])),[[l,s.closeEmoji]]):Ug("",!0)])),_:3})],4),s.filteredMessageActions.length?(kg(),Rg(m_,{key:0,name:n.message.senderId===n.currentUserId?"vac-slide-left":"vac-slide-right"},{default:xh((()=>[r.optionsOpened?pm((kg(),Ag("div",{key:0,ref:"menuOptions",class:tp(["vac-menu-options",{"vac-menu-left":n.message.senderId!==n.currentUserId}]),style:Zf({top:`${r.menuOptionsTop}px`})},[Lg("div",vB,[(kg(!0),Ag(vg,null,km(s.filteredMessageActions,(e=>(kg(),Ag("div",{key:e.name},[Lg("div",{class:"vac-menu-item",onClick:t=>s.messageActionHandler(e)},op(e.title),9,_B)])))),128))])],6)),[[l,s.closeOptions]]):Ug("",!0)])),_:1},8,["name"])):Ug("",!0)])}var yB=Z_(hB,[["render",bB]]);const xB={name:"MessageReactions",props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0}},emits:["send-message-reaction"],methods:{sendMessageReaction(e,t){this.$emit("send-message-reaction",{emoji:e,reaction:t})}}},wB=["onClick"];function kB(e,t,n,o,r,s){return n.message.deleted?Ug("",!0):(kg(),Rg(L_,{key:0,name:"vac-slide-left",tag:"span"},{default:xh((()=>[(kg(!0),Ag(vg,null,km(n.message.reactions,((e,t)=>pm((kg(),Ag("button",{key:t+0,class:tp(["vac-button-reaction",{"vac-reaction-me":-1!==e.indexOf(n.currentUserId)}]),style:Zf({float:n.message.senderId===n.currentUserId?"right":"left"}),onClick:n=>s.sendMessageReaction({unicode:t},e)},[Hg(op(t),1),Lg("span",null,op(e.length),1)],14,wB)),[[q_,e.length]]))),128))])),_:1}))}var SB=Z_(xB,[["render",kB]]);function EB(e){const t=[{key:"roomId",type:["string","number"]},{key:"roomName",type:["string"]},{key:"users",type:["array"]}],n=(e,t)=>t.every((t=>{let n=!1;return("array"===t.type[0]&&Array.isArray(e[t.key])||t.type.find((n=>n===typeof e[t.key])))&&(n=!0),n&&AB(e,t.key)}));if(!n(e,t))throw new Error("Rooms object is not valid! Must contain at least roomId[String, Number], roomName[String] and users[Array]")}function TB(e){const t=[{key:"_id",type:["string","number"]},{key:"username",type:["string"]}],n=(e,t)=>t.every((t=>{const n=t.type.find((n=>n===typeof e[t.key]));return n&&AB(e,t.key)}));if(!n(e,t))throw new Error("Participants object is not valid! Must contain at least _id[String, Number] and username[String]")}function MB(e){const t=[{key:"_id",type:["string","number"]},{key:"senderId",type:["string","number"]}],n=(e,t)=>t.every((t=>{const n=t.type.find((n=>n===typeof e[t.key]));return n&&AB(e,t.key)}));if(!n(e,t))throw new Error("Messages object is not valid! Must contain at least _id[String, Number] and senderId[String, Number]")}function AB(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&null!==e[t]&&void 0!==e[t]}const RB={name:"RoomMessage",components:{SvgIcon:fb,FormatMessage:zk,AudioPlayer:YA,MessageReply:zI,MessageFiles:pB,MessageActions:yB,MessageReactions:SB},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},index:{type:Number,required:!0},message:{type:Object,required:!0},messages:{type:Array,required:!0},editedMessageId:{type:[String,Number],default:null},roomUsers:{type:Array,default:()=>[]},messageActions:{type:Array,required:!0},newMessages:{type:Array,default:()=>[]},showReactionEmojis:{type:Boolean,required:!0},showNewMessagesDivider:{type:Boolean,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},usernameOptions:{type:Object,required:!0},messageSelectionEnabled:{type:Boolean,required:!0},selectedMessages:{type:Array,default:()=>[]},emojiDataSource:{type:String,default:void 0}},emits:["message-added","open-file","open-user-tag","open-failed-message","message-action-handler","send-message-reaction","select-message","unselect-message"],data(){return{hoverMessageId:null,messageHover:!1,optionsOpened:!1,emojiOpened:!1,newMessage:{},progressTime:"- : -",hoverAudioProgress:!1}},computed:{showUsername(){return!(!this.usernameOptions.currentUser&&this.message.senderId===this.currentUserId)&&this.roomUsers.length>=this.usernameOptions.minUsers},showDate(){return this.index>0&&this.message.date!==this.messages[this.index-1].date},messageOffset(){return this.index>0&&this.message.senderId!==this.messages[this.index-1].senderId},isMessageHover(){return this.editedMessageId===this.message._id||this.hoverMessageId===this.message._id},isAudio(){var e;return null==(e=this.message.files)?void 0:e.some((e=>uS(e)))},isCheckmarkVisible(){return this.message.senderId===this.currentUserId&&!this.message.deleted&&(this.message.saved||this.message.distributed||this.message.seen)},hasCurrentUserAvatar(){return this.messages.some((e=>e.senderId===this.currentUserId&&e.avatar))},hasSenderUserAvatar(){return this.messages.some((e=>e.senderId!==this.currentUserId&&e.avatar))},isMessageSelected(){return this.messageSelectionEnabled&&!!this.selectedMessages.find((e=>e._id===this.message._id))}},watch:{newMessages:{immediate:!0,deep:!0,handler(e){e.length&&this.showNewMessagesDivider?this.newMessage=e.reduce(((e,t)=>t.index<e.index?t:e)):this.newMessage={}}},messageSelectionEnabled(){this.resetMessageHover()}},mounted(){MB(this.message),this.$emit("message-added",{message:this.message,index:this.index,ref:this.$refs.message})},methods:{onHoverMessage(){this.messageSelectionEnabled||(this.messageHover=!0,this.canEditMessage()&&(this.hoverMessageId=this.message._id))},canEditMessage(){return!this.message.deleted},onLeaveMessage(){this.messageSelectionEnabled||(this.optionsOpened||this.emojiOpened||(this.messageHover=!1),this.hoverMessageId=null)},resetMessageHover(){this.messageHover=!1,this.hoverMessageId=null},openFile(e){this.$emit("open-file",{message:this.message,file:e})},openUserTag(e){this.$emit("open-user-tag",{user:e})},messageActionHandler(e){this.resetMessageHover(),setTimeout((()=>{this.$emit("message-action-handler",{action:e,message:this.message})}),300)},sendMessageReaction({emoji:e,reaction:t}){this.$emit("send-message-reaction",{messageId:this.message._id,reaction:e,remove:t&&-1!==t.indexOf(this.currentUserId)}),this.messageHover=!1},selectMessage(){this.messageSelectionEnabled&&(this.isMessageSelected?this.$emit("unselect-message",this.message._id):this.$emit("select-message",this.message))}}},CB=["id"],OB={key:0,class:"vac-card-info vac-card-date"},IB={key:1,class:"vac-line-new"},BB={key:2,class:"vac-card-info vac-card-system"},PB={key:1,class:"vac-avatar-offset"},LB={key:0,class:"vac-progress-time"},jB={class:"vac-text-timestamp"},NB={key:0,class:"vac-icon-edited"},FB={key:1},DB=Lg("div",{class:"vac-failure-text"},"!",-1),HB=[DB],UB={key:3,class:"vac-avatar-current-offset"};function VB(e,t,n,o,r,s){const i=vm("format-message"),a=vm("message-reply"),l=vm("message-files"),c=vm("audio-player"),u=vm("svg-icon"),d=vm("message-actions"),f=vm("message-reactions");return kg(),Ag("div",{id:n.message._id,ref:"message",class:"vac-message-wrapper"},[s.showDate?(kg(),Ag("div",OB,op(n.message.date),1)):Ug("",!0),r.newMessage._id===n.message._id?(kg(),Ag("div",IB,op(n.textMessages.NEW_MESSAGES),1)):Ug("",!0),n.message.system?(kg(),Ag("div",BB,[Em(e.$slots,"message_"+n.message._id,{},(()=>[jg(i,{"message-id":n.message._id,content:n.message.content,deleted:!!n.message.deleted,users:n.roomUsers,"text-messages":n.textMessages,"text-formatting":n.textFormatting,"link-options":n.linkOptions,onOpenUserTag:s.openUserTag},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","content","deleted","users","text-messages","text-formatting","link-options","onOpenUserTag"])]))])):(kg(),Ag("div",{key:3,class:tp(["vac-message-box",{"vac-offset-current":n.message.senderId===n.currentUserId}]),onClick:t[8]||(t[8]=(...e)=>s.selectMessage&&s.selectMessage(...e))},[Em(e.$slots,"message_"+n.message._id,{},(()=>[n.message.senderId!==n.currentUserId?Em(e.$slots,"message-avatar_"+n.message._id,{key:0},(()=>[n.message.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar",style:Zf({"background-image":`url('${n.message.avatar}')`})},null,4)):Ug("",!0)])):Ug("",!0),s.hasSenderUserAvatar&&!n.message.avatar?(kg(),Ag("div",PB)):Ug("",!0),Lg("div",{class:tp(["vac-message-container",{"vac-message-container-offset":s.messageOffset}])},[Lg("div",{class:tp(["vac-message-card",{"vac-message-highlight":s.isMessageHover,"vac-message-current":n.message.senderId===n.currentUserId,"vac-message-deleted":n.message.deleted,"vac-item-clickable":n.messageSelectionEnabled,"vac-message-selected":s.isMessageSelected}]),onMouseover:t[5]||(t[5]=(...e)=>s.onHoverMessage&&s.onHoverMessage(...e)),onMouseleave:t[6]||(t[6]=(...e)=>s.onLeaveMessage&&s.onLeaveMessage(...e))},[s.showUsername?(kg(),Ag("div",{key:0,class:tp(["vac-text-username",{"vac-username-reply":!n.message.deleted&&n.message.replyMessage}])},[Lg("span",null,op(n.message.username),1)],2)):Ug("",!0),!n.message.deleted&&n.message.replyMessage?(kg(),Rg(a,{key:1,message:n.message,"room-users":n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message","room-users","text-formatting","link-options"])):Ug("",!0),!n.message.deleted&&n.message.files&&n.message.files.length?!s.isAudio||n.message.files.length>1?(kg(),Rg(l,{key:3,"current-user-id":n.currentUserId,message:n.message,"room-users":n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"message-selection-enabled":n.messageSelectionEnabled,onOpenFile:s.openFile,onOpenUserTag:s.openUserTag},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","message","room-users","text-formatting","link-options","message-selection-enabled","onOpenFile","onOpenUserTag"])):(kg(),Ag(vg,{key:4},[jg(c,{"message-id":n.message._id,src:n.message.files[0].url,"message-selection-enabled":n.messageSelectionEnabled,onUpdateProgressTime:t[0]||(t[0]=e=>r.progressTime=e),onHoverAudioProgress:t[1]||(t[1]=e=>r.hoverAudioProgress=e)},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","src","message-selection-enabled"]),n.message.deleted?Ug("",!0):(kg(),Ag("div",LB,op(r.progressTime),1))],64)):(kg(),Rg(i,{key:2,"message-id":n.message._id,content:n.message.content,deleted:!!n.message.deleted,users:n.roomUsers,"text-formatting":n.textFormatting,"text-messages":n.textMessages,"link-options":n.linkOptions,onOpenUserTag:s.openUserTag},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","content","deleted","users","text-formatting","text-messages","link-options","onOpenUserTag"])),Lg("div",jB,[n.message.edited&&!n.message.deleted?(kg(),Ag("div",NB,[Em(e.$slots,"pencil-icon_"+n.message._id,{},(()=>[jg(u,{name:"pencil"})]))])):Ug("",!0),Lg("span",null,op(n.message.timestamp),1),s.isCheckmarkVisible?(kg(),Ag("span",FB,[Em(e.$slots,"checkmark-icon_"+n.message._id,{},(()=>[jg(u,{name:n.message.distributed?"double-checkmark":"checkmark",param:n.message.seen?"seen":"",class:"vac-icon-check"},null,8,["name","param"])]))])):Ug("",!0)]),jg(d,{"current-user-id":n.currentUserId,message:n.message,"message-actions":n.messageActions,"show-reaction-emojis":n.showReactionEmojis,"message-hover":r.messageHover,"hover-message-id":r.hoverMessageId,"hover-audio-progress":r.hoverAudioProgress,"emoji-data-source":n.emojiDataSource,onUpdateMessageHover:t[2]||(t[2]=e=>r.messageHover=e),onUpdateOptionsOpened:t[3]||(t[3]=e=>r.optionsOpened=e),onUpdateEmojiOpened:t[4]||(t[4]=e=>r.emojiOpened=e),onMessageActionHandler:s.messageActionHandler,onSendMessageReaction:s.sendMessageReaction},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","message","message-actions","show-reaction-emojis","message-hover","hover-message-id","hover-audio-progress","emoji-data-source","onMessageActionHandler","onSendMessageReaction"])],34),jg(f,{"current-user-id":n.currentUserId,message:n.message,onSendMessageReaction:s.sendMessageReaction},null,8,["current-user-id","message","onSendMessageReaction"])],2),Em(e.$slots,"message-failure_"+n.message._id,{},(()=>[n.message.failure&&n.message.senderId===n.currentUserId?(kg(),Ag("div",{key:0,class:tp(["vac-failure-container vac-svg-button",{"vac-failure-container-avatar":n.message.avatar&&n.message.senderId===n.currentUserId}]),onClick:t[7]||(t[7]=t=>e.$emit("open-failed-message",{message:n.message}))},HB,2)):Ug("",!0)])),n.message.senderId===n.currentUserId?Em(e.$slots,"message-avatar_"+n.message._id,{key:2},(()=>[n.message.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar vac-avatar-current",style:Zf({"background-image":`url('${n.message.avatar}')`})},null,4)):Ug("",!0)])):Ug("",!0),s.hasCurrentUserAvatar&&!n.message.avatar?(kg(),Ag("div",UB)):Ug("",!0)]))],2))],8,CB)}var $B=Z_(RB,[["render",VB]]);const zB={name:"ChatRoom",components:{Loader:ib,SvgIcon:fb,RoomHeader:ZS,RoomFooter:OI,RoomMessage:$B},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},singleRoom:{type:Boolean,required:!0},showRoomsList:{type:Boolean,required:!0},isMobile:{type:Boolean,required:!0},rooms:{type:Array,required:!0},roomId:{type:[String,Number],required:!0},loadFirstRoom:{type:Boolean,required:!0},messages:{type:Array,required:!0},roomMessage:{type:String,default:null},messagesLoaded:{type:Boolean,required:!0},menuActions:{type:Array,required:!0},messageActions:{type:Array,required:!0},messageSelectionActions:{type:Array,required:!0},autoScroll:{type:Object,required:!0},showSendIcon:{type:Boolean,required:!0},showFiles:{type:Boolean,required:!0},showAudio:{type:Boolean,required:!0},audioBitRate:{type:Number,required:!0},audioSampleRate:{type:Number,required:!0},showEmojis:{type:Boolean,required:!0},showReactionEmojis:{type:Boolean,required:!0},showNewMessagesDivider:{type:Boolean,required:!0},showFooter:{type:Boolean,required:!0},acceptedFiles:{type:String,required:!0},captureFiles:{type:String,required:!0},multipleFiles:{type:Boolean,default:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},loadingRooms:{type:Boolean,required:!0},roomInfoEnabled:{type:Boolean,required:!0},textareaActionEnabled:{type:Boolean,required:!0},textareaAutoFocus:{type:Boolean,required:!0},userTagsEnabled:{type:Boolean,required:!0},emojisSuggestionEnabled:{type:Boolean,required:!0},scrollDistance:{type:Number,required:!0},templatesText:{type:Array,default:null},usernameOptions:{type:Object,required:!0},emojiDataSource:{type:String,default:void 0}},emits:["toggle-rooms-list","room-info","menu-action-handler","message-selection-action-handler","edit-message","send-message","delete-message","message-action-handler","fetch-messages","send-message-reaction","typing-message","open-file","open-user-tag","open-failed-message","textarea-action-handler"],data(){return{editedMessageId:null,initReplyMessage:null,initEditMessage:null,loadingMessages:!1,observer:null,showLoader:!0,loadingMoreMessages:!1,scrollIcon:!1,scrollMessagesCount:0,newMessages:[],messageSelectionEnabled:!1,selectedMessages:[],droppedFiles:[]}},computed:{room(){return this.rooms.find((e=>e.roomId===this.roomId))||{}},showNoMessages(){return this.roomId&&!this.messages.length&&!this.loadingMessages&&!this.loadingRooms},showNoRoom(){const e=!this.rooms.length&&!this.loadingRooms||!this.roomId&&!this.loadFirstRoom;return e&&this.updateLoadingMessages(!1),e},showMessagesStarted(){return this.messages.length&&this.messagesLoaded}},watch:{roomId:{immediate:!0,handler(){this.onRoomChanged()}},messages:{deep:!0,handler(e,t){e.forEach(((e,t)=>{this.showNewMessagesDivider&&!e.seen&&e.senderId!==this.currentUserId&&this.newMessages.push({_id:e._id,index:t})})),(null==t?void 0:t.length)===(null==e?void 0:e.length)-1&&(this.newMessages=[]),setTimeout((()=>this.loadingMoreMessages=!1))}},messagesLoaded(e){e&&this.updateLoadingMessages(!1)}},mounted(){this.newMessages=[]},methods:{updateLoadingMessages(e){this.loadingMessages=e,e||setTimeout((()=>this.initIntersectionObserver()))},initIntersectionObserver(){this.observer&&(this.showLoader=!0,this.observer.disconnect());const e=this.$el.querySelector("#infinite-loader-messages");if(e){const t={root:this.$el.querySelector("#messages-list"),rootMargin:`${this.scrollDistance}px`,threshold:0};this.observer=new IntersectionObserver((e=>{e[0].isIntersecting&&this.loadMoreMessages()}),t),this.observer.observe(e)}},preventTopScroll(){const e=this.$refs.scrollContainer,t=e.scrollHeight,n=new ResizeObserver((o=>{e.scrollHeight!==t&&this.$refs.scrollContainer&&(this.$refs.scrollContainer.scrollTo({top:e.scrollHeight-t}),n.disconnect())}));for(var o=0;o<e.children.length;o++)n.observe(e.children[o])},touchStart(e){if(!this.singleRoom&&1===e.changedTouches.length){const t=e.changedTouches[0].clientX,n=e.changedTouches[0].clientY;addEventListener("touchend",(e=>this.touchEnd(e,t,n)),{once:!0})}},touchEnd(e,t,n){if(1===e.changedTouches.length){const o=e.changedTouches[0].clientX,r=e.changedTouches[0].clientY,s=o-t>100,i=Math.abs(r-n)>50;s&&!i&&this.$emit("toggle-rooms-list")}},onRoomChanged(){this.updateLoadingMessages(!0),this.scrollIcon=!1,this.scrollMessagesCount=0,this.resetMessageSelection();const e=this.$watch((()=>this.messages),(t=>{if(!t||!t.length)return;const n=this.$refs.scrollContainer;n&&(e(),setTimeout((()=>{n.scrollTo({top:n.scrollHeight}),this.updateLoadingMessages(!1)})))}))},resetMessageSelection(){this.messageSelectionEnabled=!1,this.selectedMessages=[]},selectMessage(e){this.selectedMessages.push(e)},unselectMessage(e){this.selectedMessages=this.selectedMessages.filter((t=>t._id!==e))},onMessageAdded({message:e,index:t,ref:n}){if(t!==this.messages.length-1)return;const o=n.offsetHeight+60;setTimeout((()=>{const t=this.$refs.scrollContainer;let n=!1;t&&(n=this.getBottomScroll(t)>o),e.senderId===this.currentUserId?n?this.autoScroll.send.newAfterScrollUp&&this.scrollToBottom():this.autoScroll.send.new&&this.scrollToBottom():n?this.autoScroll.receive.newAfterScrollUp?this.scrollToBottom():(this.scrollIcon=!0,this.scrollMessagesCount++):this.autoScroll.receive.new?this.scrollToBottom():(this.scrollIcon=!0,this.scrollMessagesCount++)}))},onContainerScroll(e){if(!e.target)return;const t=this.getBottomScroll(e.target);t<60&&(this.scrollMessagesCount=0),this.scrollIcon=t>500||this.scrollMessagesCount},loadMoreMessages(){this.loadingMessages||setTimeout((()=>{if(!this.loadingMoreMessages){if(this.messagesLoaded||!this.roomId)return this.loadingMoreMessages=!1,void(this.showLoader=!1);this.preventTopScroll(),this.$emit("fetch-messages"),this.loadingMoreMessages=!0}}),500)},messageActionHandler({action:e,message:t}){switch(e.name){case"replyMessage":return this.initReplyMessage=t,void setTimeout((()=>{this.initReplyMessage=null}));case"editMessage":return this.initEditMessage=t,void setTimeout((()=>{this.initEditMessage=null}));case"deleteMessage":return this.$emit("delete-message",t);case"selectMessages":return this.selectedMessages=[t],void(this.messageSelectionEnabled=!0);default:return this.$emit("message-action-handler",{action:e,message:t})}},messageSelectionActionHandler(e){this.$emit("message-selection-action-handler",{action:e,messages:this.selectedMessages}),this.resetMessageSelection()},sendMessageReaction(e){this.$emit("send-message-reaction",e)},getBottomScroll(e){const{scrollHeight:t,clientHeight:n,scrollTop:o}=e;return t-n-o},scrollToBottom(){setTimeout((()=>{const e=this.$refs.scrollContainer;e&&(e.classList.add("vac-scroll-smooth"),e.scrollTo({top:e.scrollHeight,behavior:"smooth"}),setTimeout((()=>e.classList.remove("vac-scroll-smooth"))))}),50)},openFile({message:e,file:t}){this.$emit("open-file",{message:e,file:t})},openUserTag(e){this.$emit("open-user-tag",e)},onDropFiles(e){this.showFiles&&(this.droppedFiles=e.dataTransfer.files)}}},qB={class:"vac-container-center vac-room-empty"},YB={class:"vac-messages-container"},GB={key:0,class:"vac-text-started"},XB={key:1,class:"vac-text-started"},WB={key:0,id:"infinite-loader-messages"},KB={key:2},ZB={key:0,class:"vac-badge-counter vac-messages-count"};function QB(e,t,n,o,r,s){const i=vm("room-header"),a=vm("loader"),l=vm("room-message"),c=vm("svg-icon"),u=vm("room-footer");return pm((kg(),Ag("div",{class:"vac-col-messages",onDrop:t[12]||(t[12]=V_(((...e)=>s.onDropFiles&&s.onDropFiles(...e)),["prevent"])),onDragenter:t[13]||(t[13]=V_((()=>{}),["prevent"])),onDragover:t[14]||(t[14]=V_((()=>{}),["prevent"])),onDragleave:t[15]||(t[15]=V_((()=>{}),["prevent"])),onTouchstart:t[16]||(t[16]=(...e)=>s.touchStart&&s.touchStart(...e))},[s.showNoRoom?Em(e.$slots,"no-room-selected",{key:0},(()=>[Lg("div",qB,[Lg("div",null,op(n.textMessages.ROOM_EMPTY),1)])])):(kg(),Rg(i,{key:1,"current-user-id":n.currentUserId,"text-messages":n.textMessages,"single-room":n.singleRoom,"show-rooms-list":n.showRoomsList,"is-mobile":n.isMobile,"room-info-enabled":n.roomInfoEnabled,"menu-actions":n.menuActions,room:s.room,"message-selection-enabled":r.messageSelectionEnabled,"message-selection-actions":n.messageSelectionActions,"selected-messages-total":r.selectedMessages.length,onToggleRoomsList:t[0]||(t[0]=t=>e.$emit("toggle-rooms-list")),onRoomInfo:t[1]||(t[1]=t=>e.$emit("room-info")),onMenuActionHandler:t[2]||(t[2]=t=>e.$emit("menu-action-handler",t)),onMessageSelectionActionHandler:s.messageSelectionActionHandler,onCancelMessageSelection:t[3]||(t[3]=e=>r.messageSelectionEnabled=!1)},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","text-messages","single-room","show-rooms-list","is-mobile","room-info-enabled","menu-actions","room","message-selection-enabled","message-selection-actions","selected-messages-total","onMessageSelectionActionHandler"])),Lg("div",{id:"messages-list",ref:"scrollContainer",class:"vac-container-scroll",onScroll:t[5]||(t[5]=(...e)=>s.onContainerScroll&&s.onContainerScroll(...e))},[jg(a,{show:r.loadingMessages,type:"messages"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"]),Lg("div",YB,[Lg("div",{class:tp({"vac-messages-hidden":r.loadingMessages})},[jg(m_,{name:"vac-fade-message"},{default:xh((()=>[Lg("div",null,[s.showNoMessages?(kg(),Ag("div",GB,[Em(e.$slots,"messages-empty",{},(()=>[Hg(op(n.textMessages.MESSAGES_EMPTY),1)]))])):Ug("",!0),s.showMessagesStarted?(kg(),Ag("div",XB,op(n.textMessages.CONVERSATION_STARTED)+" "+op(n.messages[0].date),1)):Ug("",!0)])])),_:3}),n.messages.length&&!n.messagesLoaded?(kg(),Ag("div",WB,[jg(a,{show:!0,infinite:!0,type:"infinite-messages"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1024)])):Ug("",!0),(kg(),Rg(L_,{key:n.roomId,name:"vac-fade-message",tag:"span"},{default:xh((()=>[(kg(!0),Ag(vg,null,km(n.messages,((o,i)=>(kg(),Ag("div",{key:o.indexId||o._id},[jg(l,{"current-user-id":n.currentUserId,message:o,index:i,messages:n.messages,"edited-message-id":r.editedMessageId,"message-actions":n.messageActions,"room-users":s.room.users,"text-messages":n.textMessages,"new-messages":r.newMessages,"show-reaction-emojis":n.showReactionEmojis,"show-new-messages-divider":n.showNewMessagesDivider,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"username-options":n.usernameOptions,"message-selection-enabled":r.messageSelectionEnabled,"selected-messages":r.selectedMessages,"emoji-data-source":n.emojiDataSource,onMessageAdded:s.onMessageAdded,onMessageActionHandler:s.messageActionHandler,onOpenFile:s.openFile,onOpenUserTag:s.openUserTag,onOpenFailedMessage:t[4]||(t[4]=t=>e.$emit("open-failed-message",t)),onSendMessageReaction:s.sendMessageReaction,onSelectMessage:s.selectMessage,onUnselectMessage:s.unselectMessage},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","message","index","messages","edited-message-id","message-actions","room-users","text-messages","new-messages","show-reaction-emojis","show-new-messages-divider","text-formatting","link-options","username-options","message-selection-enabled","selected-messages","emoji-data-source","onMessageAdded","onMessageActionHandler","onOpenFile","onOpenUserTag","onSendMessageReaction","onSelectMessage","onUnselectMessage"])])))),128))])),_:3}))],2)])],544),r.loadingMessages?Ug("",!0):(kg(),Ag("div",KB,[jg(m_,{name:"vac-bounce"},{default:xh((()=>[r.scrollIcon?(kg(),Ag("div",{key:0,class:"vac-icon-scroll",onClick:t[6]||(t[6]=(...e)=>s.scrollToBottom&&s.scrollToBottom(...e))},[jg(m_,{name:"vac-bounce"},{default:xh((()=>[r.scrollMessagesCount?(kg(),Ag("div",ZB,op(r.scrollMessagesCount),1)):Ug("",!0)])),_:1}),Em(e.$slots,"scroll-icon",{},(()=>[jg(c,{name:"dropdown",param:"scroll"})]))])):Ug("",!0)])),_:3})])),jg(u,{room:s.room,"room-id":n.roomId,"room-message":n.roomMessage,"text-messages":n.textMessages,"show-send-icon":n.showSendIcon,"show-files":n.showFiles,"show-audio":n.showAudio,"show-emojis":n.showEmojis,"show-footer":n.showFooter,"accepted-files":n.acceptedFiles,"capture-files":n.captureFiles,"multiple-files":n.multipleFiles,"textarea-action-enabled":n.textareaActionEnabled,"textarea-auto-focus":n.textareaAutoFocus,"user-tags-enabled":n.userTagsEnabled,"emojis-suggestion-enabled":n.emojisSuggestionEnabled,"templates-text":n.templatesText,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"audio-bit-rate":n.audioBitRate,"audio-sample-rate":n.audioSampleRate,"init-reply-message":r.initReplyMessage,"init-edit-message":r.initEditMessage,"dropped-files":r.droppedFiles,"emoji-data-source":n.emojiDataSource,onUpdateEditedMessageId:t[7]||(t[7]=e=>r.editedMessageId=e),onEditMessage:t[8]||(t[8]=t=>e.$emit("edit-message",t)),onSendMessage:t[9]||(t[9]=t=>e.$emit("send-message",t)),onTypingMessage:t[10]||(t[10]=t=>e.$emit("typing-message",t)),onTextareaActionHandler:t[11]||(t[11]=t=>e.$emit("textarea-action-handler",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["room","room-id","room-message","text-messages","show-send-icon","show-files","show-audio","show-emojis","show-footer","accepted-files","capture-files","multiple-files","textarea-action-enabled","textarea-auto-focus","user-tags-enabled","emojis-suggestion-enabled","templates-text","text-formatting","link-options","audio-bit-rate","audio-sample-rate","init-reply-message","init-edit-message","dropped-files","emoji-data-source"])],544)),[[q_,n.isMobile&&!n.showRoomsList||!n.isMobile||n.singleRoom]])}var JB=Z_(zB,[["render",QB]]);const eP={name:"MediaPreview",components:{SvgIcon:fb},props:{file:{type:Object,required:!0}},emits:["close-media-preview"],computed:{isImage(){return aS(this.file)},isVideo(){return lS(this.file)}},mounted(){this.$refs.modal.focus()},methods:{closeModal(){this.$emit("close-media-preview")}}},tP={key:0,class:"vac-media-preview-container"},nP={key:1,class:"vac-media-preview-container"},oP={controls:"",autoplay:""},rP=["src"],sP={class:"vac-svg-button"};function iP(e,t,n,o,r,s){const i=vm("svg-icon");return kg(),Ag("div",{ref:"modal",tabindex:"0",class:"vac-media-preview",onClick:t[0]||(t[0]=V_(((...e)=>s.closeModal&&s.closeModal(...e)),["stop"])),onKeydown:t[1]||(t[1]=z_(((...e)=>s.closeModal&&s.closeModal(...e)),["esc"]))},[jg(m_,{name:"vac-bounce-preview",appear:""},{default:xh((()=>[s.isImage?(kg(),Ag("div",tP,[Lg("div",{class:"vac-image-preview",style:Zf({"background-image":`url('${n.file.url}')`})},null,4)])):s.isVideo?(kg(),Ag("div",nP,[Lg("video",oP,[Lg("source",{src:n.file.url},null,8,rP)])])):Ug("",!0)])),_:1}),Lg("div",sP,[Em(e.$slots,"preview-close-icon",{},(()=>[jg(i,{name:"close-outline",param:"preview"})]))])],544)}var aP=Z_(eP,[["render",iP]]),lP={ROOMS_EMPTY:"No rooms",ROOM_EMPTY:"No room selected",NEW_MESSAGES:"New Messages",MESSAGE_DELETED:"This message was deleted",MESSAGES_EMPTY:"No messages",CONVERSATION_STARTED:"Conversation started on:",TYPE_MESSAGE:"Type message",SEARCH:"Search",IS_ONLINE:"is online",LAST_SEEN:"last seen ",IS_TYPING:"is writing...",CANCEL_SELECT_MESSAGE:"Cancel"};const cP={light:{general:{color:"#0a0a0a",colorButtonClear:"#1976d2",colorButton:"#fff",backgroundColorButton:"#1976d2",backgroundInput:"#fff",colorPlaceholder:"#9ca6af",colorCaret:"#1976d2",colorSpinner:"#333",borderStyle:"1px solid #e1e4e8",backgroundScrollIcon:"#fff"},container:{border:"none",borderRadius:"4px",boxShadow:"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)"},header:{background:"#fff",colorRoomName:"#0a0a0a",colorRoomInfo:"#9ca6af"},footer:{background:"#f8f9fa",borderStyleInput:"1px solid #e1e4e8",borderInputSelected:"#1976d2",backgroundReply:"#e5e5e6",backgroundTagActive:"#e5e5e6",backgroundTag:"#f8f9fa"},content:{background:"#f8f9fa"},sidemenu:{background:"#fff",backgroundHover:"#f6f6f6",backgroundActive:"#e5effa",colorActive:"#1976d2",borderColorSearch:"#e1e5e8"},dropdown:{background:"#fff",backgroundHover:"#f6f6f6"},message:{background:"#fff",backgroundMe:"#ccf2cf",color:"#0a0a0a",colorStarted:"#9ca6af",backgroundDeleted:"#dadfe2",backgroundSelected:"#c2dcf2",colorDeleted:"#757e85",colorUsername:"#9ca6af",colorTimestamp:"#828c94",backgroundDate:"#e5effa",colorDate:"#505a62",backgroundSystem:"#e5effa",colorSystem:"#505a62",backgroundMedia:"rgba(0, 0, 0, 0.15)",backgroundReply:"rgba(0, 0, 0, 0.08)",colorReplyUsername:"#0a0a0a",colorReply:"#6e6e6e",colorTag:"#0d579c",backgroundImage:"#ddd",colorNewMessages:"#1976d2",backgroundScrollCounter:"#0696c7",colorScrollCounter:"#fff",backgroundReaction:"#eee",borderStyleReaction:"1px solid #eee",backgroundReactionHover:"#fff",borderStyleReactionHover:"1px solid #ddd",colorReactionCounter:"#0a0a0a",backgroundReactionMe:"#cfecf5",borderStyleReactionMe:"1px solid #3b98b8",backgroundReactionHoverMe:"#cfecf5",borderStyleReactionHoverMe:"1px solid #3b98b8",colorReactionCounterMe:"#0b59b3",backgroundAudioRecord:"#eb4034",backgroundAudioLine:"rgba(0, 0, 0, 0.15)",backgroundAudioProgress:"#455247",backgroundAudioProgressSelector:"#455247",colorFileExtension:"#757e85"},markdown:{background:"rgba(239, 239, 239, 0.7)",border:"rgba(212, 212, 212, 0.9)",color:"#e01e5a",colorMulti:"#0a0a0a"},room:{colorUsername:"#0a0a0a",colorMessage:"#67717a",colorTimestamp:"#a2aeb8",colorStateOnline:"#4caf50",colorStateOffline:"#9ca6af",backgroundCounterBadge:"#0696c7",colorCounterBadge:"#fff"},emoji:{background:"#fff"},icons:{search:"#9ca6af",add:"#1976d2",toggle:"#0a0a0a",menu:"#0a0a0a",close:"#9ca6af",closeImage:"#fff",file:"#1976d2",paperclip:"#1976d2",closeOutline:"#000",closePreview:"#fff",send:"#1976d2",sendDisabled:"#9ca6af",emoji:"#1976d2",emojiReaction:"rgba(0, 0, 0, 0.3)",document:"#1976d2",pencil:"#9e9e9e",checkmark:"#9e9e9e",checkmarkSeen:"#0696c7",eye:"#fff",dropdownMessage:"#fff",dropdownMessageBackground:"rgba(0, 0, 0, 0.25)",dropdownRoom:"#9e9e9e",dropdownScroll:"#0a0a0a",microphone:"#1976d2",audioPlay:"#455247",audioPause:"#455247",audioCancel:"#eb4034",audioConfirm:"#1ba65b"}},dark:{general:{color:"#fff",colorButtonClear:"#fff",colorButton:"#fff",backgroundColorButton:"#1976d2",backgroundInput:"#202223",colorPlaceholder:"#596269",colorCaret:"#fff",colorSpinner:"#fff",borderStyle:"none",backgroundScrollIcon:"#fff"},container:{border:"none",borderRadius:"4px",boxShadow:"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)"},header:{background:"#181a1b",colorRoomName:"#fff",colorRoomInfo:"#9ca6af"},footer:{background:"#131415",borderStyleInput:"none",borderInputSelected:"#1976d2",backgroundReply:"#1b1c1c",backgroundTagActive:"#1b1c1c",backgroundTag:"#131415"},content:{background:"#131415"},sidemenu:{background:"#181a1b",backgroundHover:"#202224",backgroundActive:"#151617",colorActive:"#fff",borderColorSearch:"#181a1b"},dropdown:{background:"#2a2c33",backgroundHover:"#26282e"},message:{background:"#22242a",backgroundMe:"#1f7e80",color:"#fff",colorStarted:"#9ca6af",backgroundDeleted:"#1b1c21",backgroundSelected:"#c2dcf2",colorDeleted:"#a2a5a8",colorUsername:"#b3bac9",colorTimestamp:"#ebedf2",backgroundDate:"rgba(0, 0, 0, 0.3)",colorDate:"#bec5cc",backgroundSystem:"rgba(0, 0, 0, 0.3)",colorSystem:"#bec5cc",backgroundMedia:"rgba(0, 0, 0, 0.18)",backgroundReply:"rgba(0, 0, 0, 0.18)",colorReplyUsername:"#fff",colorReply:"#d6d6d6",colorTag:"#f0c60a",backgroundImage:"#ddd",colorNewMessages:"#fff",backgroundScrollCounter:"#1976d2",colorScrollCounter:"#fff",backgroundReaction:"none",borderStyleReaction:"none",backgroundReactionHover:"#202223",borderStyleReactionHover:"none",colorReactionCounter:"#fff",backgroundReactionMe:"#4e9ad1",borderStyleReactionMe:"none",backgroundReactionHoverMe:"#4e9ad1",borderStyleReactionHoverMe:"none",colorReactionCounterMe:"#fff",backgroundAudioRecord:"#eb4034",backgroundAudioLine:"rgba(255, 255, 255, 0.15)",backgroundAudioProgress:"#b7d4d3",backgroundAudioProgressSelector:"#b7d4d3",colorFileExtension:"#a2a5a8"},markdown:{background:"rgba(239, 239, 239, 0.7)",border:"rgba(212, 212, 212, 0.9)",color:"#e01e5a",colorMulti:"#0a0a0a"},room:{colorUsername:"#fff",colorMessage:"#6c7278",colorTimestamp:"#6c7278",colorStateOnline:"#4caf50",colorStateOffline:"#596269",backgroundCounterBadge:"#1976d2",colorCounterBadge:"#fff"},emoji:{background:"#343740"},icons:{search:"#596269",add:"#fff",toggle:"#fff",menu:"#fff",close:"#9ca6af",closeImage:"#fff",file:"#1976d2",paperclip:"#fff",closeOutline:"#fff",closePreview:"#fff",send:"#fff",sendDisabled:"#646a70",emoji:"#fff",emojiReaction:"#fff",document:"#1976d2",pencil:"#ebedf2",checkmark:"#ebedf2",checkmarkSeen:"#f0d90a",eye:"#fff",dropdownMessage:"#fff",dropdownMessageBackground:"rgba(0, 0, 0, 0.25)",dropdownRoom:"#fff",dropdownScroll:"#0a0a0a",microphone:"#fff",audioPlay:"#b7d4d3",audioPause:"#b7d4d3",audioCancel:"#eb4034",audioConfirm:"#1ba65b"}}},uP=({general:e,container:t,header:n,footer:o,sidemenu:r,content:s,dropdown:i,message:a,markdown:l,room:c,emoji:u,icons:d})=>({"--chat-color":e.color,"--chat-color-button-clear":e.colorButtonClear,"--chat-color-button":e.colorButton,"--chat-bg-color-button":e.backgroundColorButton,"--chat-bg-color-input":e.backgroundInput,"--chat-color-spinner":e.colorSpinner,"--chat-color-placeholder":e.colorPlaceholder,"--chat-color-caret":e.colorCaret,"--chat-border-style":e.borderStyle,"--chat-bg-scroll-icon":e.backgroundScrollIcon,"--chat-container-border":t.border,"--chat-container-border-radius":t.borderRadius,"--chat-container-box-shadow":t.boxShadow,"--chat-header-bg-color":n.background,"--chat-header-color-name":n.colorRoomName,"--chat-header-color-info":n.colorRoomInfo,"--chat-footer-bg-color":o.background,"--chat-border-style-input":o.borderStyleInput,"--chat-border-color-input-selected":o.borderInputSelected,"--chat-footer-bg-color-reply":o.backgroundReply,"--chat-footer-bg-color-tag-active":o.backgroundTagActive,"--chat-footer-bg-color-tag":o.backgroundTag,"--chat-content-bg-color":s.background,"--chat-sidemenu-bg-color":r.background,"--chat-sidemenu-bg-color-hover":r.backgroundHover,"--chat-sidemenu-bg-color-active":r.backgroundActive,"--chat-sidemenu-color-active":r.colorActive,"--chat-sidemenu-border-color-search":r.borderColorSearch,"--chat-dropdown-bg-color":i.background,"--chat-dropdown-bg-color-hover":i.backgroundHover,"--chat-message-bg-color":a.background,"--chat-message-bg-color-me":a.backgroundMe,"--chat-message-color-started":a.colorStarted,"--chat-message-bg-color-deleted":a.backgroundDeleted,"--chat-message-bg-color-selected":a.backgroundSelected,"--chat-message-color-deleted":a.colorDeleted,"--chat-message-color-username":a.colorUsername,"--chat-message-color-timestamp":a.colorTimestamp,"--chat-message-bg-color-date":a.backgroundDate,"--chat-message-color-date":a.colorDate,"--chat-message-bg-color-system":a.backgroundSystem,"--chat-message-color-system":a.colorSystem,"--chat-message-color":a.color,"--chat-message-bg-color-media":a.backgroundMedia,"--chat-message-bg-color-reply":a.backgroundReply,"--chat-message-color-reply-username":a.colorReplyUsername,"--chat-message-color-reply-content":a.colorReply,"--chat-message-color-tag":a.colorTag,"--chat-message-bg-color-image":a.backgroundImage,"--chat-message-color-new-messages":a.colorNewMessages,"--chat-message-bg-color-scroll-counter":a.backgroundScrollCounter,"--chat-message-color-scroll-counter":a.colorScrollCounter,"--chat-message-bg-color-reaction":a.backgroundReaction,"--chat-message-border-style-reaction":a.borderStyleReaction,"--chat-message-bg-color-reaction-hover":a.backgroundReactionHover,"--chat-message-border-style-reaction-hover":a.borderStyleReactionHover,"--chat-message-color-reaction-counter":a.colorReactionCounter,"--chat-message-bg-color-reaction-me":a.backgroundReactionMe,"--chat-message-border-style-reaction-me":a.borderStyleReactionMe,"--chat-message-bg-color-reaction-hover-me":a.backgroundReactionHoverMe,"--chat-message-border-style-reaction-hover-me":a.borderStyleReactionHoverMe,"--chat-message-color-reaction-counter-me":a.colorReactionCounterMe,"--chat-message-bg-color-audio-record":a.backgroundAudioRecord,"--chat-message-bg-color-audio-line":a.backgroundAudioLine,"--chat-message-bg-color-audio-progress":a.backgroundAudioProgress,"--chat-message-bg-color-audio-progress-selector":a.backgroundAudioProgressSelector,"--chat-message-color-file-extension":a.colorFileExtension,"--chat-markdown-bg":l.background,"--chat-markdown-border":l.border,"--chat-markdown-color":l.color,"--chat-markdown-color-multi":l.colorMulti,"--chat-room-color-username":c.colorUsername,"--chat-room-color-message":c.colorMessage,"--chat-room-color-timestamp":c.colorTimestamp,"--chat-room-color-online":c.colorStateOnline,"--chat-room-color-offline":c.colorStateOffline,"--chat-room-bg-color-badge":c.backgroundCounterBadge,"--chat-room-color-badge":c.colorCounterBadge,"--chat-emoji-bg-color":u.background,"--chat-icon-color-search":d.search,"--chat-icon-color-add":d.add,"--chat-icon-color-toggle":d.toggle,"--chat-icon-color-menu":d.menu,"--chat-icon-color-close":d.close,"--chat-icon-color-close-image":d.closeImage,"--chat-icon-color-file":d.file,"--chat-icon-color-paperclip":d.paperclip,"--chat-icon-color-close-outline":d.closeOutline,"--chat-icon-color-close-preview":d.closePreview,"--chat-icon-color-send":d.send,"--chat-icon-color-send-disabled":d.sendDisabled,"--chat-icon-color-emoji":d.emoji,"--chat-icon-color-emoji-reaction":d.emojiReaction,"--chat-icon-color-document":d.document,"--chat-icon-color-pencil":d.pencil,"--chat-icon-color-checkmark":d.checkmark,"--chat-icon-color-checkmark-seen":d.checkmarkSeen,"--chat-icon-color-eye":d.eye,"--chat-icon-color-dropdown-message":d.dropdownMessage,"--chat-icon-bg-dropdown-message":d.dropdownMessageBackground,"--chat-icon-color-dropdown-room":d.dropdownRoom,"--chat-icon-color-dropdown-scroll":d.dropdownScroll,"--chat-icon-color-microphone":d.microphone,"--chat-icon-color-audio-play":d.audioPlay,"--chat-icon-color-audio-pause":d.audioPause,"--chat-icon-color-audio-cancel":d.audioCancel,"--chat-icon-color-audio-confirm":d.audioConfirm});var dP='.vac-fade-spinner-enter-from{opacity:0}.vac-fade-spinner-enter-active{transition:opacity .8s}.vac-fade-spinner-leave-active{transition:opacity .2s;opacity:0}.vac-fade-image-enter-from{opacity:0}.vac-fade-image-enter-active{transition:opacity 1s}.vac-fade-image-leave-active{transition:opacity .5s;opacity:0}.vac-fade-message-enter-from{opacity:0}.vac-fade-message-enter-active{transition:opacity .5s}.vac-fade-message-leave-active{transition:opacity .2s;opacity:0}.vac-slide-left-enter-active,.vac-slide-right-enter-active{transition:all .3s ease;transition-property:transform,opacity}.vac-slide-left-leave-active,.vac-slide-right-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)!important;transition-property:transform,opacity}.vac-slide-left-enter-from,.vac-slide-left-leave-to{transform:translate(10px);opacity:0}.vac-slide-right-enter-from,.vac-slide-right-leave-to{transform:translate(-10px);opacity:0}.vac-slide-up-enter-active{transition:all .3s ease}.vac-slide-up-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.vac-slide-up-enter-from,.vac-slide-up-leave-to{transform:translateY(10px);opacity:0}.vac-bounce-enter-active{animation:vac-bounce-in .5s}.vac-bounce-leave-active{animation:vac-bounce-in .3s reverse}@keyframes vac-bounce-in{0%{transform:scale(0)}50%{transform:scale(1.05)}to{transform:scale(1)}}.vac-fade-preview-enter{opacity:0}.vac-fade-preview-enter-active{transition:opacity .1s}.vac-fade-preview-leave-active{transition:opacity .2s;opacity:0}.vac-bounce-preview-enter-active{animation:vac-bounce-image-in .4s}.vac-bounce-preview-leave-active{animation:vac-bounce-image-in .3s reverse}@keyframes vac-bounce-image-in{0%{transform:scale(.6)}to{transform:scale(1)}}.vac-menu-list{border-radius:4px;display:block;cursor:pointer;background:var(--chat-dropdown-bg-color);padding:6px 0}.vac-menu-list :hover{background:var(--chat-dropdown-bg-color-hover);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-list :not(:hover){transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;min-height:30px;padding:5px 16px;position:relative;white-space:nowrap;line-height:30px}.vac-menu-options{position:absolute;right:10px;top:20px;z-index:9999;min-width:150px;display:inline-block;border-radius:4px;font-size:14px;color:var(--chat-color);overflow-y:auto;overflow-x:hidden;contain:content;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-app-border{border:var(--chat-border-style)}.vac-app-border-t{border-top:var(--chat-border-style)}.vac-app-border-r{border-right:var(--chat-border-style)}.vac-app-border-b{border-bottom:var(--chat-border-style)}.vac-app-box-shadow{transition:all .5s;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-item-clickable{cursor:pointer}.vac-vertical-center{display:flex;align-items:center;height:100%}.vac-vertical-center .vac-vertical-container{width:100%;text-align:center}.vac-svg-button{max-height:30px;display:flex;cursor:pointer;transition:all .2s}.vac-svg-button:hover{transform:scale(1.1);opacity:.7}.vac-avatar{background-size:cover;background-position:center center;background-repeat:no-repeat;background-color:#ddd;height:42px;width:42px;min-height:42px;min-width:42px;margin-right:15px;border-radius:50%}.vac-blur-loading{filter:blur(3px)}.vac-badge-counter{height:13px;width:auto;min-width:13px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:3px;font-size:11px;font-weight:500}.vac-text-ellipsis{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-text-tag{color:var(--chat-message-color-tag);cursor:pointer}.vac-file-container{display:flex;align-content:center;justify-content:center;flex-wrap:wrap;text-align:center;background:var(--chat-bg-color-input);border:var(--chat-border-style-input);border-radius:4px;padding:10px}.vac-file-container svg{height:28px;width:28px}.vac-file-container .vac-text-extension{font-size:12px;color:var(--chat-message-color-file-extension);margin-top:-2px}.markdown p{margin:0}.markdown ol{display:flex;flex-direction:column;list-style-position:inside}.markdown ul{display:flex;flex-direction:column}.markdown code{display:block;font-size:12px;color:var(--chat-markdown-color-multi);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:4px 0;padding:7px}.markdown p code{display:inline-block;font-size:12px;color:var(--chat-markdown-color);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:2px 0;padding:2px 3px}.vac-card-window{width:100%;display:block;max-width:100%;background:var(--chat-content-bg-color);color:var(--chat-color);overflow-wrap:break-word;white-space:normal;border:var(--chat-container-border);border-radius:var(--chat-container-border-radius);box-shadow:var(--chat-container-box-shadow);-webkit-tap-highlight-color:transparent}.vac-card-window *{font-family:inherit}.vac-card-window a{color:#0d579c;font-weight:500}.vac-card-window .vac-chat-container{height:100%;display:flex}.vac-card-window .vac-chat-container input{min-width:10px}.vac-card-window .vac-chat-container textarea,.vac-card-window .vac-chat-container input[type=text],.vac-card-window .vac-chat-container input[type=search]{-webkit-appearance:none}.vac-media-preview{position:fixed;top:0;left:0;z-index:99;width:100vw;height:100vh;display:flex;align-items:center;background-color:#000c;outline:none}.vac-media-preview .vac-media-preview-container{height:calc(100% - 140px);width:calc(100% - 80px);padding:70px 40px;margin:0 auto}.vac-media-preview .vac-image-preview{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:center}.vac-media-preview video{width:100%;height:100%}.vac-media-preview .vac-svg-button{position:absolute;top:30px;right:30px;transform:scale(1.4)}@media only screen and (max-width: 768px){.vac-media-preview .vac-svg-button{top:20px;right:20px;transform:scale(1.2)}.vac-media-preview .vac-media-preview-container{width:calc(100% - 40px);padding:70px 20px}}.vac-col-messages{position:relative;height:100%;flex:1;overflow:hidden;display:flex;flex-flow:column}.vac-col-messages .vac-container-center{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.vac-col-messages .vac-room-empty{font-size:14px;color:#9ca6af;font-style:italic;line-height:20px;white-space:pre-line}.vac-col-messages .vac-room-empty div{padding:0 10%}.vac-col-messages .vac-container-scroll{background:var(--chat-content-bg-color);flex:1;overflow-y:auto;margin-right:1px;margin-top:65px;-webkit-overflow-scrolling:touch}.vac-col-messages .vac-container-scroll.vac-scroll-smooth{scroll-behavior:smooth}.vac-col-messages .vac-messages-container{padding:0 5px 5px}.vac-col-messages .vac-text-started{font-size:14px;color:var(--chat-message-color-started);font-style:italic;text-align:center;margin-top:25px;margin-bottom:20px}.vac-col-messages .vac-icon-scroll{position:absolute;bottom:80px;right:20px;padding:8px;background:var(--chat-bg-scroll-icon);border-radius:50%;box-shadow:0 1px 1px -1px #0003,0 1px 1px #00000024,0 1px 2px #0000001f;display:flex;cursor:pointer;z-index:10}.vac-col-messages .vac-icon-scroll svg{height:25px;width:25px}.vac-col-messages .vac-messages-count{position:absolute;top:-8px;left:11px;background-color:var(--chat-message-bg-color-scroll-counter);color:var(--chat-message-color-scroll-counter)}.vac-col-messages .vac-messages-hidden{opacity:0}@media only screen and (max-width: 768px){.vac-col-messages .vac-container-scroll{margin-top:50px}.vac-col-messages .vac-text-started{margin-top:20px}.vac-col-messages .vac-icon-scroll{bottom:70px}}.vac-room-header{position:absolute;display:flex;align-items:center;height:64px;width:100%;z-index:10;margin-right:1px;background:var(--chat-header-bg-color);border-top-right-radius:var(--chat-container-border-radius)}.vac-room-header .vac-room-wrapper{display:flex;align-items:center;min-width:0;height:100%;width:100%;padding:0 16px}.vac-room-header .vac-toggle-button{margin-right:15px}.vac-room-header .vac-toggle-button svg{height:26px;width:26px}.vac-room-header .vac-rotate-icon{transform:rotate(180deg)!important}.vac-room-header .vac-rotate-icon-init{transform:rotate(360deg)}.vac-room-header .vac-info-wrapper,.vac-room-header .vac-room-selection{display:flex;align-items:center;min-width:0;width:100%;height:100%}.vac-room-header .vac-room-selection .vac-selection-button{padding:8px 16px;color:var(--chat-color-button);background-color:var(--chat-bg-color-button);border-radius:4px;margin-right:10px;cursor:pointer;transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-button:hover{opacity:.7}.vac-room-header .vac-room-selection .vac-selection-button:active{opacity:.9}.vac-room-header .vac-room-selection .vac-selection-button .vac-selection-button-count{margin-left:6px;opacity:.9}.vac-room-header .vac-room-selection .vac-selection-cancel{display:flex;align-items:center;margin-left:auto;white-space:nowrap;color:var(--chat-color-button-clear);transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-cancel:hover{opacity:.7}.vac-room-header .vac-room-name{font-size:17px;font-weight:500;line-height:22px;color:var(--chat-header-color-name)}.vac-room-header .vac-room-info{font-size:13px;line-height:18px;color:var(--chat-header-color-info)}.vac-room-header .vac-room-options{margin-left:auto}@media only screen and (max-width: 768px){.vac-room-header{height:50px}.vac-room-header .vac-room-wrapper{padding:0 10px}.vac-room-header .vac-room-name{font-size:16px;line-height:22px}.vac-room-header .vac-room-info{font-size:12px;line-height:16px}.vac-room-header .vac-avatar{height:37px;width:37px;min-height:37px;min-width:37px}}.vac-room-footer{width:100%;border-bottom-right-radius:4px;z-index:10}.vac-box-footer{display:flex;position:relative;background:var(--chat-footer-bg-color);padding:10px 8px}.vac-textarea{max-height:300px;overflow-y:auto;height:20px;width:100%;line-height:20px;outline:0;resize:none;border-radius:20px;padding:12px 16px;box-sizing:content-box;font-size:16px;background:var(--chat-bg-color-input);color:var(--chat-color);caret-color:var(--chat-color-caret);border:var(--chat-border-style-input)}.vac-textarea::placeholder{color:var(--chat-color-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-textarea-outline{border:1px solid var(--chat-border-color-input-selected);box-shadow:inset 0 0 0 1px var(--chat-border-color-input-selected)}.vac-icon-textarea,.vac-icon-textarea-left{display:flex;align-items:center}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea{margin-left:5px}.vac-icon-textarea-left{display:flex;align-items:center;margin-right:5px}.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea-left .vac-icon-microphone{fill:var(--chat-icon-color-microphone);margin:0 7px}.vac-icon-textarea-left .vac-dot-audio-record{height:15px;width:15px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-record);animation:vac-scaling .8s ease-in-out infinite alternate}@keyframes vac-scaling{0%{transform:scale(1);opacity:.4}to{transform:scale(1.1);opacity:1}}.vac-icon-textarea-left .vac-dot-audio-record-time{font-size:16px;color:var(--chat-color);margin-left:8px;width:45px}.vac-icon-textarea-left .vac-icon-audio-stop,.vac-icon-textarea-left .vac-icon-audio-confirm{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop svg,.vac-icon-textarea-left .vac-icon-audio-confirm svg{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop{margin-right:20px}.vac-icon-textarea-left .vac-icon-audio-stop #vac-icon-close-outline{fill:var(--chat-icon-color-audio-cancel)}.vac-icon-textarea-left .vac-icon-audio-confirm{margin-right:3px;margin-left:12px}.vac-icon-textarea-left .vac-icon-audio-confirm #vac-icon-checkmark{fill:var(--chat-icon-color-audio-confirm)}.vac-send-disabled,.vac-send-disabled svg{cursor:none!important;pointer-events:none!important;transform:none!important}@media only screen and (max-width: 768px){.vac-room-footer{width:100%}.vac-box-footer{padding:7px 2px 7px 7px}.vac-box-footer.vac-box-footer-border{border-top:var(--chat-border-style-input)}.vac-textarea{padding:7px;line-height:18px}.vac-textarea::placeholder{color:transparent}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 5px!important}}@media only screen and (max-height: 768px){.vac-textarea{max-height:120px}}.vac-emojis-container{width:calc(100% - 16px);padding:10px 8px;background:var(--chat-footer-bg-color);display:flex;align-items:center;overflow:auto}.vac-emojis-container .vac-emoji-element{padding:0 8px;font-size:30px;border-radius:4px;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-emojis-container .vac-emoji-element-active{background:var(--chat-footer-bg-color-tag-active)}@media only screen and (max-width: 768px){.vac-emojis-container{width:calc(100% - 10px);padding:7px 5px}.vac-emojis-container .vac-emoji-element{padding:0 7px;font-size:26px}}.vac-reply-container{display:flex;padding:10px 10px 0;background:var(--chat-footer-bg-color);align-items:center;width:calc(100% - 20px)}.vac-reply-container .vac-reply-box{width:100%;overflow:hidden;background:var(--chat-footer-bg-color-reply);border-radius:4px;padding:8px 10px}.vac-reply-container .vac-reply-info{overflow:hidden}.vac-reply-container .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-container .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content);white-space:pre-line}.vac-reply-container .vac-icon-reply{margin-left:10px}.vac-reply-container .vac-icon-reply svg{height:20px;width:20px}.vac-reply-container .vac-image-reply{max-height:100px;max-width:200px;margin:4px 10px 0 0;border-radius:4px}.vac-reply-container .vac-audio-reply{margin-right:10px}.vac-reply-container .vac-file-container{max-width:80px}@media only screen and (max-width: 768px){.vac-reply-container{padding:5px 8px;width:calc(100% - 16px)}}.vac-room-files-container{display:flex;align-items:center;padding:10px 6px 0;background:var(--chat-footer-bg-color)}.vac-room-files-container .vac-files-box{display:flex;overflow:auto;width:calc(100% - 30px)}.vac-room-files-container video{height:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-files-container .vac-icon-close{margin-left:auto}.vac-room-files-container .vac-icon-close svg{height:20px;width:20px}@media only screen and (max-width: 768px){.vac-files-container{padding:6px 4px 4px 2px}}.vac-room-file-container{display:flex;position:relative;margin:0 4px}.vac-room-file-container .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:100px;width:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-file-container .vac-file-container{height:80px;width:80px}.vac-room-file-container .vac-icon-remove{position:absolute;top:6px;left:6px;z-index:10}.vac-room-file-container .vac-icon-remove svg{height:20px;width:20px;border-radius:50%}.vac-room-file-container .vac-icon-remove:before{content:" ";position:absolute;width:100%;height:100%;background:rgba(0,0,0,.5);border-radius:50%;z-index:-1}.vac-tags-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-tags-container .vac-tags-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-tags-container .vac-tags-box-active{background:var(--chat-footer-bg-color-tag-active)}.vac-tags-container .vac-tags-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-tags-container .vac-tags-avatar{height:34px;width:34px;min-height:34px;min-width:34px}.vac-tags-container .vac-tags-username{font-size:14px}@media only screen and (max-width: 768px){.vac-tags-container .vac-tags-box{height:50px}.vac-tags-container .vac-tags-info{padding:0 12px}}.vac-template-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-template-container .vac-template-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-template-container .vac-template-active{background:var(--chat-footer-bg-color-tag-active)}.vac-template-container .vac-template-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-template-container .vac-template-tag{font-size:14px;font-weight:700;margin-right:10px}.vac-template-container .vac-template-text{font-size:14px}@media only screen and (max-width: 768px){.vac-template-container .vac-template-box{height:50px}.vac-template-container .vac-template-info{padding:0 12px}}.vac-rooms-container{display:flex;flex-flow:column;flex:0 0 25%;min-width:260px;max-width:500px;position:relative;background:var(--chat-sidemenu-bg-color);height:100%;border-top-left-radius:var(--chat-container-border-radius);border-bottom-left-radius:var(--chat-container-border-radius)}.vac-rooms-container.vac-rooms-container-full{flex:0 0 100%;max-width:100%}.vac-rooms-container .vac-rooms-empty{font-size:14px;color:#9ca6af;font-style:italic;text-align:center;margin:40px 0;line-height:20px;white-space:pre-line}.vac-rooms-container .vac-room-list{flex:1;position:relative;max-width:100%;padding:0 10px 5px;overflow-y:auto}.vac-rooms-container .vac-room-item{border-radius:8px;align-items:center;display:flex;flex:1 1 100%;margin-bottom:5px;padding:0 14px;position:relative;min-height:71px;transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-rooms-container .vac-room-item:hover{background:var(--chat-sidemenu-bg-color-hover)}.vac-rooms-container .vac-room-item:not(.vac-room-selected){cursor:pointer}.vac-rooms-container .vac-room-selected{color:var(--chat-sidemenu-color-active)!important;background:var(--chat-sidemenu-bg-color-active)!important}.vac-rooms-container .vac-room-selected:hover{background:var(--chat-sidemenu-bg-color-active)!important}@media only screen and (max-width: 768px){.vac-rooms-container .vac-room-list{padding:0 7px 5px}.vac-rooms-container .vac-room-item{min-height:60px;padding:0 8px}}.vac-room-container{display:flex;flex:1;align-items:center;width:100%}.vac-room-container .vac-name-container{flex:1}.vac-room-container .vac-title-container{display:flex;align-items:center;line-height:25px}.vac-room-container .vac-state-circle{width:9px;height:9px;border-radius:50%;background-color:var(--chat-room-color-offline);margin-right:6px;transition:.3s}.vac-room-container .vac-state-online{background-color:var(--chat-room-color-online)}.vac-room-container .vac-room-name{flex:1;color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-text-date{margin-left:5px;font-size:11px;color:var(--chat-room-color-timestamp)}.vac-room-container .vac-text-last{display:flex;align-items:center;font-size:12px;line-height:19px;color:var(--chat-room-color-message)}.vac-room-container .vac-message-new{color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-icon-check{display:flex;vertical-align:middle;height:14px;width:14px;margin-top:-2px;margin-right:2px}.vac-room-container .vac-icon-microphone{height:15px;width:15px;vertical-align:middle;margin:-3px 1px 0 -2px;fill:var(--chat-room-color-message)}.vac-room-container .vac-room-options-container{display:flex;margin-left:auto}.vac-room-container .vac-room-badge{background-color:var(--chat-room-bg-color-badge);color:var(--chat-room-color-badge);margin-left:5px}.vac-room-container .vac-list-room-options{height:19px;width:19px;align-items:center;margin-left:5px}.vac-box-empty{margin-top:10px}@media only screen and (max-width: 768px){.vac-box-empty{margin-top:7px}}.vac-box-search{position:sticky;display:flex;align-items:center;height:64px;padding:0 15px}.vac-box-search .vac-icon-search{display:flex;position:absolute;left:30px}.vac-box-search .vac-icon-search svg{width:18px;height:18px}.vac-box-search .vac-input{height:38px;width:100%;background:var(--chat-bg-color-input);color:var(--chat-color);font-size:15px;outline:0;caret-color:var(--chat-color-caret);padding:10px 10px 10px 40px;border:1px solid var(--chat-sidemenu-border-color-search);border-radius:20px}.vac-box-search .vac-input::placeholder{color:var(--chat-color-placeholder)}.vac-box-search .vac-add-icon{margin-left:auto;padding-left:10px}@media only screen and (max-width: 768px){.vac-box-search{height:58px}}.vac-message-wrapper .vac-card-info{border-radius:4px;text-align:center;margin:10px auto;font-size:12px;padding:4px;display:block;overflow-wrap:break-word;position:relative;white-space:normal;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-card-date{max-width:150px;font-weight:500;text-transform:uppercase;color:var(--chat-message-color-date);background-color:var(--chat-message-bg-color-date)}.vac-message-wrapper .vac-card-system{max-width:250px;padding:8px 4px;color:var(--chat-message-color-system);background-color:var(--chat-message-bg-color-system)}.vac-message-wrapper .vac-line-new{color:var(--chat-message-color-new-messages);position:relative;text-align:center;font-size:13px;padding:10px 0}.vac-message-wrapper .vac-line-new:after,.vac-message-wrapper .vac-line-new:before{border-top:1px solid var(--chat-message-color-new-messages);content:"";left:0;position:absolute;top:50%;width:calc(50% - 60px)}.vac-message-wrapper .vac-line-new:before{left:auto;right:0}.vac-message-wrapper .vac-message-box{display:flex;flex:0 0 50%;max-width:50%;justify-content:flex-start;line-height:1.4}.vac-message-wrapper .vac-avatar{height:28px;width:28px;min-height:28px;min-width:28px;margin:0 0 2px;align-self:flex-end}.vac-message-wrapper .vac-avatar-current-offset{margin-right:28px}.vac-message-wrapper .vac-avatar-offset{margin-left:28px}.vac-message-wrapper .vac-failure-container{position:relative;align-self:flex-end;height:20px;width:20px;margin:0 0 2px -4px;border-radius:50%;background-color:#f44336}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:6px}.vac-message-wrapper .vac-failure-container .vac-failure-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:15px;font-weight:700}.vac-message-wrapper .vac-message-container{position:relative;padding:2px 10px;align-items:end;min-width:100px;box-sizing:content-box}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-offset-current{margin-left:50%;justify-content:flex-end}.vac-message-wrapper .vac-message-card{background-color:var(--chat-message-bg-color);color:var(--chat-message-color);border-radius:8px;font-size:14px;padding:6px 9px 3px;white-space:pre-line;max-width:100%;-webkit-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);will-change:box-shadow;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-message-highlight{box-shadow:0 1px 2px -1px #0000001a,0 1px 2px -1px #0000001c,0 1px 5px -1px #0000001c}.vac-message-wrapper .vac-message-current{background-color:var(--chat-message-bg-color-me)!important}.vac-message-wrapper .vac-message-deleted{color:var(--chat-message-color-deleted)!important;font-size:13px!important;font-style:italic!important;background-color:var(--chat-message-bg-color-deleted)!important}.vac-message-wrapper .vac-message-selected{background-color:var(--chat-message-bg-color-selected)!important;transition:background-color .2s}.vac-message-wrapper .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:250px;width:250px;max-width:100%;border-radius:4px;margin:4px auto 5px;transition:.4s filter linear}.vac-message-wrapper .vac-text-username{font-size:13px;color:var(--chat-message-color-username);margin-bottom:2px}.vac-message-wrapper .vac-username-reply{margin-bottom:5px}.vac-message-wrapper .vac-text-timestamp{font-size:10px;color:var(--chat-message-color-timestamp);text-align:right}.vac-message-wrapper .vac-progress-time{float:left;margin:-2px 0 0 40px;color:var(--chat-color);font-size:12px}.vac-message-wrapper .vac-icon-edited{-webkit-box-align:center;align-items:center;display:-webkit-inline-box;display:inline-flex;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;vertical-align:middle;margin:0 4px 2px}.vac-message-wrapper .vac-icon-edited svg{height:12px;width:12px}.vac-message-wrapper .vac-icon-check{height:14px;width:14px;vertical-align:middle;margin:-3px -3px 0 3px}@media only screen and (max-width: 768px){.vac-message-wrapper .vac-message-container{padding:2px 3px 1px}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-message-box{flex:0 0 80%;max-width:80%}.vac-message-wrapper .vac-avatar{height:25px;width:25px;min-height:25px;min-width:25px;margin:0 6px 1px 0}.vac-message-wrapper .vac-avatar.vac-avatar-current{margin:0 0 1px 6px}.vac-message-wrapper .vac-avatar-current-offset{margin-right:31px}.vac-message-wrapper .vac-avatar-offset{margin-left:31px}.vac-message-wrapper .vac-failure-container{margin-left:2px}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:0}.vac-message-wrapper .vac-offset-current{margin-left:20%}.vac-message-wrapper .vac-progress-time{margin-left:37px}}.vac-audio-player{display:flex;margin:8px 0 5px}.vac-audio-player .vac-svg-button{max-width:18px;margin-left:7px}@media only screen and (max-width: 768px){.vac-audio-player{margin:4px 0 0}.vac-audio-player .vac-svg-button{max-width:16px;margin-left:5px}}.vac-player-bar{display:flex;align-items:center;max-width:calc(100% - 18px);margin-right:7px;margin-left:20px}.vac-player-bar .vac-player-progress{width:190px}.vac-player-bar .vac-player-progress .vac-line-container{position:relative;height:4px;border-radius:5px;background-color:var(--chat-message-bg-color-audio-line)}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-progress{position:absolute;height:inherit;background-color:var(--chat-message-bg-color-audio-progress);border-radius:inherit}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{position:absolute;top:-5px;margin-left:-7px;height:14px;width:14px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-progress-selector);transition:transform .25s}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot__active{transform:scale(1.2)}@media only screen and (max-width: 768px){.vac-player-bar{margin-right:5px}.vac-player-bar .vac-player-progress .vac-line-container{height:3px}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{height:12px;width:12px;top:-5px;margin-left:-5px}}.vac-message-actions-wrapper .vac-options-container{position:absolute;top:2px;right:10px;height:40px;width:70px;overflow:hidden;border-top-right-radius:8px}.vac-message-actions-wrapper .vac-blur-container{position:absolute;height:100%;width:100%;left:8px;bottom:10px;background:var(--chat-message-bg-color);filter:blur(3px);border-bottom-left-radius:8px}.vac-message-actions-wrapper .vac-options-me{background:var(--chat-message-bg-color-me)}.vac-message-actions-wrapper .vac-message-options{background:var(--chat-icon-bg-dropdown-message);border-radius:50%;position:absolute;top:7px;right:7px}.vac-message-actions-wrapper .vac-message-options svg{height:17px;width:17px;padding:5px;margin:-5px}.vac-message-actions-wrapper .vac-message-emojis{position:absolute;top:6px;right:30px}.vac-message-actions-wrapper .vac-menu-options{right:15px}.vac-message-actions-wrapper .vac-menu-left{right:-118px}@media only screen and (max-width: 768px){.vac-message-actions-wrapper .vac-options-container{right:3px}.vac-message-actions-wrapper .vac-menu-left{right:-50px}}.vac-message-files-container .vac-file-wrapper{position:relative;width:fit-content}.vac-message-files-container .vac-file-wrapper .vac-file-container{height:60px;width:60px;margin:3px 0 5px;cursor:pointer;transition:all .6s}.vac-message-files-container .vac-file-wrapper .vac-file-container:hover{opacity:.85}.vac-message-files-container .vac-file-wrapper .vac-file-container svg{height:30px;width:30px}.vac-message-files-container .vac-file-wrapper .vac-file-container.vac-file-container-progress{background-color:#0000004d}.vac-message-file-container{position:relative;z-index:0}.vac-message-file-container .vac-message-image-container{cursor:pointer}.vac-message-file-container .vac-image-buttons{position:absolute;width:100%;height:100%;border-radius:4px;background:linear-gradient(to bottom,rgba(0,0,0,0) 55%,rgba(0,0,0,.02) 60%,rgba(0,0,0,.05) 65%,rgba(0,0,0,.1) 70%,rgba(0,0,0,.2) 75%,rgba(0,0,0,.3) 80%,rgba(0,0,0,.5) 85%,rgba(0,0,0,.6) 90%,rgba(0,0,0,.7) 95%,rgba(0,0,0,.8) 100%)}.vac-message-file-container .vac-image-buttons svg{height:26px;width:26px}.vac-message-file-container .vac-image-buttons .vac-button-view,.vac-message-file-container .vac-image-buttons .vac-button-download{position:absolute;bottom:6px;left:7px}.vac-message-file-container .vac-image-buttons :first-child{left:40px}.vac-message-file-container .vac-image-buttons .vac-button-view{max-width:18px;bottom:8px}.vac-message-file-container .vac-video-container{width:350px;max-width:100%;margin:4px auto 5px;cursor:pointer}.vac-message-file-container .vac-video-container video{width:100%;height:100%;border-radius:4px}.vac-button-reaction{display:inline-flex;align-items:center;border:var(--chat-message-border-style-reaction);outline:none;background:var(--chat-message-bg-color-reaction);border-radius:4px;margin:4px 2px 0;transition:.3s;padding:0 5px;font-size:18px;line-height:23px}.vac-button-reaction span{font-size:11px;font-weight:500;min-width:7px;color:var(--chat-message-color-reaction-counter)}.vac-button-reaction:hover{border:var(--chat-message-border-style-reaction-hover);background:var(--chat-message-bg-color-reaction-hover);cursor:pointer}.vac-button-reaction.vac-reaction-me{border:var(--chat-message-border-style-reaction-me);background:var(--chat-message-bg-color-reaction-me)}.vac-button-reaction.vac-reaction-me span{color:var(--chat-message-color-reaction-counter-me)}.vac-button-reaction.vac-reaction-me:hover{border:var(--chat-message-border-style-reaction-hover-me);background:var(--chat-message-bg-color-reaction-hover-me)}.vac-reply-message{background:var(--chat-message-bg-color-reply);border-radius:4px;margin:-1px -5px 8px;padding:8px 10px}.vac-reply-message .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-message .vac-image-reply-container{width:70px}.vac-reply-message .vac-image-reply-container .vac-message-image-reply{height:70px;width:70px;margin:4px auto 3px}.vac-reply-message .vac-video-reply-container{width:200px;max-width:100%}.vac-reply-message .vac-video-reply-container video{width:100%;height:100%;border-radius:4px}.vac-reply-message .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content)}.vac-reply-message .vac-file-container{height:60px;width:60px}.vac-emoji-wrapper{position:relative;display:flex}.vac-emoji-wrapper .vac-emoji-reaction svg{height:19px;width:19px}.vac-emoji-wrapper .vac-emoji-picker{position:absolute;z-index:9999;bottom:32px;right:10px;width:300px;padding-top:4px;overflow:scroll;box-sizing:border-box;border-radius:.5rem;background:var(--chat-emoji-bg-color);box-shadow:0 1px 2px -2px #0000001a,0 1px 2px -1px #0000001a,0 1px 2px 1px #0000001a;scrollbar-width:none}.vac-emoji-wrapper .vac-emoji-picker::-webkit-scrollbar{display:none}.vac-emoji-wrapper .vac-emoji-picker.vac-picker-reaction{position:fixed;top:initial;right:initial}.vac-emoji-wrapper .vac-emoji-picker emoji-picker{height:100%;width:100%;--emoji-size: 1.2rem;--background: var(--chat-emoji-bg-color);--emoji-padding: .4rem;--border-color: var(--chat-sidemenu-border-color-search);--button-hover-background: var(--chat-sidemenu-bg-color-hover);--button-active-background: var(--chat-sidemenu-bg-color-hover)}.vac-format-message-wrapper .vac-format-container{display:inline}.vac-format-message-wrapper .vac-icon-deleted{height:14px;width:14px;vertical-align:middle;margin:-2px 2px 0 0;fill:var(--chat-message-color-deleted)}.vac-format-message-wrapper .vac-icon-deleted.vac-icon-deleted-room{margin:-3px 1px 0 0;fill:var(--chat-room-color-message)}.vac-format-message-wrapper .vac-image-link-container{background-color:var(--chat-message-bg-color-media);padding:8px;margin:2px auto;border-radius:4px}.vac-format-message-wrapper .vac-image-link{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:contain;background-position:center center!important;background-repeat:no-repeat!important;height:150px;width:150px;max-width:100%;border-radius:4px;margin:0 auto}.vac-format-message-wrapper .vac-image-link-message{max-width:166px;font-size:12px}.vac-loader-wrapper.vac-container-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-loader-wrapper.vac-container-top{padding:21px}.vac-loader-wrapper.vac-container-top #vac-circle{height:20px;width:20px}.vac-loader-wrapper #vac-circle{margin:auto;height:28px;width:28px;border:3px rgba(0,0,0,.25) solid;border-top:3px var(--chat-color-spinner) solid;border-right:3px var(--chat-color-spinner) solid;border-bottom:3px var(--chat-color-spinner) solid;border-radius:50%;-webkit-animation:vac-spin 1s infinite linear;animation:vac-spin 1s infinite linear}@media only screen and (max-width: 768px){.vac-loader-wrapper #vac-circle{height:24px;width:24px}.vac-loader-wrapper.vac-container-top{padding:18px}.vac-loader-wrapper.vac-container-top #vac-circle{height:16px;width:16px}}@-webkit-keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}#vac-icon-search{fill:var(--chat-icon-color-search)}#vac-icon-add{fill:var(--chat-icon-color-add)}#vac-icon-toggle{fill:var(--chat-icon-color-toggle)}#vac-icon-menu{fill:var(--chat-icon-color-menu)}#vac-icon-close{fill:var(--chat-icon-color-close)}#vac-icon-close-image{fill:var(--chat-icon-color-close-image)}#vac-icon-file{fill:var(--chat-icon-color-file)}#vac-icon-paperclip{fill:var(--chat-icon-color-paperclip)}#vac-icon-close-outline{fill:var(--chat-icon-color-close-outline)}#vac-icon-close-outline-preview{fill:var(--chat-icon-color-close-preview)}#vac-icon-send{fill:var(--chat-icon-color-send)}#vac-icon-send-disabled{fill:var(--chat-icon-color-send-disabled)}#vac-icon-emoji{fill:var(--chat-icon-color-emoji)}#vac-icon-emoji-reaction{fill:var(--chat-icon-color-emoji-reaction)}#vac-icon-document{fill:var(--chat-icon-color-document)}#vac-icon-pencil{fill:var(--chat-icon-color-pencil)}#vac-icon-checkmark,#vac-icon-double-checkmark{fill:var(--chat-icon-color-checkmark)}#vac-icon-checkmark-seen,#vac-icon-double-checkmark-seen{fill:var(--chat-icon-color-checkmark-seen)}#vac-icon-eye{fill:var(--chat-icon-color-eye)}#vac-icon-dropdown-message{fill:var(--chat-icon-color-dropdown-message)}#vac-icon-dropdown-room{fill:var(--chat-icon-color-dropdown-room)}#vac-icon-dropdown-scroll{fill:var(--chat-icon-color-dropdown-scroll)}#vac-icon-audio-play{fill:var(--chat-icon-color-audio-play)}#vac-icon-audio-pause{fill:var(--chat-icon-color-audio-pause)}.vac-progress-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-progress-wrapper circle{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.vac-progress-wrapper .vac-progress-content{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;margin-top:-2px;background-color:#000000b3;border-radius:50%}.vac-progress-wrapper .vac-progress-content .vac-progress-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-weight:700;color:#fff}.vac-progress-wrapper .vac-progress-content .vac-progress-text .vac-progress-pourcent{font-size:9px;font-weight:400}\n';const fP={name:"ChatContainer",components:{RoomsList:LS,Room:JB,MediaPreview:aP},props:{height:{type:String,default:"600px"},theme:{type:String,default:"light"},styles:{type:[Object,String],default:()=>({})},responsiveBreakpoint:{type:Number,default:900},singleRoom:{type:[Boolean,String],default:!1},roomsListOpened:{type:[Boolean,String],default:!0},textMessages:{type:[Object,String],default:()=>({})},currentUserId:{type:String,default:""},rooms:{type:[Array,String],default:()=>[]},roomsOrder:{type:String,default:"desc"},loadingRooms:{type:[Boolean,String],default:!1},roomsLoaded:{type:[Boolean,String],default:!1},roomId:{type:String,default:null},loadFirstRoom:{type:[Boolean,String],default:!0},messages:{type:[Array,String],default:()=>[]},messagesLoaded:{type:[Boolean,String],default:!1},roomActions:{type:[Array,String],default:()=>[]},menuActions:{type:[Array,String],default:()=>[]},messageActions:{type:[Array,String],default:()=>[{name:"replyMessage",title:"Reply"},{name:"editMessage",title:"Edit Message",onlyMe:!0},{name:"deleteMessage",title:"Delete Message",onlyMe:!0},{name:"selectMessages",title:"Select"}]},messageSelectionActions:{type:[Array,String],default:()=>[]},autoScroll:{type:[Object,String],default:()=>({send:{new:!0,newAfterScrollUp:!0},receive:{new:!0,newAfterScrollUp:!1}})},customSearchRoomEnabled:{type:[Boolean,String],default:!1},showSearch:{type:[Boolean,String],default:!0},showAddRoom:{type:[Boolean,String],default:!0},showSendIcon:{type:[Boolean,String],default:!0},showFiles:{type:[Boolean,String],default:!0},showAudio:{type:[Boolean,String],default:!0},audioBitRate:{type:Number,default:128},audioSampleRate:{type:Number,default:44100},showEmojis:{type:[Boolean,String],default:!0},showReactionEmojis:{type:[Boolean,String],default:!0},showNewMessagesDivider:{type:[Boolean,String],default:!0},showFooter:{type:[Boolean,String],default:!0},textFormatting:{type:[Object,String],default:()=>({disabled:!1})},linkOptions:{type:[Object,String],default:()=>({disabled:!1,target:"_blank",rel:null})},roomInfoEnabled:{type:[Boolean,String],default:!1},textareaActionEnabled:{type:[Boolean,String],default:!1},textareaAutoFocus:{type:[Boolean,String],default:!0},userTagsEnabled:{type:[Boolean,String],default:!0},emojisSuggestionEnabled:{type:[Boolean,String],default:!0},roomMessage:{type:String,default:""},scrollDistance:{type:Number,default:60},acceptedFiles:{type:String,default:"*"},captureFiles:{type:String,default:""},multipleFiles:{type:[Boolean,String],default:!0},templatesText:{type:[Array,String],default:()=>[]},mediaPreviewEnabled:{type:[Boolean,String],default:!0},usernameOptions:{type:[Object,String],default:()=>({minUsers:3,currentUser:!1})},emojiDataSource:{type:String,default:void 0}},emits:["toggle-rooms-list","room-info","fetch-messages","send-message","edit-message","delete-message","open-file","open-user-tag","open-failed-message","menu-action-handler","message-action-handler","send-message-reaction","typing-message","textarea-action-handler","fetch-more-rooms","add-room","search-room","room-action-handler","message-selection-action-handler"],data(){return{slots:[],room:{},loadingMoreRooms:!1,showRoomsList:!0,isMobile:!1,showMediaPreview:!1,previewFile:{}}},computed:{t(){return{...lP,...this.textMessagesCasted}},cssVars(){const e=cP[this.theme],t={};return Object.keys(e).map((n=>{t[n]={...e[n],...this.stylesCasted[n]||{}}})),uP(t)},orderedRooms(){return this.roomsCasted.slice().sort(((e,t)=>{const n=e.index||0,o=t.index||0;return"asc"===this.roomsOrder?n<o?-1:o<n?1:0:n>o?-1:o>n?1:0}))},singleRoomCasted(){return this.castBoolean(this.singleRoom)},roomsListOpenedCasted(){return this.castBoolean(this.roomsListOpened)},loadingRoomsCasted(){return this.castBoolean(this.loadingRooms)},roomsLoadedCasted(){return this.castBoolean(this.roomsLoaded)},loadFirstRoomCasted(){return this.castBoolean(this.loadFirstRoom)},messagesLoadedCasted(){return this.castBoolean(this.messagesLoaded)},multipleFilesCasted(){return this.castBoolean(this.multipleFiles)},showSearchCasted(){return this.castBoolean(this.showSearch)},showAddRoomCasted(){return this.castBoolean(this.showAddRoom)},showSendIconCasted(){return this.castBoolean(this.showSendIcon)},showFilesCasted(){return this.castBoolean(this.showFiles)},showAudioCasted(){return this.castBoolean(this.showAudio)},showEmojisCasted(){return this.castBoolean(this.showEmojis)},showReactionEmojisCasted(){return this.castBoolean(this.showReactionEmojis)},showNewMessagesDividerCasted(){return this.castBoolean(this.showNewMessagesDivider)},showFooterCasted(){return this.castBoolean(this.showFooter)},roomInfoEnabledCasted(){return this.castBoolean(this.roomInfoEnabled)},textareaActionEnabledCasted(){return this.castBoolean(this.textareaActionEnabled)},textareaAutoFocusCasted(){return this.castBoolean(this.textareaAutoFocus)},userTagsEnabledCasted(){return this.castBoolean(this.userTagsEnabled)},emojisSuggestionEnabledCasted(){return this.castBoolean(this.emojisSuggestionEnabled)},mediaPreviewEnabledCasted(){return this.castBoolean(this.mediaPreviewEnabled)},roomsCasted(){return this.castArray(this.rooms)},messagesCasted(){return this.castArray(this.messages)},roomActionsCasted(){return this.castArray(this.roomActions)},menuActionsCasted(){return this.castArray(this.menuActions)},messageActionsCasted(){return this.castArray(this.messageActions)},messageSelectionActionsCasted(){return this.castArray(this.messageSelectionActions)},templatesTextCasted(){return this.castArray(this.templatesText)},stylesCasted(){return this.castObject(this.styles)},textMessagesCasted(){return this.castObject(this.textMessages)},autoScrollCasted(){return this.castObject(this.autoScroll)},textFormattingCasted(){return this.castObject(this.textFormatting)},linkOptionsCasted(){return this.castObject(this.linkOptions)},usernameOptionsCasted(){return this.castObject(this.usernameOptions)}},watch:{roomsCasted:{immediate:!0,deep:!0,handler(e,t){if(e[0]&&e.find((e=>e.roomId===this.room.roomId))||(this.showRoomsList=!0),!this.loadingMoreRooms&&this.loadFirstRoomCasted&&e[0]&&(!t||e.length!==t.length))if(this.roomId){const t=e.find((e=>e.roomId===this.roomId))||{};this.fetchRoom({room:t})}else!this.isMobile||this.singleRoomCasted?this.fetchRoom({room:this.orderedRooms[0]}):this.showRoomsList=!0}},loadingRoomsCasted(e){e&&(this.room={})},roomId:{immediate:!0,handler(e,t){if(e&&!this.loadingRoomsCasted&&this.roomsCasted.length){const t=this.roomsCasted.find((t=>t.roomId===e));this.fetchRoom({room:t})}else t&&!e&&(this.room={})}},room(e){e&&0!==Object.entries(e).length&&(EB(e),e.users.forEach((e=>{TB(e)})))},roomsListOpenedCasted:{immediate:!0,handler(e){this.showRoomsList=e}}},created(){this.updateResponsive(),window.addEventListener("resize",(e=>{e.isTrusted&&this.updateResponsive()}))},updated(){const e=document.querySelectorAll("[slot]");this.slots.length!==e.length&&(this.slots=e)},methods:{castBoolean(e){return"true"===e||!0===e},castArray(e){return e?Array.isArray(e)?e:JSON.parse(e):[]},castObject(e){return e?"object"===typeof e?e:JSON.parse(e):{}},updateResponsive(){this.isMobile=window.innerWidth<Number(this.responsiveBreakpoint)},toggleRoomsList(){this.showRoomsList=!this.showRoomsList,this.isMobile&&(this.room={}),this.$emit("toggle-rooms-list",{opened:this.showRoomsList})},fetchRoom({room:e}){this.room=e,this.fetchMessages({reset:!0}),this.isMobile&&(this.showRoomsList=!1)},fetchMoreRooms(){this.$emit("fetch-more-rooms")},roomInfo(){this.$emit("room-info",this.room)},addRoom(){this.$emit("add-room")},searchRoom(e){this.$emit("search-room",{value:e,roomId:this.room.roomId})},fetchMessages(e){this.$emit("fetch-messages",{room:this.room,options:e})},sendMessage(e){this.$emit("send-message",{...e,roomId:this.room.roomId})},editMessage(e){this.$emit("edit-message",{...e,roomId:this.room.roomId})},deleteMessage(e){this.$emit("delete-message",{message:e,roomId:this.room.roomId})},openFile({message:e,file:t}){this.mediaPreviewEnabledCasted&&"preview"===t.action?(this.previewFile=t.file,this.showMediaPreview=!0):this.$emit("open-file",{message:e,file:t})},openUserTag({user:e}){this.$emit("open-user-tag",{user:e})},openFailedMessage({message:e}){this.$emit("open-failed-message",{message:e,roomId:this.room.roomId})},menuActionHandler(e){this.$emit("menu-action-handler",{action:e,roomId:this.room.roomId})},roomActionHandler({action:e,roomId:t}){this.$emit("room-action-handler",{action:e,roomId:t})},messageActionHandler(e){this.$emit("message-action-handler",{...e,roomId:this.room.roomId})},messageSelectionActionHandler(e){this.$emit("message-selection-action-handler",{...e,roomId:this.room.roomId})},sendMessageReaction(e){this.$emit("send-message-reaction",{...e,roomId:this.room.roomId})},typingMessage(e){this.$emit("typing-message",{message:e,roomId:this.room.roomId})},textareaActionHandler(e){this.$emit("textarea-action-handler",{message:e,roomId:this.room.roomId})}}},pP={class:"vac-chat-container"};function hP(e,t,n,o,r,s){const i=vm("rooms-list"),a=vm("room"),l=vm("media-preview");return kg(),Ag("div",{class:"vac-card-window",style:Zf([{height:n.height},s.cssVars])},[Lg("div",pP,[s.singleRoomCasted?Ug("",!0):(kg(),Rg(i,{key:0,"current-user-id":n.currentUserId,rooms:s.orderedRooms,"loading-rooms":s.loadingRoomsCasted,"rooms-loaded":s.roomsLoadedCasted,room:r.room,"room-actions":s.roomActionsCasted,"custom-search-room-enabled":n.customSearchRoomEnabled,"text-messages":s.t,"show-search":s.showSearchCasted,"show-add-room":s.showAddRoomCasted,"show-rooms-list":r.showRoomsList&&s.roomsListOpenedCasted,"text-formatting":s.textFormattingCasted,"link-options":s.linkOptionsCasted,"is-mobile":r.isMobile,"scroll-distance":n.scrollDistance,onFetchRoom:s.fetchRoom,onFetchMoreRooms:s.fetchMoreRooms,onLoadingMoreRooms:t[0]||(t[0]=e=>r.loadingMoreRooms=e),onAddRoom:s.addRoom,onSearchRoom:s.searchRoom,onRoomActionHandler:s.roomActionHandler},Sm({_:2},[km(r.slots,(t=>({name:t.slot,fn:xh((n=>[Em(e.$slots,t.slot,np(Fg(n)))]))})))]),1032,["current-user-id","rooms","loading-rooms","rooms-loaded","room","room-actions","custom-search-room-enabled","text-messages","show-search","show-add-room","show-rooms-list","text-formatting","link-options","is-mobile","scroll-distance","onFetchRoom","onFetchMoreRooms","onAddRoom","onSearchRoom","onRoomActionHandler"])),jg(a,{"current-user-id":n.currentUserId,rooms:s.roomsCasted,"room-id":r.room.roomId||"","load-first-room":s.loadFirstRoomCasted,messages:s.messagesCasted,"room-message":n.roomMessage,"messages-loaded":s.messagesLoadedCasted,"menu-actions":s.menuActionsCasted,"message-actions":s.messageActionsCasted,"message-selection-actions":s.messageSelectionActionsCasted,"auto-scroll":s.autoScrollCasted,"show-send-icon":s.showSendIconCasted,"show-files":s.showFilesCasted,"show-audio":s.showAudioCasted,"audio-bit-rate":n.audioBitRate,"audio-sample-rate":n.audioSampleRate,"show-emojis":s.showEmojisCasted,"show-reaction-emojis":s.showReactionEmojisCasted,"show-new-messages-divider":s.showNewMessagesDividerCasted,"show-footer":s.showFooterCasted,"text-messages":s.t,"single-room":s.singleRoomCasted,"show-rooms-list":r.showRoomsList&&s.roomsListOpenedCasted,"text-formatting":s.textFormattingCasted,"link-options":s.linkOptionsCasted,"is-mobile":r.isMobile,"loading-rooms":s.loadingRoomsCasted,"room-info-enabled":s.roomInfoEnabledCasted,"textarea-action-enabled":s.textareaActionEnabledCasted,"textarea-auto-focus":s.textareaAutoFocusCasted,"user-tags-enabled":s.userTagsEnabledCasted,"emojis-suggestion-enabled":s.emojisSuggestionEnabledCasted,"scroll-distance":n.scrollDistance,"accepted-files":n.acceptedFiles,"capture-files":n.captureFiles,"multiple-files":s.multipleFilesCasted,"templates-text":s.templatesTextCasted,"username-options":s.usernameOptionsCasted,"emoji-data-source":n.emojiDataSource,onToggleRoomsList:s.toggleRoomsList,onRoomInfo:s.roomInfo,onFetchMessages:s.fetchMessages,onSendMessage:s.sendMessage,onEditMessage:s.editMessage,onDeleteMessage:s.deleteMessage,onOpenFile:s.openFile,onOpenUserTag:s.openUserTag,onOpenFailedMessage:s.openFailedMessage,onMenuActionHandler:s.menuActionHandler,onMessageActionHandler:s.messageActionHandler,onMessageSelectionActionHandler:s.messageSelectionActionHandler,onSendMessageReaction:s.sendMessageReaction,onTypingMessage:s.typingMessage,onTextareaActionHandler:s.textareaActionHandler},Sm({_:2},[km(r.slots,(t=>({name:t.slot,fn:xh((n=>[Em(e.$slots,t.slot,np(Fg(n)))]))})))]),1032,["current-user-id","rooms","room-id","load-first-room","messages","room-message","messages-loaded","menu-actions","message-actions","message-selection-actions","auto-scroll","show-send-icon","show-files","show-audio","audio-bit-rate","audio-sample-rate","show-emojis","show-reaction-emojis","show-new-messages-divider","show-footer","text-messages","single-room","show-rooms-list","text-formatting","link-options","is-mobile","loading-rooms","room-info-enabled","textarea-action-enabled","textarea-auto-focus","user-tags-enabled","emojis-suggestion-enabled","scroll-distance","accepted-files","capture-files","multiple-files","templates-text","username-options","emoji-data-source","onToggleRoomsList","onRoomInfo","onFetchMessages","onSendMessage","onEditMessage","onDeleteMessage","onOpenFile","onOpenUserTag","onOpenFailedMessage","onMenuActionHandler","onMessageActionHandler","onMessageSelectionActionHandler","onSendMessageReaction","onTypingMessage","onTextareaActionHandler"])]),jg(m_,{name:"vac-fade-preview",appear:""},{default:xh((()=>[r.showMediaPreview?(kg(),Rg(l,{key:0,file:r.previewFile,onCloseMediaPreview:t[1]||(t[1]=e=>r.showMediaPreview=!1)},Sm({_:2},[km(r.slots,(t=>({name:t.slot,fn:xh((n=>[Em(e.$slots,t.slot,np(Fg(n)))]))})))]),1032,["file"])):Ug("",!0)])),_:3})],4)}var mP=Z_(fP,[["render",hP],["styles",[dP]]]);const gP=u_(mP),vP="vue-advanced-chat";function _P(){customElements.get(vP)||customElements.define(vP,gP)}_P();var bP=br({data(){return{socket:null,rooms:[{roomId:"global",roomName:"",avatar:"",users:[]}],messagesLoaded:!1,messages:[],currentUserId:null}},mounted(){let e="";const t=document.getElementById("room-info");t&&(e=t.textContent);let n=null;if(!e)throw"No room info provided";n=JSON.parse(e),this.rooms=[{roomId:n.room_name,roomName:n.room_title,avatar:"",users:[{_id:"1",username:"Fake user 1",avatar:"assets/imgs/doe.png",status:{state:"online",lastChanged:"today, 14:30"}},{_id:"2",username:"Fake user 2",avatar:"assets/imgs/snow.png",status:{state:"online",lastChanged:"14 July, 20:00"}},{_id:"3",username:"Fake user 3",avatar:"assets/imgs/snow.png",status:{state:"online",lastChanged:"14 July, 20:00"}}]}],this.connect(n.room_name),this.currentUserId=n.user_id},methods:{connect(e){let t="wss";"https:"!=window.location.protocol&&(t="ws"),this.socket=new WebSocket(t+"://"+window.location.host+"/ws/chat/"+e+"/"),this.fetchMessages(),this.socket.onclose=()=>{console.log("Chat socket closed")}},async fetchMessages(){this.socket.onmessage=e=>{const t=JSON.parse(e.data),n=t.type;if("initial"==n&&this.messagesLoaded)return;const o=t.messages;this.messages=[...this.messages,...o],"initial"==n&&(this.messagesLoaded=!0)}},sendMessage({content:e,replyMessage:t}){this.socket.send(JSON.stringify({message:e,replyTo:t?t._id:null}))}},computed:{showAudio(){}}}),yP=n(8152);const xP=(0,yP.c)(bP,[["render",Wu]]);var wP=xP;const kP=e=>(co("data-v-4610efbd"),e=e(),uo(),e),SP={class:"bell"},EP=kP((()=>$a("img",{src:"/static/teleforma/images/bell.svg",alt:"Notifications",title:"Notifications",class:"bell-image"},null,-1))),TP={key:0,class:"bell-count"},MP={key:0,class:"notifications-list"};function AP(e,t,n,o,r,s){const i=So("notification-message");return Ra(),La("div",{id:"notifications",onFocus:t[0]||(t[0]=(...t)=>e.open&&e.open(...t)),onFocusout:t[1]||(t[1]=(...t)=>e.close&&e.close(...t)),tabindex:"0"},[$a("div",SP,[EP,e.numberOfUnread>0?(Ra(),La("span",TP,oe(e.numberOfUnread),1)):Ka("",!0)]),e.opened?(Ra(),La("div",MP,[$a("ul",null,[(Ra(!0),La(ka,null,ss(e.messages,(e=>(Ra(),ja(i,{key:e._id,id:e._id,content:e.content,url:e.url,viewed:e.viewed,"creation-date":e.created},null,8,["id","content","url","viewed","creation-date"])))),128))])])):Ka("",!0)],32)}const RP={class:"date"};function CP(e,t,n,o,r,s){return Ra(),La("li",{onClick:t[0]||(t[0]=t=>e.onClick()),onMouseup:t[1]||(t[1]=Mu((t=>e.onMiddleClick()),["middle"]))},[$a("span",{class:W({unviewed:!e.viewed,text:!0})},oe(e.content),3),$a("span",RP,oe(e.relativeCreationDate),1)],32)}function OP(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function IP(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function BP(e){IP(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"===typeof e||"[object Number]"===t?new Date(e):("string"!==typeof e&&"[object String]"!==t||"undefined"===typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function PP(e){IP(1,arguments);var t=BP(e);return t.setHours(0,0,0,0),t}var LP=864e5;function jP(e,t){IP(2,arguments);var n=PP(e),o=PP(t),r=n.getTime()-OP(n),s=o.getTime()-OP(o);return Math.round((r-s)/LP)}function NP(e){return IP(1,arguments),e instanceof Date||"object"===typeof e&&"[object Date]"===Object.prototype.toString.call(e)}function FP(e){if(IP(1,arguments),!NP(e)&&"number"!==typeof e)return!1;var t=BP(e);return!isNaN(Number(t))}var DP={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},HP=function(e,t,n){var o,r=DP[e];return o="string"===typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),null!==n&&void 0!==n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+o:o+" ago":o},UP=HP;function VP(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,o=e.formats[n]||e.formats[e.defaultWidth];return o}}var $P={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},zP={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},qP={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},YP={date:VP({formats:$P,defaultWidth:"full"}),time:VP({formats:zP,defaultWidth:"full"}),dateTime:VP({formats:qP,defaultWidth:"full"})},GP=YP,XP={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},WP=function(e,t,n,o){return XP[e]},KP=WP;function ZP(e){return function(t,n){var o,r=n||{},s=r.context?String(r.context):"standalone";if("formatting"===s&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,a=r.width?String(r.width):i;o=e.formattingValues[a]||e.formattingValues[i]}else{var l=e.defaultWidth,c=r.width?String(r.width):e.defaultWidth;o=e.values[c]||e.values[l]}var u=e.argumentCallback?e.argumentCallback(t):t;return o[u]}}var QP={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},JP={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},eL={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},tL={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},nL={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},oL={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},rL=function(e,t){var n=Number(e),o=n%100;if(o>20||o<10)switch(o%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},sL={ordinalNumber:rL,era:ZP({values:QP,defaultWidth:"wide"}),quarter:ZP({values:JP,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ZP({values:eL,defaultWidth:"wide"}),day:ZP({values:tL,defaultWidth:"wide"}),dayPeriod:ZP({values:nL,defaultWidth:"wide",formattingValues:oL,defaultFormattingWidth:"wide"})},iL=sL;function aL(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.width,r=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],s=t.match(r);if(!s)return null;var i,a=s[0],l=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(l)?cL(l,(function(e){return e.test(a)})):lL(l,(function(e){return e.test(a)}));i=e.valueCallback?e.valueCallback(c):c,i=n.valueCallback?n.valueCallback(i):i;var u=t.slice(a.length);return{value:i,rest:u}}}function lL(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function cL(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n}function uL(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.match(e.matchPattern);if(!o)return null;var r=o[0],s=t.match(e.parsePattern);if(!s)return null;var i=e.valueCallback?e.valueCallback(s[0]):s[0];i=n.valueCallback?n.valueCallback(i):i;var a=t.slice(r.length);return{value:i,rest:a}}}var dL=/^(\d+)(th|st|nd|rd)?/i,fL=/\d+/i,pL={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},hL={any:[/^b/i,/^(a|c)/i]},mL={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},gL={any:[/1/i,/2/i,/3/i,/4/i]},vL={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},_L={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},bL={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},yL={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},xL={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},wL={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},kL={ordinalNumber:uL({matchPattern:dL,parsePattern:fL,valueCallback:function(e){return parseInt(e,10)}}),era:aL({matchPatterns:pL,defaultMatchWidth:"wide",parsePatterns:hL,defaultParseWidth:"any"}),quarter:aL({matchPatterns:mL,defaultMatchWidth:"wide",parsePatterns:gL,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:aL({matchPatterns:vL,defaultMatchWidth:"wide",parsePatterns:_L,defaultParseWidth:"any"}),day:aL({matchPatterns:bL,defaultMatchWidth:"wide",parsePatterns:yL,defaultParseWidth:"any"}),dayPeriod:aL({matchPatterns:xL,defaultMatchWidth:"any",parsePatterns:wL,defaultParseWidth:"any"})},SL=kL,EL={code:"en-US",formatDistance:UP,formatLong:GP,formatRelative:KP,localize:iL,match:SL,options:{weekStartsOn:0,firstWeekContainsDate:1}},TL=EL;function ML(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function AL(e,t){IP(2,arguments);var n=BP(e).getTime(),o=ML(t);return new Date(n+o)}function RL(e,t){IP(2,arguments);var n=ML(t);return AL(e,-n)}var CL=864e5;function OL(e){IP(1,arguments);var t=BP(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var o=t.getTime(),r=n-o;return Math.floor(r/CL)+1}function IL(e){IP(1,arguments);var t=1,n=BP(e),o=n.getUTCDay(),r=(o<t?7:0)+o-t;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function BL(e){IP(1,arguments);var t=BP(e),n=t.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(n+1,0,4),o.setUTCHours(0,0,0,0);var r=IL(o),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var i=IL(s);return t.getTime()>=r.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}function PL(e){IP(1,arguments);var t=BL(e),n=new Date(0);n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0);var o=IL(n);return o}var LL=6048e5;function jL(e){IP(1,arguments);var t=BP(e),n=IL(t).getTime()-PL(t).getTime();return Math.round(n/LL)+1}function NL(e,t){IP(1,arguments);var n=t||{},o=n.locale,r=o&&o.options&&o.options.weekStartsOn,s=null==r?0:ML(r),i=null==n.weekStartsOn?s:ML(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var a=BP(e),l=a.getUTCDay(),c=(l<i?7:0)+l-i;return a.setUTCDate(a.getUTCDate()-c),a.setUTCHours(0,0,0,0),a}function FL(e,t){IP(1,arguments);var n=BP(e),o=n.getUTCFullYear(),r=t||{},s=r.locale,i=s&&s.options&&s.options.firstWeekContainsDate,a=null==i?1:ML(i),l=null==r.firstWeekContainsDate?a:ML(r.firstWeekContainsDate);if(!(l>=1&&l<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var c=new Date(0);c.setUTCFullYear(o+1,0,l),c.setUTCHours(0,0,0,0);var u=NL(c,t),d=new Date(0);d.setUTCFullYear(o,0,l),d.setUTCHours(0,0,0,0);var f=NL(d,t);return n.getTime()>=u.getTime()?o+1:n.getTime()>=f.getTime()?o:o-1}function DL(e,t){IP(1,arguments);var n=t||{},o=n.locale,r=o&&o.options&&o.options.firstWeekContainsDate,s=null==r?1:ML(r),i=null==n.firstWeekContainsDate?s:ML(n.firstWeekContainsDate),a=FL(e,t),l=new Date(0);l.setUTCFullYear(a,0,i),l.setUTCHours(0,0,0,0);var c=NL(l,t);return c}var HL=6048e5;function UL(e,t){IP(1,arguments);var n=BP(e),o=NL(n,t).getTime()-DL(n,t).getTime();return Math.round(o/HL)+1}function VL(e,t){var n=e<0?"-":"",o=Math.abs(e).toString();while(o.length<t)o="0"+o;return n+o}var $L={y:function(e,t){var n=e.getUTCFullYear(),o=n>0?n:1-n;return VL("yy"===t?o%100:o,t.length)},M:function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):VL(n+1,2)},d:function(e,t){return VL(e.getUTCDate(),t.length)},a:function(e,t){var n=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return"am"===n?"a.m.":"p.m."}},h:function(e,t){return VL(e.getUTCHours()%12||12,t.length)},H:function(e,t){return VL(e.getUTCHours(),t.length)},m:function(e,t){return VL(e.getUTCMinutes(),t.length)},s:function(e,t){return VL(e.getUTCSeconds(),t.length)},S:function(e,t){var n=t.length,o=e.getUTCMilliseconds(),r=Math.floor(o*Math.pow(10,n-3));return VL(r,t.length)}},zL=$L,qL={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},YL={G:function(e,t,n){var o=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(o,{width:"abbreviated"});case"GGGGG":return n.era(o,{width:"narrow"});case"GGGG":default:return n.era(o,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var o=e.getUTCFullYear(),r=o>0?o:1-o;return n.ordinalNumber(r,{unit:"year"})}return zL.y(e,t)},Y:function(e,t,n,o){var r=FL(e,o),s=r>0?r:1-r;if("YY"===t){var i=s%100;return VL(i,2)}return"Yo"===t?n.ordinalNumber(s,{unit:"year"}):VL(s,t.length)},R:function(e,t){var n=BL(e);return VL(n,t.length)},u:function(e,t){var n=e.getUTCFullYear();return VL(n,t.length)},Q:function(e,t,n){var o=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return VL(o,2);case"Qo":return n.ordinalNumber(o,{unit:"quarter"});case"QQQ":return n.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(o,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,n){var o=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return VL(o,2);case"qo":return n.ordinalNumber(o,{unit:"quarter"});case"qqq":return n.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(o,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,n){var o=e.getUTCMonth();switch(t){case"M":case"MM":return zL.M(e,t);case"Mo":return n.ordinalNumber(o+1,{unit:"month"});case"MMM":return n.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(o,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,n){var o=e.getUTCMonth();switch(t){case"L":return String(o+1);case"LL":return VL(o+1,2);case"Lo":return n.ordinalNumber(o+1,{unit:"month"});case"LLL":return n.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(o,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,n,o){var r=UL(e,o);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):VL(r,t.length)},I:function(e,t,n){var o=jL(e);return"Io"===t?n.ordinalNumber(o,{unit:"week"}):VL(o,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):zL.d(e,t)},D:function(e,t,n){var o=OL(e);return"Do"===t?n.ordinalNumber(o,{unit:"dayOfYear"}):VL(o,t.length)},E:function(e,t,n){var o=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(o,{width:"short",context:"formatting"});case"EEEE":default:return n.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,n,o){var r=e.getUTCDay(),s=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(s);case"ee":return VL(s,2);case"eo":return n.ordinalNumber(s,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});case"eeee":default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,o){var r=e.getUTCDay(),s=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(s);case"cc":return VL(s,t.length);case"co":return n.ordinalNumber(s,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});case"cccc":default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){var o=e.getUTCDay(),r=0===o?7:o;switch(t){case"i":return String(r);case"ii":return VL(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(o,{width:"short",context:"formatting"});case"iiii":default:return n.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,n){var o=e.getUTCHours(),r=o/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var o,r=e.getUTCHours();switch(o=12===r?qL.noon:0===r?qL.midnight:r/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(e,t,n){var o,r=e.getUTCHours();switch(o=r>=17?qL.evening:r>=12?qL.afternoon:r>=4?qL.morning:qL.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var o=e.getUTCHours()%12;return 0===o&&(o=12),n.ordinalNumber(o,{unit:"hour"})}return zL.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):zL.H(e,t)},K:function(e,t,n){var o=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(o,{unit:"hour"}):VL(o,t.length)},k:function(e,t,n){var o=e.getUTCHours();return 0===o&&(o=24),"ko"===t?n.ordinalNumber(o,{unit:"hour"}):VL(o,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):zL.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):zL.s(e,t)},S:function(e,t){return zL.S(e,t)},X:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();if(0===s)return"Z";switch(t){case"X":return XL(s);case"XXXX":case"XX":return WL(s);case"XXXXX":case"XXX":default:return WL(s,":")}},x:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();switch(t){case"x":return XL(s);case"xxxx":case"xx":return WL(s);case"xxxxx":case"xxx":default:return WL(s,":")}},O:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+GL(s,":");case"OOOO":default:return"GMT"+WL(s,":")}},z:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+GL(s,":");case"zzzz":default:return"GMT"+WL(s,":")}},t:function(e,t,n,o){var r=o._originalDate||e,s=Math.floor(r.getTime()/1e3);return VL(s,t.length)},T:function(e,t,n,o){var r=o._originalDate||e,s=r.getTime();return VL(s,t.length)}};function GL(e,t){var n=e>0?"-":"+",o=Math.abs(e),r=Math.floor(o/60),s=o%60;if(0===s)return n+String(r);var i=t||"";return n+String(r)+i+VL(s,2)}function XL(e,t){if(e%60===0){var n=e>0?"-":"+";return n+VL(Math.abs(e)/60,2)}return WL(e,t)}function WL(e,t){var n=t||"",o=e>0?"-":"+",r=Math.abs(e),s=VL(Math.floor(r/60),2),i=VL(r%60,2);return o+s+n+i}var KL=YL;function ZL(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}}function QL(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}}function JL(e,t){var n,o=e.match(/(P+)(p+)?/)||[],r=o[1],s=o[2];if(!s)return ZL(e,t);switch(r){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;case"PPPP":default:n=t.dateTime({width:"full"});break}return n.replace("{{date}}",ZL(r,t)).replace("{{time}}",QL(s,t))}var ej={p:QL,P:JL},tj=ej,nj=["D","DD"],oj=["YY","YYYY"];function rj(e){return-1!==nj.indexOf(e)}function sj(e){return-1!==oj.indexOf(e)}function ij(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://git.io/fxCyr"))}var aj=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,lj=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,cj=/^'([^]*?)'?$/,uj=/''/g,dj=/[a-zA-Z]/;function fj(e,t,n){IP(2,arguments);var o=String(t),r=n||{},s=r.locale||TL,i=s.options&&s.options.firstWeekContainsDate,a=null==i?1:ML(i),l=null==r.firstWeekContainsDate?a:ML(r.firstWeekContainsDate);if(!(l>=1&&l<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var c=s.options&&s.options.weekStartsOn,u=null==c?0:ML(c),d=null==r.weekStartsOn?u:ML(r.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");var f=BP(e);if(!FP(f))throw new RangeError("Invalid time value");var p=OP(f),h=RL(f,p),m={firstWeekContainsDate:l,weekStartsOn:d,locale:s,_originalDate:f},g=o.match(lj).map((function(e){var t=e[0];if("p"===t||"P"===t){var n=tj[t];return n(e,s.formatLong,m)}return e})).join("").match(aj).map((function(n){if("''"===n)return"'";var o=n[0];if("'"===o)return pj(n);var i=KL[o];if(i)return!r.useAdditionalWeekYearTokens&&sj(n)&&ij(n,t,e),!r.useAdditionalDayOfYearTokens&&rj(n)&&ij(n,t,e),i(h,n,s.localize,m);if(o.match(dj))throw new RangeError("Format string contains an unescaped latin alphabet character `"+o+"`");return n})).join("");return g}function pj(e){return e.match(cj)[1].replace(uj,"'")}function hj(e,t,n){IP(2,arguments);var o=BP(e),r=BP(t),s=n||{},i=s.locale,a=void 0===i?TL:i,l=s.weekStartsOn,c=void 0===l?0:l;if(!a.localize)throw new RangeError("locale must contain localize property");if(!a.formatLong)throw new RangeError("locale must contain formatLong property");if(!a.formatRelative)throw new RangeError("locale must contain formatRelative property");var u,d=jP(o,r);if(isNaN(d))throw new RangeError("Invalid time value");u=d<-6?"other":d<-1?"lastWeek":d<0?"yesterday":d<1?"today":d<2?"tomorrow":d<7?"nextWeek":"other";var f=RL(o,OP(o)),p=RL(r,OP(r)),h=a.formatRelative(u,f,p,{locale:a,weekStartsOn:c});return fj(o,h,{locale:a,weekStartsOn:c})}var mj={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}},gj=function(e,t,n){var o,r=mj[e];return o="string"===typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),null!==n&&void 0!==n&&n.addSuffix?n.comparison&&n.comparison>0?"dans "+o:"il y a "+o:o},vj=gj,_j={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},bj={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},yj={full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},xj={date:VP({formats:_j,defaultWidth:"full"}),time:VP({formats:bj,defaultWidth:"full"}),dateTime:VP({formats:yj,defaultWidth:"full"})},wj=xj,kj={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},Sj=function(e,t,n,o){return kj[e]},Ej=Sj,Tj={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},Mj={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},Aj={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},Rj={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},Cj={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},Oj=function(e,t){var n=Number(e),o=null===t||void 0===t?void 0:t.unit;if(0===n)return"0";var r,s=["year","week","hour","minute","second"];return r=1===n?o&&s.includes(o)?"ère":"er":"ème",n+r},Ij={ordinalNumber:Oj,era:ZP({values:Tj,defaultWidth:"wide"}),quarter:ZP({values:Mj,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ZP({values:Aj,defaultWidth:"wide"}),day:ZP({values:Rj,defaultWidth:"wide"}),dayPeriod:ZP({values:Cj,defaultWidth:"wide"})},Bj=Ij,Pj=/^(\d+)(ième|ère|ème|er|e)?/i,Lj=/\d+/i,jj={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},Nj={any:[/^av/i,/^ap/i]},Fj={narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},Dj={any:[/1/i,/2/i,/3/i,/4/i]},Hj={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},Uj={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},Vj={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},$j={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},zj={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},qj={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},Yj={ordinalNumber:uL({matchPattern:Pj,parsePattern:Lj,valueCallback:function(e){return parseInt(e)}}),era:aL({matchPatterns:jj,defaultMatchWidth:"wide",parsePatterns:Nj,defaultParseWidth:"any"}),quarter:aL({matchPatterns:Fj,defaultMatchWidth:"wide",parsePatterns:Dj,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:aL({matchPatterns:Hj,defaultMatchWidth:"wide",parsePatterns:Uj,defaultParseWidth:"any"}),day:aL({matchPatterns:Vj,defaultMatchWidth:"wide",parsePatterns:$j,defaultParseWidth:"any"}),dayPeriod:aL({matchPatterns:zj,defaultMatchWidth:"any",parsePatterns:qj,defaultParseWidth:"any"})},Gj=Yj,Xj={code:"fr",formatDistance:vj,formatLong:wj,formatRelative:Ej,localize:Bj,match:Gj,options:{weekStartsOn:1,firstWeekContainsDate:4}},Wj=Xj,Kj=n(9899),Zj=n.n(Kj),Qj=br({props:{id:Number,content:String,url:String,viewed:Boolean,creationDate:String},methods:{async setAsViewed(){!1===this.viewed&&await Zj().post("/notification",{id:this.id,viewed:!0})},async onClick(){await this.setAsViewed(),this.url&&(window.location.href=this.url)},async onMiddleClick(){await this.setAsViewed(),this.url&&window.open(this.url,"_blank")}},computed:{relativeCreationDate(){return hj(new Date(this.creationDate),new Date,{locale:Wj})}}});const Jj=(0,yP.c)(Qj,[["render",CP],["__scopeId","data-v-fa1f8db4"]]);var eN=Jj,tN=br({data(){return{socket:null,messagesLoaded:!1,messages:[],currentUserId:null,opened:!1}},components:{NotificationMessage:eN},created(){const e=document.getElementById("user_id");e&&(this.currentUserId=parseInt(e.getAttribute("value"),10),this.connect())},methods:{connect(){let e="wss";"https:"!=window.location.protocol&&(e="ws"),this.socket=new WebSocket(e+"://"+window.location.host+"/ws/notification/"+this.currentUserId+"/"),this.fetchMessages(),this.socket.onclose=()=>{console.log("Chat socket closed")}},async fetchMessages(){this.socket.onmessage=e=>{const t=JSON.parse(e.data),n=t.type;if("initial"===n&&this.messagesLoaded)return;const o=t.messages;let r=null;"new"===n&&1===o.length&&(r=this.messages.findIndex((e=>e._id===o[0]._id))),this.messages=null!==r&&-1!==r?[...this.messages.slice(0,r),o[0],...this.messages.slice(r+1)]:[...o,...this.messages],"initial"===n&&(this.messagesLoaded=!0)}},open(){this.opened=!0},close(){this.opened=!1}},computed:{numberOfUnread(){return this.messages.filter((e=>!e.viewed)).length}}});const nN=(0,yP.c)(tN,[["render",AP],["__scopeId","data-v-4610efbd"]]);var oN,rN=nN;n(3248);function sN(e){return sN="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sN(e)}function iN(e,t){if("object"!=sN(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=sN(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function aN(e){var t=iN(e,"string");return"symbol"==sN(t)?t:String(t)}function lN(e,t,n){return t=aN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}(function(e){e["UNSTARTED"]="UNSTARTED",e["ENDED"]="ENDED",e["PLAYING"]="PLAYING",e["PAUSE"]="PAUSE",e["BUFFERING"]="BUFFERING",e["READY"]="READY",e["LOADING"]="LOADING",e["LOADED"]="LOADED"})(oN||(oN={}));const cN=!0,uN={debug:(...e)=>{cN&&console.debug(...e)},error:(...e)=>{console.error(...e)}};class dN{constructor(e,t){lN(this,"videoId",void 0),lN(this,"videoPlayerConfig",void 0),lN(this,"videojs",void 0),lN(this,"player",void 0),lN(this,"controls",void 0),lN(this,"main",void 0),lN(this,"sound",void 0),lN(this,"canWait",void 0),lN(this,"videoPlayerArea",void 0),lN(this,"videoState",void 0),lN(this,"_startSeconds",void 0),lN(this,"loop",void 0),lN(this,"isPlaying",void 0),this.videoId=Math.random().toString(36).substring(2,15),this.player=e,this.videoPlayerConfig=t,this.main=this.videoPlayerConfig.main??!1,this.sound=this.videoPlayerConfig.sound??!1,this.canWait=!0,this.controls=this.videoPlayerConfig.controls??e.options.controls??!0,this.loop=e.options.loop??!1,this._startSeconds=parseFloat(String(this.videoPlayerConfig.startSeconds??0)),this.videoPlayerArea=null,this.videoState=oN.LOADING,this.isPlaying=!1,this.mount()}mount(){if(this.render(),!this.videoElement)return uN.debug("video element not found");setTimeout((()=>{this.setupVideoElement({controls:this.controls,main:this.main})}),1),window.addEventListener("unhandledrejection",(e=>{("AbortError"===e.reason?.name||e.reason?.message.includes("The play() request was interrupted"))&&(console.warn("❌❌❌❌❌❌❌❌The play() request was interrupted❌❌❌❌❌❌❌❌❌❌"),e.preventDefault(),e.stopPropagation())})),document.addEventListener("fullscreenchange",(()=>{const e=document.querySelector("video");document.fullscreenElement||e&&(e.style.height="100%",e.style.width="100%")})),this.videojs.on("ratechange",(()=>{const e=this.videojs.playbackRate();console.log(`Playback rate changed to: ${e}`),this.player.videoPlayers.forEach((t=>{t.videojs&&t.videojs.playbackRate()!==e&&(t.videojs.playbackRate(e),console.log(`Updated video ${t.videoId} to speed ${e}`))}))})),this.videojs.on("loadeddata",this.onReady.bind(this)),this.videojs.on("timeupdate",this.onTimeUpdate.bind(this)),this.videojs.on("seeking",this.onSeeking.bind(this)),this.videojs.on("ended",this.onStateChange.bind(this,oN.ENDED)),this.videojs.on("play",(()=>{this.syncTime(),this.isPlaying||this.player.state===oN.BUFFERING||this.onStateChange(oN.PLAYING)})),this.videojs.on("pause",(()=>{this.isPlaying&&this.onStateChange(oN.PAUSE)})),this.videojs.on("canplay",(()=>{this.syncTime(),this.player.state!==oN.PAUSE&&([oN.LOADING,oN.LOADED].includes(this.player.state)||this.onStateChange(oN.READY),this.canWait=!1,setTimeout((()=>{this.canWait=!0}),1e3))})),this.videojs.on("waiting",(()=>{this.canWait&&4!==this.videoElement.readyState&&(console.log("BUFFERING...",this.videoElement.readyState),[oN.LOADING,oN.LOADED].includes(this.player.state)||this.isPlaying||this.onStateChange(oN.BUFFERING))}))}syncTime(){const e=this.player.videoPlayers.find((e=>e.main)),t=()=>{if(this.main)this.player.videoPlayers.forEach((e=>{if(!e.main&&e.videojs){const t=e.videojs.currentTime(),n=this.videojs.currentTime();Math.abs(n-t)>.2&&(e.videojs.currentTime(n),console.log(`🔄 Synced video ${e.videoId} to ${n}s`))}}));else if(e&&e.videojs){const t=e.videojs.currentTime(),n=this.videojs.currentTime();Math.abs(t-n)>.2&&(this.videojs.currentTime(t),console.log(`🔄 Synced video ${this.videoId} to ${t}s`))}};requestAnimationFrame(t)}get videoElement(){return document.querySelector(`#video_player_${this.videoId} video`)}onReady(){uN.debug(this.videoId,"::[onReady]"),this.timeTo(0),this.player.onReady()}onSeeking(){uN.debug(this.videoId,"::[onSeeking]"),this.main&&requestAnimationFrame((()=>{this.syncTime()}))}onTimeUpdate(){this.main&&requestAnimationFrame((()=>{this.syncTime()}))}onStateChange(e){uN.debug(this.videoId,"::[onStateChange]",e),this.videoState=e;const t=[oN.BUFFERING,oN.READY,oN.PLAYING,oN.PAUSE,oN.ENDED,oN.UNSTARTED];(e!==oN.PLAYING||(this.isPlaying=!0,this.main))&&(e!==oN.PAUSE||(this.isPlaying=!1,this.main))&&(e===oN.BUFFERING&&(this.isPlaying=!1),t.includes(e)&&this.player.changeState(e,this))}render(){if(this.videoPlayerArea=document.querySelector(this.videoPlayerConfig.id),!this.videoPlayerArea)return uN.debug("id not found: ",this.videoPlayerConfig.id);this.videoPlayerArea.innerHTML=`\n        <video \n            id="video_player_${this.videoId}"\n            class="video-js vjs-theme-fantasy"\n            controls\n            preload="auto"\n            data-setup='{"playbackRates": [1, 1.25, 1.5, 2]}'\n            style="width:100%;height:100%;"\n        >\n          <source src="${this.videoPlayerConfig.initialSrc}" type="video/mp4" />\n          <p class="vjs-no-js">\n            To view this video please enable JavaScript, and consider upgrading to a\n            web browser that\n            <a href="https://videojs.com/html5-video-support/" target="_blank"\n              >supports HTML5 video</a\n            >\n          </p>\n        </video>\n    `,this.videojs=window.videojs(`video_player_${this.videoId}`,{userActions:{doubleClick:!1},controlBar:{volumePanel:this.sound,fullscreenToggle:!1}}),this.videojs.controls(!0),this.videojs.muted(!this.sound),this._createFullscreenButton()}setupVideoElement(e){void 0!==e.controls&&this.setControls(e.controls),this.setMain(e.main)}_swap(e){if(!this.videoElement||!e.videoElement)return;const t=()=>{window.innerHeight>window.innerWidth?(this.videoElement.style.height="100%",e.videoElement.style.height="100%"):window.document.fullscreenElement?(this.videoElement.style.height="100%",e.videoElement.style.height="100vh"):(this.videoElement.style.height="100%",e.videoElement.style.height="100%")};requestAnimationFrame(t);const n=this.videoElement.parentElement,o=e.videoElement.parentElement,r=n.parentNode,s=o.parentNode;if(!r||!s)throw new Error("Parent node not found");const i=n.nextSibling===o?n:n.nextSibling;s.insertBefore(n,o),r.insertBefore(o,i);const a=this.controls,l=this.main;this.setupVideoElement({controls:e.controls,main:e.main}),e.setupVideoElement({controls:a,main:l})}async play(){if(!this.videoElement)return;if(this.videoState===oN.PLAYING||this.videoState===oN.BUFFERING)return;const e=this.videoElement.currentTime>0&&!this.videoElement.paused&&!this.videoElement.ended&&this.videoElement.readyState>this.videoElement.HAVE_CURRENT_DATA;e?console.log("already playing"):await this.videoElement.play().then((()=>{console.log("Playback started!")})).catch((e=>{console.warn("Playback failed:",e)}))}pause(){if(this.videoElement&&this.videoState!==oN.PAUSE&&this.isPlaying)try{this.videoElement.pause()}catch(e){console.log(e)}}stop(){if(this.videoElement)try{this.videoElement.pause(),this.timeTo(this.getDuration()-.5)}catch(e){console.log(e)}}setControls(e){this.videoElement&&(this.videojs.controls(e),this.controls=e)}setMain(e){this.main=e}timeTo(e){if(this.videoElement){if(e=parseFloat(e.toString()),e+=this._startSeconds,e>=this.getDuration())return this.videoElement.currentTime=this.getDuration()-.05,uN.debug("timeTo: time is greater than duration"),void this.pause();uN.debug("set time to: ",e),this.videoElement.currentTime=e}}getDuration(){return this.videoElement?.duration||0}getPlayLength(){return this.getDuration()-this._startSeconds}getCurrentTime(){return this.videoElement?.currentTime||0}getPlayedTime(){const e=this.getCurrentTime()-this._startSeconds;return Math.max(e,0)}isEnded(){const e=Math.abs(this.getCurrentTime()-this.getDuration());return e<.1}_createFullscreenButton(){const e=this.videojs?.controlBar.addChild("button",{clickHandler:function(){const e=window.document,t=document.querySelector("video");if(e.fullscreenElement)document.exitFullscreen().then((()=>{t&&(t.style.height="100%",t.style.width="100%")})),screen.orientation.unlock();else{const e=document.getElementById("fullscreen-part");e?.requestFullscreen().then((()=>{t&&(t.style.height="100vh",t.style.width="100%"),screen.orientation.lock("landscape").catch((e=>{console.error("Error locking orientation:",e)}))}))}}});e.controlText("Fullscreen"),this.videojs?.controlBar.el().appendChild(e.el());const t=e.el();t.innerHTML='<span aria-hidden="true" class="vjs-icon-placeholder"></span><span class="vjs-control-text" aria-live="polite">Fullscreen</span>',t.classList.add("vjs-fullscreen-control")}}var fN=dN;const pN={[oN.LOADING]:[oN.LOADED],[oN.LOADED]:[oN.PLAYING],[oN.PLAYING]:[oN.PAUSE,oN.ENDED,oN.BUFFERING],[oN.PAUSE]:[oN.PLAYING,oN.ENDED],[oN.ENDED]:[oN.PLAYING],[oN.BUFFERING]:[oN.READY,oN.PAUSE,oN.PLAYING],[oN.READY]:[oN.PLAYING],[oN.UNSTARTED]:[]},hN=(e,t)=>{const n=pN[e];return!!n&&n.includes(t)};class mN{constructor(e){lN(this,"options",void 0),lN(this,"$container",void 0),lN(this,"videoPlayers",[]),lN(this,"state",void 0),lN(this,"readyCount",void 0),lN(this,"currentTime",void 0),this.options={controls:e.controls??!0,loop:e.loop??!1,area:e.area||"",videoPlayers:e.videoPlayers||[],template:'<div id="sync_video_player_container"></div>'},this.state=oN.LOADING,this.readyCount=0,this.$container=null,this.videoPlayers=[],this.currentTime=0}getDebugInfo(){return{state:this.state,currentTime:this.currentTime,videoPlayers:this.videoPlayers.map((e=>({id:e.videoId,state:e.videoState,currentTime:e.getCurrentTime(),duration:e.getDuration,isMain:e.main,isPlaying:e.isPlaying})))}}mount(){this.render(),this.addVideoPlayers(this.options.videoPlayers)}render(){const{template:e,area:t}=this.options;if(!t)return;const n=document.querySelector(t);if(!n)return uN.error("area not found: ",t);n.innerHTML=e||"",this.$container=document.querySelector("#sync_video_player_container")}async changeState(e,t){const n=this.videoPlayers.find((e=>e.main));if(e===oN.BUFFERING)return n&&n===t?this.pause():void 0;if(e===oN.PLAYING)return this.state!==oN.BUFFERING?await this.play():void 0;if(e===oN.PAUSE){if(t.isEnded())return;return this.pause(!0)}if(e===oN.ENDED){if(n&&n!==t)return;await this.moveStateTo(oN.ENDED,(()=>{if(this.options.loop)return this.timeTo(0)}))}if(e===oN.READY){const e=this.videoPlayers.every((e=>[oN.READY,oN.PLAYING,oN.PAUSE].includes(e.videoState)));if(e)return await this.play()}return e===oN.UNSTARTED&&this.state===oN.ENDED&&this.options.loop?(console.log("changeState - UNSTARTED - call :  this.play()"),await this.play()):void 0}async moveStateTo(e,t,n){if(e!==this.state)if(hN(this.state,e)){const n=this.state;this.state=e,t&&await t(this.state,n),uN.debug("state changed to: ",e)}else n&&await n(this.state,e),uN.error("invalid state change: ",this.state,e)}async onReady(){this.readyCount++,this.readyCount===this.videoPlayers.length&&await this.moveStateTo(oN.LOADED)}onTimeUpdate(e,t){const n=Math.abs(this.currentTime-t);n>=.2&&this.timeTo(t),this.currentTime=t,this.fixVideoStates()}fixVideoStates(){const e=this.videoPlayers.find((e=>e.main));e&&this.videoPlayers.forEach((async t=>{t===e||t.isEnded()||(e.isPlaying&&!t.isPlaying?await t.play():!e.isPlaying&&t.isPlaying&&await t.pause())}))}addVideoPlayers(e){e&&e.forEach((e=>{this.addVideoPlayer(e)}))}addVideoPlayer(e){const t=new fN(this,e);t.videoElement&&this.videoPlayers.push(t)}async play(){await this.moveStateTo(oN.PLAYING,(async()=>{await Promise.all(this.videoPlayers.map((async e=>{this.currentTime<e.getPlayLength()&&await e.play()})))}))}pause(e){this.moveStateTo(oN.PAUSE,(()=>{this.videoPlayers.forEach((e=>{e.pause()}))}))}async stop(){await this.moveStateTo(oN.PAUSE,(async()=>{await Promise.all(this.videoPlayers.map((async e=>{await e.stop()})))}))}async timeTo(e){this.currentTime=e,this.videoPlayers.forEach((async t=>{await t.timeTo(e)}))}swapVideo(e,t){if(e===t)return;this.videoPlayers[e]._swap(this.videoPlayers[t]);const n=this.videoPlayers[e];this.videoPlayers[e]=this.videoPlayers[t],this.videoPlayers[t]=n}}var gN=mN;const vN={class:"container",id:"fullscreen-part"},_N={id:"main-video"},bN={id:"thumbnails-videos"},yN=["id","onClick","onTouchend"],xN={class:"controls"},wN={class:"time"};var kN=br({__name:"VideoComponent",setup(e){const t=window.multivideos;console.log(t);const n=new gN({controls:!1,loop:!1,videoPlayers:t||[]}),o=Vt(Array.from({length:t.length},((e,t)=>`video-${t}`))),r=Vt({});async function s(){await n.play()}async function i(){await n.pause()}function a(){const e=`video-${Math.random().toString(36).substring(2,9)}`;o.value.push(e),kn((()=>{n.addVideoPlayer({id:`#${e}`,initialSrc:"https://static.videezy.com/system/resources/previews/000/004/294/original/18_20Dragon_20Coaster_20Part_202.mp4"})}))}function l(){document.getElementById("multivideo").requestFullscreen()}async function c(e){n.swapVideo(0,e)}async function u(e){const t=e.target.value;await n.timeTo(parseFloat(t))}return jr((()=>{n.mount(),setInterval((()=>{r.value=n.getDebugInfo()}),50)})),(e,t)=>(Ra(),La("div",null,[$a("div",null,[$a("div",vN,[$a("div",_N,[(Ra(),La("div",{class:"box",id:"video-0",key:0,onClick:t[0]||(t[0]=e=>c(0)),onTouchend:t[1]||(t[1]=e=>c(0))},null,32))]),$a("div",bN,[(Ra(!0),La(ka,null,ss(o.value.slice(1),((e,t)=>(Ra(),La("div",{class:"box",id:e,key:t+1,onClick:Mu((e=>c(t+1)),["prevent"]),onTouchend:Mu((e=>c(t+1)),["prevent"])},null,40,yN)))),128))])])]),$a("div",xN,[Xa(" MAIN STATE = "+oe(r.value.state)+" ",1),$a("ul",null,[(Ra(!0),La(ka,null,ss(r.value.videoPlayers,(e=>(Ra(),La("li",{key:e.id},oe(e.id)+" - "+oe(e.state),1)))),128))]),$a("button",{onClick:a},"Add video"),$a("button",{onClick:s},"Play"),$a("button",{onClick:i},"Pause"),$a("button",{onClick:l},"fullscreen"),$a("div",wN,[$a("input",{type:"range",min:"0",max:"100",value:"0",class:"slider",id:"myRange",onInput:u},null,32)])])]))}});const SN=kN;var EN=SN;Zj().defaults.xsrfHeaderName="X-CSRFTOKEN",Zj().defaults.xsrfCookieName="csrftoken",Zj().defaults.withCredentials=!0,document.getElementById("chat")&&Nu(wP).mount("#chat"),document.getElementById("notifications")&&Nu(rN).mount("#notifications"),document.getElementById("multivideo")&&Nu(EN).mount("#multivideo")}()})();
+/*! #__NO_SIDE_EFFECTS__ */const Wc=e=>Xc(e,ju),Kc="undefined"!==typeof HTMLElement?HTMLElement:class{};class Zc extends Kc{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,this._ob&&(this._ob.disconnect(),this._ob=null),kn((()=>{this._connected||(Lu(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let n=0;n<this.attributes.length;n++)this._setAttr(this.attributes[n].name);this._ob=new MutationObserver((e=>{for(const t of e)this._setAttr(t.attributeName)})),this._ob.observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:o}=e;let r;if(n&&!f(n))for(const s in n){const e=n[s];(e===Number||e&&e.type===Number)&&(s in this._props&&(this._props[s]=D(this._props[s])),(r||(r=Object.create(null)))[C(s)]=!0)}this._numberProps=r,t&&this._resolveProps(e),this._applyStyles(o),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=f(t)?t:Object.keys(t||{});for(const o of Object.keys(this))"_"!==o[0]&&n.includes(o)&&this._setProp(o,this[o],!0,!1);for(const o of n.map(C))Object.defineProperty(this,o,{get(){return this._getProp(o)},set(e){this._setProp(o,e)}})}_setAttr(e){let t=this.getAttribute(e);const n=C(e);this._numberProps&&this._numberProps[n]&&(t=D(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,o=!0){t!==this._props[e]&&(this._props[e]=t,o&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(I(e),""):"string"===typeof t||"number"===typeof t?this.setAttribute(I(e),t+""):t||this.removeAttribute(I(e))))}_update(){Lu(this._createVNode(),this.shadowRoot)}_createVNode(){const e=za(this._def,l({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),I(e)!==e&&t(I(e),n)};let n=this;while(n=n&&(n.parentNode||n.host))if(n instanceof Zc){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function Qc(e="$style"){{const n=il();if(!n)return t;const o=n.type.__cssModules;if(!o)return t;const r=o[e];return r||t}}const Jc=new WeakMap,eu=new WeakMap,tu=Symbol("_moveCb"),nu=Symbol("_enterCb"),ou={name:"TransitionGroup",props:l({},Jl,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=il(),o=lr();let r,s;return Fr((()=>{if(!r.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!lu(r[0].el,n.vnode.el,t))return;r.forEach(su),r.forEach(iu);const o=r.filter(au);pc(),o.forEach((e=>{const n=e.el,o=n.style;sc(n,t),o.transform=o.webkitTransform=o.transitionDuration="";const r=n[tu]=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",r),n[tu]=null,ic(n,t))};n.addEventListener("transitionend",r)}))})),()=>{const i=Bt(e),a=nc(i);let l=i.tag||ka;!i.tag&&Ul.checkCompatEnabled("TRANSITION_GROUP_ROOT",n.parent)&&(l="span"),r=s,s=t.default?_r(t.default()):[];for(let e=0;e<s.length;e++){const t=s[e];null!=t.key&&vr(t,hr(t,a,o,n))}if(r)for(let e=0;e<r.length;e++){const t=r[e];vr(t,hr(t,a,o,n)),Jc.set(t,t.el.getBoundingClientRect())}return za(l,null,s)}},__isBuiltIn:!0};ou.props;const ru=ou;function su(e){const t=e.el;t[tu]&&t[tu](),t[nu]&&t[nu]()}function iu(e){eu.set(e,e.el.getBoundingClientRect())}function au(e){const t=Jc.get(e),n=eu.get(e),o=t.left-n.left,r=t.top-n.top;if(o||r){const t=e.el.style;return t.transform=t.webkitTransform=`translate(${o}px,${r}px)`,t.transitionDuration="0s",e}}function lu(e,t,n){const o=e.cloneNode(),r=e[Kl];r&&r.forEach((e=>{e.split(/\s+/).forEach((e=>e&&o.classList.remove(e)))})),n.split(/\s+/).forEach((e=>e&&o.classList.add(e))),o.style.display="none";const s=1===t.nodeType?t:t.parentNode;s.appendChild(o);const{hasTransform:i}=uc(o);return s.removeChild(o),i}const cu=e=>{const t=e.props["onUpdate:modelValue"]||e.props["onModelCompat:input"];return f(t)?e=>j(t,e):t};function uu(e){e.target.composing=!0}function du(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const fu=Symbol("_assign"),pu={created(e,{modifiers:{lazy:t,trim:n,number:o}},r){e[fu]=cu(r);const s=o||r.props&&"number"===r.props.type;Pc(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n&&(o=o.trim()),s&&(o=F(o)),e[fu](o)})),n&&Pc(e,"change",(()=>{e.value=e.value.trim()})),t||(Pc(e,"compositionstart",uu),Pc(e,"compositionend",du),Pc(e,"change",du))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:r}},s){if(e[fu]=cu(s),e.composing)return;const i=r||"number"===e.type?F(e.value):e.value,a=null==t?"":t;if(i!==a){if(document.activeElement===e&&"range"!==e.type){if(n)return;if(o&&e.value.trim()===a)return}e.value=a}}},hu={deep:!0,created(e,t,n){e[fu]=cu(n),Pc(e,"change",(()=>{const t=e._modelValue,n=bu(e),o=e.checked,r=e[fu];if(f(t)){const e=ne(t,n),s=-1!==e;if(o&&!s)r(t.concat(n));else if(!o&&s){const n=[...t];n.splice(e,1),r(n)}}else if(h(t)){const e=new Set(t);o?e.add(n):e.delete(n),r(e)}else r(yu(e,o))}))},mounted:mu,beforeUpdate(e,t,n){e[fu]=cu(n),mu(e,t,n)}};function mu(e,{value:t,oldValue:n},o){e._modelValue=t,f(t)?e.checked=ne(t,o.props.value)>-1:h(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=te(t,yu(e,!0)))}const gu={created(e,{value:t},n){e.checked=te(t,n.props.value),e[fu]=cu(n),Pc(e,"change",(()=>{e[fu](bu(e))}))},beforeUpdate(e,{value:t,oldValue:n},o){e[fu]=cu(o),t!==n&&(e.checked=te(t,o.props.value))}},vu={deep:!0,created(e,{value:t,modifiers:{number:n}},o){const r=h(t);Pc(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?F(bu(e)):bu(e)));e[fu](e.multiple?r?new Set(t):t:t[0]),e._assigning=!0,kn((()=>{e._assigning=!1}))})),e[fu]=cu(o)},mounted(e,{value:t,oldValue:n,modifiers:{number:o}}){_u(e,t,n,o)},beforeUpdate(e,t,n){e[fu]=cu(n)},updated(e,{value:t,oldValue:n,modifiers:{number:o}}){e._assigning||_u(e,t,n,o)}};function _u(e,t,n,o){const r=e.multiple,s=f(t);if((!r||s||h(t))&&(!s||!te(t,n))){for(let n=0,i=e.options.length;n<i;n++){const i=e.options[n],a=bu(i);if(r)if(s){const e=typeof a;i.selected="string"===e||"number"===e?t.includes(o?F(a):a):ne(t,a)>-1}else i.selected=t.has(a);else if(te(bu(i),t))return void(e.selectedIndex!==n&&(e.selectedIndex=n))}r||-1===e.selectedIndex||(e.selectedIndex=-1)}}function bu(e){return"_value"in e?e._value:e.value}function yu(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const xu={created(e,t,n){ku(e,t,n,null,"created")},mounted(e,t,n){ku(e,t,n,null,"mounted")},beforeUpdate(e,t,n,o){ku(e,t,n,o,"beforeUpdate")},updated(e,t,n,o){ku(e,t,n,o,"updated")}};function wu(e,t){switch(e){case"SELECT":return vu;case"TEXTAREA":return pu;default:switch(t){case"checkbox":return hu;case"radio":return gu;default:return pu}}}function ku(e,t,n,o,r){const s=wu(e.tagName,n.props&&n.props.type),i=s[r];i&&i(e,t,n,o)}function Su(){pu.getSSRProps=({value:e})=>({value:e}),gu.getSSRProps=({value:e},t)=>{if(t.props&&te(t.props.value,e))return{checked:!0}},hu.getSSRProps=({value:e},t)=>{if(f(e)){if(t.props&&ne(e,t.props.value)>-1)return{checked:!0}}else if(h(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},xu.getSSRProps=(e,t)=>{if("string"!==typeof t.type)return;const n=wu(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0}}const Eu=["ctrl","shift","alt","meta"],Tu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>Eu.some((n=>e[`${n}Key`]&&!t.includes(n)))},Mu=(e,t)=>{const n=e._withMods||(e._withMods={}),o=t.join(".");return n[o]||(n[o]=(n,...o)=>{for(let e=0;e<t.length;e++){const o=Tu[t[e]];if(o&&o(n,t))return}return e(n,...o)})},Au={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Ru=(e,t)=>{let n,o=null;o=il(),Ul.isCompatEnabled("CONFIG_KEY_CODES",o)&&o&&(n=o.appContext.config.keyCodes);const r=e._withKeys||(e._withKeys={}),s=t.join(".");return r[s]||(r[s]=r=>{if(!("key"in r))return;const s=I(r.key);if(t.some((e=>e===s||Au[e]===s)))return e(r);{const s=String(r.keyCode);if(Ul.isCompatEnabled("V_ON_KEYCODE_MODIFIER",o)&&t.some((e=>e==s)))return e(r);if(n)for(const o of t){const t=n[o];if(t){const n=f(t)?t.some((e=>String(e)===s)):String(t)===s;if(n)return e(r)}}}})},Cu=l({patchProp:Yc},Gl);let Ou,Iu=!1;function Bu(){return Ou||(Ou=ta(Cu))}function Pu(){return Ou=Iu?Ou:na(Cu),Iu=!0,Ou}const Lu=(...e)=>{Bu().render(...e)},ju=(...e)=>{Pu().hydrate(...e)},Nu=(...e)=>{const t=Bu().createApp(...e);const{mount:n}=t;return t.mount=e=>{const o=Hu(e);if(!o)return;const r=t._component;v(r)||r.render||r.template||(r.template=o.innerHTML),o.innerHTML="";const s=n(o,!1,Du(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),s},t},Fu=(...e)=>{const t=Pu().createApp(...e);const{mount:n}=t;return t.mount=e=>{const t=Hu(e);if(t)return n(t,!0,Du(t))},t};function Du(e){return e instanceof SVGElement?"svg":"function"===typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function Hu(e){if(_(e)){const t=document.querySelector(e);return t}return e}let Uu=!1;const Vu=()=>{Uu||(Uu=!0,Su(),_c())};var $u=Object.freeze({__proto__:null,BaseTransition:fr,BaseTransitionPropsValidators:ur,Comment:Ea,DeprecationTypes:Vl,EffectScope:le,ErrorCodes:ln,ErrorTypeStrings:Pl,Fragment:ka,KeepAlive:Er,ReactiveEffect:pe,Static:Ta,Suspense:Po,Teleport:_a,Text:Sa,TrackOpTypes:rn,Transition:Zl,TransitionGroup:ru,TriggerOpTypes:sn,VueElement:Zc,assertNumber:an,callWithAsyncErrorHandling:dn,callWithErrorHandling:un,camelize:C,capitalize:B,cloneVNode:Ga,compatUtils:Ul,computed:Tl,createApp:Nu,createBlock:ja,createCommentVNode:Ka,createElementBlock:La,createElementVNode:$a,createHydrationRenderer:na,createPropsRestProxy:$s,createRenderer:ta,createSSRApp:Fu,createSlots:is,createStaticVNode:Wa,createTextVNode:Xa,createVNode:za,customRef:Qt,defineAsyncComponent:xr,defineComponent:br,defineCustomElement:Xc,defineEmits:Os,defineExpose:Is,defineModel:Ls,defineOptions:Bs,defineProps:Cs,defineSSRCustomElement:Wc,defineSlots:Ps,devtools:Ll,effect:_e,effectScope:ce,getCurrentInstance:il,getCurrentScope:de,getTransitionRawChildren:_r,guardReactiveProps:Ya,h:Al,handleError:fn,hasInjectionContext:Mi,hydrate:ju,initCustomFormatter:Rl,initDirectivesForSSR:Vu,inject:Ti,isMemoSame:Ol,isProxy:It,isReactive:Rt,isReadonly:Ct,isRef:Ut,isRuntimeOnly:bl,isShallow:Ot,isVNode:Na,markRaw:Pt,mergeDefaults:Us,mergeModels:Vs,mergeProps:el,nextTick:kn,normalizeClass:W,normalizeProps:K,normalizeStyle:z,onActivated:Mr,onBeforeMount:Lr,onBeforeUnmount:Dr,onBeforeUpdate:Nr,onDeactivated:Ar,onErrorCaptured:zr,onMounted:jr,onRenderTracked:$r,onRenderTriggered:Vr,onScopeDispose:fe,onServerPrefetch:Ur,onUnmounted:Hr,onUpdated:Fr,openBlock:Ra,popScopeId:uo,provide:Ei,proxyRefs:Kt,pushScopeId:co,queuePostFlushCb:An,reactive:St,readonly:Tt,ref:Vt,registerRuntimeCompiler:_l,render:Lu,renderList:ss,renderSlot:as,resolveComponent:So,resolveDirective:Mo,resolveDynamicComponent:To,resolveFilter:Dl,resolveTransitionHooks:hr,setBlockTracking:Ba,setDevtoolsHook:jl,setTransitionHooks:vr,shallowReactive:Et,shallowReadonly:Mt,shallowRef:$t,ssrContextKey:Go,ssrUtils:Fl,stop:be,toDisplayString:oe,toHandlerKey:P,toHandlers:cs,toRaw:Bt,toRef:nn,toRefs:Jt,toValue:Xt,transformVNodeArgs:Da,triggerRef:Yt,unref:Gt,useAttrs:Fs,useCssModule:Qc,useCssVars:yc,useModel:Ml,useSSRContext:Xo,useSlots:Ns,useTransitionState:lr,vModelCheckbox:hu,vModelDynamic:xu,vModelRadio:gu,vModelSelect:vu,vModelText:pu,vShow:gc,version:Il,warn:Bl,watch:Jo,watchEffect:Wo,watchPostEffect:Ko,watchSyncEffect:Zo,withAsyncContext:zs,withCtx:po,withDefaults:js,withDirectives:rr,withKeys:Ru,withMemo:Cl,withModifiers:Mu,withScopeId:fo});function zu(...e){const t=Nu(...e);return Ul.isCompatEnabled("RENDER_FUNCTION",null)&&(t.component("__compat__transition",Zl),t.component("__compat__transition-group",ru),t.component("__compat__keep-alive",Er),t._context.directives.show=gc,t._context.directives.model=xu),t}function qu(){const e=Ul.createCompatVue(Nu,zu);return l(e,$u),e}const Yu=qu();Yu.compile=()=>{0};var Gu=Yu;const{configureCompat:Xu}=Gu;function Wu(e,t,n,o,r,s){const i=So("vue-advanced-chat");return Ra(),ja(i,{"current-user-id":e.currentUserId,"rooms-loaded":e.rooms.length>0,"messages-loaded":e.messagesLoaded||null,"single-room":"true",rooms:JSON.stringify(e.rooms),"room-id":e.rooms[0].roomId,"show-files":"false","show-emojis":"true","show-reaction-emojis":"false","show-audio":"false",messages:JSON.stringify(e.messages),"message-actions":JSON.stringify([{name:"replyMessage",title:"Répondre"}]),"link-options":JSON.stringify({disabled:!1,target:"_self"}),"text-messages":JSON.stringify({ROOMS_EMPTY:"Aucune conversation",ROOM_EMPTY:"Aucune conversation sélectionnée",NEW_MESSAGES:"Nouveaux messages",MESSAGE_DELETED:"Ce message a été supprimé",MESSAGES_EMPTY:"Aucun message",CONVERSATION_STARTED:"La conversation a commencée le :",TYPE_MESSAGE:"Tapez votre message",SEARCH:"Rechercher",IS_ONLINE:"est en ligne",LAST_SEEN:"dernière connexion ",IS_TYPING:"est en train de taper..."}),onSendMessage:t[0]||(t[0]=t=>e.sendMessage(t.detail[0]))},null,8,["current-user-id","rooms-loaded","messages-loaded","rooms","room-id","messages","message-actions","link-options","text-messages"])}function Ku(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r<o.length;r++)n[o[r]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}const Zu=()=>{},Qu=Object.assign,Ju=Object.prototype.hasOwnProperty,ed=(e,t)=>Ju.call(e,t),td=Array.isArray,nd=e=>"[object Map]"===ld(e),od=e=>"function"===typeof e,rd=e=>"string"===typeof e,sd=e=>"symbol"===typeof e,id=e=>null!==e&&"object"===typeof e,ad=Object.prototype.toString,ld=e=>ad.call(e),cd=e=>ld(e).slice(8,-1),ud=e=>rd(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,dd=(e,t)=>!Object.is(e,t),fd=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})};let pd;class hd{constructor(e=!1){this.active=!0,this.effects=[],this.cleanups=[],!e&&pd&&(this.parent=pd,this.index=(pd.scopes||(pd.scopes=[])).push(this)-1)}run(e){if(this.active){const t=pd;try{return pd=this,e()}finally{pd=t}}}on(){pd=this}off(){pd=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);if(this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.active=!1}}}function md(e,t=pd){t&&t.active&&t.effects.push(e)}const gd=e=>{const t=new Set(e);return t.w=0,t.n=0,t},vd=e=>(e.w&kd)>0,_d=e=>(e.n&kd)>0,bd=({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=kd},yd=e=>{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o<t.length;o++){const r=t[o];vd(r)&&!_d(r)?r.delete(e):t[n++]=r,r.w&=~kd,r.n&=~kd}t.length=n}},xd=new WeakMap;let wd=0,kd=1;const Sd=30;let Ed;const Td=Symbol(""),Md=Symbol("");class Ad{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,md(this,n)}run(){if(!this.active)return this.fn();let e=Ed,t=Cd;while(e){if(e===this)return;e=e.parent}try{return this.parent=Ed,Ed=this,Cd=!0,kd=1<<++wd,wd<=Sd?bd(this):Rd(this),this.fn()}finally{wd<=Sd&&yd(this),kd=1<<--wd,Ed=this.parent,Cd=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){Ed===this?this.deferStop=!0:this.active&&(Rd(this),this.onStop&&this.onStop(),this.active=!1)}}function Rd(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let Cd=!0;const Od=[];function Id(){Od.push(Cd),Cd=!1}function Bd(){const e=Od.pop();Cd=void 0===e||e}function Pd(e,t,n){if(Cd&&Ed){let t=xd.get(e);t||xd.set(e,t=new Map);let o=t.get(n);o||t.set(n,o=gd()),Ld(o)}}function Ld(e,t){let n=!1;wd<=Sd?_d(e)||(e.n|=kd,n=!vd(e)):n=!e.has(Ed),n&&(e.add(Ed),Ed.deps.push(e))}function jd(e,t,n,o,r,s){const i=xd.get(e);if(!i)return;let a=[];if("clear"===t)a=[...i.values()];else if("length"===n&&td(e))i.forEach(((e,t)=>{("length"===t||t>=o)&&a.push(e)}));else switch(void 0!==n&&a.push(i.get(n)),t){case"add":td(e)?ud(n)&&a.push(i.get("length")):(a.push(i.get(Td)),nd(e)&&a.push(i.get(Md)));break;case"delete":td(e)||(a.push(i.get(Td)),nd(e)&&a.push(i.get(Md)));break;case"set":nd(e)&&a.push(i.get(Td));break}if(1===a.length)a[0]&&Nd(a[0]);else{const e=[];for(const t of a)t&&e.push(...t);Nd(gd(e))}}function Nd(e,t){const n=td(e)?e:[...e];for(const o of n)o.computed&&Fd(o);for(const o of n)o.computed||Fd(o)}function Fd(e,t){(e!==Ed||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Dd=Ku("__proto__,__v_isRef,__isVue"),Hd=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(sd)),Ud=Yd(),Vd=Yd(!1,!0),$d=Yd(!0),zd=qd();function qd(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Ff(this);for(let t=0,r=this.length;t<r;t++)Pd(n,"get",t+"");const o=n[t](...e);return-1===o||!1===o?n[t](...e.map(Ff)):o}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){Id();const n=Ff(this)[t].apply(this,e);return Bd(),n}})),e}function Yd(e=!1,t=!1){return function(n,o,r){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&r===(e?t?Mf:Tf:t?Ef:Sf).get(n))return n;const s=td(n);if(!e&&s&&ed(zd,o))return Reflect.get(zd,o,r);const i=Reflect.get(n,o,r);return(sd(o)?Hd.has(o):Dd(o))?i:(e||Pd(n,"get",o),t?i:zf(i)?s&&ud(o)?i:i.value:id(i)?e?If(i):Cf(i):i)}}const Gd=Wd(),Xd=Wd(!0);function Wd(e=!1){return function(t,n,o,r){let s=t[n];if(Lf(s)&&zf(s)&&!zf(o))return!1;if(!e&&!Lf(o)&&(jf(o)||(o=Ff(o),s=Ff(s)),!td(t)&&zf(s)&&!zf(o)))return s.value=o,!0;const i=td(t)&&ud(n)?Number(n)<t.length:ed(t,n),a=Reflect.set(t,n,o,r);return t===Ff(r)&&(i?dd(o,s)&&jd(t,"set",n,o):jd(t,"add",n,o)),a}}function Kd(e,t){const n=ed(e,t);e[t];const o=Reflect.deleteProperty(e,t);return o&&n&&jd(e,"delete",t,void 0),o}function Zd(e,t){const n=Reflect.has(e,t);return sd(t)&&Hd.has(t)||Pd(e,"has",t),n}function Qd(e){return Pd(e,"iterate",td(e)?"length":Td),Reflect.ownKeys(e)}const Jd={get:Ud,set:Gd,deleteProperty:Kd,has:Zd,ownKeys:Qd},ef={get:$d,set(e,t){return!0},deleteProperty(e,t){return!0}},tf=Qu({},Jd,{get:Vd,set:Xd}),nf=e=>e,of=e=>Reflect.getPrototypeOf(e);function rf(e,t,n=!1,o=!1){e=e["__v_raw"];const r=Ff(e),s=Ff(t);n||(t!==s&&Pd(r,"get",t),Pd(r,"get",s));const{has:i}=of(r),a=o?nf:n?Uf:Hf;return i.call(r,t)?a(e.get(t)):i.call(r,s)?a(e.get(s)):void(e!==r&&e.get(t))}function sf(e,t=!1){const n=this["__v_raw"],o=Ff(n),r=Ff(e);return t||(e!==r&&Pd(o,"has",e),Pd(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function af(e,t=!1){return e=e["__v_raw"],!t&&Pd(Ff(e),"iterate",Td),Reflect.get(e,"size",e)}function lf(e){e=Ff(e);const t=Ff(this),n=of(t),o=n.has.call(t,e);return o||(t.add(e),jd(t,"add",e,e)),this}function cf(e,t){t=Ff(t);const n=Ff(this),{has:o,get:r}=of(n);let s=o.call(n,e);s||(e=Ff(e),s=o.call(n,e));const i=r.call(n,e);return n.set(e,t),s?dd(t,i)&&jd(n,"set",e,t):jd(n,"add",e,t),this}function uf(e){const t=Ff(this),{has:n,get:o}=of(t);let r=n.call(t,e);r||(e=Ff(e),r=n.call(t,e)),o&&o.call(t,e);const s=t.delete(e);return r&&jd(t,"delete",e,void 0),s}function df(){const e=Ff(this),t=0!==e.size,n=e.clear();return t&&jd(e,"clear",void 0,void 0),n}function ff(e,t){return function(n,o){const r=this,s=r["__v_raw"],i=Ff(s),a=t?nf:e?Uf:Hf;return!e&&Pd(i,"iterate",Td),s.forEach(((e,t)=>n.call(o,a(e),a(t),r)))}}function pf(e,t,n){return function(...o){const r=this["__v_raw"],s=Ff(r),i=nd(s),a="entries"===e||e===Symbol.iterator&&i,l="keys"===e&&i,c=r[e](...o),u=n?nf:t?Uf:Hf;return!t&&Pd(s,"iterate",l?Md:Td),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function hf(e){return function(...t){return"delete"!==e&&this}}function mf(){const e={get(e){return rf(this,e)},get size(){return af(this)},has:sf,add:lf,set:cf,delete:uf,clear:df,forEach:ff(!1,!1)},t={get(e){return rf(this,e,!1,!0)},get size(){return af(this)},has:sf,add:lf,set:cf,delete:uf,clear:df,forEach:ff(!1,!0)},n={get(e){return rf(this,e,!0)},get size(){return af(this,!0)},has(e){return sf.call(this,e,!0)},add:hf("add"),set:hf("set"),delete:hf("delete"),clear:hf("clear"),forEach:ff(!0,!1)},o={get(e){return rf(this,e,!0,!0)},get size(){return af(this,!0)},has(e){return sf.call(this,e,!0)},add:hf("add"),set:hf("set"),delete:hf("delete"),clear:hf("clear"),forEach:ff(!0,!0)},r=["keys","values","entries",Symbol.iterator];return r.forEach((r=>{e[r]=pf(r,!1,!1),n[r]=pf(r,!0,!1),t[r]=pf(r,!1,!0),o[r]=pf(r,!0,!0)})),[e,n,t,o]}const[gf,vf,_f,bf]=mf();function yf(e,t){const n=t?e?bf:_f:e?vf:gf;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(ed(n,o)&&o in t?n:t,o,r)}const xf={get:yf(!1,!1)},wf={get:yf(!1,!0)},kf={get:yf(!0,!1)},Sf=new WeakMap,Ef=new WeakMap,Tf=new WeakMap,Mf=new WeakMap;function Af(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Rf(e){return e["__v_skip"]||!Object.isExtensible(e)?0:Af(cd(e))}function Cf(e){return Lf(e)?e:Bf(e,!1,Jd,xf,Sf)}function Of(e){return Bf(e,!1,tf,wf,Ef)}function If(e){return Bf(e,!0,ef,kf,Tf)}function Bf(e,t,n,o,r){if(!id(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const s=r.get(e);if(s)return s;const i=Rf(e);if(0===i)return e;const a=new Proxy(e,2===i?o:n);return r.set(e,a),a}function Pf(e){return Lf(e)?Pf(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Lf(e){return!(!e||!e["__v_isReadonly"])}function jf(e){return!(!e||!e["__v_isShallow"])}function Nf(e){return Pf(e)||Lf(e)}function Ff(e){const t=e&&e["__v_raw"];return t?Ff(t):e}function Df(e){return fd(e,"__v_skip",!0),e}const Hf=e=>id(e)?Cf(e):e,Uf=e=>id(e)?If(e):e;function Vf(e){Cd&&Ed&&(e=Ff(e),Ld(e.dep||(e.dep=gd())))}function $f(e,t){e=Ff(e),e.dep&&Nd(e.dep)}function zf(e){return!(!e||!0!==e.__v_isRef)}function qf(e){return zf(e)?e.value:e}const Yf={get:(e,t,n)=>qf(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return zf(r)&&!zf(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function Gf(e){return Pf(e)?e:new Proxy(e,Yf)}class Xf{constructor(e,t,n,o){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new Ad(e,(()=>{this._dirty||(this._dirty=!0,$f(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!o,this["__v_isReadonly"]=n}get value(){const e=Ff(this);return Vf(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Wf(e,t,n=!1){let o,r;const s=od(e);s?(o=e,r=Zu):(o=e.get,r=e.set);const i=new Xf(o,r,s||!r,n);return i}function Kf(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r<o.length;r++)n[o[r]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}function Zf(e){if(gp(e)){const t={};for(let n=0;n<e.length;n++){const o=e[n],r=yp(o)?ep(o):Zf(o);if(r)for(const e in r)t[e]=r[e]}return t}return yp(e)||xp(e)?e:void 0}const Qf=/;(?![^(]*\))/g,Jf=/:(.+)/;function ep(e){const t={};return e.split(Qf).forEach((e=>{if(e){const n=e.split(Jf);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function tp(e){let t="";if(yp(e))t=e;else if(gp(e))for(let n=0;n<e.length;n++){const o=tp(e[n]);o&&(t+=o+" ")}else if(xp(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function np(e){if(!e)return null;let{class:t,style:n}=e;return t&&!yp(t)&&(e.class=tp(t)),n&&(e.style=Zf(n)),e}const op=e=>yp(e)?e:null==e?"":gp(e)||xp(e)&&(e.toString===kp||!bp(e.toString))?JSON.stringify(e,rp,2):String(e),rp=(e,t)=>t&&t.__v_isRef?rp(e,t.value):vp(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:_p(t)?{[`Set(${t.size})`]:[...t.values()]}:!xp(t)||gp(t)||Ep(t)?t:String(t),sp={},ip=[],ap=()=>{},lp=()=>!1,cp=/^on[^a-z]/,up=e=>cp.test(e),dp=e=>e.startsWith("onUpdate:"),fp=Object.assign,pp=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},hp=Object.prototype.hasOwnProperty,mp=(e,t)=>hp.call(e,t),gp=Array.isArray,vp=e=>"[object Map]"===Sp(e),_p=e=>"[object Set]"===Sp(e),bp=e=>"function"===typeof e,yp=e=>"string"===typeof e,xp=e=>null!==e&&"object"===typeof e,wp=e=>xp(e)&&bp(e.then)&&bp(e.catch),kp=Object.prototype.toString,Sp=e=>kp.call(e),Ep=e=>"[object Object]"===Sp(e),Tp=Kf(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Mp=e=>{const t=Object.create(null);return n=>{const o=t[n];return o||(t[n]=e(n))}},Ap=/-(\w)/g,Rp=Mp((e=>e.replace(Ap,((e,t)=>t?t.toUpperCase():"")))),Cp=/\B([A-Z])/g,Op=Mp((e=>e.replace(Cp,"-$1").toLowerCase())),Ip=Mp((e=>e.charAt(0).toUpperCase()+e.slice(1))),Bp=Mp((e=>e?`on${Ip(e)}`:"")),Pp=(e,t)=>!Object.is(e,t),Lp=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},jp=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Np=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Fp;const Dp=()=>Fp||(Fp="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{});function Hp(e,t,n,o){let r;try{r=o?e(...o):e()}catch(s){Vp(s,t,n)}return r}function Up(e,t,n,o){if(bp(e)){const r=Hp(e,t,n,o);return r&&wp(r)&&r.catch((e=>{Vp(e,t,n)})),r}const r=[];for(let s=0;s<e.length;s++)r.push(Up(e[s],t,n,o));return r}function Vp(e,t,n,o=!0){const r=t?t.vnode:null;if(t){let o=t.parent;const r=t.proxy,s=n;while(o){const t=o.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,r,s))return;o=o.parent}const i=t.appContext.config.errorHandler;if(i)return void Hp(i,null,10,[e,r,s])}$p(e,n,r,o)}function $p(e,t,n,o=!0){console.error(e)}let zp=!1,qp=!1;const Yp=[];let Gp=0;const Xp=[];let Wp=null,Kp=0;const Zp=[];let Qp=null,Jp=0;const eh=Promise.resolve();let th=null,nh=null;function oh(e){const t=th||eh;return e?t.then(this?e.bind(this):e):t}function rh(e){let t=Gp+1,n=Yp.length;while(t<n){const o=t+n>>>1,r=ph(Yp[o]);r<e?t=o+1:n=o}return t}function sh(e){Yp.length&&Yp.includes(e,zp&&e.allowRecurse?Gp+1:Gp)||e===nh||(null==e.id?Yp.push(e):Yp.splice(rh(e.id),0,e),ih())}function ih(){zp||qp||(qp=!0,th=eh.then(hh))}function ah(e){const t=Yp.indexOf(e);t>Gp&&Yp.splice(t,1)}function lh(e,t,n,o){gp(e)?n.push(...e):t&&t.includes(e,e.allowRecurse?o+1:o)||n.push(e),ih()}function ch(e){lh(e,Wp,Xp,Kp)}function uh(e){lh(e,Qp,Zp,Jp)}function dh(e,t=null){if(Xp.length){for(nh=t,Wp=[...new Set(Xp)],Xp.length=0,Kp=0;Kp<Wp.length;Kp++)Wp[Kp]();Wp=null,Kp=0,nh=null,dh(e,t)}}function fh(e){if(dh(),Zp.length){const e=[...new Set(Zp)];if(Zp.length=0,Qp)return void Qp.push(...e);for(Qp=e,Qp.sort(((e,t)=>ph(e)-ph(t))),Jp=0;Jp<Qp.length;Jp++)Qp[Jp]();Qp=null,Jp=0}}const ph=e=>null==e.id?1/0:e.id;function hh(e){qp=!1,zp=!0,dh(e),Yp.sort(((e,t)=>ph(e)-ph(t)));try{for(Gp=0;Gp<Yp.length;Gp++){const e=Yp[Gp];e&&!1!==e.active&&Hp(e,null,14)}}finally{Gp=0,Yp.length=0,fh(),zp=!1,th=null,(Yp.length||Xp.length||Zp.length)&&hh(e)}}function mh(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||sp;let r=n;const s=t.startsWith("update:"),i=s&&t.slice(7);if(i&&i in o){const e=`${"modelValue"===i?"model":i}Modifiers`,{number:t,trim:s}=o[e]||sp;s&&(r=n.map((e=>e.trim()))),t&&(r=n.map(Np))}let a,l=o[a=Bp(t)]||o[a=Bp(Rp(t))];!l&&s&&(l=o[a=Bp(Op(t))]),l&&Up(l,e,6,r);const c=o[a+"Once"];if(c){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,Up(c,e,6,r)}}function gh(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(void 0!==r)return r;const s=e.emits;let i={},a=!1;if(!bp(e)){const o=e=>{const n=gh(e,t,!0);n&&(a=!0,fp(i,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return s||a?(gp(s)?s.forEach((e=>i[e]=null)):fp(i,s),o.set(e,i),i):(o.set(e,null),null)}function vh(e,t){return!(!e||!up(t))&&(t=t.slice(2).replace(/Once$/,""),mp(e,t[0].toLowerCase()+t.slice(1))||mp(e,Op(t))||mp(e,t))}let _h=null,bh=null;function yh(e){const t=_h;return _h=e,bh=e&&e.type.__scopeId||null,t}function xh(e,t=_h,n){if(!t)return e;if(e._n)return e;const o=(...n)=>{o._d&&Tg(-1);const r=yh(t),s=e(...n);return yh(r),o._d&&Tg(1),s};return o._n=!0,o._c=!0,o._d=!0,o}function wh(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:s,propsOptions:[i],slots:a,attrs:l,emit:c,render:u,renderCache:d,data:f,setupState:p,ctx:h,inheritAttrs:m}=e;let g,v;const _=yh(e);try{if(4&n.shapeFlag){const e=r||o;g=Vg(u.call(e,e,d,s,p,f,h)),v=l}else{const e=t;0,g=Vg(e.length>1?e(s,{attrs:l,slots:a,emit:c}):e(s,null)),v=t.props?l:kh(l)}}catch(y){xg.length=0,Vp(y,e,1),g=jg(bg)}let b=g;if(v&&!1!==m){const e=Object.keys(v),{shapeFlag:t}=b;e.length&&7&t&&(i&&e.some(dp)&&(v=Sh(v,i)),b=Dg(b,v))}return n.dirs&&(b=Dg(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),g=b,yh(_),g}const kh=e=>{let t;for(const n in e)("class"===n||"style"===n||up(n))&&((t||(t={}))[n]=e[n]);return t},Sh=(e,t)=>{const n={};for(const o in e)dp(o)&&o.slice(9)in t||(n[o]=e[o]);return n};function Eh(e,t,n){const{props:o,children:r,component:s}=e,{props:i,children:a,patchFlag:l}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!r&&!a||a&&a.$stable)||o!==i&&(o?!i||Th(o,i,c):!!i);if(1024&l)return!0;if(16&l)return o?Th(o,i,c):!!i;if(8&l){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const n=e[t];if(i[n]!==o[n]&&!vh(c,n))return!0}}return!1}function Th(e,t,n){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let r=0;r<o.length;r++){const s=o[r];if(t[s]!==e[s]&&!vh(n,s))return!0}return!1}function Mh({vnode:e,parent:t},n){while(t&&t.subTree===e)(e=t.vnode).el=n,t=t.parent}const Ah=e=>e.__isSuspense;function Rh(e,t){t&&t.pendingBranch?gp(e)?t.effects.push(...e):t.effects.push(e):uh(e)}function Ch(e,t){if(Kg){let n=Kg.provides;const o=Kg.parent&&Kg.parent.provides;o===n&&(n=Kg.provides=Object.create(o)),n[e]=t}else;}function Oh(e,t,n=!1){const o=Kg||_h;if(o){const r=null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&bp(t)?t.call(o.proxy):t}}const Ih={};function Bh(e,t,n){return Ph(e,t,n)}function Ph(e,t,{immediate:n,deep:o,flush:r,onTrack:s,onTrigger:i}=sp){const a=Kg;let l,c,u=!1,d=!1;if(zf(e)?(l=()=>e.value,u=jf(e)):Pf(e)?(l=()=>e,o=!0):gp(e)?(d=!0,u=e.some((e=>Pf(e)||jf(e))),l=()=>e.map((e=>zf(e)?e.value:Pf(e)?Nh(e):bp(e)?Hp(e,a,2):void 0))):l=bp(e)?t?()=>Hp(e,a,2):()=>{if(!a||!a.isUnmounted)return c&&c(),Up(e,a,3,[f])}:ap,t&&o){const e=l;l=()=>Nh(e())}let f=e=>{c=g.onStop=()=>{Hp(e,a,4)}};if(nv)return f=ap,t?n&&Up(t,a,3,[l(),d?[]:void 0,f]):l(),ap;let p=d?[]:Ih;const h=()=>{if(g.active)if(t){const e=g.run();(o||u||(d?e.some(((e,t)=>Pp(e,p[t]))):Pp(e,p)))&&(c&&c(),Up(t,a,3,[e,p===Ih?void 0:p,f]),p=e)}else g.run()};let m;h.allowRecurse=!!t,m="sync"===r?h:"post"===r?()=>ug(h,a&&a.suspense):()=>ch(h);const g=new Ad(l,m);return t?n?h():p=g.run():"post"===r?ug(g.run.bind(g),a&&a.suspense):g.run(),()=>{g.stop(),a&&a.scope&&pp(a.scope.effects,g)}}function Lh(e,t,n){const o=this.proxy,r=yp(e)?e.includes(".")?jh(o,e):()=>o[e]:e.bind(o,o);let s;bp(t)?s=t:(s=t.handler,n=t);const i=Kg;Qg(this);const a=Ph(r,s.bind(o),n);return i?Qg(i):Jg(),a}function jh(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function Nh(e,t){if(!xp(e)||e["__v_skip"])return e;if(t=t||new Set,t.has(e))return e;if(t.add(e),zf(e))Nh(e.value,t);else if(gp(e))for(let n=0;n<e.length;n++)Nh(e[n],t);else if(_p(e)||vp(e))e.forEach((e=>{Nh(e,t)}));else if(Ep(e))for(const n in e)Nh(e[n],t);return e}function Fh(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return rm((()=>{e.isMounted=!0})),am((()=>{e.isUnmounting=!0})),e}const Dh=[Function,Array],Hh={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Dh,onEnter:Dh,onAfterEnter:Dh,onEnterCancelled:Dh,onBeforeLeave:Dh,onLeave:Dh,onAfterLeave:Dh,onLeaveCancelled:Dh,onBeforeAppear:Dh,onAppear:Dh,onAfterAppear:Dh,onAppearCancelled:Dh},setup(e,{slots:t}){const n=Zg(),o=Fh();let r;return()=>{const s=t.default&&Gh(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1)for(const e of s)if(e.type!==bg){i=e;break}const a=Ff(e),{mode:l}=a;if(o.isLeaving)return zh(i);const c=qh(i);if(!c)return zh(i);const u=$h(c,a,o,n);Yh(c,u);const d=n.subTree,f=d&&qh(d);let p=!1;const{getTransitionKey:h}=c.type;if(h){const e=h();void 0===r?r=e:e!==r&&(r=e,p=!0)}if(f&&f.type!==bg&&(!Og(c,f)||p)){const e=$h(f,a,o,n);if(Yh(f,e),"out-in"===l)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,n.update()},zh(i);"in-out"===l&&c.type!==bg&&(e.delayLeave=(e,t,n)=>{const r=Vh(o,f);r[String(f.key)]=f,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=n})}return i}}},Uh=Hh;function Vh(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function $h(e,t,n,o){const{appear:r,mode:s,persisted:i=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:m,onAppear:g,onAfterAppear:v,onAppearCancelled:_}=t,b=String(e.key),y=Vh(n,e),x=(e,t)=>{e&&Up(e,o,9,t)},w=(e,t)=>{const n=t[1];x(e,t),gp(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},k={mode:s,persisted:i,beforeEnter(t){let o=a;if(!n.isMounted){if(!r)return;o=m||a}t._leaveCb&&t._leaveCb(!0);const s=y[b];s&&Og(e,s)&&s.el._leaveCb&&s.el._leaveCb(),x(o,[t])},enter(e){let t=l,o=c,s=u;if(!n.isMounted){if(!r)return;t=g||l,o=v||c,s=_||u}let i=!1;const a=e._enterCb=t=>{i||(i=!0,x(t?s:o,[e]),k.delayedLeave&&k.delayedLeave(),e._enterCb=void 0)};t?w(t,[e,a]):a()},leave(t,o){const r=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return o();x(d,[t]);let s=!1;const i=t._leaveCb=n=>{s||(s=!0,o(),x(n?h:p,[t]),t._leaveCb=void 0,y[r]===e&&delete y[r])};y[r]=e,f?w(f,[t,i]):i()},clone(e){return $h(e,t,n,o)}};return k}function zh(e){if(Kh(e))return e=Dg(e),e.children=null,e}function qh(e){return Kh(e)?e.children?e.children[0]:void 0:e}function Yh(e,t){6&e.shapeFlag&&e.component?Yh(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Gh(e,t=!1,n){let o=[],r=0;for(let s=0;s<e.length;s++){let i=e[s];const a=null==n?i.key:String(n)+String(null!=i.key?i.key:s);i.type===vg?(128&i.patchFlag&&r++,o=o.concat(Gh(i.children,t,a))):(t||i.type!==bg)&&o.push(null!=a?Dg(i,{key:a}):i)}if(r>1)for(let s=0;s<o.length;s++)o[s].patchFlag=-2;return o}function Xh(e){return bp(e)?{setup:e,name:e.name}:e}const Wh=e=>!!e.type.__asyncLoader,Kh=e=>e.type.__isKeepAlive;function Zh(e,t){Jh(e,"a",t)}function Qh(e,t){Jh(e,"da",t)}function Jh(e,t,n=Kg){const o=e.__wdc||(e.__wdc=()=>{let t=n;while(t){if(t.isDeactivated)return;t=t.parent}return e()});if(tm(t,o,n),n){let e=n.parent;while(e&&e.parent)Kh(e.parent.vnode)&&em(o,t,n,e),e=e.parent}}function em(e,t,n,o){const r=tm(t,e,o,!0);lm((()=>{pp(o[t],r)}),n)}function tm(e,t,n=Kg,o=!1){if(n){const r=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Id(),Qg(n);const r=Up(t,n,e,o);return Jg(),Bd(),r});return o?r.unshift(s):r.push(s),s}}const nm=e=>(t,n=Kg)=>(!nv||"sp"===e)&&tm(e,t,n),om=nm("bm"),rm=nm("m"),sm=nm("bu"),im=nm("u"),am=nm("bum"),lm=nm("um"),cm=nm("sp"),um=nm("rtg"),dm=nm("rtc");function fm(e,t=Kg){tm("ec",e,t)}function pm(e,t){const n=_h;if(null===n)return e;const o=cv(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s<t.length;s++){let[e,n,i,a=sp]=t[s];bp(e)&&(e={mounted:e,updated:e}),e.deep&&Nh(n),r.push({dir:e,instance:o,value:n,oldValue:void 0,arg:i,modifiers:a})}return e}function hm(e,t,n,o){const r=e.dirs,s=t&&t.dirs;for(let i=0;i<r.length;i++){const a=r[i];s&&(a.oldValue=s[i].value);let l=a.dir[o];l&&(Id(),Up(l,n,8,[e.el,a,e,t]),Bd())}}const mm="components",gm="directives";function vm(e,t){return xm(mm,e,!0,t)||e}const _m=Symbol();function bm(e){return yp(e)?xm(mm,e,!1)||e:e||_m}function ym(e){return xm(gm,e)}function xm(e,t,n=!0,o=!1){const r=_h||Kg;if(r){const n=r.type;if(e===mm){const e=uv(n,!1);if(e&&(e===t||e===Rp(t)||e===Ip(Rp(t))))return n}const s=wm(r[e]||n[e],t)||wm(r.appContext[e],t);return!s&&o?n:s}}function wm(e,t){return e&&(e[t]||e[Rp(t)]||e[Ip(Rp(t))])}function km(e,t,n,o){let r;const s=n&&n[o];if(gp(e)||yp(e)){r=new Array(e.length);for(let n=0,o=e.length;n<o;n++)r[n]=t(e[n],n,void 0,s&&s[n])}else if("number"===typeof e){r=new Array(e);for(let n=0;n<e;n++)r[n]=t(n+1,n,void 0,s&&s[n])}else if(xp(e))if(e[Symbol.iterator])r=Array.from(e,((e,n)=>t(e,n,void 0,s&&s[n])));else{const n=Object.keys(e);r=new Array(n.length);for(let o=0,i=n.length;o<i;o++){const i=n[o];r[o]=t(e[i],i,o,s&&s[o])}}else r=[];return n&&(n[o]=r),r}function Sm(e,t){for(let n=0;n<t.length;n++){const o=t[n];if(gp(o))for(let t=0;t<o.length;t++)e[o[t].name]=o[t].fn;else o&&(e[o.name]=o.fn)}return e}function Em(e,t,n={},o,r){if(_h.isCE||_h.parent&&Wh(_h.parent)&&_h.parent.isCE)return jg("slot","default"===t?null:{name:t},o&&o());let s=e[t];s&&s._c&&(s._d=!1),kg();const i=s&&Tm(s(n)),a=Rg(vg,{key:n.key||`_${t}`},i||(o?o():[]),i&&1===e._?64:-2);return!r&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),s&&s._c&&(s._d=!0),a}function Tm(e){return e.some((e=>!Cg(e)||e.type!==bg&&!(e.type===vg&&!Tm(e.children))))?e:null}const Mm=e=>e?ev(e)?cv(e)||e.proxy:Mm(e.parent):null,Am=fp(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Mm(e.parent),$root:e=>Mm(e.root),$emit:e=>e.emit,$options:e=>Lm(e),$forceUpdate:e=>e.f||(e.f=()=>sh(e.update)),$nextTick:e=>e.n||(e.n=oh.bind(e.proxy)),$watch:e=>Lh.bind(e)}),Rm={get({_:e},t){const{ctx:n,setupState:o,data:r,props:s,accessCache:i,type:a,appContext:l}=e;let c;if("$"!==t[0]){const a=i[t];if(void 0!==a)switch(a){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return s[t]}else{if(o!==sp&&mp(o,t))return i[t]=1,o[t];if(r!==sp&&mp(r,t))return i[t]=2,r[t];if((c=e.propsOptions[0])&&mp(c,t))return i[t]=3,s[t];if(n!==sp&&mp(n,t))return i[t]=4,n[t];Cm&&(i[t]=0)}}const u=Am[t];let d,f;return u?("$attrs"===t&&Pd(e,"get",t),u(e)):(d=a.__cssModules)&&(d=d[t])?d:n!==sp&&mp(n,t)?(i[t]=4,n[t]):(f=l.config.globalProperties,mp(f,t)?f[t]:void 0)},set({_:e},t,n){const{data:o,setupState:r,ctx:s}=e;return r!==sp&&mp(r,t)?(r[t]=n,!0):o!==sp&&mp(o,t)?(o[t]=n,!0):!mp(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(s[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:s}},i){let a;return!!n[i]||e!==sp&&mp(e,i)||t!==sp&&mp(t,i)||(a=s[0])&&mp(a,i)||mp(o,i)||mp(Am,i)||mp(r.config.globalProperties,i)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:mp(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Cm=!0;function Om(e){const t=Lm(e),n=e.proxy,o=e.ctx;Cm=!1,t.beforeCreate&&Bm(t.beforeCreate,e,"bc");const{data:r,computed:s,methods:i,watch:a,provide:l,inject:c,created:u,beforeMount:d,mounted:f,beforeUpdate:p,updated:h,activated:m,deactivated:g,beforeDestroy:v,beforeUnmount:_,destroyed:b,unmounted:y,render:x,renderTracked:w,renderTriggered:k,errorCaptured:S,serverPrefetch:E,expose:T,inheritAttrs:M,components:A,directives:R,filters:C}=t,O=null;if(c&&Im(c,o,O,e.appContext.config.unwrapInjectedRef),i)for(const B in i){const e=i[B];bp(e)&&(o[B]=e.bind(n))}if(r){const t=r.call(n,n);xp(t)&&(e.data=Cf(t))}if(Cm=!0,s)for(const B in s){const e=s[B],t=bp(e)?e.bind(n,n):bp(e.get)?e.get.bind(n,n):ap,r=!bp(e)&&bp(e.set)?e.set.bind(n):ap,i=fv({get:t,set:r});Object.defineProperty(o,B,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(a)for(const B in a)Pm(a[B],o,n,B);if(l){const e=bp(l)?l.call(n):l;Reflect.ownKeys(e).forEach((t=>{Ch(t,e[t])}))}function I(e,t){gp(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(u&&Bm(u,e,"c"),I(om,d),I(rm,f),I(sm,p),I(im,h),I(Zh,m),I(Qh,g),I(fm,S),I(dm,w),I(um,k),I(am,_),I(lm,y),I(cm,E),gp(T))if(T.length){const t=e.exposed||(e.exposed={});T.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});x&&e.render===ap&&(e.render=x),null!=M&&(e.inheritAttrs=M),A&&(e.components=A),R&&(e.directives=R)}function Im(e,t,n=ap,o=!1){gp(e)&&(e=Hm(e));for(const r in e){const n=e[r];let s;s=xp(n)?"default"in n?Oh(n.from||r,n.default,!0):Oh(n.from||r):Oh(n),zf(s)&&o?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[r]=s}}function Bm(e,t,n){Up(gp(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Pm(e,t,n,o){const r=o.includes(".")?jh(n,o):()=>n[o];if(yp(e)){const n=t[e];bp(n)&&Bh(r,n)}else if(bp(e))Bh(r,e.bind(n));else if(xp(e))if(gp(e))e.forEach((e=>Pm(e,t,n,o)));else{const o=bp(e.handler)?e.handler.bind(n):t[e.handler];bp(o)&&Bh(r,o,e)}}function Lm(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let l;return a?l=a:r.length||n||o?(l={},r.length&&r.forEach((e=>jm(l,e,i,!0))),jm(l,t,i)):l=t,s.set(t,l),l}function jm(e,t,n,o=!1){const{mixins:r,extends:s}=t;s&&jm(e,s,n,!0),r&&r.forEach((t=>jm(e,t,n,!0)));for(const i in t)if(o&&"expose"===i);else{const o=Nm[i]||n&&n[i];e[i]=o?o(e[i],t[i]):t[i]}return e}const Nm={data:Fm,props:Vm,emits:Vm,methods:Vm,computed:Vm,beforeCreate:Um,created:Um,beforeMount:Um,mounted:Um,beforeUpdate:Um,updated:Um,beforeDestroy:Um,beforeUnmount:Um,destroyed:Um,unmounted:Um,activated:Um,deactivated:Um,errorCaptured:Um,serverPrefetch:Um,components:Vm,directives:Vm,watch:$m,provide:Fm,inject:Dm};function Fm(e,t){return t?e?function(){return fp(bp(e)?e.call(this,this):e,bp(t)?t.call(this,this):t)}:t:e}function Dm(e,t){return Vm(Hm(e),Hm(t))}function Hm(e){if(gp(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Um(e,t){return e?[...new Set([].concat(e,t))]:t}function Vm(e,t){return e?fp(fp(Object.create(null),e),t):t}function $m(e,t){if(!e)return t;if(!t)return e;const n=fp(Object.create(null),e);for(const o in t)n[o]=Um(e[o],t[o]);return n}function zm(e,t,n,o=!1){const r={},s={};jp(s,Ig,1),e.propsDefaults=Object.create(null),Ym(e,t,r,s);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=o?r:Of(r):e.type.props?e.props=r:e.props=s,e.attrs=s}function qm(e,t,n,o){const{props:r,attrs:s,vnode:{patchFlag:i}}=e,a=Ff(r),[l]=e.propsOptions;let c=!1;if(!(o||i>0)||16&i){let o;Ym(e,t,r,s)&&(c=!0);for(const s in a)t&&(mp(t,s)||(o=Op(s))!==s&&mp(t,o))||(l?!n||void 0===n[s]&&void 0===n[o]||(r[s]=Gm(l,a,s,void 0,e,!0)):delete r[s]);if(s!==a)for(const e in s)t&&mp(t,e)||(delete s[e],c=!0)}else if(8&i){const n=e.vnode.dynamicProps;for(let o=0;o<n.length;o++){let i=n[o];if(vh(e.emitsOptions,i))continue;const u=t[i];if(l)if(mp(s,i))u!==s[i]&&(s[i]=u,c=!0);else{const t=Rp(i);r[t]=Gm(l,a,t,u,e,!1)}else u!==s[i]&&(s[i]=u,c=!0)}}c&&jd(e,"set","$attrs")}function Ym(e,t,n,o){const[r,s]=e.propsOptions;let i,a=!1;if(t)for(let l in t){if(Tp(l))continue;const c=t[l];let u;r&&mp(r,u=Rp(l))?s&&s.includes(u)?(i||(i={}))[u]=c:n[u]=c:vh(e.emitsOptions,l)||l in o&&c===o[l]||(o[l]=c,a=!0)}if(s){const t=Ff(n),o=i||sp;for(let i=0;i<s.length;i++){const a=s[i];n[a]=Gm(r,t,a,o[a],e,!mp(o,a))}}return a}function Gm(e,t,n,o,r,s){const i=e[n];if(null!=i){const e=mp(i,"default");if(e&&void 0===o){const e=i.default;if(i.type!==Function&&bp(e)){const{propsDefaults:s}=r;n in s?o=s[n]:(Qg(r),o=s[n]=e.call(null,t),Jg())}else o=e}i[0]&&(s&&!e?o=!1:!i[1]||""!==o&&o!==Op(n)||(o=!0))}return o}function Xm(e,t,n=!1){const o=t.propsCache,r=o.get(e);if(r)return r;const s=e.props,i={},a=[];let l=!1;if(!bp(e)){const o=e=>{l=!0;const[n,o]=Xm(e,t,!0);fp(i,n),o&&a.push(...o)};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!s&&!l)return o.set(e,ip),ip;if(gp(s))for(let u=0;u<s.length;u++){const e=Rp(s[u]);Wm(e)&&(i[e]=sp)}else if(s)for(const u in s){const e=Rp(u);if(Wm(e)){const t=s[u],n=i[e]=gp(t)||bp(t)?{type:t}:t;if(n){const t=Qm(Boolean,n.type),o=Qm(String,n.type);n[0]=t>-1,n[1]=o<0||t<o,(t>-1||mp(n,"default"))&&a.push(e)}}}const c=[i,a];return o.set(e,c),c}function Wm(e){return"$"!==e[0]}function Km(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function Zm(e,t){return Km(e)===Km(t)}function Qm(e,t){return gp(t)?t.findIndex((t=>Zm(t,e))):bp(t)&&Zm(t,e)?0:-1}const Jm=e=>"_"===e[0]||"$stable"===e,eg=e=>gp(e)?e.map(Vg):[Vg(e)],tg=(e,t,n)=>{if(t._n)return t;const o=xh(((...e)=>eg(t(...e))),n);return o._c=!1,o},ng=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Jm(r))continue;const n=e[r];if(bp(n))t[r]=tg(r,n,o);else if(null!=n){const e=eg(n);t[r]=()=>e}}},og=(e,t)=>{const n=eg(t);e.slots.default=()=>n},rg=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=Ff(t),jp(t,"_",n)):ng(t,e.slots={})}else e.slots={},t&&og(e,t);jp(e.slots,Ig,1)},sg=(e,t,n)=>{const{vnode:o,slots:r}=e;let s=!0,i=sp;if(32&o.shapeFlag){const e=t._;e?n&&1===e?s=!1:(fp(r,t),n||1!==e||delete r._):(s=!t.$stable,ng(t,r)),i=t}else t&&(og(e,t),i={default:1});if(s)for(const a in r)Jm(a)||a in i||delete r[a]};function ig(){return{app:null,config:{isNativeTag:lp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ag=0;function lg(e,t){return function(n,o=null){bp(n)||(n=Object.assign({},n)),null==o||xp(o)||(o=null);const r=ig(),s=new Set;let i=!1;const a=r.app={_uid:ag++,_component:n,_props:o,_container:null,_context:r,_instance:null,version:hv,get config(){return r.config},set config(e){},use(e,...t){return s.has(e)||(e&&bp(e.install)?(s.add(e),e.install(a,...t)):bp(e)&&(s.add(e),e(a,...t))),a},mixin(e){return r.mixins.includes(e)||r.mixins.push(e),a},component(e,t){return t?(r.components[e]=t,a):r.components[e]},directive(e,t){return t?(r.directives[e]=t,a):r.directives[e]},mount(s,l,c){if(!i){const u=jg(n,o);return u.appContext=r,l&&t?t(u,s):e(u,s,c),i=!0,a._container=s,s.__vue_app__=a,cv(u.component)||u.component.proxy}},unmount(){i&&(e(null,a._container),delete a._container.__vue_app__)},provide(e,t){return r.provides[e]=t,a}};return a}}function cg(e,t,n,o,r=!1){if(gp(e))return void e.forEach(((e,s)=>cg(e,t&&(gp(t)?t[s]:t),n,o,r)));if(Wh(o)&&!r)return;const s=4&o.shapeFlag?cv(o.component)||o.component.proxy:o.el,i=r?null:s,{i:a,r:l}=e,c=t&&t.r,u=a.refs===sp?a.refs={}:a.refs,d=a.setupState;if(null!=c&&c!==l&&(yp(c)?(u[c]=null,mp(d,c)&&(d[c]=null)):zf(c)&&(c.value=null)),bp(l))Hp(l,a,12,[i,u]);else{const t=yp(l),o=zf(l);if(t||o){const a=()=>{if(e.f){const n=t?u[l]:l.value;r?gp(n)&&pp(n,s):gp(n)?n.includes(s)||n.push(s):t?(u[l]=[s],mp(d,l)&&(d[l]=u[l])):(l.value=[s],e.k&&(u[e.k]=l.value))}else t?(u[l]=i,mp(d,l)&&(d[l]=i)):o&&(l.value=i,e.k&&(u[e.k]=i))};i?(a.id=-1,ug(a,n)):a()}}}const ug=Rh;function dg(e){return fg(e)}function fg(e,t){const n=Dp();n.__VUE__=!0;const{insert:o,remove:r,patchProp:s,createElement:i,createText:a,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=ap,cloneNode:h,insertStaticContent:m}=e,g=(e,t,n,o=null,r=null,s=null,i=!1,a=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!Og(e,t)&&(o=z(e),D(e,r,s,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:d}=t;switch(c){case _g:v(e,t,n,o);break;case bg:_(e,t,n,o);break;case yg:null==e&&b(t,n,o,i);break;case vg:R(e,t,n,o,r,s,i,a,l);break;default:1&d?w(e,t,n,o,r,s,i,a,l):6&d?C(e,t,n,o,r,s,i,a,l):(64&d||128&d)&&c.process(e,t,n,o,r,s,i,a,l,Y)}null!=u&&r&&cg(u,e&&e.ref,s,t||e,!t)},v=(e,t,n,r)=>{if(null==e)o(t.el=a(t.children),n,r);else{const n=t.el=e.el;t.children!==e.children&&c(n,t.children)}},_=(e,t,n,r)=>{null==e?o(t.el=l(t.children||""),n,r):t.el=e.el},b=(e,t,n,o)=>{[e.el,e.anchor]=m(e.children,t,n,o,e.el,e.anchor)},y=({el:e,anchor:t},n,r)=>{let s;while(e&&e!==t)s=f(e),o(e,n,r),e=s;o(t,n,r)},x=({el:e,anchor:t})=>{let n;while(e&&e!==t)n=f(e),r(e),e=n;r(t)},w=(e,t,n,o,r,s,i,a,l)=>{i=i||"svg"===t.type,null==e?k(t,n,o,r,s,i,a,l):T(e,t,r,s,i,a,l)},k=(e,t,n,r,a,l,c,d)=>{let f,p;const{type:m,props:g,shapeFlag:v,transition:_,patchFlag:b,dirs:y}=e;if(e.el&&void 0!==h&&-1===b)f=e.el=h(e.el);else{if(f=e.el=i(e.type,l,g&&g.is,g),8&v?u(f,e.children):16&v&&E(e.children,f,null,r,a,l&&"foreignObject"!==m,c,d),y&&hm(e,null,r,"created"),g){for(const t in g)"value"===t||Tp(t)||s(f,t,null,g[t],l,e.children,r,a,$);"value"in g&&s(f,"value",null,g.value),(p=g.onVnodeBeforeMount)&&Yg(p,r,e)}S(f,e,e.scopeId,c,r)}y&&hm(e,null,r,"beforeMount");const x=(!a||a&&!a.pendingBranch)&&_&&!_.persisted;x&&_.beforeEnter(f),o(f,t,n),((p=g&&g.onVnodeMounted)||x||y)&&ug((()=>{p&&Yg(p,r,e),x&&_.enter(f),y&&hm(e,null,r,"mounted")}),a)},S=(e,t,n,o,r)=>{if(n&&p(e,n),o)for(let s=0;s<o.length;s++)p(e,o[s]);if(r){let n=r.subTree;if(t===n){const t=r.vnode;S(e,t,t.scopeId,t.slotScopeIds,r.parent)}}},E=(e,t,n,o,r,s,i,a,l=0)=>{for(let c=l;c<e.length;c++){const l=e[c]=a?$g(e[c]):Vg(e[c]);g(null,l,t,n,o,r,s,i,a)}},T=(e,t,n,o,r,i,a)=>{const l=t.el=e.el;let{patchFlag:c,dynamicChildren:d,dirs:f}=t;c|=16&e.patchFlag;const p=e.props||sp,h=t.props||sp;let m;n&&pg(n,!1),(m=h.onVnodeBeforeUpdate)&&Yg(m,n,t,e),f&&hm(t,e,n,"beforeUpdate"),n&&pg(n,!0);const g=r&&"foreignObject"!==t.type;if(d?M(e.dynamicChildren,d,l,n,o,g,i):a||L(e,t,l,null,n,o,g,i,!1),c>0){if(16&c)A(l,t,p,h,n,o,r);else if(2&c&&p.class!==h.class&&s(l,"class",null,h.class,r),4&c&&s(l,"style",p.style,h.style,r),8&c){const i=t.dynamicProps;for(let t=0;t<i.length;t++){const a=i[t],c=p[a],u=h[a];u===c&&"value"!==a||s(l,a,c,u,r,e.children,n,o,$)}}1&c&&e.children!==t.children&&u(l,t.children)}else a||null!=d||A(l,t,p,h,n,o,r);((m=h.onVnodeUpdated)||f)&&ug((()=>{m&&Yg(m,n,t,e),f&&hm(t,e,n,"updated")}),o)},M=(e,t,n,o,r,s,i)=>{for(let a=0;a<t.length;a++){const l=e[a],c=t[a],u=l.el&&(l.type===vg||!Og(l,c)||70&l.shapeFlag)?d(l.el):n;g(l,c,u,null,o,r,s,i,!0)}},A=(e,t,n,o,r,i,a)=>{if(n!==o){for(const l in o){if(Tp(l))continue;const c=o[l],u=n[l];c!==u&&"value"!==l&&s(e,l,u,c,a,t.children,r,i,$)}if(n!==sp)for(const l in n)Tp(l)||l in o||s(e,l,n[l],null,a,t.children,r,i,$);"value"in o&&s(e,"value",n.value,o.value)}},R=(e,t,n,r,s,i,l,c,u)=>{const d=t.el=e?e.el:a(""),f=t.anchor=e?e.anchor:a("");let{patchFlag:p,dynamicChildren:h,slotScopeIds:m}=t;m&&(c=c?c.concat(m):m),null==e?(o(d,n,r),o(f,n,r),E(t.children,n,f,s,i,l,c,u)):p>0&&64&p&&h&&e.dynamicChildren?(M(e.dynamicChildren,h,n,s,i,l,c),(null!=t.key||s&&t===s.subTree)&&hg(e,t,!0)):L(e,t,n,f,s,i,l,c,u)},C=(e,t,n,o,r,s,i,a,l)=>{t.slotScopeIds=a,null==e?512&t.shapeFlag?r.ctx.activate(t,n,o,i,l):O(t,n,o,r,s,i,l):I(e,t,l)},O=(e,t,n,o,r,s,i)=>{const a=e.component=Wg(e,o,r);if(Kh(e)&&(a.ctx.renderer=Y),ov(a),a.asyncDep){if(r&&r.registerDep(a,B),!e.el){const e=a.subTree=jg(bg);_(null,e,t,n)}}else B(a,e,t,n,r,s,i)},I=(e,t,n)=>{const o=t.component=e.component;if(Eh(e,t,n)){if(o.asyncDep&&!o.asyncResolved)return void P(o,t,n);o.next=t,ah(o.update),o.update()}else t.el=e.el,o.vnode=t},B=(e,t,n,o,r,s,i)=>{const a=()=>{if(e.isMounted){let t,{next:n,bu:o,u:a,parent:l,vnode:c}=e,u=n;pg(e,!1),n?(n.el=c.el,P(e,n,i)):n=c,o&&Lp(o),(t=n.props&&n.props.onVnodeBeforeUpdate)&&Yg(t,l,n,c),pg(e,!0);const f=wh(e),p=e.subTree;e.subTree=f,g(p,f,d(p.el),z(p),e,r,s),n.el=f.el,null===u&&Mh(e,f.el),a&&ug(a,r),(t=n.props&&n.props.onVnodeUpdated)&&ug((()=>Yg(t,l,n,c)),r)}else{let i;const{el:a,props:l}=t,{bm:c,m:u,parent:d}=e,f=Wh(t);if(pg(e,!1),c&&Lp(c),!f&&(i=l&&l.onVnodeBeforeMount)&&Yg(i,d,t),pg(e,!0),a&&X){const n=()=>{e.subTree=wh(e),X(a,e.subTree,e,r,null)};f?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const i=e.subTree=wh(e);g(null,i,n,o,e,r,s),t.el=i.el}if(u&&ug(u,r),!f&&(i=l&&l.onVnodeMounted)){const e=t;ug((()=>Yg(i,d,e)),r)}(256&t.shapeFlag||d&&Wh(d.vnode)&&256&d.vnode.shapeFlag)&&e.a&&ug(e.a,r),e.isMounted=!0,t=n=o=null}},l=e.effect=new Ad(a,(()=>sh(c)),e.scope),c=e.update=()=>l.run();c.id=e.uid,pg(e,!0),c()},P=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,qm(e,t.props,o,n),sg(e,t.children,n),Id(),dh(void 0,e.update),Bd()},L=(e,t,n,o,r,s,i,a,l=!1)=>{const c=e&&e.children,d=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:h}=t;if(p>0){if(128&p)return void N(c,f,n,o,r,s,i,a,l);if(256&p)return void j(c,f,n,o,r,s,i,a,l)}8&h?(16&d&&$(c,r,s),f!==c&&u(n,f)):16&d?16&h?N(c,f,n,o,r,s,i,a,l):$(c,r,s,!0):(8&d&&u(n,""),16&h&&E(f,n,o,r,s,i,a,l))},j=(e,t,n,o,r,s,i,a,l)=>{e=e||ip,t=t||ip;const c=e.length,u=t.length,d=Math.min(c,u);let f;for(f=0;f<d;f++){const o=t[f]=l?$g(t[f]):Vg(t[f]);g(e[f],o,n,null,r,s,i,a,l)}c>u?$(e,r,s,!0,!1,d):E(t,n,o,r,s,i,a,l,d)},N=(e,t,n,o,r,s,i,a,l)=>{let c=0;const u=t.length;let d=e.length-1,f=u-1;while(c<=d&&c<=f){const o=e[c],u=t[c]=l?$g(t[c]):Vg(t[c]);if(!Og(o,u))break;g(o,u,n,null,r,s,i,a,l),c++}while(c<=d&&c<=f){const o=e[d],c=t[f]=l?$g(t[f]):Vg(t[f]);if(!Og(o,c))break;g(o,c,n,null,r,s,i,a,l),d--,f--}if(c>d){if(c<=f){const e=f+1,d=e<u?t[e].el:o;while(c<=f)g(null,t[c]=l?$g(t[c]):Vg(t[c]),n,d,r,s,i,a,l),c++}}else if(c>f)while(c<=d)D(e[c],r,s,!0),c++;else{const p=c,h=c,m=new Map;for(c=h;c<=f;c++){const e=t[c]=l?$g(t[c]):Vg(t[c]);null!=e.key&&m.set(e.key,c)}let v,_=0;const b=f-h+1;let y=!1,x=0;const w=new Array(b);for(c=0;c<b;c++)w[c]=0;for(c=p;c<=d;c++){const o=e[c];if(_>=b){D(o,r,s,!0);continue}let u;if(null!=o.key)u=m.get(o.key);else for(v=h;v<=f;v++)if(0===w[v-h]&&Og(o,t[v])){u=v;break}void 0===u?D(o,r,s,!0):(w[u-h]=c+1,u>=x?x=u:y=!0,g(o,t[u],n,null,r,s,i,a,l),_++)}const k=y?mg(w):ip;for(v=k.length-1,c=b-1;c>=0;c--){const e=h+c,d=t[e],f=e+1<u?t[e+1].el:o;0===w[c]?g(null,d,n,f,r,s,i,a,l):y&&(v<0||c!==k[v]?F(d,n,f,2):v--)}}},F=(e,t,n,r,s=null)=>{const{el:i,type:a,transition:l,children:c,shapeFlag:u}=e;if(6&u)return void F(e.component.subTree,t,n,r);if(128&u)return void e.suspense.move(t,n,r);if(64&u)return void a.move(e,t,n,Y);if(a===vg){o(i,t,n);for(let e=0;e<c.length;e++)F(c[e],t,n,r);return void o(e.anchor,t,n)}if(a===yg)return void y(e,t,n);const d=2!==r&&1&u&&l;if(d)if(0===r)l.beforeEnter(i),o(i,t,n),ug((()=>l.enter(i)),s);else{const{leave:e,delayLeave:r,afterLeave:s}=l,a=()=>o(i,t,n),c=()=>{e(i,(()=>{a(),s&&s()}))};r?r(i,a,c):c()}else o(i,t,n)},D=(e,t,n,o=!1,r=!1)=>{const{type:s,props:i,ref:a,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:d,dirs:f}=e;if(null!=a&&cg(a,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&f,h=!Wh(e);let m;if(h&&(m=i&&i.onVnodeBeforeUnmount)&&Yg(m,t,e),6&u)V(e.component,n,o);else{if(128&u)return void e.suspense.unmount(n,o);p&&hm(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,r,Y,o):c&&(s!==vg||d>0&&64&d)?$(c,t,n,!1,!0):(s===vg&&384&d||!r&&16&u)&&$(l,t,n),o&&H(e)}(h&&(m=i&&i.onVnodeUnmounted)||p)&&ug((()=>{m&&Yg(m,t,e),p&&hm(e,null,t,"unmounted")}),n)},H=e=>{const{type:t,el:n,anchor:o,transition:s}=e;if(t===vg)return void U(n,o);if(t===yg)return void x(e);const i=()=>{r(n),s&&!s.persisted&&s.afterLeave&&s.afterLeave()};if(1&e.shapeFlag&&s&&!s.persisted){const{leave:t,delayLeave:o}=s,r=()=>t(n,i);o?o(e.el,i,r):r()}else i()},U=(e,t)=>{let n;while(e!==t)n=f(e),r(e),e=n;r(t)},V=(e,t,n)=>{const{bum:o,scope:r,update:s,subTree:i,um:a}=e;o&&Lp(o),r.stop(),s&&(s.active=!1,D(i,e,t,n)),a&&ug(a,t),ug((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},$=(e,t,n,o=!1,r=!1,s=0)=>{for(let i=s;i<e.length;i++)D(e[i],t,n,o,r)},z=e=>6&e.shapeFlag?z(e.component.subTree):128&e.shapeFlag?e.suspense.next():f(e.anchor||e.el),q=(e,t,n)=>{null==e?t._vnode&&D(t._vnode,null,null,!0):g(t._vnode||null,e,t,null,null,null,n),fh(),t._vnode=e},Y={p:g,um:D,m:F,r:H,mt:O,mc:E,pc:L,pbc:M,n:z,o:e};let G,X;return t&&([G,X]=t(Y)),{render:q,hydrate:G,createApp:lg(q,G)}}function pg({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function hg(e,t,n=!1){const o=e.children,r=t.children;if(gp(o)&&gp(r))for(let s=0;s<o.length;s++){const e=o[s];let t=r[s];1&t.shapeFlag&&!t.dynamicChildren&&((t.patchFlag<=0||32===t.patchFlag)&&(t=r[s]=$g(r[s]),t.el=e.el),n||hg(e,t))}}function mg(e){const t=e.slice(),n=[0];let o,r,s,i,a;const l=e.length;for(o=0;o<l;o++){const l=e[o];if(0!==l){if(r=n[n.length-1],e[r]<l){t[o]=r,n.push(o);continue}s=0,i=n.length-1;while(s<i)a=s+i>>1,e[n[a]]<l?s=a+1:i=a;l<e[n[s]]&&(s>0&&(t[o]=n[s-1]),n[s]=o)}}s=n.length,i=n[s-1];while(s-- >0)n[s]=i,i=t[i];return n}const gg=e=>e.__isTeleport,vg=Symbol(void 0),_g=Symbol(void 0),bg=Symbol(void 0),yg=Symbol(void 0),xg=[];let wg=null;function kg(e=!1){xg.push(wg=e?null:[])}function Sg(){xg.pop(),wg=xg[xg.length-1]||null}let Eg=1;function Tg(e){Eg+=e}function Mg(e){return e.dynamicChildren=Eg>0?wg||ip:null,Sg(),Eg>0&&wg&&wg.push(e),e}function Ag(e,t,n,o,r,s){return Mg(Lg(e,t,n,o,r,s,!0))}function Rg(e,t,n,o,r){return Mg(jg(e,t,n,o,r,!0))}function Cg(e){return!!e&&!0===e.__v_isVNode}function Og(e,t){return e.type===t.type&&e.key===t.key}const Ig="__vInternal",Bg=({key:e})=>null!=e?e:null,Pg=({ref:e,ref_key:t,ref_for:n})=>null!=e?yp(e)||zf(e)||bp(e)?{i:_h,r:e,k:t,f:!!n}:e:null;function Lg(e,t=null,n=null,o=0,r=null,s=(e===vg?0:1),i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Bg(t),ref:t&&Pg(t),scopeId:bh,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null};return a?(zg(l,n),128&s&&e.normalize(l)):n&&(l.shapeFlag|=yp(n)?8:16),Eg>0&&!i&&wg&&(l.patchFlag>0||6&s)&&32!==l.patchFlag&&wg.push(l),l}const jg=Ng;function Ng(e,t=null,n=null,o=0,r=null,s=!1){if(e&&e!==_m||(e=bg),Cg(e)){const o=Dg(e,t,!0);return n&&zg(o,n),Eg>0&&!s&&wg&&(6&o.shapeFlag?wg[wg.indexOf(e)]=o:wg.push(o)),o.patchFlag|=-2,o}if(dv(e)&&(e=e.__vccOpts),t){t=Fg(t);let{class:e,style:n}=t;e&&!yp(e)&&(t.class=tp(e)),xp(n)&&(Nf(n)&&!gp(n)&&(n=fp({},n)),t.style=Zf(n))}const i=yp(e)?1:Ah(e)?128:gg(e)?64:xp(e)?4:bp(e)?2:0;return Lg(e,t,n,o,r,i,s,!0)}function Fg(e){return e?Nf(e)||Ig in e?fp({},e):e:null}function Dg(e,t,n=!1){const{props:o,ref:r,patchFlag:s,children:i}=e,a=t?qg(o||{},t):o,l={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Bg(a),ref:t&&t.ref?n&&r?gp(r)?r.concat(Pg(t)):[r,Pg(t)]:Pg(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==vg?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Dg(e.ssContent),ssFallback:e.ssFallback&&Dg(e.ssFallback),el:e.el,anchor:e.anchor};return l}function Hg(e=" ",t=0){return jg(_g,null,e,t)}function Ug(e="",t=!1){return t?(kg(),Rg(bg,null,e)):jg(bg,null,e)}function Vg(e){return null==e||"boolean"===typeof e?jg(bg):gp(e)?jg(vg,null,e.slice()):"object"===typeof e?$g(e):jg(_g,null,String(e))}function $g(e){return null===e.el||e.memo?e:Dg(e)}function zg(e,t){let n=0;const{shapeFlag:o}=e;if(null==t)t=null;else if(gp(t))n=16;else if("object"===typeof t){if(65&o){const n=t.default;return void(n&&(n._c&&(n._d=!1),zg(e,n()),n._c&&(n._d=!0)))}{n=32;const o=t._;o||Ig in t?3===o&&_h&&(1===_h.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=_h}}else bp(t)?(t={default:t,_ctx:_h},n=32):(t=String(t),64&o?(n=16,t=[Hg(t)]):n=8);e.children=t,e.shapeFlag|=n}function qg(...e){const t={};for(let n=0;n<e.length;n++){const o=e[n];for(const e in o)if("class"===e)t.class!==o.class&&(t.class=tp([t.class,o.class]));else if("style"===e)t.style=Zf([t.style,o.style]);else if(up(e)){const n=t[e],r=o[e];!r||n===r||gp(n)&&n.includes(r)||(t[e]=n?[].concat(n,r):r)}else""!==e&&(t[e]=o[e])}return t}function Yg(e,t,n,o=null){Up(e,t,7,[n,o])}const Gg=ig();let Xg=0;function Wg(e,t,n){const o=e.type,r=(t?t.appContext:e.appContext)||Gg,s={uid:Xg++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new hd(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Xm(o,r),emitsOptions:gh(o,r),emit:null,emitted:null,propsDefaults:sp,inheritAttrs:o.inheritAttrs,ctx:sp,data:sp,props:sp,attrs:sp,slots:sp,refs:sp,setupState:sp,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=mh.bind(null,s),e.ce&&e.ce(s),s}let Kg=null;const Zg=()=>Kg||_h,Qg=e=>{Kg=e,e.scope.on()},Jg=()=>{Kg&&Kg.scope.off(),Kg=null};function ev(e){return 4&e.vnode.shapeFlag}let tv,nv=!1;function ov(e,t=!1){nv=t;const{props:n,children:o}=e.vnode,r=ev(e);zm(e,n,r,t),rg(e,o);const s=r?rv(e,t):void 0;return nv=!1,s}function rv(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Df(new Proxy(e.ctx,Rm));const{setup:o}=n;if(o){const n=e.setupContext=o.length>1?lv(e):null;Qg(e),Id();const r=Hp(o,e,0,[e.props,n]);if(Bd(),Jg(),wp(r)){if(r.then(Jg,Jg),t)return r.then((n=>{sv(e,n,t)})).catch((t=>{Vp(t,e,0)}));e.asyncDep=r}else sv(e,r,t)}else iv(e,t)}function sv(e,t,n){bp(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xp(t)&&(e.setupState=Gf(t)),iv(e,n)}function iv(e,t,n){const o=e.type;if(!e.render){if(!t&&tv&&!o.render){const t=o.template;if(t){const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:s,compilerOptions:i}=o,a=fp(fp({isCustomElement:n,delimiters:s},r),i);o.render=tv(t,a)}}e.render=o.render||ap}Qg(e),Id(),Om(e),Bd(),Jg()}function av(e){return new Proxy(e.attrs,{get(t,n){return Pd(e,"get","$attrs"),t[n]}})}function lv(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=av(e))},slots:e.slots,emit:e.emit,expose:t}}function cv(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Gf(Df(e.exposed)),{get(t,n){return n in t?t[n]:n in Am?Am[n](e):void 0}}))}function uv(e,t=!0){return bp(e)?e.displayName||e.name:e.name||t&&e.__name}function dv(e){return bp(e)&&"__vccOpts"in e}const fv=(e,t)=>Wf(e,t,nv);function pv(e,t,n){const o=arguments.length;return 2===o?xp(t)&&!gp(t)?Cg(t)?jg(e,null,[t]):jg(e,t):jg(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):3===o&&Cg(n)&&(n=[n]),jg(e,t,n))}const hv="3.2.37";function mv(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r<o.length;r++)n[o[r]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}const gv="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",vv=mv(gv);function _v(e){return!!e||""===e}const bv=/^on[^a-z]/,yv=e=>bv.test(e),xv=e=>e.startsWith("onUpdate:"),wv=Object.assign,kv=Array.isArray,Sv=e=>"function"===typeof e,Ev=e=>"string"===typeof e,Tv=e=>null!==e&&"object"===typeof e,Mv=e=>{const t=Object.create(null);return n=>{const o=t[n];return o||(t[n]=e(n))}},Av=/-(\w)/g,Rv=Mv((e=>e.replace(Av,((e,t)=>t?t.toUpperCase():"")))),Cv=/\B([A-Z])/g,Ov=Mv((e=>e.replace(Cv,"-$1").toLowerCase())),Iv=Mv((e=>e.charAt(0).toUpperCase()+e.slice(1))),Bv=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Pv="http://www.w3.org/2000/svg",Lv="undefined"!==typeof document?document:null,jv=Lv&&Lv.createElement("template"),Nv={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t?Lv.createElementNS(Pv,e):Lv.createElement(e,n?{is:n}:void 0);return"select"===e&&o&&null!=o.multiple&&r.setAttribute("multiple",o.multiple),r},createText:e=>Lv.createTextNode(e),createComment:e=>Lv.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Lv.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,o,r,s){const i=n?n.previousSibling:t.lastChild;if(r&&(r===s||r.nextSibling)){while(1)if(t.insertBefore(r.cloneNode(!0),n),r===s||!(r=r.nextSibling))break}else{jv.innerHTML=o?`<svg>${e}</svg>`:e;const r=jv.content;if(o){const e=r.firstChild;while(e.firstChild)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Fv(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Dv(e,t,n){const o=e.style,r=Ev(n);if(n&&!r){for(const e in n)Uv(o,e,n[e]);if(t&&!Ev(t))for(const e in t)null==n[e]&&Uv(o,e,"")}else{const s=o.display;r?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=s)}}const Hv=/\s*!important$/;function Uv(e,t,n){if(kv(n))n.forEach((n=>Uv(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=zv(e,t);Hv.test(n)?e.setProperty(Ov(o),n.replace(Hv,""),"important"):e[o]=n}}const Vv=["Webkit","Moz","ms"],$v={};function zv(e,t){const n=$v[t];if(n)return n;let o=Rp(t);if("filter"!==o&&o in e)return $v[t]=o;o=Iv(o);for(let r=0;r<Vv.length;r++){const n=Vv[r]+o;if(n in e)return $v[t]=n}return t}const qv="http://www.w3.org/1999/xlink";function Yv(e,t,n,o,r){if(o&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(qv,t.slice(6,t.length)):e.setAttributeNS(qv,t,n);else{const o=vv(t);null==n||o&&!_v(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}function Gv(e,t,n,o,r,s,i){if("innerHTML"===t||"textContent"===t)return o&&i(o,r,s),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const o=null==n?"":n;return e.value===o&&"OPTION"!==e.tagName||(e.value=o),void(null==n&&e.removeAttribute(t))}let a=!1;if(""===n||null==n){const o=typeof e[t];"boolean"===o?n=_v(n):null==n&&"string"===o?(n="",a=!0):"number"===o&&(n=0,a=!0)}try{e[t]=n}catch(l){}a&&e.removeAttribute(t)}const[Xv,Wv]=(()=>{let e=Date.now,t=!1;if("undefined"!==typeof window){Date.now()>document.createEvent("Event").timeStamp&&(e=performance.now.bind(performance));const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Kv=0;const Zv=Promise.resolve(),Qv=()=>{Kv=0},Jv=()=>Kv||(Zv.then(Qv),Kv=Xv());function e_(e,t,n,o){e.addEventListener(t,n,o)}function t_(e,t,n,o){e.removeEventListener(t,n,o)}function n_(e,t,n,o,r=null){const s=e._vei||(e._vei={}),i=s[t];if(o&&i)i.value=o;else{const[n,a]=r_(t);if(o){const i=s[t]=s_(o,r);e_(e,n,i,a)}else i&&(t_(e,n,i,a),s[t]=void 0)}}const o_=/(?:Once|Passive|Capture)$/;function r_(e){let t;if(o_.test(e)){let n;t={};while(n=e.match(o_))e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Ov(e.slice(2)),t]}function s_(e,t){const n=e=>{const o=e.timeStamp||Xv();(Wv||o>=n.attached-1)&&Up(i_(e,n.value),t,5,[e])};return n.value=e,n.attached=Jv(),n}function i_(e,t){if(kv(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}const a_=/^on[a-z]/,l_=(e,t,n,o,r=!1,s,i,a,l)=>{"class"===t?Fv(e,o,r):"style"===t?Dv(e,n,o):yv(t)?xv(t)||n_(e,t,n,o,i):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):c_(e,t,o,r))?Gv(e,t,o,s,i,a,l):("true-value"===t?e._trueValue=o:"false-value"===t&&(e._falseValue=o),Yv(e,t,o,r))};function c_(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&a_.test(t)&&Sv(n)):"spellcheck"!==t&&"draggable"!==t&&"translate"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!a_.test(t)||!Ev(n))&&t in e))))}function u_(e,t){const n=Xh(e);class o extends f_{constructor(e){super(n,e,t)}}return o.def=n,o}const d_="undefined"!==typeof HTMLElement?HTMLElement:class{};class f_ extends d_{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):this.attachShadow({mode:"open"})}connectedCallback(){this._connected=!0,this._instance||this._resolveDef()}disconnectedCallback(){this._connected=!1,oh((()=>{this._connected||(K_(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){if(this._resolved)return;this._resolved=!0;for(let n=0;n<this.attributes.length;n++)this._setAttr(this.attributes[n].name);new MutationObserver((e=>{for(const t of e)this._setAttr(t.attributeName)})).observe(this,{attributes:!0});const e=e=>{const{props:t,styles:n}=e,o=!kv(t),r=t?o?Object.keys(t):t:[];let s;if(o)for(const i in this._props){const e=t[i];(e===Number||e&&e.type===Number)&&(this._props[i]=Bv(this._props[i]),(s||(s=Object.create(null)))[i]=!0)}this._numberProps=s;for(const i of Object.keys(this))"_"!==i[0]&&this._setProp(i,this[i],!0,!1);for(const i of r.map(Rv))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(e){this._setProp(i,e)}});this._applyStyles(n),this._update()},t=this._def.__asyncLoader;t?t().then(e):e(this._def)}_setAttr(e){let t=this.getAttribute(e);this._numberProps&&this._numberProps[e]&&(t=Bv(t)),this._setProp(Rv(e),t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,o=!0){t!==this._props[e]&&(this._props[e]=t,o&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(Ov(e),""):"string"===typeof t||"number"===typeof t?this.setAttribute(Ov(e),t+""):t||this.removeAttribute(Ov(e))))}_update(){K_(this._createVNode(),this.shadowRoot)}_createVNode(){const e=jg(this._def,wv({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0,e.emit=(e,...t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};let t=this;while(t=t&&(t.parentNode||t.host))if(t instanceof f_){e.parent=t._instance;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}const p_="transition",h_="animation",m_=(e,{slots:t})=>pv(Uh,y_(e),t);m_.displayName="Transition";const g_={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},v_=m_.props=wv({},Uh.props,g_),__=(e,t=[])=>{kv(e)?e.forEach((e=>e(...t))):e&&e(...t)},b_=e=>!!e&&(kv(e)?e.some((e=>e.length>1)):e.length>1);function y_(e){const t={};for(const A in e)A in g_||(t[A]=e[A]);if(!1===e.css)return t;const{name:n="v",type:o,duration:r,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:c=i,appearToClass:u=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=x_(r),m=h&&h[0],g=h&&h[1],{onBeforeEnter:v,onEnter:_,onEnterCancelled:b,onLeave:y,onLeaveCancelled:x,onBeforeAppear:w=v,onAppear:k=_,onAppearCancelled:S=b}=t,E=(e,t,n)=>{S_(e,t?u:a),S_(e,t?c:i),n&&n()},T=(e,t)=>{e._isLeaving=!1,S_(e,d),S_(e,p),S_(e,f),t&&t()},M=e=>(t,n)=>{const r=e?k:_,i=()=>E(t,e,n);__(r,[t,i]),E_((()=>{S_(t,e?l:s),k_(t,e?u:a),b_(r)||M_(t,o,m,i)}))};return wv(t,{onBeforeEnter(e){__(v,[e]),k_(e,s),k_(e,i)},onBeforeAppear(e){__(w,[e]),k_(e,l),k_(e,c)},onEnter:M(!1),onAppear:M(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>T(e,t);k_(e,d),O_(),k_(e,f),E_((()=>{e._isLeaving&&(S_(e,d),k_(e,p),b_(y)||M_(e,o,g,n))})),__(y,[e,n])},onEnterCancelled(e){E(e,!1),__(b,[e])},onAppearCancelled(e){E(e,!0),__(S,[e])},onLeaveCancelled(e){T(e),__(x,[e])}})}function x_(e){if(null==e)return null;if(Tv(e))return[w_(e.enter),w_(e.leave)];{const t=w_(e);return[t,t]}}function w_(e){const t=Bv(e);return t}function k_(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function S_(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function E_(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let T_=0;function M_(e,t,n,o){const r=e._endId=++T_,s=()=>{r===e._endId&&o()};if(n)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=A_(e,t);if(!i)return o();const c=i+"end";let u=0;const d=()=>{e.removeEventListener(c,f),s()},f=t=>{t.target===e&&++u>=l&&d()};setTimeout((()=>{u<l&&d()}),a+1),e.addEventListener(c,f)}function A_(e,t){const n=window.getComputedStyle(e),o=e=>(n[e]||"").split(", "),r=o(p_+"Delay"),s=o(p_+"Duration"),i=R_(r,s),a=o(h_+"Delay"),l=o(h_+"Duration"),c=R_(a,l);let u=null,d=0,f=0;t===p_?i>0&&(u=p_,d=i,f=s.length):t===h_?c>0&&(u=h_,d=c,f=l.length):(d=Math.max(i,c),u=d>0?i>c?p_:h_:null,f=u?u===p_?s.length:l.length:0);const p=u===p_&&/\b(transform|all)(,|$)/.test(n[p_+"Property"]);return{type:u,timeout:d,propCount:f,hasTransform:p}}function R_(e,t){while(e.length<t.length)e=e.concat(e);return Math.max(...t.map(((t,n)=>C_(t)+C_(e[n]))))}function C_(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function O_(){return document.body.offsetHeight}const I_=new WeakMap,B_=new WeakMap,P_={name:"TransitionGroup",props:wv({},v_,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Zg(),o=Fh();let r,s;return im((()=>{if(!r.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!D_(r[0].el,n.vnode.el,t))return;r.forEach(j_),r.forEach(N_);const o=r.filter(F_);O_(),o.forEach((e=>{const n=e.el,o=n.style;k_(n,t),o.transform=o.webkitTransform=o.transitionDuration="";const r=n._moveCb=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",r),n._moveCb=null,S_(n,t))};n.addEventListener("transitionend",r)}))})),()=>{const i=Ff(e),a=y_(i);let l=i.tag||vg;r=s,s=t.default?Gh(t.default()):[];for(let e=0;e<s.length;e++){const t=s[e];null!=t.key&&Yh(t,$h(t,a,o,n))}if(r)for(let e=0;e<r.length;e++){const t=r[e];Yh(t,$h(t,a,o,n)),I_.set(t,t.el.getBoundingClientRect())}return jg(l,null,s)}}},L_=P_;function j_(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function N_(e){B_.set(e,e.el.getBoundingClientRect())}function F_(e){const t=I_.get(e),n=B_.get(e),o=t.left-n.left,r=t.top-n.top;if(o||r){const t=e.el.style;return t.transform=t.webkitTransform=`translate(${o}px,${r}px)`,t.transitionDuration="0s",e}}function D_(e,t,n){const o=e.cloneNode();e._vtc&&e._vtc.forEach((e=>{e.split(/\s+/).forEach((e=>e&&o.classList.remove(e)))})),n.split(/\s+/).forEach((e=>e&&o.classList.add(e))),o.style.display="none";const r=1===t.nodeType?t:t.parentNode;r.appendChild(o);const{hasTransform:s}=A_(o);return r.removeChild(o),s}const H_=["ctrl","shift","alt","meta"],U_={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>H_.some((n=>e[`${n}Key`]&&!t.includes(n)))},V_=(e,t)=>(n,...o)=>{for(let e=0;e<t.length;e++){const o=U_[t[e]];if(o&&o(n,t))return}return e(n,...o)},$_={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},z_=(e,t)=>n=>{if(!("key"in n))return;const o=Ov(n.key);return t.some((e=>e===o||$_[e]===o))?e(n):void 0},q_={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Y_(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!==!n&&(o?t?(o.beforeEnter(e),Y_(e,!0),o.enter(e)):o.leave(e,(()=>{Y_(e,!1)})):Y_(e,t))},beforeUnmount(e,{value:t}){Y_(e,t)}};function Y_(e,t){e.style.display=t?e._vod:"none"}const G_=wv({patchProp:l_},Nv);let X_;function W_(){return X_||(X_=dg(G_))}const K_=(...e)=>{W_().render(...e)};var Z_=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n};const Q_={name:"AppLoader",props:{show:{type:Boolean,default:!1},infinite:{type:Boolean,default:!1},type:{type:String,required:!0},messageId:{type:String,default:""}}},J_=Lg("div",{id:"vac-circle"},null,-1),eb=Lg("div",{id:"vac-circle"},null,-1),tb=Lg("div",{id:"vac-circle"},null,-1),nb=Lg("div",{id:"vac-circle"},null,-1),ob=Lg("div",{id:"vac-circle"},null,-1),rb=Lg("div",{id:"vac-circle"},null,-1);function sb(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-fade-spinner",appear:""},{default:xh((()=>[n.show?(kg(),Ag("div",{key:0,class:tp(["vac-loader-wrapper",{"vac-container-center":!n.infinite,"vac-container-top":n.infinite}])},["rooms"===n.type?Em(e.$slots,"spinner-icon-rooms",{key:0},(()=>[J_])):Ug("",!0),"infinite-rooms"===n.type?Em(e.$slots,"spinner-icon-infinite-rooms",{key:1},(()=>[eb])):Ug("",!0),"message-file"===n.type?Em(e.$slots,"spinner-icon-message-file_"+n.messageId,{key:2},(()=>[tb])):Ug("",!0),"room-file"===n.type?Em(e.$slots,"spinner-icon-room-file",{key:3},(()=>[nb])):Ug("",!0),"messages"===n.type?Em(e.$slots,"spinner-icon-messages",{key:4},(()=>[ob])):Ug("",!0),"infinite-messages"===n.type?Em(e.$slots,"spinner-icon-infinite-messages",{key:5},(()=>[rb])):Ug("",!0)],2)):Ug("",!0)])),_:3})}var ib=Z_(Q_,[["render",sb]]);const ab={name:"SvgIcon",props:{name:{type:String,default:null},param:{type:String,default:null}},data(){return{svgItem:{search:{path:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},add:{path:"M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},toggle:{path:"M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z"},menu:{path:"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z"},close:{path:"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z"},file:{path:"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"},paperclip:{path:"M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z"},"close-outline":{path:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},send:{path:"M2,21L23,12L2,3V10L17,12L2,14V21Z"},emoji:{path:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z"},document:{path:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"},pencil:{path:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"},checkmark:{path:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"},"double-checkmark":{path:"M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z"},eye:{path:"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"},dropdown:{path:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"},deleted:{path:"M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.85 4.63,15.55 5.68,16.91L16.91,5.68C15.55,4.63 13.85,4 12,4M12,20A8,8 0 0,0 20,12C20,10.15 19.37,8.45 18.32,7.09L7.09,18.32C8.45,19.37 10.15,20 12,20Z"},microphone:{size:"large",path:"M432.8,216.4v39.2c0,45.2-15.3,84.3-45.2,118.4c-29.8,33.2-67.3,52.8-111.6,57.9v40.9h78.4c5.1,0,10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6c0,5.1-1.7,10.2-6,13.6c-4.3,4.3-8.5,6-13.6,6H157.6c-5.1,0-10.2-1.7-13.6-6c-4.3-4.3-6-8.5-6-13.6c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6H236v-40.9c-44.3-5.1-81.8-23.9-111.6-57.9s-45.2-73.3-45.2-118.4v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6s10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6v39.2c0,37.5,13.6,70.7,40,97.1s59.6,40,97.1,40s70.7-13.6,97.1-40c26.4-26.4,40-59.6,40-97.1v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6c5.1,0,10.2,1.7,13.6,6C430.2,206.2,432.8,211.3,432.8,216.4z M353.5,98v157.6c0,27.3-9.4,50.3-29,69c-19.6,19.6-42.6,29-69,29s-50.3-9.4-69-29c-19.6-19.6-29-42.6-29-69V98c0-27.3,9.4-50.3,29-69c19.6-19.6,42.6-29,69-29s50.3,9.4,69,29C344.2,47.7,353.5,71.6,353.5,98z"},"audio-play":{size:"medium",path:"M43.331,21.237L7.233,0.397c-0.917-0.529-2.044-0.529-2.96,0c-0.916,0.528-1.48,1.505-1.48,2.563v41.684   c0,1.058,0.564,2.035,1.48,2.563c0.458,0.268,0.969,0.397,1.48,0.397c0.511,0,1.022-0.133,1.48-0.397l36.098-20.84   c0.918-0.529,1.479-1.506,1.479-2.564S44.247,21.767,43.331,21.237z"},"audio-pause":{size:"medium",path:"M17.991,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C4.729,2.969,7.698,0,11.36,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z",path2:"M42.877,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C29.616,2.969,32.585,0,36.246,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z"}}}},computed:{svgId(){const e=this.param?"-"+this.param:"";return`vac-icon-${this.name}${e}`},size(){const e=this.svgItem[this.name];return"large"===e.size?512:"medium"===e.size?48:24}}},lb=["viewBox"],cb=["id","d"],ub=["id","d"];function db(e,t,n,o,r,s){return kg(),Ag("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",width:"24",height:"24",viewBox:`0 0 ${s.size} ${s.size}`},[Lg("path",{id:s.svgId,d:r.svgItem[n.name].path},null,8,cb),r.svgItem[n.name].path2?(kg(),Ag("path",{key:0,id:s.svgId,d:r.svgItem[n.name].path2},null,8,ub)):Ug("",!0)],8,lb)}var fb=Z_(ab,[["render",db]]);const pb={name:"RoomsSearch",components:{SvgIcon:fb},props:{textMessages:{type:Object,required:!0},showSearch:{type:Boolean,required:!0},showAddRoom:{type:Boolean,required:!0},rooms:{type:Array,required:!0},loadingRooms:{type:Boolean,required:!0}},emits:["search-room","add-room"],computed:{showSearchBar(){return this.showSearch||this.showAddRoom}}},hb={key:0,class:"vac-icon-search"},mb=["placeholder"];function gb(e,t,n,o,r,s){const i=vm("svg-icon");return kg(),Ag("div",{class:tp({"vac-box-search":s.showSearchBar,"vac-box-empty":!s.showSearchBar})},[n.showSearch?(kg(),Ag(vg,{key:0},[!n.loadingRooms&&n.rooms.length?(kg(),Ag("div",hb,[Em(e.$slots,"search-icon",{},(()=>[jg(i,{name:"search"})]))])):Ug("",!0),!n.loadingRooms&&n.rooms.length?(kg(),Ag("input",{key:1,type:"search",placeholder:n.textMessages.SEARCH,autocomplete:"off",class:"vac-input",onInput:t[0]||(t[0]=t=>e.$emit("search-room",t))},null,40,mb)):Ug("",!0)],64)):Ug("",!0),n.showAddRoom?(kg(),Ag("div",{key:1,class:"vac-svg-button vac-add-icon",onClick:t[1]||(t[1]=t=>e.$emit("add-room"))},[Em(e.$slots,"add-icon",{},(()=>[jg(i,{name:"add"})]))])):Ug("",!0)],2)}var vb=Z_(pb,[["render",gb]]);const _b=document.createElement("i");function bb(e){const t="&"+e+";";_b.innerHTML=t;const n=_b.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===e)&&(n!==t&&n)}function yb(e,t,n,o){const r=e.length;let s,i=0;if(t=t<0?-t>r?0:r+t:t>r?r:t,n=n>0?n:0,o.length<1e4)s=Array.from(o),s.unshift(t,n),e.splice(...s);else{n&&e.splice(t,n);while(i<o.length)s=o.slice(i,i+1e4),s.unshift(t,0),e.splice(...s),i+=1e4,t+=1e4}}function xb(e,t){return e.length>0?(yb(e,e.length,0,t),e):t}const wb={}.hasOwnProperty;function kb(e){const t={};let n=-1;while(++n<e.length)Sb(t,e[n]);return t}function Sb(e,t){let n;for(n in t){const o=wb.call(e,n)?e[n]:void 0,r=o||(e[n]={}),s=t[n];let i;if(s)for(i in s){wb.call(r,i)||(r[i]=[]);const e=s[i];Eb(r[i],Array.isArray(e)?e:e?[e]:[])}}}function Eb(e,t){let n=-1;const o=[];while(++n<t.length)("after"===t[n].add?e:o).push(t[n]);yb(e,0,0,o)}function Tb(e){const t={};let n=-1;while(++n<e.length)Mb(t,e[n]);return t}function Mb(e,t){let n;for(n in t){const o=wb.call(e,n)?e[n]:void 0,r=o||(e[n]={}),s=t[n];let i;if(s)for(i in s)r[i]=s[i]}}function Ab(e,t){const n=Number.parseInt(e,t);return n<9||11===n||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535===(65535&n)||65534===(65535&n)||n>1114111?"�":String.fromCharCode(n)}const Rb={'"':"quot","&":"amp","<":"lt",">":"gt"};function Cb(e){return e.replace(/["&<>]/g,t);function t(e){return"&"+Rb[e]+";"}}function Ob(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ib=/[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/,Bb=qb(/[A-Za-z]/),Pb=qb(/[\dA-Za-z]/),Lb=qb(/[#-'*+\--9=?A-Z^-~]/);function jb(e){return null!==e&&(e<32||127===e)}const Nb=qb(/\d/),Fb=qb(/[\dA-Fa-f]/),Db=qb(/[!-/:-@[-`{-~]/);function Hb(e){return null!==e&&e<-2}function Ub(e){return null!==e&&(e<0||32===e)}function Vb(e){return-2===e||-1===e||32===e}const $b=qb(Ib),zb=qb(/\s/);function qb(e){return t;function t(t){return null!==t&&e.test(String.fromCharCode(t))}}function Yb(e,t){const n=Cb(Gb(e||""));if(!t)return n;const o=n.indexOf(":"),r=n.indexOf("?"),s=n.indexOf("#"),i=n.indexOf("/");return o<0||i>-1&&o>i||r>-1&&o>r||s>-1&&o>s||t.test(n.slice(0,o))?n:""}function Gb(e){const t=[];let n=-1,o=0,r=0;while(++n<e.length){const s=e.charCodeAt(n);let i="";if(37===s&&Pb(e.charCodeAt(n+1))&&Pb(e.charCodeAt(n+2)))r=2;else if(s<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(s))||(i=String.fromCharCode(s));else if(s>55295&&s<57344){const t=e.charCodeAt(n+1);s<56320&&t>56319&&t<57344?(i=String.fromCharCode(s,t),r=1):i="�"}else i=String.fromCharCode(s);i&&(t.push(e.slice(o,n),encodeURIComponent(i)),o=n+r+1,i=""),r&&(n+=r,r=0)}return t.join("")+e.slice(o)}const Xb={}.hasOwnProperty,Wb=/^(https?|ircs?|mailto|xmpp)$/i,Kb=/^https?$/i;function Zb(e){const t=e||{};let n=!0;const o={},r=[[]],s=[],i=[],a={enter:{blockQuote:C,codeFenced:P,codeFencedFenceInfo:g,codeFencedFenceMeta:g,codeIndented:N,codeText:ve,content:te,definition:W,definitionDestinationString:Z,definitionLabelString:g,definitionTitleString:g,emphasis:me,htmlFlow:fe,htmlText:he,image:D,label:g,link:H,listItemMarker:T,listItemValue:E,listOrdered:k,listUnordered:S,paragraph:I,reference:g,resource:z,resourceDestinationString:q,resourceTitleString:g,setextHeading:oe,strong:ge},exit:{atxHeading:se,atxHeadingSequence:ne,autolinkEmail:Ee,autolinkProtocol:Se,blockQuote:O,characterEscapeValue:le,characterReferenceMarkerHexadecimal:we,characterReferenceMarkerNumeric:we,characterReferenceValue:ke,codeFenced:F,codeFencedFence:j,codeFencedFenceInfo:L,codeFencedFenceMeta:v,codeFlowValue:ue,codeIndented:F,codeText:_e,codeTextData:le,data:le,definition:ee,definitionDestinationString:Q,definitionLabelString:K,definitionTitleString:J,emphasis:be,hardBreakEscape:de,hardBreakTrailing:de,htmlFlow:pe,htmlFlowData:le,htmlText:pe,htmlTextData:le,image:X,label:V,labelText:U,lineEnding:ce,link:X,listOrdered:M,listUnordered:A,paragraph:B,reference:v,referenceString:$,resource:v,resourceDestinationString:Y,resourceTitleString:G,setextHeading:ae,setextHeadingLineSequence:ie,setextHeadingText:re,strong:ye,thematicBreak:xe}},l=Tb([a].concat(t.htmlExtensions||[])),c={tightStack:i,definitions:o},u={lineEndingIfNeeded:x,options:t,encode:w,raw:b,tag:_,buffer:g,resume:v,setData:h,getData:m};let d=t.defaultLineEnding;return f;function f(e){let t=-1,n=0;const o=[];let s=[],i=[];while(++t<e.length)d||"lineEnding"!==e[t][1].type&&"lineEndingBlank"!==e[t][1].type||(d=e[t][2].sliceSerialize(e[t][1])),"listOrdered"!==e[t][1].type&&"listUnordered"!==e[t][1].type||("enter"===e[t][0]?o.push(t):p(e.slice(o.pop(),t))),"definition"===e[t][1].type&&("enter"===e[t][0]?(i=xb(i,e.slice(n,t)),n=t):(s=xb(s,e.slice(n,t+1)),n=t+1));s=xb(s,i),s=xb(s,e.slice(n)),t=-1;const a=s;l.enter.null&&l.enter.null.call(u);while(++t<e.length){const e=l[a[t][0]],n=a[t][1].type,o=e[n];Xb.call(e,n)&&o&&o.call(Object.assign({sliceSerialize:a[t][2].sliceSerialize},u),a[t][1])}return l.exit.null&&l.exit.null.call(u),r[0].join("")}function p(e){const t=e.length;let n,o=0,r=0,s=!1;while(++o<t){const t=e[o];if(t[1]._container)n=void 0,"enter"===t[0]?r++:r--;else switch(t[1].type){case"listItemPrefix":"exit"===t[0]&&(n=!0);break;case"linePrefix":break;case"lineEndingBlank":"enter"!==t[0]||r||(n?n=void 0:s=!0);break;default:n=void 0}}e[0][1]._loose=s}function h(e,t){c[e]=t}function m(e){return c[e]}function g(){r.push([])}function v(){const e=r.pop();return e.join("")}function _(e){n&&(h("lastWasTag",!0),r[r.length-1].push(e))}function b(e){h("lastWasTag"),r[r.length-1].push(e)}function y(){b(d||"\n")}function x(){const e=r[r.length-1],t=e[e.length-1],n=t?t.charCodeAt(t.length-1):null;10!==n&&13!==n&&null!==n&&y()}function w(e){return m("ignoreEncode")?e:Cb(e)}function k(e){i.push(!e._loose),x(),_("<ol"),h("expectFirstItem",!0)}function S(e){i.push(!e._loose),x(),_("<ul"),h("expectFirstItem",!0)}function E(e){if(m("expectFirstItem")){const t=Number.parseInt(this.sliceSerialize(e),10);1!==t&&_(' start="'+w(String(t))+'"')}}function T(){m("expectFirstItem")?_(">"):R(),x(),_("<li>"),h("expectFirstItem"),h("lastWasTag")}function M(){R(),i.pop(),y(),_("</ol>")}function A(){R(),i.pop(),y(),_("</ul>")}function R(){m("lastWasTag")&&!m("slurpAllLineEndings")&&x(),_("</li>"),h("slurpAllLineEndings")}function C(){i.push(!1),x(),_("<blockquote>")}function O(){i.pop(),x(),_("</blockquote>"),h("slurpAllLineEndings")}function I(){i[i.length-1]||(x(),_("<p>")),h("slurpAllLineEndings")}function B(){i[i.length-1]?h("slurpAllLineEndings",!0):_("</p>")}function P(){x(),_("<pre><code"),h("fencesCount",0)}function L(){const e=v();_(' class="language-'+e+'"')}function j(){const e=m("fencesCount")||0;e||(_(">"),h("slurpOneLineEnding",!0)),h("fencesCount",e+1)}function N(){x(),_("<pre><code>")}function F(){const e=m("fencesCount");void 0!==e&&e<2&&c.tightStack.length>0&&!m("lastWasTag")&&y(),m("flowCodeSeenData")&&x(),_("</code></pre>"),void 0!==e&&e<2&&x(),h("flowCodeSeenData"),h("fencesCount"),h("slurpOneLineEnding")}function D(){s.push({image:!0}),n=void 0}function H(){s.push({})}function U(e){s[s.length-1].labelId=this.sliceSerialize(e)}function V(){s[s.length-1].label=v()}function $(e){s[s.length-1].referenceId=this.sliceSerialize(e)}function z(){g(),s[s.length-1].destination=""}function q(){g(),h("ignoreEncode",!0)}function Y(){s[s.length-1].destination=v(),h("ignoreEncode")}function G(){s[s.length-1].title=v()}function X(){let e=s.length-1;const r=s[e],i=r.referenceId||r.labelId,a=void 0===r.destination?o[Ob(i)]:r;n=!0;while(e--)if(s[e].image){n=void 0;break}r.image?(_('<img src="'+Yb(a.destination,t.allowDangerousProtocol?void 0:Kb)+'" alt="'),b(r.label),_('"')):_('<a href="'+Yb(a.destination,t.allowDangerousProtocol?void 0:Wb)+'"'),_(a.title?' title="'+a.title+'"':""),r.image?_(" />"):(_(">"),b(r.label),_("</a>")),s.pop()}function W(){g(),s.push({})}function K(e){v(),s[s.length-1].labelId=this.sliceSerialize(e)}function Z(){g(),h("ignoreEncode",!0)}function Q(){s[s.length-1].destination=v(),h("ignoreEncode")}function J(){s[s.length-1].title=v()}function ee(){const e=s[s.length-1],t=Ob(e.labelId);v(),Xb.call(o,t)||(o[t]=s[s.length-1]),s.pop()}function te(){h("slurpAllLineEndings",!0)}function ne(e){m("headingRank")||(h("headingRank",this.sliceSerialize(e).length),x(),_("<h"+m("headingRank")+">"))}function oe(){g(),h("slurpAllLineEndings")}function re(){h("slurpAllLineEndings",!0)}function se(){_("</h"+m("headingRank")+">"),h("headingRank")}function ie(e){h("headingRank",61===this.sliceSerialize(e).charCodeAt(0)?1:2)}function ae(){const e=v();x(),_("<h"+m("headingRank")+">"),b(e),_("</h"+m("headingRank")+">"),h("slurpAllLineEndings"),h("headingRank")}function le(e){b(w(this.sliceSerialize(e)))}function ce(e){m("slurpAllLineEndings")||(m("slurpOneLineEnding")?h("slurpOneLineEnding"):m("inCodeText")?b(" "):b(w(this.sliceSerialize(e))))}function ue(e){b(w(this.sliceSerialize(e))),h("flowCodeSeenData",!0)}function de(){_("<br />")}function fe(){x(),he()}function pe(){h("ignoreEncode")}function he(){t.allowDangerousHtml&&h("ignoreEncode",!0)}function me(){_("<em>")}function ge(){_("<strong>")}function ve(){h("inCodeText",!0),_("<code>")}function _e(){h("inCodeText"),_("</code>")}function be(){_("</em>")}function ye(){_("</strong>")}function xe(){x(),_("<hr />")}function we(e){h("characterReferenceType",e.type)}function ke(e){let t=this.sliceSerialize(e);t=m("characterReferenceType")?Ab(t,"characterReferenceMarkerNumeric"===m("characterReferenceType")?10:16):bb(t),b(w(t)),h("characterReferenceType")}function Se(e){const n=this.sliceSerialize(e);_('<a href="'+Yb(n,t.allowDangerousProtocol?void 0:Wb)+'">'),b(w(n)),_("</a>")}function Ee(e){const t=this.sliceSerialize(e);_('<a href="'+Yb("mailto:"+t)+'">'),b(w(t)),_("</a>")}}function Qb(e,t,n,o){const r=o?o-1:Number.POSITIVE_INFINITY;let s=0;return i;function i(o){return Vb(o)?(e.enter(n),a(o)):t(o)}function a(o){return Vb(o)&&s++<r?(e.consume(o),a):(e.exit(n),t(o))}}const Jb={tokenize:ey};function ey(e){const t=e.attempt(this.parser.constructs.contentInitial,o,r);let n;return t;function o(n){if(null!==n)return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),Qb(e,t,"linePrefix");e.consume(n)}function r(t){return e.enter("paragraph"),s(t)}function s(t){const o=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=o),n=o,i(t)}function i(t){return null===t?(e.exit("chunkText"),e.exit("paragraph"),void e.consume(t)):Hb(t)?(e.consume(t),e.exit("chunkText"),s):(e.consume(t),i)}}const ty={tokenize:oy},ny={tokenize:ry};function oy(e){const t=this,n=[];let o,r,s,i=0;return a;function a(o){if(i<n.length){const r=n[i];return t.containerState=r[1],e.attempt(r[0].continuation,l,c)(o)}return c(o)}function l(e){if(i++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,o&&_();const n=t.events.length;let r,s=n;while(s--)if("exit"===t.events[s][0]&&"chunkFlow"===t.events[s][1].type){r=t.events[s][1].end;break}v(i);let a=n;while(a<t.events.length)t.events[a][1].end=Object.assign({},r),a++;return yb(t.events,s+1,0,t.events.slice(n)),t.events.length=a,c(e)}return a(e)}function c(r){if(i===n.length){if(!o)return f(r);if(o.currentConstruct&&o.currentConstruct.concrete)return h(r);t.interrupt=Boolean(o.currentConstruct&&!o._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(ny,u,d)(r)}function u(e){return o&&_(),v(i),f(e)}function d(e){return t.parser.lazy[t.now().line]=i!==n.length,s=t.now().offset,h(e)}function f(n){return t.containerState={},e.attempt(ny,p,h)(n)}function p(e){return i++,n.push([t.currentConstruct,t.containerState]),f(e)}function h(n){return null===n?(o&&_(),v(0),void e.consume(n)):(o=o||t.parser.flow(t.now()),e.enter("chunkFlow",{contentType:"flow",previous:r,_tokenizer:o}),m(n))}function m(n){return null===n?(g(e.exit("chunkFlow"),!0),v(0),void e.consume(n)):Hb(n)?(e.consume(n),g(e.exit("chunkFlow")),i=0,t.interrupt=void 0,a):(e.consume(n),m)}function g(e,n){const a=t.sliceStream(e);if(n&&a.push(null),e.previous=r,r&&(r.next=e),r=e,o.defineSkip(e.start),o.write(a),t.parser.lazy[e.start.line]){let e=o.events.length;while(e--)if(o.events[e][1].start.offset<s&&(!o.events[e][1].end||o.events[e][1].end.offset>s))return;const n=t.events.length;let r,a,l=n;while(l--)if("exit"===t.events[l][0]&&"chunkFlow"===t.events[l][1].type){if(r){a=t.events[l][1].end;break}r=!0}v(i),e=n;while(e<t.events.length)t.events[e][1].end=Object.assign({},a),e++;yb(t.events,l+1,0,t.events.slice(n)),t.events.length=e}}function v(o){let r=n.length;while(r-- >o){const o=n[r];t.containerState=o[1],o[0].exit.call(t,e)}n.length=o}function _(){o.write([null]),r=void 0,o=void 0,t.containerState._closeFlow=void 0}}function ry(e,t,n){return Qb(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function sy(e){return null===e||Ub(e)||zb(e)?1:$b(e)?2:void 0}function iy(e,t,n){const o=[];let r=-1;while(++r<e.length){const s=e[r].resolveAll;s&&!o.includes(s)&&(t=s(t,n),o.push(s))}return t}const ay={name:"attention",tokenize:cy,resolveAll:ly};function ly(e,t){let n,o,r,s,i,a,l,c,u=-1;while(++u<e.length)if("enter"===e[u][0]&&"attentionSequence"===e[u][1].type&&e[u][1]._close){n=u;while(n--)if("exit"===e[n][0]&&"attentionSequence"===e[n][1].type&&e[n][1]._open&&t.sliceSerialize(e[n][1]).charCodeAt(0)===t.sliceSerialize(e[u][1]).charCodeAt(0)){if((e[n][1]._close||e[u][1]._open)&&(e[u][1].end.offset-e[u][1].start.offset)%3&&!((e[n][1].end.offset-e[n][1].start.offset+e[u][1].end.offset-e[u][1].start.offset)%3))continue;a=e[n][1].end.offset-e[n][1].start.offset>1&&e[u][1].end.offset-e[u][1].start.offset>1?2:1;const d=Object.assign({},e[n][1].end),f=Object.assign({},e[u][1].start);uy(d,-a),uy(f,a),s={type:a>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},i={type:a>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[u][1].start),end:f},r={type:a>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[u][1].start)},o={type:a>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},i.end)},e[n][1].end=Object.assign({},s.start),e[u][1].start=Object.assign({},i.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=xb(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=xb(l,[["enter",o,t],["enter",s,t],["exit",s,t],["enter",r,t]]),l=xb(l,iy(t.parser.constructs.insideSpan.null,e.slice(n+1,u),t)),l=xb(l,[["exit",r,t],["enter",i,t],["exit",i,t],["exit",o,t]]),e[u][1].end.offset-e[u][1].start.offset?(c=2,l=xb(l,[["enter",e[u][1],t],["exit",e[u][1],t]])):c=0,yb(e,n-1,u-n+3,l),u=n+l.length-c-2;break}}u=-1;while(++u<e.length)"attentionSequence"===e[u][1].type&&(e[u][1].type="data");return e}function cy(e,t){const n=this.parser.constructs.attentionMarkers.null,o=this.previous,r=sy(o);let s;return i;function i(t){return s=t,e.enter("attentionSequence"),a(t)}function a(i){if(i===s)return e.consume(i),a;const l=e.exit("attentionSequence"),c=sy(i),u=!c||2===c&&r||n.includes(i),d=!r||2===r&&c||n.includes(o);return l._open=Boolean(42===s?u:u&&(r||!d)),l._close=Boolean(42===s?d:d&&(c||!u)),t(i)}}function uy(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const dy={name:"autolink",tokenize:fy};function fy(e,t,n){let o=0;return r;function r(t){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(t),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),s}function s(t){return Bb(t)?(e.consume(t),i):c(t)}function i(e){return 43===e||45===e||46===e||Pb(e)?(o=1,a(e)):c(e)}function a(t){return 58===t?(e.consume(t),o=0,l):(43===t||45===t||46===t||Pb(t))&&o++<32?(e.consume(t),a):(o=0,c(t))}function l(o){return 62===o?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(o),e.exit("autolinkMarker"),e.exit("autolink"),t):null===o||32===o||60===o||jb(o)?n(o):(e.consume(o),l)}function c(t){return 64===t?(e.consume(t),u):Lb(t)?(e.consume(t),c):n(t)}function u(e){return Pb(e)?d(e):n(e)}function d(n){return 46===n?(e.consume(n),o=0,u):62===n?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(n),e.exit("autolinkMarker"),e.exit("autolink"),t):f(n)}function f(t){if((45===t||Pb(t))&&o++<63){const n=45===t?f:d;return e.consume(t),n}return n(t)}}const py={tokenize:hy,partial:!0};function hy(e,t,n){return o;function o(t){return Vb(t)?Qb(e,r,"linePrefix")(t):r(t)}function r(e){return null===e||Hb(e)?t(e):n(e)}}const my={name:"blockQuote",tokenize:gy,continuation:{tokenize:vy},exit:_y};function gy(e,t,n){const o=this;return r;function r(t){if(62===t){const n=o.containerState;return n.open||(e.enter("blockQuote",{_container:!0}),n.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(t),e.exit("blockQuoteMarker"),s}return n(t)}function s(n){return Vb(n)?(e.enter("blockQuotePrefixWhitespace"),e.consume(n),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(n))}}function vy(e,t,n){const o=this;return r;function r(t){return Vb(t)?Qb(e,s,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):s(t)}function s(o){return e.attempt(my,t,n)(o)}}function _y(e){e.exit("blockQuote")}const by={name:"characterEscape",tokenize:yy};function yy(e,t,n){return o;function o(t){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(t),e.exit("escapeMarker"),r}function r(o){return Db(o)?(e.enter("characterEscapeValue"),e.consume(o),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(o)}}const xy={name:"characterReference",tokenize:wy};function wy(e,t,n){const o=this;let r,s,i=0;return a;function a(t){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(t),e.exit("characterReferenceMarker"),l}function l(t){return 35===t?(e.enter("characterReferenceMarkerNumeric"),e.consume(t),e.exit("characterReferenceMarkerNumeric"),c):(e.enter("characterReferenceValue"),r=31,s=Pb,u(t))}function c(t){return 88===t||120===t?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(t),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),r=6,s=Fb,u):(e.enter("characterReferenceValue"),r=7,s=Nb,u(t))}function u(a){if(59===a&&i){const r=e.exit("characterReferenceValue");return s!==Pb||bb(o.sliceSerialize(r))?(e.enter("characterReferenceMarker"),e.consume(a),e.exit("characterReferenceMarker"),e.exit("characterReference"),t):n(a)}return s(a)&&i++<r?(e.consume(a),u):n(a)}}const ky={tokenize:Ty,partial:!0},Sy={name:"codeFenced",tokenize:Ey,concrete:!0};function Ey(e,t,n){const o=this,r={tokenize:x,partial:!0};let s,i=0,a=0;return l;function l(e){return c(e)}function c(t){const n=o.events[o.events.length-1];return i=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,s=t,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),u(t)}function u(t){return t===s?(a++,e.consume(t),u):a<3?n(t):(e.exit("codeFencedFenceSequence"),Vb(t)?Qb(e,d,"whitespace")(t):d(t))}function d(n){return null===n||Hb(n)?(e.exit("codeFencedFence"),o.interrupt?t(n):e.check(ky,m,y)(n)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),f(n))}function f(t){return null===t||Hb(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),d(t)):Vb(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Qb(e,p,"whitespace")(t)):96===t&&t===s?n(t):(e.consume(t),f)}function p(t){return null===t||Hb(t)?d(t):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),h(t))}function h(t){return null===t||Hb(t)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),d(t)):96===t&&t===s?n(t):(e.consume(t),h)}function m(t){return e.attempt(r,y,g)(t)}function g(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),v}function v(t){return i>0&&Vb(t)?Qb(e,_,"linePrefix",i+1)(t):_(t)}function _(t){return null===t||Hb(t)?e.check(ky,m,y)(t):(e.enter("codeFlowValue"),b(t))}function b(t){return null===t||Hb(t)?(e.exit("codeFlowValue"),_(t)):(e.consume(t),b)}function y(n){return e.exit("codeFenced"),t(n)}function x(e,t,n){let r=0;return i;function i(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l}function l(t){return e.enter("codeFencedFence"),Vb(t)?Qb(e,c,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):c(t)}function c(t){return t===s?(e.enter("codeFencedFenceSequence"),u(t)):n(t)}function u(t){return t===s?(r++,e.consume(t),u):r>=a?(e.exit("codeFencedFenceSequence"),Vb(t)?Qb(e,d,"whitespace")(t):d(t)):n(t)}function d(o){return null===o||Hb(o)?(e.exit("codeFencedFence"),t(o)):n(o)}}}function Ty(e,t,n){const o=this;return r;function r(t){return null===t?n(t):(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),s)}function s(e){return o.parser.lazy[o.now().line]?n(e):t(e)}}const My={name:"codeIndented",tokenize:Ry},Ay={tokenize:Cy,partial:!0};function Ry(e,t,n){const o=this;return r;function r(t){return e.enter("codeIndented"),Qb(e,s,"linePrefix",5)(t)}function s(e){const t=o.events[o.events.length-1];return t&&"linePrefix"===t[1].type&&t[2].sliceSerialize(t[1],!0).length>=4?i(e):n(e)}function i(t){return null===t?l(t):Hb(t)?e.attempt(Ay,i,l)(t):(e.enter("codeFlowValue"),a(t))}function a(t){return null===t||Hb(t)?(e.exit("codeFlowValue"),i(t)):(e.consume(t),a)}function l(n){return e.exit("codeIndented"),t(n)}}function Cy(e,t,n){const o=this;return r;function r(t){return o.parser.lazy[o.now().line]?n(t):Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),r):Qb(e,s,"linePrefix",5)(t)}function s(e){const s=o.events[o.events.length-1];return s&&"linePrefix"===s[1].type&&s[2].sliceSerialize(s[1],!0).length>=4?t(e):Hb(e)?r(e):n(e)}}const Oy={name:"codeText",tokenize:Py,resolve:Iy,previous:By};function Iy(e){let t,n,o=e.length-4,r=3;if(("lineEnding"===e[r][1].type||"space"===e[r][1].type)&&("lineEnding"===e[o][1].type||"space"===e[o][1].type)){t=r;while(++t<o)if("codeTextData"===e[t][1].type){e[r][1].type="codeTextPadding",e[o][1].type="codeTextPadding",r+=2,o-=2;break}}t=r-1,o++;while(++t<=o)void 0===n?t!==o&&"lineEnding"!==e[t][1].type&&(n=t):t!==o&&"lineEnding"!==e[t][1].type||(e[n][1].type="codeTextData",t!==n+2&&(e[n][1].end=e[t-1][1].end,e.splice(n+2,t-n-2),o-=t-n-2,t=n+2),n=void 0);return e}function By(e){return 96!==e||"characterEscape"===this.events[this.events.length-1][1].type}function Py(e,t,n){let o,r,s=0;return i;function i(t){return e.enter("codeText"),e.enter("codeTextSequence"),a(t)}function a(t){return 96===t?(e.consume(t),s++,a):(e.exit("codeTextSequence"),l(t))}function l(t){return null===t?n(t):32===t?(e.enter("space"),e.consume(t),e.exit("space"),l):96===t?(r=e.enter("codeTextSequence"),o=0,u(t)):Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l):(e.enter("codeTextData"),c(t))}function c(t){return null===t||32===t||96===t||Hb(t)?(e.exit("codeTextData"),l(t)):(e.consume(t),c)}function u(n){return 96===n?(e.consume(n),o++,u):o===s?(e.exit("codeTextSequence"),e.exit("codeText"),t(n)):(r.type="codeTextData",c(n))}}function Ly(e){const t={};let n,o,r,s,i,a,l,c=-1;while(++c<e.length){while(c in t)c=t[c];if(n=e[c],c&&"chunkFlow"===n[1].type&&"listItemPrefix"===e[c-1][1].type&&(a=n[1]._tokenizer.events,r=0,r<a.length&&"lineEndingBlank"===a[r][1].type&&(r+=2),r<a.length&&"content"===a[r][1].type))while(++r<a.length){if("content"===a[r][1].type)break;"chunkText"===a[r][1].type&&(a[r][1]._isInFirstContentOfListItem=!0,r++)}if("enter"===n[0])n[1].contentType&&(Object.assign(t,jy(e,c)),c=t[c],l=!0);else if(n[1]._container){r=c,o=void 0;while(r--){if(s=e[r],"lineEnding"!==s[1].type&&"lineEndingBlank"!==s[1].type)break;"enter"===s[0]&&(o&&(e[o][1].type="lineEndingBlank"),s[1].type="lineEnding",o=r)}o&&(n[1].end=Object.assign({},e[o][1].start),i=e.slice(o,c),i.unshift(n),yb(e,o,c-o+1,i))}}return!l}function jy(e,t){const n=e[t][1],o=e[t][2];let r=t-1;const s=[],i=n._tokenizer||o.parser[n.contentType](n.start),a=i.events,l=[],c={};let u,d,f=-1,p=n,h=0,m=0;const g=[m];while(p){while(e[++r][1]!==p);s.push(r),p._tokenizer||(u=o.sliceStream(p),p.next||u.push(null),d&&i.defineSkip(p.start),p._isInFirstContentOfListItem&&(i._gfmTasklistFirstContentOfListItem=!0),i.write(u),p._isInFirstContentOfListItem&&(i._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}p=n;while(++f<a.length)"exit"===a[f][0]&&"enter"===a[f-1][0]&&a[f][1].type===a[f-1][1].type&&a[f][1].start.line!==a[f][1].end.line&&(m=f+1,g.push(m),p._tokenizer=void 0,p.previous=void 0,p=p.next);i.events=[],p?(p._tokenizer=void 0,p.previous=void 0):g.pop(),f=g.length;while(f--){const t=a.slice(g[f],g[f+1]),n=s.pop();l.unshift([n,n+t.length-1]),yb(e,n,2,t)}f=-1;while(++f<l.length)c[h+l[f][0]]=h+l[f][1],h+=l[f][1]-l[f][0]-1;return c}const Ny={tokenize:Hy,resolve:Dy},Fy={tokenize:Uy,partial:!0};function Dy(e){return Ly(e),e}function Hy(e,t){let n;return o;function o(t){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),r(t)}function r(t){return null===t?s(t):Hb(t)?e.check(Fy,i,s)(t):(e.consume(t),r)}function s(n){return e.exit("chunkContent"),e.exit("content"),t(n)}function i(t){return e.consume(t),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,r}}function Uy(e,t,n){const o=this;return r;function r(t){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),Qb(e,s,"linePrefix")}function s(r){if(null===r||Hb(r))return n(r);const s=o.events[o.events.length-1];return!o.parser.constructs.disable.null.includes("codeIndented")&&s&&"linePrefix"===s[1].type&&s[2].sliceSerialize(s[1],!0).length>=4?t(r):e.interrupt(o.parser.constructs.flow,n,t)(r)}}function Vy(e,t,n,o,r,s,i,a,l){const c=l||Number.POSITIVE_INFINITY;let u=0;return d;function d(t){return 60===t?(e.enter(o),e.enter(r),e.enter(s),e.consume(t),e.exit(s),f):null===t||32===t||41===t||jb(t)?n(t):(e.enter(o),e.enter(i),e.enter(a),e.enter("chunkString",{contentType:"string"}),m(t))}function f(n){return 62===n?(e.enter(s),e.consume(n),e.exit(s),e.exit(r),e.exit(o),t):(e.enter(a),e.enter("chunkString",{contentType:"string"}),p(n))}function p(t){return 62===t?(e.exit("chunkString"),e.exit(a),f(t)):null===t||60===t||Hb(t)?n(t):(e.consume(t),92===t?h:p)}function h(t){return 60===t||62===t||92===t?(e.consume(t),p):p(t)}function m(r){return u||null!==r&&41!==r&&!Ub(r)?u<c&&40===r?(e.consume(r),u++,m):41===r?(e.consume(r),u--,m):null===r||32===r||40===r||jb(r)?n(r):(e.consume(r),92===r?g:m):(e.exit("chunkString"),e.exit(a),e.exit(i),e.exit(o),t(r))}function g(t){return 40===t||41===t||92===t?(e.consume(t),m):m(t)}}function $y(e,t,n,o,r,s){const i=this;let a,l=0;return c;function c(t){return e.enter(o),e.enter(r),e.consume(t),e.exit(r),e.enter(s),u}function u(c){return l>999||null===c||91===c||93===c&&!a||94===c&&!l&&"_hiddenFootnoteSupport"in i.parser.constructs?n(c):93===c?(e.exit(s),e.enter(r),e.consume(c),e.exit(r),e.exit(o),t):Hb(c)?(e.enter("lineEnding"),e.consume(c),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),d(c))}function d(t){return null===t||91===t||93===t||Hb(t)||l++>999?(e.exit("chunkString"),u(t)):(e.consume(t),a||(a=!Vb(t)),92===t?f:d)}function f(t){return 91===t||92===t||93===t?(e.consume(t),l++,d):d(t)}}function zy(e,t,n,o,r,s){let i;return a;function a(t){return 34===t||39===t||40===t?(e.enter(o),e.enter(r),e.consume(t),e.exit(r),i=40===t?41:t,l):n(t)}function l(n){return n===i?(e.enter(r),e.consume(n),e.exit(r),e.exit(o),t):(e.enter(s),c(n))}function c(t){return t===i?(e.exit(s),l(i)):null===t?n(t):Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),Qb(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(t))}function u(t){return t===i||null===t||Hb(t)?(e.exit("chunkString"),c(t)):(e.consume(t),92===t?d:u)}function d(t){return t===i||92===t?(e.consume(t),u):u(t)}}function qy(e,t){let n;return o;function o(r){return Hb(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),n=!0,o):Vb(r)?Qb(e,o,n?"linePrefix":"lineSuffix")(r):t(r)}}const Yy={name:"definition",tokenize:Xy},Gy={tokenize:Wy,partial:!0};function Xy(e,t,n){const o=this;let r;return s;function s(t){return e.enter("definition"),i(t)}function i(t){return $y.call(o,e,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)}function a(t){return r=Ob(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),l):n(t)}function l(t){return Ub(t)?qy(e,c)(t):c(t)}function c(t){return Vy(e,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(t)}function u(t){return e.attempt(Gy,d,d)(t)}function d(t){return Vb(t)?Qb(e,f,"whitespace")(t):f(t)}function f(s){return null===s||Hb(s)?(e.exit("definition"),o.parser.defined.push(r),t(s)):n(s)}}function Wy(e,t,n){return o;function o(t){return Ub(t)?qy(e,r)(t):n(t)}function r(t){return zy(e,s,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t)}function s(t){return Vb(t)?Qb(e,i,"whitespace")(t):i(t)}function i(e){return null===e||Hb(e)?t(e):n(e)}}const Ky={name:"hardBreakEscape",tokenize:Zy};function Zy(e,t,n){return o;function o(t){return e.enter("hardBreakEscape"),e.consume(t),r}function r(o){return Hb(o)?(e.exit("hardBreakEscape"),t(o)):n(o)}}const Qy={name:"headingAtx",tokenize:ex,resolve:Jy};function Jy(e,t){let n,o,r=e.length-2,s=3;return"whitespace"===e[s][1].type&&(s+=2),r-2>s&&"whitespace"===e[r][1].type&&(r-=2),"atxHeadingSequence"===e[r][1].type&&(s===r-1||r-4>s&&"whitespace"===e[r-2][1].type)&&(r-=s+1===r?2:4),r>s&&(n={type:"atxHeadingText",start:e[s][1].start,end:e[r][1].end},o={type:"chunkText",start:e[s][1].start,end:e[r][1].end,contentType:"text"},yb(e,s,r-s+1,[["enter",n,t],["enter",o,t],["exit",o,t],["exit",n,t]])),e}function ex(e,t,n){let o=0;return r;function r(t){return e.enter("atxHeading"),s(t)}function s(t){return e.enter("atxHeadingSequence"),i(t)}function i(t){return 35===t&&o++<6?(e.consume(t),i):null===t||Ub(t)?(e.exit("atxHeadingSequence"),a(t)):n(t)}function a(n){return 35===n?(e.enter("atxHeadingSequence"),l(n)):null===n||Hb(n)?(e.exit("atxHeading"),t(n)):Vb(n)?Qb(e,a,"whitespace")(n):(e.enter("atxHeadingText"),c(n))}function l(t){return 35===t?(e.consume(t),l):(e.exit("atxHeadingSequence"),a(t))}function c(t){return null===t||35===t||Ub(t)?(e.exit("atxHeadingText"),a(t)):(e.consume(t),c)}}const tx=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],nx=["pre","script","style","textarea"],ox={name:"htmlFlow",tokenize:ax,resolveTo:ix,concrete:!0},rx={tokenize:cx,partial:!0},sx={tokenize:lx,partial:!0};function ix(e){let t=e.length;while(t--)if("enter"===e[t][0]&&"htmlFlow"===e[t][1].type)break;return t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function ax(e,t,n){const o=this;let r,s,i,a,l;return c;function c(e){return u(e)}function u(t){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(t),d}function d(a){return 33===a?(e.consume(a),f):47===a?(e.consume(a),s=!0,m):63===a?(e.consume(a),r=3,o.interrupt?t:j):Bb(a)?(e.consume(a),i=String.fromCharCode(a),g):n(a)}function f(s){return 45===s?(e.consume(s),r=2,p):91===s?(e.consume(s),r=5,a=0,h):Bb(s)?(e.consume(s),r=4,o.interrupt?t:j):n(s)}function p(r){return 45===r?(e.consume(r),o.interrupt?t:j):n(r)}function h(r){const s="CDATA[";return r===s.charCodeAt(a++)?(e.consume(r),a===s.length?o.interrupt?t:A:h):n(r)}function m(t){return Bb(t)?(e.consume(t),i=String.fromCharCode(t),g):n(t)}function g(a){if(null===a||47===a||62===a||Ub(a)){const l=47===a,c=i.toLowerCase();return l||s||!nx.includes(c)?tx.includes(i.toLowerCase())?(r=6,l?(e.consume(a),v):o.interrupt?t(a):A(a)):(r=7,o.interrupt&&!o.parser.lazy[o.now().line]?n(a):s?_(a):b(a)):(r=1,o.interrupt?t(a):A(a))}return 45===a||Pb(a)?(e.consume(a),i+=String.fromCharCode(a),g):n(a)}function v(r){return 62===r?(e.consume(r),o.interrupt?t:A):n(r)}function _(t){return Vb(t)?(e.consume(t),_):T(t)}function b(t){return 47===t?(e.consume(t),T):58===t||95===t||Bb(t)?(e.consume(t),y):Vb(t)?(e.consume(t),b):T(t)}function y(t){return 45===t||46===t||58===t||95===t||Pb(t)?(e.consume(t),y):x(t)}function x(t){return 61===t?(e.consume(t),w):Vb(t)?(e.consume(t),x):b(t)}function w(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),l=t,k):Vb(t)?(e.consume(t),w):S(t)}function k(t){return t===l?(e.consume(t),l=null,E):null===t||Hb(t)?n(t):(e.consume(t),k)}function S(t){return null===t||34===t||39===t||47===t||60===t||61===t||62===t||96===t||Ub(t)?x(t):(e.consume(t),S)}function E(e){return 47===e||62===e||Vb(e)?b(e):n(e)}function T(t){return 62===t?(e.consume(t),M):n(t)}function M(t){return null===t||Hb(t)?A(t):Vb(t)?(e.consume(t),M):n(t)}function A(t){return 45===t&&2===r?(e.consume(t),I):60===t&&1===r?(e.consume(t),B):62===t&&4===r?(e.consume(t),N):63===t&&3===r?(e.consume(t),j):93===t&&5===r?(e.consume(t),L):!Hb(t)||6!==r&&7!==r?null===t||Hb(t)?(e.exit("htmlFlowData"),R(t)):(e.consume(t),A):(e.exit("htmlFlowData"),e.check(rx,F,R)(t))}function R(t){return e.check(sx,C,F)(t)}function C(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),O}function O(t){return null===t||Hb(t)?R(t):(e.enter("htmlFlowData"),A(t))}function I(t){return 45===t?(e.consume(t),j):A(t)}function B(t){return 47===t?(e.consume(t),i="",P):A(t)}function P(t){if(62===t){const n=i.toLowerCase();return nx.includes(n)?(e.consume(t),N):A(t)}return Bb(t)&&i.length<8?(e.consume(t),i+=String.fromCharCode(t),P):A(t)}function L(t){return 93===t?(e.consume(t),j):A(t)}function j(t){return 62===t?(e.consume(t),N):45===t&&2===r?(e.consume(t),j):A(t)}function N(t){return null===t||Hb(t)?(e.exit("htmlFlowData"),F(t)):(e.consume(t),N)}function F(n){return e.exit("htmlFlow"),t(n)}}function lx(e,t,n){const o=this;return r;function r(t){return Hb(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),s):n(t)}function s(e){return o.parser.lazy[o.now().line]?n(e):t(e)}}function cx(e,t,n){return o;function o(o){return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),e.attempt(py,t,n)}}const ux={name:"htmlText",tokenize:dx};function dx(e,t,n){const o=this;let r,s,i;return a;function a(t){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(t),l}function l(t){return 33===t?(e.consume(t),c):47===t?(e.consume(t),x):63===t?(e.consume(t),b):Bb(t)?(e.consume(t),S):n(t)}function c(t){return 45===t?(e.consume(t),u):91===t?(e.consume(t),s=0,h):Bb(t)?(e.consume(t),_):n(t)}function u(t){return 45===t?(e.consume(t),p):n(t)}function d(t){return null===t?n(t):45===t?(e.consume(t),f):Hb(t)?(i=d,B(t)):(e.consume(t),d)}function f(t){return 45===t?(e.consume(t),p):d(t)}function p(e){return 62===e?I(e):45===e?f(e):d(e)}function h(t){const o="CDATA[";return t===o.charCodeAt(s++)?(e.consume(t),s===o.length?m:h):n(t)}function m(t){return null===t?n(t):93===t?(e.consume(t),g):Hb(t)?(i=m,B(t)):(e.consume(t),m)}function g(t){return 93===t?(e.consume(t),v):m(t)}function v(t){return 62===t?I(t):93===t?(e.consume(t),v):m(t)}function _(t){return null===t||62===t?I(t):Hb(t)?(i=_,B(t)):(e.consume(t),_)}function b(t){return null===t?n(t):63===t?(e.consume(t),y):Hb(t)?(i=b,B(t)):(e.consume(t),b)}function y(e){return 62===e?I(e):b(e)}function x(t){return Bb(t)?(e.consume(t),w):n(t)}function w(t){return 45===t||Pb(t)?(e.consume(t),w):k(t)}function k(t){return Hb(t)?(i=k,B(t)):Vb(t)?(e.consume(t),k):I(t)}function S(t){return 45===t||Pb(t)?(e.consume(t),S):47===t||62===t||Ub(t)?E(t):n(t)}function E(t){return 47===t?(e.consume(t),I):58===t||95===t||Bb(t)?(e.consume(t),T):Hb(t)?(i=E,B(t)):Vb(t)?(e.consume(t),E):I(t)}function T(t){return 45===t||46===t||58===t||95===t||Pb(t)?(e.consume(t),T):M(t)}function M(t){return 61===t?(e.consume(t),A):Hb(t)?(i=M,B(t)):Vb(t)?(e.consume(t),M):E(t)}function A(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),r=t,R):Hb(t)?(i=A,B(t)):Vb(t)?(e.consume(t),A):(e.consume(t),C)}function R(t){return t===r?(e.consume(t),r=void 0,O):null===t?n(t):Hb(t)?(i=R,B(t)):(e.consume(t),R)}function C(t){return null===t||34===t||39===t||60===t||61===t||96===t?n(t):47===t||62===t||Ub(t)?E(t):(e.consume(t),C)}function O(e){return 47===e||62===e||Ub(e)?E(e):n(e)}function I(o){return 62===o?(e.consume(o),e.exit("htmlTextData"),e.exit("htmlText"),t):n(o)}function B(t){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),P}function P(t){return Vb(t)?Qb(e,L,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):L(t)}function L(t){return e.enter("htmlTextData"),i(t)}}const fx={name:"labelEnd",tokenize:_x,resolveTo:vx,resolveAll:gx},px={tokenize:bx},hx={tokenize:yx},mx={tokenize:xx};function gx(e){let t=-1;while(++t<e.length){const n=e[t][1];"labelImage"!==n.type&&"labelLink"!==n.type&&"labelEnd"!==n.type||(e.splice(t+1,"labelImage"===n.type?4:2),n.type="data",t++)}return e}function vx(e,t){let n,o,r,s,i=e.length,a=0;while(i--)if(n=e[i][1],o){if("link"===n.type||"labelLink"===n.type&&n._inactive)break;"enter"===e[i][0]&&"labelLink"===n.type&&(n._inactive=!0)}else if(r){if("enter"===e[i][0]&&("labelImage"===n.type||"labelLink"===n.type)&&!n._balanced&&(o=i,"labelLink"!==n.type)){a=2;break}}else"labelEnd"===n.type&&(r=i);const l={type:"labelLink"===e[o][1].type?"link":"image",start:Object.assign({},e[o][1].start),end:Object.assign({},e[e.length-1][1].end)},c={type:"label",start:Object.assign({},e[o][1].start),end:Object.assign({},e[r][1].end)},u={type:"labelText",start:Object.assign({},e[o+a+2][1].end),end:Object.assign({},e[r-2][1].start)};return s=[["enter",l,t],["enter",c,t]],s=xb(s,e.slice(o+1,o+a+3)),s=xb(s,[["enter",u,t]]),s=xb(s,iy(t.parser.constructs.insideSpan.null,e.slice(o+a+4,r-3),t)),s=xb(s,[["exit",u,t],e[r-2],e[r-1],["exit",c,t]]),s=xb(s,e.slice(r+1)),s=xb(s,[["exit",l,t]]),yb(e,o,e.length,s),e}function _x(e,t,n){const o=this;let r,s,i=o.events.length;while(i--)if(("labelImage"===o.events[i][1].type||"labelLink"===o.events[i][1].type)&&!o.events[i][1]._balanced){r=o.events[i][1];break}return a;function a(t){return r?r._inactive?d(t):(s=o.parser.defined.includes(Ob(o.sliceSerialize({start:r.end,end:o.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelEnd"),l):n(t)}function l(t){return 40===t?e.attempt(px,u,s?u:d)(t):91===t?e.attempt(hx,u,s?c:d)(t):s?u(t):d(t)}function c(t){return e.attempt(mx,u,d)(t)}function u(e){return t(e)}function d(e){return r._balanced=!0,n(e)}}function bx(e,t,n){return o;function o(t){return e.enter("resource"),e.enter("resourceMarker"),e.consume(t),e.exit("resourceMarker"),r}function r(t){return Ub(t)?qy(e,s)(t):s(t)}function s(t){return 41===t?u(t):Vy(e,i,a,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(t)}function i(t){return Ub(t)?qy(e,l)(t):u(t)}function a(e){return n(e)}function l(t){return 34===t||39===t||40===t?zy(e,c,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(t):u(t)}function c(t){return Ub(t)?qy(e,u)(t):u(t)}function u(o){return 41===o?(e.enter("resourceMarker"),e.consume(o),e.exit("resourceMarker"),e.exit("resource"),t):n(o)}}function yx(e,t,n){const o=this;return r;function r(t){return $y.call(o,e,s,i,"reference","referenceMarker","referenceString")(t)}function s(e){return o.parser.defined.includes(Ob(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function i(e){return n(e)}}function xx(e,t,n){return o;function o(t){return e.enter("reference"),e.enter("referenceMarker"),e.consume(t),e.exit("referenceMarker"),r}function r(o){return 93===o?(e.enter("referenceMarker"),e.consume(o),e.exit("referenceMarker"),e.exit("reference"),t):n(o)}}const wx={name:"labelStartImage",tokenize:kx,resolveAll:fx.resolveAll};function kx(e,t,n){const o=this;return r;function r(t){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(t),e.exit("labelImageMarker"),s}function s(t){return 91===t?(e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelImage"),i):n(t)}function i(e){return 94===e&&"_hiddenFootnoteSupport"in o.parser.constructs?n(e):t(e)}}const Sx={name:"labelStartLink",tokenize:Ex,resolveAll:fx.resolveAll};function Ex(e,t,n){const o=this;return r;function r(t){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelLink"),s}function s(e){return 94===e&&"_hiddenFootnoteSupport"in o.parser.constructs?n(e):t(e)}}const Tx={name:"lineEnding",tokenize:Mx};function Mx(e,t){return n;function n(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),Qb(e,t,"linePrefix")}}const Ax={name:"thematicBreak",tokenize:Rx};function Rx(e,t,n){let o,r=0;return s;function s(t){return e.enter("thematicBreak"),i(t)}function i(e){return o=e,a(e)}function a(s){return s===o?(e.enter("thematicBreakSequence"),l(s)):r>=3&&(null===s||Hb(s))?(e.exit("thematicBreak"),t(s)):n(s)}function l(t){return t===o?(e.consume(t),r++,l):(e.exit("thematicBreakSequence"),Vb(t)?Qb(e,a,"whitespace")(t):a(t))}}const Cx={name:"list",tokenize:Bx,continuation:{tokenize:Px},exit:jx},Ox={tokenize:Nx,partial:!0},Ix={tokenize:Lx,partial:!0};function Bx(e,t,n){const o=this,r=o.events[o.events.length-1];let s=r&&"linePrefix"===r[1].type?r[2].sliceSerialize(r[1],!0).length:0,i=0;return a;function a(t){const r=o.containerState.type||(42===t||43===t||45===t?"listUnordered":"listOrdered");if("listUnordered"===r?!o.containerState.marker||t===o.containerState.marker:Nb(t)){if(o.containerState.type||(o.containerState.type=r,e.enter(r,{_container:!0})),"listUnordered"===r)return e.enter("listItemPrefix"),42===t||45===t?e.check(Ax,n,c)(t):c(t);if(!o.interrupt||49===t)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(t)}return n(t)}function l(t){return Nb(t)&&++i<10?(e.consume(t),l):(!o.interrupt||i<2)&&(o.containerState.marker?t===o.containerState.marker:41===t||46===t)?(e.exit("listItemValue"),c(t)):n(t)}function c(t){return e.enter("listItemMarker"),e.consume(t),e.exit("listItemMarker"),o.containerState.marker=o.containerState.marker||t,e.check(py,o.interrupt?n:u,e.attempt(Ox,f,d))}function u(e){return o.containerState.initialBlankLine=!0,s++,f(e)}function d(t){return Vb(t)?(e.enter("listItemPrefixWhitespace"),e.consume(t),e.exit("listItemPrefixWhitespace"),f):n(t)}function f(n){return o.containerState.size=s+o.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(n)}}function Px(e,t,n){const o=this;return o.containerState._closeFlow=void 0,e.check(py,r,s);function r(n){return o.containerState.furtherBlankLines=o.containerState.furtherBlankLines||o.containerState.initialBlankLine,Qb(e,t,"listItemIndent",o.containerState.size+1)(n)}function s(n){return o.containerState.furtherBlankLines||!Vb(n)?(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,i(n)):(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,e.attempt(Ix,t,i)(n))}function i(r){return o.containerState._closeFlow=!0,o.interrupt=void 0,Qb(e,e.attempt(Cx,t,n),"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(r)}}function Lx(e,t,n){const o=this;return Qb(e,r,"listItemIndent",o.containerState.size+1);function r(e){const r=o.events[o.events.length-1];return r&&"listItemIndent"===r[1].type&&r[2].sliceSerialize(r[1],!0).length===o.containerState.size?t(e):n(e)}}function jx(e){e.exit(this.containerState.type)}function Nx(e,t,n){const o=this;return Qb(e,r,"listItemPrefixWhitespace",o.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(e){const r=o.events[o.events.length-1];return!Vb(e)&&r&&"listItemPrefixWhitespace"===r[1].type?t(e):n(e)}}const Fx={name:"setextUnderline",tokenize:Hx,resolveTo:Dx};function Dx(e,t){let n,o,r,s=e.length;while(s--)if("enter"===e[s][0]){if("content"===e[s][1].type){n=s;break}"paragraph"===e[s][1].type&&(o=s)}else"content"===e[s][1].type&&e.splice(s,1),r||"definition"!==e[s][1].type||(r=s);const i={type:"setextHeading",start:Object.assign({},e[o][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[o][1].type="setextHeadingText",r?(e.splice(o,0,["enter",i,t]),e.splice(r+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[r][1].end)):e[n][1]=i,e.push(["exit",i,t]),e}function Hx(e,t,n){const o=this;let r;return s;function s(t){let s,a=o.events.length;while(a--)if("lineEnding"!==o.events[a][1].type&&"linePrefix"!==o.events[a][1].type&&"content"!==o.events[a][1].type){s="paragraph"===o.events[a][1].type;break}return o.parser.lazy[o.now().line]||!o.interrupt&&!s?n(t):(e.enter("setextHeadingLine"),r=t,i(t))}function i(t){return e.enter("setextHeadingLineSequence"),a(t)}function a(t){return t===r?(e.consume(t),a):(e.exit("setextHeadingLineSequence"),Vb(t)?Qb(e,l,"lineSuffix")(t):l(t))}function l(o){return null===o||Hb(o)?(e.exit("setextHeadingLine"),t(o)):n(o)}}const Ux={tokenize:Vx};function Vx(e){const t=this,n=e.attempt(py,o,e.attempt(this.parser.constructs.flowInitial,r,Qb(e,e.attempt(this.parser.constructs.flow,r,e.attempt(Ny,r)),"linePrefix")));return n;function o(o){if(null!==o)return e.enter("lineEndingBlank"),e.consume(o),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n;e.consume(o)}function r(o){if(null!==o)return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),t.currentConstruct=void 0,n;e.consume(o)}}const $x={resolveAll:Gx()},zx=Yx("string"),qx=Yx("text");function Yx(e){return{tokenize:t,resolveAll:Gx("text"===e?Xx:void 0)};function t(t){const n=this,o=this.parser.constructs[e],r=t.attempt(o,s,i);return s;function s(e){return l(e)?r(e):i(e)}function i(e){if(null!==e)return t.enter("data"),t.consume(e),a;t.consume(e)}function a(e){return l(e)?(t.exit("data"),r(e)):(t.consume(e),a)}function l(e){if(null===e)return!0;const t=o[e];let r=-1;if(t)while(++r<t.length){const e=t[r];if(!e.previous||e.previous.call(n,n.previous))return!0}return!1}}}function Gx(e){return t;function t(t,n){let o,r=-1;while(++r<=t.length)void 0===o?t[r]&&"data"===t[r][1].type&&(o=r,r++):t[r]&&"data"===t[r][1].type||(r!==o+2&&(t[o][1].end=t[r-1][1].end,t.splice(o+2,r-o-2),r=o+2),o=void 0);return e?e(t,n):t}}function Xx(e,t){let n=0;while(++n<=e.length)if((n===e.length||"lineEnding"===e[n][1].type)&&"data"===e[n-1][1].type){const o=e[n-1][1],r=t.sliceStream(o);let s,i=r.length,a=-1,l=0;while(i--){const e=r[i];if("string"===typeof e){a=e.length;while(32===e.charCodeAt(a-1))l++,a--;if(a)break;a=-1}else if(-2===e)s=!0,l++;else if(-1!==e){i++;break}}if(l){const r={type:n===e.length||s||l<2?"lineSuffix":"hardBreakTrailing",start:{line:o.end.line,column:o.end.column-l,offset:o.end.offset-l,_index:o.start._index+i,_bufferIndex:i?a:o.start._bufferIndex+a},end:Object.assign({},o.end)};o.end=Object.assign({},r.start),o.start.offset===o.end.offset?Object.assign(o,r):(e.splice(n,0,["enter",r,t],["exit",r,t]),n+=2)}n++}return e}function Wx(e,t,n){let o=Object.assign(n?Object.assign({},n):{line:1,column:1,offset:0},{_index:0,_bufferIndex:-1});const r={},s=[];let i=[],a=[];const l={consume:_,enter:b,exit:y,attempt:k(x),check:k(w),interrupt:k(w,{interrupt:!0})},c={previous:null,code:null,containerState:{},events:[],parser:e,sliceStream:p,sliceSerialize:f,now:h,defineSkip:m,write:d};let u=t.tokenize.call(c,l);return t.resolveAll&&s.push(t),c;function d(e){return i=xb(i,e),g(),null!==i[i.length-1]?[]:(S(t,0),c.events=iy(s,c.events,c),c.events)}function f(e,t){return Zx(p(e),t)}function p(e){return Kx(i,e)}function h(){const{line:e,column:t,offset:n,_index:r,_bufferIndex:s}=o;return{line:e,column:t,offset:n,_index:r,_bufferIndex:s}}function m(e){r[e.line]=e.column,T()}function g(){let e;while(o._index<i.length){const t=i[o._index];if("string"===typeof t){e=o._index,o._bufferIndex<0&&(o._bufferIndex=0);while(o._index===e&&o._bufferIndex<t.length)v(t.charCodeAt(o._bufferIndex))}else v(t)}}function v(e){u=u(e)}function _(e){Hb(e)?(o.line++,o.column=1,o.offset+=-3===e?2:1,T()):-1!==e&&(o.column++,o.offset++),o._bufferIndex<0?o._index++:(o._bufferIndex++,o._bufferIndex===i[o._index].length&&(o._bufferIndex=-1,o._index++)),c.previous=e}function b(e,t){const n=t||{};return n.type=e,n.start=h(),c.events.push(["enter",n,c]),a.push(n),n}function y(e){const t=a.pop();return t.end=h(),c.events.push(["exit",t,c]),t}function x(e,t){S(e,t.from)}function w(e,t){t.restore()}function k(e,t){return n;function n(n,o,r){let s,i,a,u;return Array.isArray(n)?f(n):"tokenize"in n?f([n]):d(n);function d(e){return t;function t(t){const n=null!==t&&e[t],o=null!==t&&e.null,r=[...Array.isArray(n)?n:n?[n]:[],...Array.isArray(o)?o:o?[o]:[]];return f(r)(t)}}function f(e){return s=e,i=0,0===e.length?r:p(e[i])}function p(e){return n;function n(n){return u=E(),a=e,e.partial||(c.currentConstruct=e),e.name&&c.parser.constructs.disable.null.includes(e.name)?m():e.tokenize.call(t?Object.assign(Object.create(c),t):c,l,h,m)(n)}}function h(t){return e(a,u),o}function m(e){return u.restore(),++i<s.length?p(s[i]):r}}}function S(e,t){e.resolveAll&&!s.includes(e)&&s.push(e),e.resolve&&yb(c.events,t,c.events.length-t,e.resolve(c.events.slice(t),c)),e.resolveTo&&(c.events=e.resolveTo(c.events,c))}function E(){const e=h(),t=c.previous,n=c.currentConstruct,r=c.events.length,s=Array.from(a);return{restore:i,from:r};function i(){o=e,c.previous=t,c.currentConstruct=n,c.events.length=r,a=s,T()}}function T(){o.line in r&&o.column<2&&(o.column=r[o.line],o.offset+=r[o.line]-1)}}function Kx(e,t){const n=t.start._index,o=t.start._bufferIndex,r=t.end._index,s=t.end._bufferIndex;let i;if(n===r)i=[e[n].slice(o,s)];else{if(i=e.slice(n,r),o>-1){const e=i[0];"string"===typeof e?i[0]=e.slice(o):i.shift()}s>0&&i.push(e[r].slice(0,s))}return i}function Zx(e,t){let n=-1;const o=[];let r;while(++n<e.length){const s=e[n];let i;if("string"===typeof s)i=s;else switch(s){case-5:i="\r";break;case-4:i="\n";break;case-3:i="\r\n";break;case-2:i=t?" ":"\t";break;case-1:if(!t&&r)continue;i=" ";break;default:i=String.fromCharCode(s)}r=-2===s,o.push(i)}return o.join("")}const Qx={[42]:Cx,[43]:Cx,[45]:Cx,[48]:Cx,[49]:Cx,[50]:Cx,[51]:Cx,[52]:Cx,[53]:Cx,[54]:Cx,[55]:Cx,[56]:Cx,[57]:Cx,[62]:my},Jx={[91]:Yy},ew={[-2]:My,[-1]:My,[32]:My},tw={[35]:Qy,[42]:Ax,[45]:[Fx,Ax],[60]:ox,[61]:Fx,[95]:Ax,[96]:Sy,[126]:Sy},nw={[38]:xy,[92]:by},ow={[-5]:Tx,[-4]:Tx,[-3]:Tx,[33]:wx,[38]:xy,[42]:ay,[60]:[dy,ux],[91]:Sx,[92]:[Ky,by],[93]:fx,[95]:ay,[96]:Oy},rw={null:[ay,$x]},sw={null:[42,95]},iw={null:[]};var aw=Object.freeze(Object.defineProperty({__proto__:null,document:Qx,contentInitial:Jx,flowInitial:ew,flow:tw,string:nw,text:ow,insideSpan:rw,attentionMarkers:sw,disable:iw},Symbol.toStringTag,{value:"Module"}));function lw(e){const t=e||{},n=kb([aw,...t.extensions||[]]),o={defined:[],lazy:{},constructs:n,content:r(Jb),document:r(ty),flow:r(Ux),string:r(zx),text:r(qx)};return o;function r(e){return t;function t(t){return Wx(o,e,t)}}}function cw(e){while(!Ly(e));return e}const uw=/[\0\t\n\r]/g;function dw(){let e,t=1,n="",o=!0;return r;function r(r,s,i){const a=[];let l,c,u,d,f;r=n+r.toString(s),u=0,n="",o&&(65279===r.charCodeAt(0)&&u++,o=void 0);while(u<r.length){if(uw.lastIndex=u,l=uw.exec(r),d=l&&void 0!==l.index?l.index:r.length,f=r.charCodeAt(d),!l){n=r.slice(u);break}if(10===f&&u===d&&e)a.push(-3),e=void 0;else switch(e&&(a.push(-5),e=void 0),u<d&&(a.push(r.slice(u,d)),t+=d-u),f){case 0:a.push(65533),t++;break;case 9:c=4*Math.ceil(t/4),a.push(-2);while(t++<c)a.push(-1);break;case 10:a.push(-4),t=1;break;default:e=!0,t=1}u=d+1}return i&&(e&&a.push(-5),n&&a.push(n),a.push(null)),a}}function fw(e,t,n){return"string"!==typeof t&&(n=t,t=void 0),Zb(n)(cw(lw(n).document().write(dw()(e,t,!0))))}const pw={tokenize:Mw,partial:!0},hw={tokenize:Aw,partial:!0},mw={tokenize:Rw,partial:!0},gw={tokenize:Cw,partial:!0},vw={tokenize:Ow,partial:!0},_w={tokenize:Ew,previous:Iw},bw={tokenize:Tw,previous:Bw},yw={tokenize:Sw,previous:Pw},xw={},ww={text:xw};let kw=48;while(kw<123)xw[kw]=yw,kw++,58===kw?kw=65:91===kw&&(kw=97);function Sw(e,t,n){const o=this;let r,s;return i;function i(t){return Lw(t)&&Pw.call(o,o.previous)&&!jw(o.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),a(t)):n(t)}function a(t){return Lw(t)?(e.consume(t),a):64===t?(e.consume(t),l):n(t)}function l(t){return 46===t?e.check(vw,u,c)(t):45===t||95===t||Pb(t)?(s=!0,e.consume(t),l):u(t)}function c(t){return e.consume(t),r=!0,l}function u(i){return s&&r&&Bb(o.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(i)):n(i)}}function Ew(e,t,n){const o=this;return r;function r(t){return 87!==t&&119!==t||!Iw.call(o,o.previous)||jw(o.events)?n(t):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(pw,e.attempt(hw,e.attempt(mw,s),n),n)(t))}function s(n){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(n)}}function Tw(e,t,n){const o=this;let r="",s=!1;return i;function i(t){return 72!==t&&104!==t||!Bw.call(o,o.previous)||jw(o.events)?n(t):(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),r+=String.fromCodePoint(t),e.consume(t),a)}function a(t){if(Bb(t)&&r.length<5)return r+=String.fromCodePoint(t),e.consume(t),a;if(58===t){const n=r.toLowerCase();if("http"===n||"https"===n)return e.consume(t),l}return n(t)}function l(t){return 47===t?(e.consume(t),s?c:(s=!0,l)):n(t)}function c(t){return null===t||jb(t)||Ub(t)||zb(t)||$b(t)?n(t):e.attempt(hw,e.attempt(mw,u),n)(t)}function u(n){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(n)}}function Mw(e,t,n){let o=0;return r;function r(t){return(87===t||119===t)&&o<3?(o++,e.consume(t),r):46===t&&3===o?(e.consume(t),s):n(t)}function s(e){return null===e?n(e):t(e)}}function Aw(e,t,n){let o,r,s;return i;function i(t){return 46===t||95===t?e.check(gw,l,a)(t):null===t||Ub(t)||zb(t)||45!==t&&$b(t)?l(t):(s=!0,e.consume(t),i)}function a(t){return 95===t?o=!0:(r=o,o=void 0),e.consume(t),i}function l(e){return r||o||!s?n(e):t(e)}}function Rw(e,t){let n=0,o=0;return r;function r(i){return 40===i?(n++,e.consume(i),r):41===i&&o<n?s(i):33===i||34===i||38===i||39===i||41===i||42===i||44===i||46===i||58===i||59===i||60===i||63===i||93===i||95===i||126===i?e.check(gw,t,s)(i):null===i||Ub(i)||zb(i)?t(i):(e.consume(i),r)}function s(t){return 41===t&&o++,e.consume(t),r}}function Cw(e,t,n){return o;function o(i){return 33===i||34===i||39===i||41===i||42===i||44===i||46===i||58===i||59===i||63===i||95===i||126===i?(e.consume(i),o):38===i?(e.consume(i),s):93===i?(e.consume(i),r):60===i||null===i||Ub(i)||zb(i)?t(i):n(i)}function r(e){return null===e||40===e||91===e||Ub(e)||zb(e)?t(e):o(e)}function s(e){return Bb(e)?i(e):n(e)}function i(t){return 59===t?(e.consume(t),o):Bb(t)?(e.consume(t),i):n(t)}}function Ow(e,t,n){return o;function o(t){return e.consume(t),r}function r(e){return Pb(e)?n(e):t(e)}}function Iw(e){return null===e||40===e||42===e||95===e||91===e||93===e||126===e||Ub(e)}function Bw(e){return!Bb(e)}function Pw(e){return!(47===e||Lw(e))}function Lw(e){return 43===e||45===e||46===e||95===e||Pb(e)}function jw(e){let t=e.length,n=!1;while(t--){const o=e[t][1];if(("labelLink"===o.type||"labelImage"===o.type)&&!o._balanced){n=!0;break}if(o._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}xw[43]=yw,xw[45]=yw,xw[46]=yw,xw[95]=yw,xw[72]=[yw,bw],xw[104]=[yw,bw],xw[87]=[yw,_w],xw[119]=[yw,_w];const Nw={exit:{literalAutolinkEmail:Dw,literalAutolinkHttp:Hw,literalAutolinkWww:Fw}};function Fw(e){Uw.call(this,e,"http://")}function Dw(e){Uw.call(this,e,"mailto:")}function Hw(e){Uw.call(this,e)}function Uw(e,t){const n=this.sliceSerialize(e);this.tag('<a href="'+Yb((t||"")+n)+'">'),this.raw(this.encode(n)),this.tag("</a>")}const Vw={tokenize:Kw,partial:!0};function $w(){return{document:{[91]:{tokenize:Gw,continuation:{tokenize:Xw},exit:Ww}},text:{[91]:{tokenize:Yw},[93]:{add:"after",tokenize:zw,resolveTo:qw}}}}function zw(e,t,n){const o=this;let r=o.events.length;const s=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let i;while(r--){const e=o.events[r][1];if("labelImage"===e.type){i=e;break}if("gfmFootnoteCall"===e.type||"labelLink"===e.type||"label"===e.type||"image"===e.type||"link"===e.type)break}return a;function a(r){if(!i||!i._balanced)return n(r);const a=Ob(o.sliceSerialize({start:i.end,end:o.now()}));return 94===a.codePointAt(0)&&s.includes(a.slice(1))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(r),e.exit("gfmFootnoteCallLabelMarker"),t(r)):n(r)}}function qw(e,t){let n=e.length;while(n--)if("labelImage"===e[n][1].type&&"enter"===e[n][0]){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const o={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},r={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};r.end.column++,r.end.offset++,r.end._bufferIndex++;const s={type:"gfmFootnoteCallString",start:Object.assign({},r.end),end:Object.assign({},e[e.length-1][1].start)},i={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},a=[e[n+1],e[n+2],["enter",o,t],e[n+3],e[n+4],["enter",r,t],["exit",r,t],["enter",s,t],["enter",i,t],["exit",i,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",o,t]];return e.splice(n,e.length-n+1,...a),e}function Yw(e,t,n){const o=this,r=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let s,i=0;return a;function a(t){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(t),e.exit("gfmFootnoteCallLabelMarker"),l}function l(t){return 94!==t?n(t):(e.enter("gfmFootnoteCallMarker"),e.consume(t),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(a){if(i>999||93===a&&!s||null===a||91===a||Ub(a))return n(a);if(93===a){e.exit("chunkString");const s=e.exit("gfmFootnoteCallString");return r.includes(Ob(o.sliceSerialize(s)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(a),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(a)}return Ub(a)||(s=!0),i++,e.consume(a),92===a?u:c}function u(t){return 91===t||92===t||93===t?(e.consume(t),i++,c):c(t)}}function Gw(e,t,n){const o=this,r=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let s,i,a=0;return l;function l(t){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(t),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(t){return 94===t?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(t),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",u):n(t)}function u(t){if(a>999||93===t&&!i||null===t||91===t||Ub(t))return n(t);if(93===t){e.exit("chunkString");const n=e.exit("gfmFootnoteDefinitionLabelString");return s=Ob(o.sliceSerialize(n)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(t),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),f}return Ub(t)||(i=!0),a++,e.consume(t),92===t?d:u}function d(t){return 91===t||92===t||93===t?(e.consume(t),a++,u):u(t)}function f(t){return 58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),r.includes(s)||r.push(s),Qb(e,p,"gfmFootnoteDefinitionWhitespace")):n(t)}function p(e){return t(e)}}function Xw(e,t,n){return e.check(py,t,e.attempt(Vw,t,n))}function Ww(e){e.exit("gfmFootnoteDefinition")}function Kw(e,t,n){const o=this;return Qb(e,r,"gfmFootnoteDefinitionIndent",5);function r(e){const r=o.events[o.events.length-1];return r&&"gfmFootnoteDefinitionIndent"===r[1].type&&4===r[2].sliceSerialize(r[1],!0).length?t(e):n(e)}}const Zw={}.hasOwnProperty,Qw={};function Jw(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function ek(e){const t=e||Qw,n=t.label||"Footnotes",o=t.labelTagName||"h2",r=null===t.labelAttributes||void 0===t.labelAttributes?'class="sr-only"':t.labelAttributes,s=t.backLabel||Jw,i=null===t.clobberPrefix||void 0===t.clobberPrefix?"user-content-":t.clobberPrefix;return{enter:{gfmFootnoteDefinition(){const e=this.getData("tightStack");e.push(!1)},gfmFootnoteDefinitionLabelString(){this.buffer()},gfmFootnoteCallString(){this.buffer()}},exit:{gfmFootnoteDefinition(){let e=this.getData("gfmFootnoteDefinitions");const t=this.getData("gfmFootnoteDefinitionStack"),n=this.getData("tightStack"),o=t.pop(),r=this.resume();e||this.setData("gfmFootnoteDefinitions",e={}),Zw.call(e,o)||(e[o]=r),n.pop(),this.setData("slurpOneLineEnding",!0),this.setData("lastWasTag")},gfmFootnoteDefinitionLabelString(e){let t=this.getData("gfmFootnoteDefinitionStack");t||this.setData("gfmFootnoteDefinitionStack",t=[]),t.push(Ob(this.sliceSerialize(e))),this.resume(),this.buffer()},gfmFootnoteCallString(e){let t=this.getData("gfmFootnoteCallOrder"),n=this.getData("gfmFootnoteCallCounts");const o=Ob(this.sliceSerialize(e));let r;this.resume(),t||this.setData("gfmFootnoteCallOrder",t=[]),n||this.setData("gfmFootnoteCallCounts",n={});const s=t.indexOf(o),a=Yb(o.toLowerCase());-1===s?(t.push(o),n[o]=1,r=t.length):(n[o]++,r=s+1);const l=n[o];this.tag('<sup><a href="#'+i+"fn-"+a+'" id="'+i+"fnref-"+a+(l>1?"-"+l:"")+'" data-footnote-ref="" aria-describedby="footnote-label">'+String(r)+"</a></sup>")},null(){const e=this.getData("gfmFootnoteCallOrder")||[],t=this.getData("gfmFootnoteCallCounts")||{},a=this.getData("gfmFootnoteDefinitions")||{};let l=-1;e.length>0&&(this.lineEndingIfNeeded(),this.tag('<section data-footnotes="" class="footnotes"><'+o+' id="footnote-label"'+(r?" "+r:"")+">"),this.raw(this.encode(n)),this.tag("</"+o+">"),this.lineEndingIfNeeded(),this.tag("<ol>"));while(++l<e.length){const n=e[l],o=Yb(n.toLowerCase());let r=0;const c=[];while(++r<=t[n])c.push('<a href="#'+i+"fnref-"+o+(r>1?"-"+r:"")+'" data-footnote-backref="" aria-label="'+this.encode("string"===typeof s?s:s(l,r))+'" class="data-footnote-backref">↩'+(r>1?"<sup>"+r+"</sup>":"")+"</a>");const u=c.join(" ");let d=!1;this.lineEndingIfNeeded(),this.tag('<li id="'+i+"fn-"+o+'">'),this.lineEndingIfNeeded(),this.tag(a[n].replace(/<\/p>(?:\r?\n|\r)?$/,(e=>(d=!0," "+u+e)))),d||(this.lineEndingIfNeeded(),this.tag(u)),this.lineEndingIfNeeded(),this.tag("</li>")}e.length>0&&(this.lineEndingIfNeeded(),this.tag("</ol>"),this.lineEndingIfNeeded(),this.tag("</section>"))}}}}const tk={enter:{strikethrough(){this.tag("<del>")}},exit:{strikethrough(){this.tag("</del>")}}};function nk(e){const t=e||{};let n=t.singleTilde;const o={tokenize:s,resolveAll:r};return null!==n&&void 0!==n||(n=!0),{text:{[126]:o},insideSpan:{null:[o]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;while(++n<e.length)if("enter"===e[n][0]&&"strikethroughSequenceTemporary"===e[n][1].type&&e[n][1]._close){let o=n;while(o--)if("exit"===e[o][0]&&"strikethroughSequenceTemporary"===e[o][1].type&&e[o][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[o][1].end.offset-e[o][1].start.offset){e[n][1].type="strikethroughSequence",e[o][1].type="strikethroughSequence";const r={type:"strikethrough",start:Object.assign({},e[o][1].start),end:Object.assign({},e[n][1].end)},s={type:"strikethroughText",start:Object.assign({},e[o][1].end),end:Object.assign({},e[n][1].start)},i=[["enter",r,t],["enter",e[o][1],t],["exit",e[o][1],t],["enter",s,t]],a=t.parser.constructs.insideSpan.null;a&&yb(i,i.length,0,iy(a,e.slice(o+1,n),t)),yb(i,i.length,0,[["exit",s,t],["enter",e[n][1],t],["exit",e[n][1],t],["exit",r,t]]),yb(e,o-1,n-o+3,i),n=o+i.length-2;break}}n=-1;while(++n<e.length)"strikethroughSequenceTemporary"===e[n][1].type&&(e[n][1].type="data");return e}function s(e,t,o){const r=this.previous,s=this.events;let i=0;return a;function a(t){return 126===r&&"characterEscape"!==s[s.length-1][1].type?o(t):(e.enter("strikethroughSequenceTemporary"),l(t))}function l(s){const a=sy(r);if(126===s)return i>1?o(s):(e.consume(s),i++,l);if(i<2&&!n)return o(s);const c=e.exit("strikethroughSequenceTemporary"),u=sy(s);return c._open=!u||2===u&&Boolean(a),c._close=!a||2===a&&Boolean(u),t(s)}}}const ok={none:"",left:' align="left"',right:' align="right"',center:' align="center"'},rk={enter:{table(e){const t=e._align;this.lineEndingIfNeeded(),this.tag("<table>"),this.setData("tableAlign",t)},tableBody(){this.tag("<tbody>")},tableData(){const e=this.getData("tableAlign"),t=this.getData("tableColumn"),n=ok[e[t]];void 0===n?this.buffer():(this.lineEndingIfNeeded(),this.tag("<td"+n+">"))},tableHead(){this.lineEndingIfNeeded(),this.tag("<thead>")},tableHeader(){const e=this.getData("tableAlign"),t=this.getData("tableColumn"),n=ok[e[t]];this.lineEndingIfNeeded(),this.tag("<th"+n+">")},tableRow(){this.setData("tableColumn",0),this.lineEndingIfNeeded(),this.tag("<tr>")}},exit:{codeTextData(e){let t=this.sliceSerialize(e);this.getData("tableAlign")&&(t=t.replace(/\\([\\|])/g,sk)),this.raw(this.encode(t))},table(){this.setData("tableAlign"),this.setData("slurpAllLineEndings"),this.lineEndingIfNeeded(),this.tag("</table>")},tableBody(){this.lineEndingIfNeeded(),this.tag("</tbody>")},tableData(){const e=this.getData("tableAlign"),t=this.getData("tableColumn");t in e?(this.tag("</td>"),this.setData("tableColumn",t+1)):this.resume()},tableHead(){this.lineEndingIfNeeded(),this.tag("</thead>")},tableHeader(){const e=this.getData("tableColumn");this.tag("</th>"),this.setData("tableColumn",e+1)},tableRow(){const e=this.getData("tableAlign");let t=this.getData("tableColumn");while(t<e.length)this.lineEndingIfNeeded(),this.tag("<td"+ok[e[t]]+"></td>"),t++;this.setData("tableColumn",t),this.lineEndingIfNeeded(),this.tag("</tr>")}}};function sk(e,t){return"|"===t?t:e}class ik{constructor(){this.map=[]}add(e,t,n){ak(this,e,t,n)}consume(e){if(this.map.sort(((e,t)=>e[0]-t[0])),0===this.map.length)return;let t=this.map.length;const n=[];while(t>0)t-=1,n.push(e.slice(this.map[t][0]+this.map[t][1])),n.push(this.map[t][2]),e.length=this.map[t][0];n.push([...e]),e.length=0;let o=n.pop();while(o)e.push(...o),o=n.pop();this.map.length=0}}function ak(e,t,n,o){let r=0;if(0!==n||0!==o.length){while(r<e.map.length){if(e.map[r][0]===t)return e.map[r][1]+=n,void e.map[r][2].push(...o);r+=1}e.map.push([t,n,o])}}function lk(e,t){let n=!1;const o=[];while(t<e.length){const r=e[t];if(n){if("enter"===r[0])"tableContent"===r[1].type&&o.push("tableDelimiterMarker"===e[t+1][1].type?"left":"none");else if("tableContent"===r[1].type){if("tableDelimiterMarker"===e[t-1][1].type){const e=o.length-1;o[e]="left"===o[e]?"center":"right"}}else if("tableDelimiterRow"===r[1].type)break}else"enter"===r[0]&&"tableDelimiterRow"===r[1].type&&(n=!0);t+=1}return o}const ck={flow:{null:{tokenize:uk,resolveAll:dk}}};function uk(e,t,n){const o=this;let r,s=0,i=0;return a;function a(e){let t=o.events.length-1;while(t>-1){const e=o.events[t][1].type;if("lineEnding"!==e&&"linePrefix"!==e)break;t--}const r=t>-1?o.events[t][1].type:null,s="tableHead"===r||"tableRow"===r?w:l;return s===w&&o.parser.lazy[o.now().line]?n(e):s(e)}function l(t){return e.enter("tableHead"),e.enter("tableRow"),c(t)}function c(e){return 124===e||(r=!0,i+=1),u(e)}function u(t){return null===t?n(t):Hb(t)?i>1?(i=0,o.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),p):n(t):Vb(t)?Qb(e,u,"whitespace")(t):(i+=1,r&&(r=!1,s+=1),124===t?(e.enter("tableCellDivider"),e.consume(t),e.exit("tableCellDivider"),r=!0,u):(e.enter("data"),d(t)))}function d(t){return null===t||124===t||Ub(t)?(e.exit("data"),u(t)):(e.consume(t),92===t?f:d)}function f(t){return 92===t||124===t?(e.consume(t),d):d(t)}function p(t){return o.interrupt=!1,o.parser.lazy[o.now().line]?n(t):(e.enter("tableDelimiterRow"),r=!1,Vb(t)?Qb(e,h,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):h(t))}function h(t){return 45===t||58===t?g(t):124===t?(r=!0,e.enter("tableCellDivider"),e.consume(t),e.exit("tableCellDivider"),m):x(t)}function m(t){return Vb(t)?Qb(e,g,"whitespace")(t):g(t)}function g(t){return 58===t?(i+=1,r=!0,e.enter("tableDelimiterMarker"),e.consume(t),e.exit("tableDelimiterMarker"),v):45===t?(i+=1,v(t)):null===t||Hb(t)?y(t):x(t)}function v(t){return 45===t?(e.enter("tableDelimiterFiller"),_(t)):x(t)}function _(t){return 45===t?(e.consume(t),_):58===t?(r=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(t),e.exit("tableDelimiterMarker"),b):(e.exit("tableDelimiterFiller"),b(t))}function b(t){return Vb(t)?Qb(e,y,"whitespace")(t):y(t)}function y(n){return 124===n?h(n):(null===n||Hb(n))&&r&&s===i?(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(n)):x(n)}function x(e){return n(e)}function w(t){return e.enter("tableRow"),k(t)}function k(n){return 124===n?(e.enter("tableCellDivider"),e.consume(n),e.exit("tableCellDivider"),k):null===n||Hb(n)?(e.exit("tableRow"),t(n)):Vb(n)?Qb(e,k,"whitespace")(n):(e.enter("data"),S(n))}function S(t){return null===t||124===t||Ub(t)?(e.exit("data"),k(t)):(e.consume(t),92===t?E:S)}function E(t){return 92===t||124===t?(e.consume(t),S):S(t)}}function dk(e,t){let n,o,r,s=-1,i=!0,a=0,l=[0,0,0,0],c=[0,0,0,0],u=!1,d=0;const f=new ik;while(++s<e.length){const p=e[s],h=p[1];"enter"===p[0]?"tableHead"===h.type?(u=!1,0!==d&&(pk(f,t,d,n,o),o=void 0,d=0),n={type:"table",start:Object.assign({},h.start),end:Object.assign({},h.end)},f.add(s,0,[["enter",n,t]])):"tableRow"===h.type||"tableDelimiterRow"===h.type?(i=!0,r=void 0,l=[0,0,0,0],c=[0,s+1,0,0],u&&(u=!1,o={type:"tableBody",start:Object.assign({},h.start),end:Object.assign({},h.end)},f.add(s,0,[["enter",o,t]])),a="tableDelimiterRow"===h.type?2:o?3:1):!a||"data"!==h.type&&"tableDelimiterMarker"!==h.type&&"tableDelimiterFiller"!==h.type?"tableCellDivider"===h.type&&(i?i=!1:(0!==l[1]&&(c[0]=c[1],r=fk(f,t,l,a,void 0,r)),l=c,c=[l[1],s,0,0])):(i=!1,0===c[2]&&(0!==l[1]&&(c[0]=c[1],r=fk(f,t,l,a,void 0,r),l=[0,0,0,0]),c[2]=s)):"tableHead"===h.type?(u=!0,d=s):"tableRow"===h.type||"tableDelimiterRow"===h.type?(d=s,0!==l[1]?(c[0]=c[1],r=fk(f,t,l,a,s,r)):0!==c[1]&&(r=fk(f,t,c,a,s,r)),a=0):!a||"data"!==h.type&&"tableDelimiterMarker"!==h.type&&"tableDelimiterFiller"!==h.type||(c[3]=s)}0!==d&&pk(f,t,d,n,o),f.consume(t.events),s=-1;while(++s<t.events.length){const e=t.events[s];"enter"===e[0]&&"table"===e[1].type&&(e[1]._align=lk(t.events,s))}return e}function fk(e,t,n,o,r,s){const i=1===o?"tableHeader":2===o?"tableDelimiter":"tableData",a="tableContent";0!==n[0]&&(s.end=Object.assign({},hk(t.events,n[0])),e.add(n[0],0,[["exit",s,t]]));const l=hk(t.events,n[1]);if(s={type:i,start:Object.assign({},l),end:Object.assign({},l)},e.add(n[1],0,[["enter",s,t]]),0!==n[2]){const r=hk(t.events,n[2]),s=hk(t.events,n[3]),i={type:a,start:Object.assign({},r),end:Object.assign({},s)};if(e.add(n[2],0,[["enter",i,t]]),2!==o){const o=t.events[n[2]],r=t.events[n[3]];if(o[1].end=Object.assign({},r[1].end),o[1].type="chunkText",o[1].contentType="text",n[3]>n[2]+1){const t=n[2]+1,o=n[3]-n[2]-1;e.add(t,o,[])}}e.add(n[3]+1,0,[["exit",i,t]])}return void 0!==r&&(s.end=Object.assign({},hk(t.events,r)),e.add(r,0,[["exit",s,t]]),s=void 0),s}function pk(e,t,n,o,r){const s=[],i=hk(t.events,n);r&&(r.end=Object.assign({},i),s.push(["exit",r,t])),o.end=Object.assign({},i),s.push(["exit",o,t]),e.add(n+1,0,s)}function hk(e,t){const n=e[t],o="enter"===n[0]?"start":"end";return n[1][o]}const mk=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\t\n\f\r />])/gi,gk=new RegExp("^"+mk.source,"i"),vk={exit:{htmlFlowData(e){_k.call(this,e,mk)},htmlTextData(e){_k.call(this,e,gk)}}};function _k(e,t){let n=this.sliceSerialize(e);this.options.allowDangerousHtml&&(n=n.replace(t,"&lt;$1$2")),this.raw(this.encode(n))}const bk={enter:{taskListCheck(){this.tag('<input type="checkbox" disabled="" ')}},exit:{taskListCheck(){this.tag("/>")},taskListCheckValueChecked(){this.tag('checked="" ')}}},yk={tokenize:wk},xk={text:{[91]:yk}};function wk(e,t,n){const o=this;return r;function r(t){return null===o.previous&&o._gfmTasklistFirstContentOfListItem?(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(t),e.exit("taskListCheckMarker"),s):n(t)}function s(t){return Ub(t)?(e.enter("taskListCheckValueUnchecked"),e.consume(t),e.exit("taskListCheckValueUnchecked"),i):88===t||120===t?(e.enter("taskListCheckValueChecked"),e.consume(t),e.exit("taskListCheckValueChecked"),i):n(t)}function i(t){return 93===t?(e.enter("taskListCheckMarker"),e.consume(t),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),a):n(t)}function a(o){return Hb(o)?t(o):Vb(o)?e.check({tokenize:kk},t,n)(o):n(o)}}function kk(e,t,n){return Qb(e,o,"whitespace");function o(e){return null===e?n(e):t(e)}}function Sk(e){return kb([ww,$w(),nk(e),ck,xk])}function Ek(e){return Tb([Nw,ek(e),tk,rk,vk,bk])}const Tk={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,degree:176,byteOrderMarker:65279,replacementCharacter:65533},Mk=(e,t,n)=>{const o=s=>s===Tk.carriageReturn||s===Tk.lineFeed||s===Tk.carriageReturnLineFeed||s===Tk.eof?n(s):s===Tk.backslash?(e.consume(s),r):s===Tk.degree?(e.exit("underlineContent"),e.enter("underlineMarker"),e.consume(s),e.exit("underlineMarker"),e.exit("underline"),t):(e.consume(s),o),r=t=>t===Tk.backslash||t===Tk.degree?(e.consume(t),o):o(t),s=e=>e===Tk.degree?n(e):o(e);return t=>(e.enter("underline"),e.enter("underlineMarker"),e.consume(t),e.exit("underlineMarker"),e.enter("underlineContent",{contentType:"string"}),s)},Ak={name:"underline",tokenize:Mk},Rk={text:{176:Ak}},Ck={enter:{underline(){this.tag("<u>")}},exit:{underline(){this.tag("</u>")}}},Ok=(e,t,n)=>{const o=s=>s===Tk.carriageReturn||s===Tk.lineFeed||s===Tk.carriageReturnLineFeed||s===Tk.eof?n(s):s===Tk.backslash?(e.consume(s),r):s===Tk.greaterThan?(e.exit("usertagContent"),e.enter("usertagMarker"),e.consume(s),e.exit("usertagMarker"),e.exit("usertag"),t):(e.consume(s),o),r=t=>t===Tk.backslash||t===Tk.greaterThan?(e.consume(t),o):o(t),s=t=>t===Tk.atSign?(e.consume(t),e.exit("usertagMarker"),e.enter("usertagContent"),o):n(t);return t=>(e.enter("usertag"),e.enter("usertagMarker"),e.consume(t),s)},Ik={name:"usertag",tokenize:Ok},Bk={text:{60:Ik}},Pk=e=>({exit:{usertagContent(t){const n=this.sliceSerialize(t);this.tag(`<span class="vac-text-tag" data-user-id="${n}">`);const o=e.find((e=>e._id===n));this.raw(`@${this.encode(o?o.username:n)}`),this.tag("</span>")}}});var Lk=(e,{textFormatting:t})=>{if(t){let n=[];t.linkify||(n=["literalAutolink","literalAutolinkEmail"]);const o=fw(e.replaceAll("<usertag>","<@").replaceAll("</usertag>",">"),{extensions:[{...Sk(),disable:{null:n}},Rk,Bk],htmlExtensions:[Ek(),Ck,Pk(t.users)]});if(t.singleLine){const e=document.createElement("div");return e.innerHTML=o,[{types:[],value:e.innerText}]}return[{types:["markdown"],value:o}]}return[{types:[],value:e}]};const jk=["png","jpg","jpeg","webp","svg","gif"],Nk=["mp4","video/ogg","webm","quicktime"],Fk=["mp3","audio/ogg","wav","mpeg"],Dk={name:"FormatMessage",components:{SvgIcon:fb},props:{messageId:{type:String,default:""},roomId:{type:String,default:""},roomList:{type:Boolean,default:!1},content:{type:[String,Number],required:!0},deleted:{type:Boolean,default:!1},users:{type:Array,default:()=>[]},linkify:{type:Boolean,default:!0},singleLine:{type:Boolean,default:!1},reply:{type:Boolean,default:!1},textFormatting:{type:Object,required:!0},textMessages:{type:Object,default:()=>{}},linkOptions:{type:Object,required:!0}},emits:["open-user-tag"],computed:{parsedMessage(){if(this.deleted)return[{value:this.textMessages.MESSAGE_DELETED}];let e;e=this.textFormatting.disabled?{}:{textFormatting:{linkify:this.linkify,linkOptions:this.linkOptions,singleLine:this.singleLine,reply:this.reply,users:this.users,...this.textFormatting}};const t=Lk(this.content,e);return t.forEach((e=>{e.markdown=this.checkType(e,"markdown"),e.tag=this.checkType(e,"tag"),e.image=this.checkImageType(e)})),t}},methods:{checkType(e,t){return e.types&&-1!==e.types.indexOf(t)},checkImageType(e){let t=e.value.lastIndexOf(".");const n=e.value.lastIndexOf("/");n>t&&(t=-1);const o=e.value.substring(t+1,e.value.length),r=t>0&&jk.some((e=>o.toLowerCase().includes(e)));return r&&this.setImageSize(e),r},setImageSize(e){const t=new Image;function n(o){const r=o.path[0].width/150;e.height=Math.round(o.path[0].height/r)+"px",t.removeEventListener("load",n)}t.src=e.value,t.addEventListener("load",n)},openTag(e){const t=e.target.getAttribute("data-user-id");if(!this.singleLine&&t){const e=this.users.find((e=>String(e._id)===t));this.$emit("open-user-tag",e)}}}},Hk=["innerHTML"],Uk={class:"vac-image-link-container"},Vk={class:"vac-image-link-message"};function $k(e,t,n,o,r,s){const i=vm("svg-icon");return kg(),Ag("div",{class:tp(["vac-format-message-wrapper",{"vac-text-ellipsis":n.singleLine}])},[(kg(!0),Ag(vg,null,km(s.parsedMessage,((o,r)=>(kg(),Ag(vg,{key:r},[o.markdown?(kg(),Ag("div",{key:0,class:"markdown",onClick:t[0]||(t[0]=(...e)=>s.openTag&&s.openTag(...e)),innerHTML:o.value},null,8,Hk)):(kg(),Ag("div",{key:1,class:tp(["vac-format-container",{"vac-text-ellipsis":n.singleLine}])},[(kg(),Rg(bm(o.url?"a":"span"),{class:tp({"vac-text-ellipsis":n.singleLine,"vac-text-tag":!n.singleLine&&!n.reply&&o.tag}),href:o.href,target:o.href?n.linkOptions.target:null,rel:o.href?n.linkOptions.rel:null},{default:xh((()=>[n.deleted?(kg(),Ag(vg,{key:0},[Em(e.$slots,n.roomList?"deleted-icon-room_"+n.roomId:"deleted-icon_"+n.messageId,{},(()=>[jg(i,{name:"deleted",class:tp(["vac-icon-deleted",{"vac-icon-deleted-room":n.roomList}])},null,8,["class"])])),Hg(" "+op(n.textMessages.MESSAGE_DELETED),1)],64)):o.url&&o.image?(kg(),Ag(vg,{key:1},[Lg("div",Uk,[Lg("div",{class:"vac-image-link",style:Zf({"background-image":`url('${o.value}')`,height:o.height})},null,4)]),Lg("div",Vk,op(o.value),1)],64)):(kg(),Ag(vg,{key:2},[Hg(op(o.value),1)],64))])),_:2},1032,["class","href","target","rel"]))],2))],64)))),128))],2)}var zk=Z_(Dk,[["render",$k]]);const qk="__v-click-outside",Yk="undefined"!==typeof window,Gk="undefined"!==typeof navigator,Xk=Yk&&("ontouchstart"in window||Gk&&navigator.msMaxTouchPoints>0),Wk=Xk?["touchstart"]:["click"],Kk=e=>{const t="function"===typeof e;if(!t&&"object"!==typeof e)throw new Error("v-click-outside: Binding value must be a function or an object");return{handler:t?e:e.handler,middleware:e.middleware||(e=>e),events:e.events||Wk,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}},Zk=({event:e,handler:t,middleware:n})=>{n(e)&&t(e)},Qk=({el:e,event:t,handler:n,middleware:o})=>{setTimeout((()=>{const{activeElement:r}=document;r&&"IFRAME"===r.tagName&&!e.contains(r)&&Zk({event:t,handler:n,middleware:o})}),0)},Jk=({el:e,event:t,handler:n,middleware:o})=>{const r=t.path||t.composedPath&&t.composedPath(),s=r?r.indexOf(e)<0:!e.contains(t.target);s&&Zk({event:t,handler:n,middleware:o})},eS=(e,{value:t})=>{const{events:n,handler:o,middleware:r,isActive:s,detectIframe:i,capture:a}=Kk(t);if(s){if(e[qk]=n.map((t=>({event:t,srcTarget:document.documentElement,handler:t=>Jk({el:e,event:t,handler:o,middleware:r}),capture:a}))),i){const t={event:"blur",srcTarget:window,handler:t=>Qk({el:e,event:t,handler:o,middleware:r}),capture:a};e[qk]=[...e[qk],t]}e[qk].forEach((({event:t,srcTarget:n,handler:o})=>setTimeout((()=>{e[qk]&&n.addEventListener(t,o,a)}),0)))}},tS=e=>{const t=e[qk]||[];t.forEach((({event:e,srcTarget:t,handler:n,capture:o})=>t.removeEventListener(e,n,o))),delete e[qk]},nS=(e,{value:t,oldValue:n})=>{JSON.stringify(t)!==JSON.stringify(n)&&(tS(e),eS(e,{value:t}))},oS={beforeMount:eS,updated:nS,unmounted:tS};var rS=Yk?oS:{},sS=(e,t,n)=>{if(e.typingUsers&&e.typingUsers.length){const o=e.users.filter((n=>{if(n._id!==t&&-1!==e.typingUsers.indexOf(n._id)&&(!n.status||"offline"!==n.status.state))return!0}));if(!o.length)return;return 2===e.users.length?n.IS_TYPING:o.map((e=>e.username)).join(", ")+" "+n.IS_TYPING}};function iS(e,t){if(t&&t.type)return e.some((e=>t.type.toLowerCase().includes(e)))}function aS(e){return iS(jk,e)}function lS(e){return iS(Nk,e)}function cS(e){return iS(jk,e)||iS(Nk,e)}function uS(e){return iS(Fk,e)}const dS={name:"RoomsContent",components:{SvgIcon:fb,FormatMessage:zk},directives:{clickOutside:rS},props:{currentUserId:{type:[String,Number],required:!0},room:{type:Object,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},textMessages:{type:Object,required:!0},roomActions:{type:Array,required:!0}},emits:["room-action-handler"],data(){return{roomMenuOpened:null}},computed:{getLastMessage(){const e=this.typingUsers;if(e)return e;const t=this.room.lastMessage.content;if(this.room.users.length<=2)return t;const n=this.room.users.find((e=>e._id===this.room.lastMessage.senderId));return this.room.lastMessage.username?`${this.room.lastMessage.username} - ${t}`:n&&n._id!==this.currentUserId?`${n.username} - ${t}`:t},userStatus(){if(!this.room.users||2!==this.room.users.length)return;const e=this.room.users.find((e=>e._id!==this.currentUserId));return e&&e.status?e.status.state:null},typingUsers(){return sS(this.room,this.currentUserId,this.textMessages)},isMessageCheckmarkVisible(){return!this.typingUsers&&this.room.lastMessage&&!this.room.lastMessage.deleted&&this.room.lastMessage.senderId===this.currentUserId&&(this.room.lastMessage.saved||this.room.lastMessage.distributed||this.room.lastMessage.seen)},formattedDuration(){var e,t;const n=null==(t=null==(e=this.room.lastMessage)?void 0:e.files)?void 0:t[0];if(n){if(!n.duration)return`${n.name}.${n.extension}`;let e=Math.floor(n.duration);return(e-(e%=60))/60+(e>9?":":":0")+e}return""},isAudio(){return!!this.room.lastMessage.files&&uS(this.room.lastMessage.files[0])}},methods:{roomActionHandler(e){this.closeRoomMenu(),this.$emit("room-action-handler",{action:e,roomId:this.room.roomId})},closeRoomMenu(){this.roomMenuOpened=null}}},fS={class:"vac-room-container"},pS={class:"vac-name-container vac-text-ellipsis"},hS={class:"vac-title-container"},mS={class:"vac-room-name vac-text-ellipsis"},gS={key:1,class:"vac-text-date"},vS={key:0},_S={key:1,class:"vac-text-ellipsis"},bS={key:3,class:"vac-text-ellipsis"},yS={class:"vac-room-options-container"},xS={key:0,class:"vac-badge-counter vac-room-badge"},wS={key:0,class:"vac-menu-options"},kS={class:"vac-menu-list"},SS=["onClick"];function ES(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("format-message"),l=ym("click-outside");return kg(),Ag("div",fS,[Em(e.$slots,"room-list-item_"+n.room.roomId,{},(()=>[Em(e.$slots,"room-list-avatar_"+n.room.roomId,{},(()=>[n.room.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar",style:Zf({"background-image":`url('${n.room.avatar}')`})},null,4)):Ug("",!0)])),Lg("div",pS,[Lg("div",hS,[s.userStatus?(kg(),Ag("div",{key:0,class:tp(["vac-state-circle",{"vac-state-online":"online"===s.userStatus}])},null,2)):Ug("",!0),Em(e.$slots,"room-list-info_"+n.room.roomId,{},(()=>[Lg("div",mS,op(n.room.roomName),1)])),n.room.lastMessage?(kg(),Ag("div",gS,op(n.room.lastMessage.timestamp),1)):Ug("",!0)]),Lg("div",{class:tp(["vac-text-last",{"vac-message-new":n.room.lastMessage&&n.room.lastMessage.new&&!s.typingUsers}])},[s.isMessageCheckmarkVisible?(kg(),Ag("span",vS,[Em(e.$slots,"checkmark-icon_"+n.room.roomId,{},(()=>[jg(i,{name:n.room.lastMessage.distributed?"double-checkmark":"checkmark",param:n.room.lastMessage.seen?"seen":"",class:"vac-icon-check"},null,8,["name","param"])]))])):Ug("",!0),n.room.lastMessage&&!n.room.lastMessage.deleted&&s.isAudio?(kg(),Ag("div",_S,[Em(e.$slots,"microphone-icon_"+n.room.roomId,{},(()=>[jg(i,{name:"microphone",class:"vac-icon-microphone"})])),Hg(" "+op(s.formattedDuration),1)])):n.room.lastMessage?(kg(),Rg(a,{key:2,"message-id":n.room.lastMessage._id,"room-id":n.room.roomId,"room-list":!0,content:s.getLastMessage,deleted:!!n.room.lastMessage.deleted&&!s.typingUsers,users:n.room.users,"text-messages":n.textMessages,linkify:!1,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"single-line":!0},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","room-id","content","deleted","users","text-messages","text-formatting","link-options"])):Ug("",!0),!n.room.lastMessage&&s.typingUsers?(kg(),Ag("div",bS,op(s.typingUsers),1)):Ug("",!0),Lg("div",yS,[n.room.unreadCount?(kg(),Ag("div",xS,op(n.room.unreadCount),1)):Ug("",!0),Em(e.$slots,"room-list-options_"+n.room.roomId,{},(()=>[n.roomActions.length?(kg(),Ag("div",{key:0,class:"vac-svg-button vac-list-room-options",onClick:t[0]||(t[0]=V_((e=>r.roomMenuOpened=n.room.roomId),["stop"]))},[Em(e.$slots,"room-list-options-icon_"+n.room.roomId,{},(()=>[jg(i,{name:"dropdown",param:"room"})]))])):Ug("",!0),n.roomActions.length?(kg(),Rg(m_,{key:1,name:"vac-slide-left"},{default:xh((()=>[r.roomMenuOpened===n.room.roomId?pm((kg(),Ag("div",wS,[Lg("div",kS,[(kg(!0),Ag(vg,null,km(n.roomActions,(e=>(kg(),Ag("div",{key:e.name},[Lg("div",{class:"vac-menu-item",onClick:V_((t=>s.roomActionHandler(e)),["stop"])},op(e.title),9,SS)])))),128))])])),[[l,s.closeRoomMenu]]):Ug("",!0)])),_:1})):Ug("",!0)]))])],2)])]))])}var TS=Z_(dS,[["render",ES]]),MS=(e,t,n,o=!1)=>n&&""!==n?e.filter((e=>o?AS(e[t]).startsWith(AS(n)):AS(e[t]).includes(AS(n)))):e;function AS(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"")}const RS={name:"RoomsList",components:{Loader:ib,RoomsSearch:vb,RoomContent:TS},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},showRoomsList:{type:Boolean,required:!0},showSearch:{type:Boolean,required:!0},showAddRoom:{type:Boolean,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},isMobile:{type:Boolean,required:!0},rooms:{type:Array,required:!0},loadingRooms:{type:Boolean,required:!0},roomsLoaded:{type:Boolean,required:!0},room:{type:Object,required:!0},customSearchRoomEnabled:{type:[Boolean,String],default:!1},roomActions:{type:Array,required:!0},scrollDistance:{type:Number,required:!0}},emits:["add-room","search-room","room-action-handler","loading-more-rooms","fetch-room","fetch-more-rooms"],data(){return{filteredRooms:this.rooms||[],observer:null,showLoader:!0,loadingMoreRooms:!1,selectedRoomId:""}},watch:{rooms:{deep:!0,handler(e,t){this.filteredRooms=e,(e.length!==t.length||this.roomsLoaded)&&(this.loadingMoreRooms=!1)}},loadingRooms(e){e||setTimeout((()=>this.initIntersectionObserver()))},loadingMoreRooms(e){this.$emit("loading-more-rooms",e)},roomsLoaded:{immediate:!0,handler(e){e&&(this.loadingMoreRooms=!1,this.loadingRooms||(this.showLoader=!1))}},room:{immediate:!0,handler(e){e&&!this.isMobile&&(this.selectedRoomId=e.roomId)}}},methods:{initIntersectionObserver(){this.observer&&(this.showLoader=!0,this.observer.disconnect());const e=this.$el.querySelector("#infinite-loader-rooms");if(e){const t={root:this.$el.querySelector("#rooms-list"),rootMargin:`${this.scrollDistance}px`,threshold:0};this.observer=new IntersectionObserver((e=>{e[0].isIntersecting&&this.loadMoreRooms()}),t),this.observer.observe(e)}},searchRoom(e){this.customSearchRoomEnabled?this.$emit("search-room",e.target.value):this.filteredRooms=MS(this.rooms,"roomName",e.target.value)},openRoom(e){(e.roomId!==this.room.roomId||this.isMobile)&&(this.isMobile||(this.selectedRoomId=e.roomId),this.$emit("fetch-room",{room:e}))},loadMoreRooms(){if(!this.loadingMoreRooms){if(this.roomsLoaded)return this.loadingMoreRooms=!1,void(this.showLoader=!1);this.$emit("fetch-more-rooms"),this.loadingMoreRooms=!0}}}},CS={key:0,class:"vac-rooms-empty"},OS={key:1,id:"rooms-list",class:"vac-room-list"},IS=["id","onClick"],BS={key:0,id:"infinite-loader-rooms"};function PS(e,t,n,o,r,s){const i=vm("rooms-search"),a=vm("loader"),l=vm("room-content");return pm((kg(),Ag("div",{class:tp(["vac-rooms-container",{"vac-rooms-container-full":n.isMobile,"vac-app-border-r":!n.isMobile}])},[Em(e.$slots,"rooms-header"),Em(e.$slots,"rooms-list-search",{},(()=>[jg(i,{rooms:n.rooms,"loading-rooms":n.loadingRooms,"text-messages":n.textMessages,"show-search":n.showSearch,"show-add-room":n.showAddRoom,onSearchRoom:s.searchRoom,onAddRoom:t[0]||(t[0]=t=>e.$emit("add-room"))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["rooms","loading-rooms","text-messages","show-search","show-add-room","onSearchRoom"])])),jg(a,{show:n.loadingRooms,type:"rooms"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"]),n.loadingRooms||n.rooms.length?Ug("",!0):(kg(),Ag("div",CS,[Em(e.$slots,"rooms-empty",{},(()=>[Hg(op(n.textMessages.ROOMS_EMPTY),1)]))])),n.loadingRooms?Ug("",!0):(kg(),Ag("div",OS,[(kg(!0),Ag(vg,null,km(r.filteredRooms,(o=>(kg(),Ag("div",{id:o.roomId,key:o.roomId,class:tp(["vac-room-item",{"vac-room-selected":r.selectedRoomId===o.roomId}]),onClick:e=>s.openRoom(o)},[jg(l,{"current-user-id":n.currentUserId,room:o,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"text-messages":n.textMessages,"room-actions":n.roomActions,onRoomActionHandler:t[1]||(t[1]=t=>e.$emit("room-action-handler",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","room","text-formatting","link-options","text-messages","room-actions"])],10,IS)))),128)),jg(m_,{name:"vac-fade-message"},{default:xh((()=>[n.rooms.length&&!n.loadingRooms?(kg(),Ag("div",BS,[jg(a,{show:r.showLoader,infinite:!0,type:"infinite-rooms"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"])])):Ug("",!0)])),_:3})]))],2)),[[q_,n.showRoomsList]])}var LS=Z_(RS,[["render",PS]]);const jS={name:"RoomHeader",components:{SvgIcon:fb},directives:{clickOutside:rS},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},singleRoom:{type:Boolean,required:!0},showRoomsList:{type:Boolean,required:!0},isMobile:{type:Boolean,required:!0},roomInfoEnabled:{type:Boolean,required:!0},menuActions:{type:Array,required:!0},room:{type:Object,required:!0},messageSelectionEnabled:{type:Boolean,required:!0},messageSelectionActions:{type:Array,required:!0},selectedMessagesTotal:{type:Number,required:!0}},emits:["toggle-rooms-list","room-info","menu-action-handler","cancel-message-selection","message-selection-action-handler"],data(){return{menuOpened:!1,messageSelectionAnimationEnded:!0}},computed:{typingUsers(){return sS(this.room,this.currentUserId,this.textMessages)},userStatus(){if(!this.room.users||2!==this.room.users.length)return;const e=this.room.users.find((e=>e._id!==this.currentUserId));if(!(null==e?void 0:e.status))return;let t="";return"online"===e.status.state?t=this.textMessages.IS_ONLINE:e.status.lastChanged&&(t=this.textMessages.LAST_SEEN+e.status.lastChanged),t}},watch:{messageSelectionEnabled(e){e?this.messageSelectionAnimationEnded=!1:setTimeout((()=>{this.messageSelectionAnimationEnded=!0}),300)}},methods:{menuActionHandler(e){this.closeMenu(),this.$emit("menu-action-handler",e)},closeMenu(){this.menuOpened=!1},messageSelectionActionHandler(e){this.$emit("message-selection-action-handler",e)}}},NS={class:"vac-room-header vac-app-border-b"},FS={class:"vac-room-wrapper"},DS={key:0,class:"vac-room-selection"},HS=["id"],US=["onClick"],VS={class:"vac-selection-button-count"},$S={class:"vac-text-ellipsis"},zS={class:"vac-room-name vac-text-ellipsis"},qS={key:0,class:"vac-room-info vac-text-ellipsis"},YS={key:1,class:"vac-room-info vac-text-ellipsis"},GS={key:0,class:"vac-menu-options"},XS={class:"vac-menu-list"},WS=["onClick"];function KS(e,t,n,o,r,s){const i=vm("svg-icon"),a=ym("click-outside");return kg(),Ag("div",NS,[Em(e.$slots,"room-header",{},(()=>[Lg("div",FS,[jg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.messageSelectionEnabled?(kg(),Ag("div",DS,[(kg(!0),Ag(vg,null,km(n.messageSelectionActions,(e=>(kg(),Ag("div",{id:e.name,key:e.name},[Lg("div",{class:"vac-selection-button",onClick:t=>s.messageSelectionActionHandler(e)},[Hg(op(e.title)+" ",1),Lg("span",VS,op(n.selectedMessagesTotal),1)],8,US)],8,HS)))),128)),Lg("div",{class:"vac-selection-cancel vac-item-clickable",onClick:t[0]||(t[0]=t=>e.$emit("cancel-message-selection"))},op(n.textMessages.CANCEL_SELECT_MESSAGE),1)])):Ug("",!0)])),_:1}),!n.messageSelectionEnabled&&r.messageSelectionAnimationEnded?(kg(),Ag(vg,{key:0},[n.singleRoom?Ug("",!0):(kg(),Ag("div",{key:0,class:tp(["vac-svg-button vac-toggle-button",{"vac-rotate-icon-init":!n.isMobile,"vac-rotate-icon":!n.showRoomsList&&!n.isMobile}]),onClick:t[1]||(t[1]=t=>e.$emit("toggle-rooms-list"))},[Em(e.$slots,"toggle-icon",{},(()=>[jg(i,{name:"toggle"})]))],2)),Lg("div",{class:tp(["vac-info-wrapper",{"vac-item-clickable":n.roomInfoEnabled}]),onClick:t[2]||(t[2]=t=>e.$emit("room-info"))},[Em(e.$slots,"room-header-avatar",{},(()=>[n.room.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar",style:Zf({"background-image":`url('${n.room.avatar}')`})},null,4)):Ug("",!0)])),Em(e.$slots,"room-header-info",{},(()=>[Lg("div",$S,[Lg("div",zS,op(n.room.roomName),1),s.typingUsers?(kg(),Ag("div",qS,op(s.typingUsers),1)):(kg(),Ag("div",YS,op(s.userStatus),1))])]))],2),n.room.roomId?Em(e.$slots,"room-options",{key:1},(()=>[n.menuActions.length?(kg(),Ag("div",{key:0,class:"vac-svg-button vac-room-options",onClick:t[3]||(t[3]=e=>r.menuOpened=!r.menuOpened)},[Em(e.$slots,"menu-icon",{},(()=>[jg(i,{name:"menu"})]))])):Ug("",!0),n.menuActions.length?(kg(),Rg(m_,{key:1,name:"vac-slide-left"},{default:xh((()=>[r.menuOpened?pm((kg(),Ag("div",GS,[Lg("div",XS,[(kg(!0),Ag(vg,null,km(n.menuActions,(e=>(kg(),Ag("div",{key:e.name},[Lg("div",{class:"vac-menu-item",onClick:t=>s.menuActionHandler(e)},op(e.title),9,WS)])))),128))])])),[[a,s.closeMenu]]):Ug("",!0)])),_:1})):Ug("",!0)])):Ug("",!0)],64)):Ug("",!0)])]))])}var ZS=Z_(jS,[["render",KS]]);function QS(e){if("string"!==typeof e||!e)throw new Error("expected a non-empty string, got: "+e)}function JS(e){if("number"!==typeof e)throw new Error("expected a number, got: "+e)}const eE=1,tE=1,nE="emoji",oE="keyvalue",rE="favorites",sE="tokens",iE="tokens",aE="unicode",lE="count",cE="group",uE="order",dE="group-order",fE="eTag",pE="url",hE="skinTone",mE="readonly",gE="readwrite",vE="skinUnicodes",_E="skinUnicodes",bE="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",yE="en";function xE(e,t){const n=new Set,o=[];for(const r of e){const e=t(r);n.has(e)||(n.add(e),o.push(r))}return o}function wE(e){return xE(e,(e=>e.unicode))}function kE(e){function t(t,n,o){const r=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(o)for(const[e,[s,i]]of Object.entries(o))r.createIndex(e,s,{multiEntry:i});return r}t(oE),t(nE,aE,{[iE]:[sE,!0],[dE]:[[cE,uE]],[vE]:[_E,!0]}),t(rE,void 0,{[lE]:[""]})}const SE={},EE={},TE={};function ME(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function AE(e){const t=await new Promise(((t,n)=>{const o=indexedDB.open(e,eE);SE[e]=o,o.onupgradeneeded=e=>{e.oldVersion<tE&&kE(o.result)},ME(t,n,o)}));return t.onclose=()=>OE(e),t}function RE(e){return EE[e]||(EE[e]=AE(e)),EE[e]}function CE(e,t,n,o){return new Promise(((r,s)=>{const i=e.transaction(t,n,{durability:"relaxed"}),a="string"===typeof t?i.objectStore(t):t.map((e=>i.objectStore(e)));let l;o(a,i,(e=>{l=e})),i.oncomplete=()=>r(l),i.onerror=()=>s(i.error)}))}function OE(e){const t=SE[e],n=t&&t.result;if(n){n.close();const t=TE[e];if(t)for(const e of t)e()}delete SE[e],delete EE[e],delete TE[e]}function IE(e){return new Promise(((t,n)=>{OE(e);const o=indexedDB.deleteDatabase(e);ME(t,n,o)}))}function BE(e,t){let n=TE[e];n||(n=TE[e]=[]),n.push(t)}const PE=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function LE(e){return e.split(/[\s_]+/).map((e=>!e.match(/\w/)||PE.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase())).filter(Boolean)}const jE=2;function NE(e){return e.filter(Boolean).map((e=>e.toLowerCase())).filter((e=>e.length>=jE))}function FE(e){const t=e.map((({annotation:e,emoticon:t,group:n,order:o,shortcodes:r,skins:s,tags:i,emoji:a,version:l})=>{const c=[...new Set(NE([...(r||[]).map(LE).flat(),...i.map(LE).flat(),...LE(e),t]))].sort(),u={annotation:e,group:n,order:o,tags:i,tokens:c,unicode:a,version:l};if(t&&(u.emoticon=t),r&&(u.shortcodes=r),s){u.skinTones=[],u.skinUnicodes=[],u.skinVersions=[];for(const{tone:e,emoji:t,version:n}of s)u.skinTones.push(e),u.skinUnicodes.push(t),u.skinVersions.push(n)}return u}));return t}function DE(e,t,n,o){e[t](n).onsuccess=e=>o&&o(e.target.result)}function HE(e,t,n){DE(e,"get",t,n)}function UE(e,t,n){DE(e,"getAll",t,n)}function VE(e){e.commit&&e.commit()}function $E(e,t){let n=e[0];for(let o=1;o<e.length;o++){const r=e[o];t(n)>t(r)&&(n=r)}return n}function zE(e,t){const n=$E(e,(e=>e.length)),o=[];for(const r of n)e.some((e=>-1===e.findIndex((e=>t(e)===t(r)))))||o.push(r);return o}async function qE(e){return!await JE(e,oE,pE)}async function YE(e,t,n){const[o,r]=await Promise.all([fE,pE].map((t=>JE(e,oE,t))));return o===n&&r===t}async function GE(e,t){const n=50;return CE(e,nE,mE,((e,o,r)=>{let s;const i=()=>{e.getAll(s&&IDBKeyRange.lowerBound(s,!0),n).onsuccess=e=>{const o=e.target.result;for(const n of o)if(s=n.unicode,t(n))return r(n);if(o.length<n)return r();i()}};i()}))}async function XE(e,t,n,o){try{const r=FE(t);await CE(e,[nE,oE],gE,(([e,t],s)=>{let i,a,l=0;function c(){2===++l&&u()}function u(){if(i!==o||a!==n){e.clear();for(const t of r)e.put(t);t.put(o,fE),t.put(n,pE),VE(s)}}HE(t,fE,(e=>{i=e,c()})),HE(t,pE,(e=>{a=e,c()}))}))}finally{}}async function WE(e,t){return CE(e,nE,mE,((e,n,o)=>{const r=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);UE(e.index(dE),r,o)}))}async function KE(e,t){const n=NE(LE(t));return n.length?CE(e,nE,mE,((e,t,o)=>{const r=[],s=()=>{r.length===n.length&&i()},i=()=>{const e=zE(r,(e=>e.unicode));o(e.sort(((e,t)=>e.order<t.order?-1:1)))};for(let a=0;a<n.length;a++){const t=n[a],o=a===n.length-1?IDBKeyRange.bound(t,t+"￿",!1,!0):IDBKeyRange.only(t);UE(e.index(iE),o,(e=>{r.push(e),s()}))}})):[]}async function ZE(e,t){const n=await KE(e,t);if(!n.length){const n=e=>(e.shortcodes||[]).includes(t.toLowerCase());return await GE(e,n)||null}return n.filter((e=>{const n=(e.shortcodes||[]).map((e=>e.toLowerCase()));return n.includes(t.toLowerCase())}))[0]||null}async function QE(e,t){return CE(e,nE,mE,((e,n,o)=>HE(e,t,(n=>{if(n)return o(n);HE(e.index(vE),t,(e=>o(e||null)))}))))}function JE(e,t,n){return CE(e,t,mE,((e,t,o)=>HE(e,n,o)))}function eT(e,t,n,o){return CE(e,t,gE,((e,t)=>{e.put(o,n),VE(t)}))}function tT(e,t){return CE(e,rE,gE,((e,n)=>HE(e,t,(o=>{e.put((o||0)+1,t),VE(n)}))))}function nT(e,t,n){return 0===n?[]:CE(e,[rE,nE],mE,(([e,o],r,s)=>{const i=[];e.index(lE).openCursor(void 0,"prev").onsuccess=e=>{const r=e.target.result;if(!r)return s(i);function a(e){if(i.push(e),i.length===n)return s(i);r.continue()}const l=r.primaryKey,c=t.byName(l);if(c)return a(c);HE(o,l,(e=>{if(e)return a(e);r.continue()}))}}))}const oT="";function rT(e,t){const n=new Map;for(const r of e){const e=t(r);for(const t of e){let e=n;for(let n=0;n<t.length;n++){const o=t.charAt(n);let r=e.get(o);r||(r=new Map,e.set(o,r)),e=r}let o=e.get(oT);o||(o=[],e.set(oT,o)),o.push(r)}}const o=(e,t)=>{let o=n;for(let n=0;n<e.length;n++){const t=e.charAt(n),r=o.get(t);if(!r)return[];o=r}if(t){const e=o.get(oT);return e||[]}const r=[],s=[o];while(s.length){const e=s.shift(),t=[...e.entries()].sort(((e,t)=>e[0]<t[0]?-1:1));for(const[n,o]of t)n===oT?r.push(...o):s.push(o)}return r};return o}const sT=["name","url"];function iT(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||sT.some((t=>!(t in e[0]))));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function aT(e){iT(e);const t=(e,t)=>e.name.toLowerCase()<t.name.toLowerCase()?-1:1,n=e.sort(t),o=e=>[...new Set((e.shortcodes||[]).map((e=>LE(e))).flat())],r=rT(e,o),s=e=>r(e,!0),i=e=>r(e,!1),a=e=>{const n=LE(e),o=n.map(((e,t)=>(t<n.length-1?s:i)(e)));return zE(o,(e=>e.name)).sort(t)},l=new Map,c=new Map;for(const f of e){c.set(f.name.toLowerCase(),f);for(const e of f.shortcodes||[])l.set(e.toLowerCase(),f)}const u=e=>l.get(e.toLowerCase()),d=e=>c.get(e.toLowerCase());return{all:n,search:a,byShortcode:u,byName:d}}function lT(e){if(!e)return e;if(delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n<t;n++)e.skins[n]={tone:e.skinTones[n],unicode:e.skinUnicodes[n],version:e.skinVersions[n]};delete e.skinTones,delete e.skinUnicodes,delete e.skinVersions}return e}function cT(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const uT=["annotation","emoji","group","order","tags","version"];function dT(e){if(!e||!Array.isArray(e)||!e[0]||"object"!==typeof e[0]||uT.some((t=>!(t in e[0]))))throw new Error("Emoji data is in the wrong format")}function fT(e,t){if(2!==Math.floor(e.status/100))throw new Error("Failed to fetch: "+t+":  "+e.status)}async function pT(e){const t=await fetch(e,{method:"HEAD"});fT(t,e);const n=t.headers.get("etag");return cT(n),n}async function hT(e){const t=await fetch(e);fT(t,e);const n=t.headers.get("etag");cT(n);const o=await t.json();return dT(o),[n,o]}function mT(e){var t="",n=new Uint8Array(e),o=n.byteLength,r=-1;while(++r<o)t+=String.fromCharCode(n[r]);return t}function gT(e){var t=e.length,n=new ArrayBuffer(t),o=new Uint8Array(n),r=-1;while(++r<t)o[r]=e.charCodeAt(r);return n}async function vT(e){const t=JSON.stringify(e),n=gT(t),o=await crypto.subtle.digest("SHA-1",n),r=mT(o),s=btoa(r);return s}async function _T(e,t){let n,o=await pT(t);if(!o){const e=await hT(t);o=e[0],n=e[1],o||(o=await vT(n))}if(await YE(e,t,o));else{if(!n){const e=await hT(t);n=e[1]}await XE(e,n,t,o)}}async function bT(e,t){let[n,o]=await hT(t);n||(n=await vT(o)),await XE(e,o,t,n)}class yT{constructor({dataSource:e=bE,locale:t=yE,customEmoji:n=[]}={}){this.dataSource=e,this.locale=t,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=aT(n),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const e=this._db=await RE(this._dbName);BE(this._dbName,this._clear);const t=this.dataSource,n=await qE(e);n?await bT(e,t):this._lazyUpdate=_T(e,t)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return JS(e),await this.ready(),wE(await WE(this._db,e)).map(lT)}async getEmojiBySearchQuery(e){QS(e),await this.ready();const t=this._custom.search(e),n=wE(await KE(this._db,e)).map(lT);return[...t,...n]}async getEmojiByShortcode(e){QS(e),await this.ready();const t=this._custom.byShortcode(e);return t||lT(await ZE(this._db,e))}async getEmojiByUnicodeOrName(e){QS(e),await this.ready();const t=this._custom.byName(e);return t||lT(await QE(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await JE(this._db,oE,hE)||0}async setPreferredSkinTone(e){return JS(e),await this.ready(),eT(this._db,oE,hE,e)}async incrementFavoriteEmojiCount(e){return QS(e),await this.ready(),tT(this._db,e)}async getTopFavoriteEmoji(e){return JS(e),await this.ready(),(await nT(this._db,this._custom,e)).map(lT)}set customEmoji(e){this._custom=aT(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await OE(this._dbName)}async delete(){await this._shutdown(),await IE(this._dbName)}}function xT(){}function wT(e){return e()}function kT(){return Object.create(null)}function ST(e){e.forEach(wT)}function ET(e){return"function"===typeof e}function TT(e,t){return e!=e?t==t:e!==t||e&&"object"===typeof e||"function"===typeof e}let MT,AT;function RT(e,t){return MT||(MT=document.createElement("a")),MT.href=t,e===MT.href}function CT(e){return 0===Object.keys(e).length}function OT(e){return e&&ET(e.destroy)?e.destroy:xT}function IT(e,t){e.appendChild(t)}function BT(e,t,n){e.insertBefore(t,n||null)}function PT(e){e.parentNode.removeChild(e)}function LT(e){return document.createElement(e)}function jT(e){return document.createTextNode(e)}function NT(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function FT(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function DT(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function HT(e,t){e.value=null==t?"":t}function UT(e,t,n,o){null===n?e.style.removeProperty(t):e.style.setProperty(t,n,o?"important":"")}function VT(e){AT=e}const $T=[],zT=[],qT=[],YT=[],GT=Promise.resolve();let XT=!1;function WT(){XT||(XT=!0,GT.then(eM))}function KT(){return WT(),GT}function ZT(e){qT.push(e)}const QT=new Set;let JT=0;function eM(){const e=AT;do{while(JT<$T.length){const e=$T[JT];JT++,VT(e),tM(e.$$)}VT(null),$T.length=0,JT=0;while(zT.length)zT.pop()();for(let e=0;e<qT.length;e+=1){const t=qT[e];QT.has(t)||(QT.add(t),t())}qT.length=0}while($T.length);while(YT.length)YT.pop()();XT=!1,QT.clear(),VT(e)}function tM(e){if(null!==e.fragment){e.update(),ST(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(ZT)}}const nM=new Set;function oM(e,t){e&&e.i&&(nM.delete(e),e.i(t))}const rM="undefined"!==typeof window?window:"undefined"!==typeof globalThis?globalThis:n.g;function sM(e,t){e.d(1),t.delete(e.key)}function iM(e,t,n,o,r,s,i,a,l,c,u,d){let f=e.length,p=s.length,h=f;const m={};while(h--)m[e[h].key]=h;const g=[],v=new Map,_=new Map;h=p;while(h--){const e=d(r,s,h),a=n(e);let l=i.get(a);l?o&&l.p(e,t):(l=c(a,e),l.c()),v.set(a,g[h]=l),a in m&&_.set(a,Math.abs(h-m[a]))}const b=new Set,y=new Set;function x(e){oM(e,1),e.m(a,u),i.set(e.key,e),u=e.first,p--}while(f&&p){const t=g[p-1],n=e[f-1],o=t.key,r=n.key;t===n?(u=t.first,f--,p--):v.has(r)?!i.has(o)||b.has(o)?x(t):y.has(r)?f--:_.get(o)>_.get(r)?(y.add(o),x(t)):(b.add(r),f--):(l(n,i),f--)}while(f--){const t=e[f];v.has(t.key)||l(t,i)}while(p)x(g[p-1]);return g}function aM(e,t,n,o){const{fragment:r,on_mount:s,on_destroy:i,after_update:a}=e.$$;r&&r.m(t,n),o||ZT((()=>{const t=s.map(wT).filter(ET);i?i.push(...t):ST(t),e.$$.on_mount=[]})),a.forEach(ZT)}function lM(e,t){const n=e.$$;null!==n.fragment&&(ST(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function cM(e,t){-1===e.$$.dirty[0]&&($T.push(e),WT(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function uM(e,t,n,o,r,s,i,a=[-1]){const l=AT;VT(e);const c=e.$$={fragment:null,ctx:null,props:s,update:xT,not_equal:r,bound:kT(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(l?l.$$.context:[]),callbacks:kT(),dirty:a,skip_bound:!1,root:t.target||l.$$.root};i&&i(c.root);let u=!1;c.ctx=n?n(e,t.props||{},((t,n,...o)=>{const s=o.length?o[0]:n;return c.ctx&&r(c.ctx[t],c.ctx[t]=s)&&(!c.skip_bound&&c.bound[t]&&c.bound[t](s),u&&cM(e,t)),n})):[],c.update(),u=!0,ST(c.before_update),c.fragment=!!o&&o(c.ctx),t.target&&(c.fragment&&c.fragment.c(),aM(e,t.target,void 0,void 0),eM()),VT(l)}class dM{$destroy(){lM(this,1),this.$destroy=xT}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){this.$$set&&!CT(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const fM=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map((([e,t,n])=>({id:e,emoji:t,name:n}))),pM=fM.slice(1),hM=fM[0],mM=2,gM=6,vM="function"===typeof requestIdleCallback?requestIdleCallback:setTimeout;function _M(e){return e.unicode.includes("‍")}const bM={"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},yM=1e3,xM="🖐️",wM=8,kM=["😊","😒","♥️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],SM='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',EM=(e,t)=>e<t?-1:e>t?1:0,TM=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const o=n.getContext("2d");return o.textBaseline="top",o.font=`100px ${SM}`,o.fillStyle=t,o.scale(.01,.01),o.fillText(e,0,0),o.getImageData(0,0,1,1).data},MM=(e,t)=>{const n=[...e].join(","),o=[...t].join(",");return n===o&&!n.startsWith("0,0,0,")};function AM(e){const t=TM(e,"#000"),n=TM(e,"#fff");return t&&n&&MM(t,n)}function RM(){const e=Object.entries(bM);try{for(const[t,n]of e)if(AM(t))return n}catch(t){}return e[0][1]}const CM=new Promise((e=>vM((()=>e(RM()))))),OM=new Map,IM="️",BM="\ud83c",PM="‍",LM=127995,jM=57339;function NM(e,t){if(0===t)return e;const n=e.indexOf(PM);return-1!==n?e.substring(0,n)+String.fromCodePoint(LM+t-1)+e.substring(n):(e.endsWith(IM)&&(e=e.substring(0,e.length-1)),e+BM+String.fromCodePoint(jM+t-1))}function FM(e){e.preventDefault(),e.stopPropagation()}function DM(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function HM(e,t){const n=new Set,o=[];for(const r of e){const e=t(r);n.has(e)||(n.add(e),o.push(r))}return o}function UM(e,t){const n=e=>{const n={};for(const o of e)"number"===typeof o.tone&&o.version<=t&&(n[o.tone]=o.unicode);return n};return e.map((({unicode:e,skins:t,shortcodes:o,url:r,name:s,category:i})=>({unicode:e,name:s,shortcodes:o,url:r,category:i,id:e||s,skins:t&&n(t),title:(o||[]).join(", ")})))}const VM=requestAnimationFrame;let $M,zM="function"===typeof ResizeObserver;function qM(e,t){let n;return zM?(n=new ResizeObserver((e=>t(e[0].contentRect.width))),n.observe(e)):VM((()=>t(e.getBoundingClientRect().width))),{destroy(){n&&n.disconnect()}}}function YM(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}function GM(e,t,n){for(const o of e){const e=n(o),r=YM(e);"undefined"===typeof $M&&($M=YM(t));const s=r/1.8<$M;OM.set(o.unicode,s)}}function XM(e){return HM(e,(e=>e))}const{Map:WM}=rM;function KM(e,t,n){const o=e.slice();return o[63]=t[n],o[65]=n,o}function ZM(e,t,n){const o=e.slice();return o[66]=t[n],o[65]=n,o}function QM(e,t,n){const o=e.slice();return o[63]=t[n],o[65]=n,o}function JM(e,t,n){const o=e.slice();return o[69]=t[n],o}function eA(e,t,n){const o=e.slice();return o[72]=t[n],o[65]=n,o}function tA(e,t){let n,o,r,s,i,a,l,c=t[72]+"";return{key:e,first:null,c(){n=LT("div"),o=jT(c),FT(n,"id",r="skintone-"+t[65]),FT(n,"class",s="emoji hide-focus "+(t[65]===t[20]?"active":"")),FT(n,"aria-selected",i=t[65]===t[20]),FT(n,"role","option"),FT(n,"title",a=t[0].skinTones[t[65]]),FT(n,"tabindex","-1"),FT(n,"aria-label",l=t[0].skinTones[t[65]]),this.first=n},m(e,t){BT(e,n,t),IT(n,o)},p(e,u){t=e,512&u[0]&&c!==(c=t[72]+"")&&DT(o,c),512&u[0]&&r!==(r="skintone-"+t[65])&&FT(n,"id",r),1049088&u[0]&&s!==(s="emoji hide-focus "+(t[65]===t[20]?"active":""))&&FT(n,"class",s),1049088&u[0]&&i!==(i=t[65]===t[20])&&FT(n,"aria-selected",i),513&u[0]&&a!==(a=t[0].skinTones[t[65]])&&FT(n,"title",a),513&u[0]&&l!==(l=t[0].skinTones[t[65]])&&FT(n,"aria-label",l)},d(e){e&&PT(n)}}}function nA(e,t){let n,o,r,s,i,a,l,c,u,d=t[69].emoji+"";function f(){return t[49](t[69])}return{key:e,first:null,c(){n=LT("button"),o=LT("div"),r=jT(d),FT(o,"class","nav-emoji emoji"),FT(n,"role","tab"),FT(n,"class","nav-button"),FT(n,"aria-controls",s="tab-"+t[69].id),FT(n,"aria-label",i=t[0].categories[t[69].name]),FT(n,"aria-selected",a=!t[4]&&t[13].id===t[69].id),FT(n,"title",l=t[0].categories[t[69].name]),this.first=n},m(e,t){BT(e,n,t),IT(n,o),IT(o,r),c||(u=NT(n,"click",f),c=!0)},p(e,o){t=e,4096&o[0]&&d!==(d=t[69].emoji+"")&&DT(r,d),4096&o[0]&&s!==(s="tab-"+t[69].id)&&FT(n,"aria-controls",s),4097&o[0]&&i!==(i=t[0].categories[t[69].name])&&FT(n,"aria-label",i),12304&o[0]&&a!==(a=!t[4]&&t[13].id===t[69].id)&&FT(n,"aria-selected",a),4097&o[0]&&l!==(l=t[0].categories[t[69].name])&&FT(n,"title",l)},d(e){e&&PT(n),c=!1,u()}}}function oA(e){let t,n;return{c(){t=LT("img"),FT(t,"class","custom-emoji"),RT(t.src,n=e[63].url)||FT(t,"src",n),FT(t,"alt",""),FT(t,"loading","lazy")},m(e,n){BT(e,t,n)},p(e,o){32768&o[0]&&!RT(t.src,n=e[63].url)&&FT(t,"src",n)},d(e){e&&PT(t)}}}function rA(e){let t,n=e[27](e[63],e[8])+"";return{c(){t=jT(n)},m(e,n){BT(e,t,n)},p(e,o){33024&o[0]&&n!==(n=e[27](e[63],e[8])+"")&&DT(t,n)},d(e){e&&PT(t)}}}function sA(e,t){let n,o,r,s,i,a,l;function c(e,t){return e[63].unicode?rA:oA}let u=c(t),d=u(t);return{key:e,first:null,c(){n=LT("button"),d.c(),FT(n,"role",o=t[4]?"option":"menuitem"),FT(n,"aria-selected",r=t[4]?t[65]==t[5]:""),FT(n,"aria-label",s=t[28](t[63],t[8])),FT(n,"title",i=t[63].title),FT(n,"class",a="emoji "+(t[4]&&t[65]===t[5]?"active":"")),FT(n,"id",l="emo-"+t[63].id),this.first=n},m(e,t){BT(e,n,t),d.m(n,null)},p(e,f){t=e,u===(u=c(t))&&d?d.p(t,f):(d.d(1),d=u(t),d&&(d.c(),d.m(n,null))),16&f[0]&&o!==(o=t[4]?"option":"menuitem")&&FT(n,"role",o),32816&f[0]&&r!==(r=t[4]?t[65]==t[5]:"")&&FT(n,"aria-selected",r),33024&f[0]&&s!==(s=t[28](t[63],t[8]))&&FT(n,"aria-label",s),32768&f[0]&&i!==(i=t[63].title)&&FT(n,"title",i),32816&f[0]&&a!==(a="emoji "+(t[4]&&t[65]===t[5]?"active":""))&&FT(n,"class",a),32768&f[0]&&l!==(l="emo-"+t[63].id)&&FT(n,"id",l)},d(e){e&&PT(n),d.d()}}}function iA(e,t){let n,o,r,s,i,a,l,c,u=(t[4]?t[0].searchResultsLabel:t[66].category?t[66].category:t[15].length>1?t[0].categories.custom:t[0].categories[t[13].name])+"",d=[],f=new WM,p=t[66].emojis;const h=e=>e[63].id;for(let m=0;m<p.length;m+=1){let e=QM(t,p,m),n=h(e);f.set(n,d[m]=sA(n,e))}return{key:e,first:null,c(){n=LT("div"),o=jT(u),i=LT("div");for(let e=0;e<d.length;e+=1)d[e].c();FT(n,"id",r="menu-label-"+t[65]),FT(n,"class",s="category "+(1===t[15].length&&""===t[15][0].category?"gone":"")),FT(n,"aria-hidden","true"),FT(i,"class","emoji-menu"),FT(i,"role",a=t[4]?"listbox":"menu"),FT(i,"aria-labelledby",l="menu-label-"+t[65]),FT(i,"id",c=t[4]?"search-results":""),this.first=n},m(e,t){BT(e,n,t),IT(n,o),BT(e,i,t);for(let n=0;n<d.length;n+=1)d[n].m(i,null)},p(e,m){t=e,40977&m[0]&&u!==(u=(t[4]?t[0].searchResultsLabel:t[66].category?t[66].category:t[15].length>1?t[0].categories.custom:t[0].categories[t[13].name])+"")&&DT(o,u),32768&m[0]&&r!==(r="menu-label-"+t[65])&&FT(n,"id",r),32768&m[0]&&s!==(s="category "+(1===t[15].length&&""===t[15][0].category?"gone":""))&&FT(n,"class",s),402686256&m[0]&&(p=t[66].emojis,d=iM(d,m,h,1,t,p,f,i,sM,sA,null,QM)),16&m[0]&&a!==(a=t[4]?"listbox":"menu")&&FT(i,"role",a),32768&m[0]&&l!==(l="menu-label-"+t[65])&&FT(i,"aria-labelledby",l),16&m[0]&&c!==(c=t[4]?"search-results":"")&&FT(i,"id",c)},d(e){e&&PT(n),e&&PT(i);for(let t=0;t<d.length;t+=1)d[t].d()}}}function aA(e){let t,n;return{c(){t=LT("img"),FT(t,"class","custom-emoji"),RT(t.src,n=e[63].url)||FT(t,"src",n),FT(t,"alt",""),FT(t,"loading","lazy")},m(e,n){BT(e,t,n)},p(e,o){1024&o[0]&&!RT(t.src,n=e[63].url)&&FT(t,"src",n)},d(e){e&&PT(t)}}}function lA(e){let t,n=e[27](e[63],e[8])+"";return{c(){t=jT(n)},m(e,n){BT(e,t,n)},p(e,o){1280&o[0]&&n!==(n=e[27](e[63],e[8])+"")&&DT(t,n)},d(e){e&&PT(t)}}}function cA(e,t){let n,o,r,s;function i(e,t){return e[63].unicode?lA:aA}let a=i(t),l=a(t);return{key:e,first:null,c(){n=LT("button"),l.c(),FT(n,"role","menuitem"),FT(n,"aria-label",o=t[28](t[63],t[8])),FT(n,"title",r=t[63].title),FT(n,"class","emoji"),FT(n,"id",s="fav-"+t[63].id),this.first=n},m(e,t){BT(e,n,t),l.m(n,null)},p(e,c){t=e,a===(a=i(t))&&l?l.p(t,c):(l.d(1),l=a(t),l&&(l.c(),l.m(n,null))),1280&c[0]&&o!==(o=t[28](t[63],t[8]))&&FT(n,"aria-label",o),1024&c[0]&&r!==(r=t[63].title)&&FT(n,"title",r),1024&c[0]&&s!==(s="fav-"+t[63].id)&&FT(n,"id",s)},d(e){e&&PT(n),l.d()}}}function uA(e){let t,n,o,r,s,i,a,l,c,u,d,f,p,h,m,g,v,_,b,y,x,w,k,S,E,T,M,A,R,C,O,I,B,P,L,j,N,F,D,H,U,V,$,z,q=e[0].searchLabel+"",Y=e[0].searchDescription+"",G=e[0].skinToneDescription+"",X=[],W=new WM,K=[],Z=new WM,Q=[],J=new WM,ee=[],te=new WM,ne=e[9];const oe=e=>e[72];for(let ue=0;ue<ne.length;ue+=1){let t=eA(e,ne,ue),n=oe(t);W.set(n,X[ue]=tA(n,t))}let re=e[12];const se=e=>e[69].id;for(let ue=0;ue<re.length;ue+=1){let t=JM(e,re,ue),n=se(t);Z.set(n,K[ue]=nA(n,t))}let ie=e[15];const ae=e=>e[66].category;for(let ue=0;ue<ie.length;ue+=1){let t=ZM(e,ie,ue),n=ae(t);J.set(n,Q[ue]=iA(n,t))}let le=e[10];const ce=e=>e[63].id;for(let ue=0;ue<le.length;ue+=1){let t=KM(e,le,ue),n=ce(t);te.set(n,ee[ue]=cA(n,t))}return{c(){t=LT("section"),n=LT("div"),o=LT("div"),r=LT("div"),s=LT("input"),c=LT("label"),u=jT(q),d=LT("span"),f=jT(Y),p=LT("div"),h=LT("button"),m=jT(e[21]),_=LT("span"),b=jT(G),y=LT("div");for(let e=0;e<X.length;e+=1)X[e].c();E=LT("div");for(let e=0;e<K.length;e+=1)K[e].c();M=LT("div"),A=LT("div"),R=LT("div"),C=jT(e[18]),I=LT("div"),B=LT("div");for(let e=0;e<Q.length;e+=1)Q[e].c();F=LT("div");for(let e=0;e<ee.length;e+=1)ee[e].c();U=LT("button"),U.textContent="😀",FT(n,"class","pad-top"),FT(s,"id","search"),FT(s,"class","search"),FT(s,"type","search"),FT(s,"role","combobox"),FT(s,"enterkeyhint","search"),FT(s,"placeholder",i=e[0].searchLabel),FT(s,"autocapitalize","none"),FT(s,"autocomplete","off"),FT(s,"spellcheck","true"),FT(s,"aria-expanded",a=!(!e[4]||!e[1].length)),FT(s,"aria-controls","search-results"),FT(s,"aria-describedby","search-description"),FT(s,"aria-autocomplete","list"),FT(s,"aria-activedescendant",l=e[26]?`emo-${e[26]}`:""),FT(c,"class","sr-only"),FT(c,"for","search"),FT(d,"id","search-description"),FT(d,"class","sr-only"),FT(r,"class","search-wrapper"),FT(h,"id","skintone-button"),FT(h,"class",g="emoji "+(e[6]?"hide-focus":"")),FT(h,"aria-label",e[23]),FT(h,"title",e[23]),FT(h,"aria-describedby","skintone-description"),FT(h,"aria-haspopup","listbox"),FT(h,"aria-expanded",e[6]),FT(h,"aria-controls","skintone-list"),FT(p,"class",v="skintone-button-wrapper "+(e[19]?"expanded":"")),FT(_,"id","skintone-description"),FT(_,"class","sr-only"),FT(y,"id","skintone-list"),FT(y,"class",x="skintone-list "+(e[6]?"":"hidden no-animate")),UT(y,"transform","translateY("+(e[6]?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))")+")"),FT(y,"role","listbox"),FT(y,"aria-label",w=e[0].skinTonesLabel),FT(y,"aria-activedescendant",k="skintone-"+e[20]),FT(y,"aria-hidden",S=!e[6]),FT(o,"class","search-row"),FT(E,"class","nav"),FT(E,"role","tablist"),UT(E,"grid-template-columns","repeat("+e[12].length+", 1fr)"),FT(E,"aria-label",T=e[0].categoriesLabel),FT(A,"class","indicator"),UT(A,"transform","translateX("+(e[24]?-1:1)*e[11]*100+"%)"),FT(M,"class","indicator-wrapper"),FT(R,"class",O="message "+(e[18]?"":"gone")),FT(R,"role","alert"),FT(R,"aria-live","polite"),FT(I,"class",P="tabpanel "+(!e[14]||e[18]?"gone":"")),FT(I,"role",L=e[4]?"region":"tabpanel"),FT(I,"aria-label",j=e[4]?e[0].searchResultsLabel:e[0].categories[e[13].name]),FT(I,"id",N=e[4]?"":`tab-${e[13].id}`),FT(I,"tabindex","0"),FT(F,"class",D="favorites emoji-menu "+(e[18]?"gone":"")),FT(F,"role","menu"),FT(F,"aria-label",H=e[0].favoritesLabel),UT(F,"padding-inline-end",e[25]+"px"),FT(U,"aria-hidden","true"),FT(U,"tabindex","-1"),FT(U,"class","abs-pos hidden emoji"),FT(t,"class","picker"),FT(t,"aria-label",V=e[0].regionLabel),FT(t,"style",e[22])},m(i,a){BT(i,t,a),IT(t,n),IT(t,o),IT(o,r),IT(r,s),HT(s,e[2]),IT(r,c),IT(c,u),IT(r,d),IT(d,f),IT(o,p),IT(p,h),IT(h,m),IT(o,_),IT(_,b),IT(o,y);for(let e=0;e<X.length;e+=1)X[e].m(y,null);e[48](y),IT(t,E);for(let e=0;e<K.length;e+=1)K[e].m(E,null);IT(t,M),IT(M,A),IT(t,R),IT(R,C),IT(t,I),IT(I,B);for(let e=0;e<Q.length;e+=1)Q[e].m(B,null);e[50](I),IT(t,F);for(let e=0;e<ee.length;e+=1)ee[e].m(F,null);IT(t,U),e[51](U),e[52](t),$||(z=[NT(s,"input",e[47]),NT(s,"keydown",e[30]),NT(h,"click",e[35]),NT(y,"focusout",e[38]),NT(y,"click",e[34]),NT(y,"keydown",e[36]),NT(y,"keyup",e[37]),NT(E,"keydown",e[32]),OT(e[29].call(null,B)),NT(I,"click",e[33]),NT(F,"click",e[33])],$=!0)},p(e,n){1&n[0]&&i!==(i=e[0].searchLabel)&&FT(s,"placeholder",i),18&n[0]&&a!==(a=!(!e[4]||!e[1].length))&&FT(s,"aria-expanded",a),67108864&n[0]&&l!==(l=e[26]?`emo-${e[26]}`:"")&&FT(s,"aria-activedescendant",l),4&n[0]&&HT(s,e[2]),1&n[0]&&q!==(q=e[0].searchLabel+"")&&DT(u,q),1&n[0]&&Y!==(Y=e[0].searchDescription+"")&&DT(f,Y),2097152&n[0]&&DT(m,e[21]),64&n[0]&&g!==(g="emoji "+(e[6]?"hide-focus":""))&&FT(h,"class",g),8388608&n[0]&&FT(h,"aria-label",e[23]),8388608&n[0]&&FT(h,"title",e[23]),64&n[0]&&FT(h,"aria-expanded",e[6]),524288&n[0]&&v!==(v="skintone-button-wrapper "+(e[19]?"expanded":""))&&FT(p,"class",v),1&n[0]&&G!==(G=e[0].skinToneDescription+"")&&DT(b,G),1049089&n[0]&&(ne=e[9],X=iM(X,n,oe,1,e,ne,W,y,sM,tA,null,eA)),64&n[0]&&x!==(x="skintone-list "+(e[6]?"":"hidden no-animate"))&&FT(y,"class",x),64&n[0]&&UT(y,"transform","translateY("+(e[6]?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))")+")"),1&n[0]&&w!==(w=e[0].skinTonesLabel)&&FT(y,"aria-label",w),1048576&n[0]&&k!==(k="skintone-"+e[20])&&FT(y,"aria-activedescendant",k),64&n[0]&&S!==(S=!e[6])&&FT(y,"aria-hidden",S),12305&n[0]|1&n[1]&&(re=e[12],K=iM(K,n,se,1,e,re,Z,E,sM,nA,null,JM)),4096&n[0]&&UT(E,"grid-template-columns","repeat("+e[12].length+", 1fr)"),1&n[0]&&T!==(T=e[0].categoriesLabel)&&FT(E,"aria-label",T),16779264&n[0]&&UT(A,"transform","translateX("+(e[24]?-1:1)*e[11]*100+"%)"),262144&n[0]&&DT(C,e[18]),262144&n[0]&&O!==(O="message "+(e[18]?"":"gone"))&&FT(R,"class",O),402694449&n[0]&&(ie=e[15],Q=iM(Q,n,ae,1,e,ie,J,B,sM,iA,null,ZM)),278528&n[0]&&P!==(P="tabpanel "+(!e[14]||e[18]?"gone":""))&&FT(I,"class",P),16&n[0]&&L!==(L=e[4]?"region":"tabpanel")&&FT(I,"role",L),8209&n[0]&&j!==(j=e[4]?e[0].searchResultsLabel:e[0].categories[e[13].name])&&FT(I,"aria-label",j),8208&n[0]&&N!==(N=e[4]?"":`tab-${e[13].id}`)&&FT(I,"id",N),402654464&n[0]&&(le=e[10],ee=iM(ee,n,ce,1,e,le,te,F,sM,cA,null,KM)),262144&n[0]&&D!==(D="favorites emoji-menu "+(e[18]?"gone":""))&&FT(F,"class",D),1&n[0]&&H!==(H=e[0].favoritesLabel)&&FT(F,"aria-label",H),33554432&n[0]&&UT(F,"padding-inline-end",e[25]+"px"),1&n[0]&&V!==(V=e[0].regionLabel)&&FT(t,"aria-label",V),4194304&n[0]&&FT(t,"style",e[22])},i:xT,o:xT,d(n){n&&PT(t);for(let e=0;e<X.length;e+=1)X[e].d();e[48](null);for(let e=0;e<K.length;e+=1)K[e].d();for(let e=0;e<Q.length;e+=1)Q[e].d();e[50](null);for(let e=0;e<ee.length;e+=1)ee[e].d();e[51](null),e[52](null),$=!1,ST(z)}}}function dA(e,t,n){let o,r,s,i,a,l,c,u,d,f,{skinToneEmoji:p}=t,{i18n:h}=t,{database:m}=t,{customEmoji:g}=t,{customCategorySorting:v}=t,_=!0,b=[],y=[],x="",w="",k=!1,S=-1,E=!1,T=!1,M=0,A=0,R="",C=[],O=[],I=wM,B=!1,P=0,L=0,j=pM,N=!1;const F=e=>{o.getRootNode().getElementById(e).focus()},D=(e,t)=>{o.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))},H=(e,t)=>t&&e.skins&&e.skins[t]||e.unicode,U=(e,t)=>XM([e.name||H(e,t),...e.shortcodes||[]]).join(", "),V=e=>/^skintone-/.test(e.id);function $(e){return qM(e,(t=>{{const r=getComputedStyle(o),s=parseInt(r.getPropertyValue("--num-columns"),10),i="rtl"===r.getPropertyValue("direction"),a=e.parentElement.getBoundingClientRect().width,l=a-t;n(46,I=s),n(25,P=l),n(24,B=i)}}))}function z(e){const t=o.getRootNode(),s=e=>t.getElementById(`emo-${e.id}`);GM(e,r,s),n(1,b)}function q(e){return!e.unicode||!_M(e)||OM.get(e.unicode)}async function Y(e){const t=await CM;return e.filter((({version:e})=>!e||e<=t))}async function G(e){return UM(e,await CM)}async function X(e){if("undefined"===typeof e)return[];const t=-1===e?g:await m.getEmojiByGroup(e);return G(await Y(t))}async function W(e){return G(await Y(await m.getEmojiBySearchQuery(e)))}function K(e){if(!k||!b.length)return;const t=t=>{FM(e),n(5,S=DM(t,S,b))};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==S)return FM(e),J(b[S].id);b.length&&n(5,S=0)}}function Z(e){n(2,x=""),n(44,w=""),n(5,S=-1),n(11,L=j.findIndex((t=>t.id===e.id)))}function Q(e){const{target:t,key:n}=e,o=t=>{t&&(FM(e),t.focus())};switch(n){case"ArrowLeft":return o(t.previousSibling);case"ArrowRight":return o(t.nextSibling);case"Home":return o(t.parentElement.firstChild);case"End":return o(t.parentElement.lastChild)}}async function J(e){const t=await m.getEmojiByUnicodeOrName(e),n=[...b,...O].find((t=>t.id===e)),o=n.unicode&&H(n,M);await m.incrementFavoriteEmojiCount(e),D("emoji-click",{emoji:t,skinTone:M,...o&&{unicode:o},...n.name&&{name:n.name}})}async function ee(e){const{target:t}=e;if(!t.classList.contains("emoji"))return;FM(e);const n=t.id.substring(4);J(n)}async function te(e){const{target:t}=e;if(!V(t))return;FM(e);const o=parseInt(t.id.slice(9),10);n(8,M=o),n(6,E=!1),F("skintone-button"),D("skin-tone-change",{skinTone:o}),m.setPreferredSkinTone(o)}async function ne(e){n(6,E=!E),n(20,A=M),E&&(FM(e),VM((()=>F(`skintone-${A}`))))}function oe(e){if(!E)return;const t=async t=>{FM(e),n(20,A=t),await KT(),F(`skintone-${A}`)};switch(e.key){case"ArrowUp":return t(DM(!0,A,C));case"ArrowDown":return t(DM(!1,A,C));case"Home":return t(0);case"End":return t(C.length-1);case"Enter":return te(e);case"Escape":return FM(e),n(6,E=!1),F("skintone-button")}}function re(e){if(E)switch(e.key){case" ":return te(e)}}async function se(e){const{relatedTarget:t}=e;t&&V(t)||n(6,E=!1)}function ie(){x=this.value,n(2,x)}function ae(e){zT[e?"unshift":"push"]((()=>{a=e,n(7,a)}))}CM.then((e=>{e||n(18,i=h.emojiUnsupportedMessage)}));const le=e=>Z(e);function ce(e){zT[e?"unshift":"push"]((()=>{s=e,n(3,s)}))}function ue(e){zT[e?"unshift":"push"]((()=>{r=e,n(17,r)}))}function de(e){zT[e?"unshift":"push"]((()=>{o=e,n(16,o)}))}return e.$$set=e=>{"skinToneEmoji"in e&&n(40,p=e.skinToneEmoji),"i18n"in e&&n(0,h=e.i18n),"database"in e&&n(39,m=e.database),"customEmoji"in e&&n(41,g=e.customEmoji),"customCategorySorting"in e&&n(42,v=e.customCategorySorting)},e.$$.update=()=>{if(1280&e.$$.dirty[1]&&g&&m&&n(39,m.customEmoji=g,m),1&e.$$.dirty[0]|256&e.$$.dirty[1]){async function t(){let e=!1;const t=setTimeout((()=>{e=!0,n(18,i=h.loadingMessage)}),yM);try{await m.ready(),n(14,N=!0)}catch(o){console.error(o),n(18,i=h.networkErrorMessage)}finally{clearTimeout(t),e&&(e=!1,n(18,i=""))}}m&&t()}if(6144&e.$$.dirty[0]|1024&e.$$.dirty[1]&&(g&&g.length?n(12,j=[hM,...pM]):j!==pM&&(L&&n(11,L--,L),n(12,j=pM))),4&e.$$.dirty[0]&&vM((()=>{n(44,w=(x||"").trim()),n(5,S=-1)})),6144&e.$$.dirty[0]&&n(13,d=j[L]),24576&e.$$.dirty[0]|8192&e.$$.dirty[1]){async function o(){if(N){if(w.length>=mM){const e=w,t=await W(e);e===w&&(n(1,b=t),n(4,k=!0))}else if(d){const e=d.id,t=await X(e);e===d.id&&(n(1,b=t),n(4,k=!1))}}else n(1,b=[]),n(4,k=!1)}o()}if(4112&e.$$.dirty[0]&&n(22,c=`\n  --font-family: ${SM};\n  --num-groups: ${j.length}; \n  --indicator-opacity: ${k?0:1}; \n  --num-skintones: ${gM};`),16384&e.$$.dirty[0]|256&e.$$.dirty[1]){async function r(){N&&n(8,M=await m.getPreferredSkinTone())}r()}if(512&e.$$.dirty[1]&&n(9,C=Array(gM).fill().map(((e,t)=>NM(p,t)))),768&e.$$.dirty[0]&&n(21,l=C[M]),257&e.$$.dirty[0]&&n(23,R=h.skinToneLabel.replace("{skinTone}",h.skinTones[M])),16384&e.$$.dirty[0]|256&e.$$.dirty[1]){async function _(){n(45,u=(await Promise.all(kM.map((e=>m.getEmojiByUnicodeOrName(e))))).filter(Boolean))}N&&_()}if(16384&e.$$.dirty[0]|49408&e.$$.dirty[1]){async function A(){const e=await m.getTopFavoriteEmoji(I),t=await G(HM([...e,...u],(e=>e.unicode||e.name)).slice(0,I));n(10,O=t)}N&&u&&A()}if(10&e.$$.dirty[0]){const B=b.filter((e=>e.unicode)).filter((e=>_M(e)&&!OM.has(e.unicode)));B.length?VM((()=>z(B))):(n(1,b=b.filter(q)),VM((()=>{(s||{}).scrollTop=0})))}if(e.$$.dirty[0],e.$$.dirty[1],18&e.$$.dirty[0]|2048&e.$$.dirty[1]){let P=function(){if(k)return[{category:"",emojis:b}];const e=new Map;for(const t of b){const n=t.category||"";let o=e.get(n);o||(o=[],e.set(n,o)),o.push(t)}return[...e.entries()].map((([e,t])=>({category:e,emojis:t}))).sort(((e,t)=>v(e.category,t.category)))};n(15,y=P())}34&e.$$.dirty[0]&&n(26,f=-1!==S&&b[S].id),192&e.$$.dirty[0]&&(E?a.addEventListener("transitionend",(()=>{n(19,T=!0)}),{once:!0}):n(19,T=!1))},[h,b,x,s,k,S,E,a,M,C,O,L,j,d,N,y,o,r,i,T,A,l,c,R,B,P,f,H,U,$,K,Z,Q,ee,te,ne,oe,re,se,m,p,g,v,_,w,u,I,ie,ae,le,ce,ue,de]}class fA extends dM{constructor(e){super(),uM(this,e,dA,uA,TT,{skinToneEmoji:40,i18n:0,database:39,customEmoji:41,customCategorySorting:42},null,[-1,-1,-1])}}const pA="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",hA="en";var mA={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const gA=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji"];class vA extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent=":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}",this.shadowRoot.appendChild(t),this._ctx={locale:hA,dataSource:pA,skinToneEmoji:xM,customCategorySorting:EM,customEmoji:null,i18n:mA,...e};for(const n of gA)"database"!==n&&Object.prototype.hasOwnProperty.call(this,n)&&(this._ctx[n]=this[n],delete this[n]);this._dbFlush()}connectedCallback(){this._cmp=new fA({target:this.shadowRoot,props:this._ctx})}disconnectedCallback(){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e&&e.close().catch((e=>console.error(e)))}static get observedAttributes(){return["locale","data-source","skin-tone-emoji"]}attributeChangedCallback(e,t,n){this._set(e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),n)}_set(e,t){this._ctx[e]=t,this._cmp&&this._cmp.$set({[e]:t}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:t,database:n}=this._ctx;n&&n.locale===e&&n.dataSource===t||this._set("database",new yT({locale:e,dataSource:t}))}_dbFlush(){Promise.resolve().then((()=>this._dbCreate()))}}const _A={};for(const n of gA)_A[n]={get(){return"database"===n&&this._dbCreate(),this._ctx[n]},set(e){if("database"===n)throw new Error("database is read-only");this._set(n,e)}};function bA(e,t){while(e&&!e.querySelector(t)){e=e.parentNode;const n=e.querySelector(t);if(n)return n}return null}Object.defineProperties(vA.prototype,_A),customElements.get("emoji-picker")||customElements.define("emoji-picker",vA);const yA={name:"EmojiPickerContainer",components:{SvgIcon:fb},props:{emojiOpened:{type:Boolean,default:!1},emojiReaction:{type:Boolean,default:!1},positionTop:{type:Boolean,default:!1},positionRight:{type:Boolean,default:!1},messageId:{type:String,default:""},emojiDataSource:{type:String,default:void 0}},emits:["add-emoji","open-emoji"],data(){return{emojiPickerHeight:320,emojiPickerTop:0,emojiPickerRight:""}},watch:{emojiOpened(e){e&&setTimeout((()=>{this.addCustomStyling(),this.$refs.emojiPicker.shadowRoot.addEventListener("emoji-click",(({detail:e})=>{this.$emit("add-emoji",{unicode:e.unicode})}))}),0)}},methods:{addCustomStyling(){const e=".picker {\n\t\t\t\tborder: none;\n\t\t\t}",t=".nav {\n\t\t\t\toverflow-x: auto;\n\t\t\t}",n=".search-wrapper {\n\t\t\t\tpadding-right: 2px;\n\t\t\t\tpadding-left: 2px;\n\t\t\t}",o="input.search {\n\t\t\t\theight: 32px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tborder-radius: 10rem;\n\t\t\t\tborder: var(--chat-border-style);\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\toutline: none;\n\t\t\t\tbackground: var(--chat-bg-color-input);\n\t\t\t\tcolor: var(--chat-color);\n\t\t\t}",r=document.createElement("style");r.textContent=e+t+n+o,this.$refs.emojiPicker.shadowRoot.appendChild(r)},openEmoji(e){this.$emit("open-emoji",!this.emojiOpened),this.setEmojiPickerPosition(e.clientY,e.view.innerWidth,e.view.innerHeight)},setEmojiPickerPosition(e,t,n){const o=t<500||n<700,r=bA(this.$el,"#room-footer");if(r)if(o)this.emojiPickerRight=t/2-(this.positionTop?200:150)+"px",this.emojiPickerTop=100,this.emojiPickerHeight=n-200;else{const t=r.getBoundingClientRect().top,n=t-e>this.emojiPickerHeight-50;this.emojiPickerTop=n?e+10:e-this.emojiPickerHeight-10,this.emojiPickerRight=this.positionTop?"0px":this.positionRight?"60px":""}else o&&(this.emojiPickerRight="-50px")}}},xA={class:"vac-emoji-wrapper"};function wA(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("emoji-picker");return kg(),Ag("div",xA,[Lg("div",{class:tp(["vac-svg-button",{"vac-emoji-reaction":n.emojiReaction}]),onClick:t[0]||(t[0]=(...e)=>s.openEmoji&&s.openEmoji(...e))},[Em(e.$slots,n.messageId?"emoji-picker-reaction-icon_"+n.messageId:"emoji-picker-icon",{},(()=>[jg(i,{name:"emoji",param:n.emojiReaction?"reaction":""},null,8,["param"])]))],2),n.emojiOpened?(kg(),Rg(m_,{key:0,name:"vac-slide-up",appear:""},{default:xh((()=>[Lg("div",{class:tp(["vac-emoji-picker",{"vac-picker-reaction":n.emojiReaction}]),style:Zf({height:`${r.emojiPickerHeight}px`,top:n.positionTop?r.emojiPickerHeight:`${r.emojiPickerTop}px`,right:r.emojiPickerRight,display:r.emojiPickerTop||!n.emojiReaction?"initial":"none"})},[n.emojiOpened?(kg(),Rg(a,{key:0,ref:"emojiPicker","data-source":n.emojiDataSource},null,8,["data-source"])):Ug("",!0)],6)])),_:1})):Ug("",!0)])}var kA=Z_(yA,[["render",wA]]);const SA={name:"RoomFiles",components:{Loader:ib,SvgIcon:fb},props:{file:{type:Object,required:!0},index:{type:Number,required:!0}},emits:["remove-file"],computed:{isImage(){return aS(this.file)},isVideo(){return lS(this.file)}}},EA={class:"vac-room-file-container"},TA=["src"],MA={class:"vac-text-ellipsis"},AA={key:0,class:"vac-text-ellipsis vac-text-extension"};function RA(e,t,n,o,r,s){const i=vm("loader"),a=vm("svg-icon");return kg(),Ag("div",EA,[jg(i,{show:n.file.loading,type:"room-file"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"]),Lg("div",{class:"vac-svg-button vac-icon-remove",onClick:t[0]||(t[0]=t=>e.$emit("remove-file",n.index))},[Em(e.$slots,"image-close-icon",{},(()=>[jg(a,{name:"close",param:"image"})]))]),s.isImage?(kg(),Ag("div",{key:0,class:tp(["vac-message-image",{"vac-blur-loading":n.file.loading}]),style:Zf({"background-image":`url('${n.file.localUrl||n.file.url}')`})},null,6)):s.isVideo?(kg(),Ag("video",{key:1,controls:"",class:tp({"vac-blur-loading":n.file.loading})},[Lg("source",{src:n.file.localUrl||n.file.url},null,8,TA)],2)):(kg(),Ag("div",{key:2,class:tp(["vac-file-container",{"vac-blur-loading":n.file.loading}])},[Lg("div",null,[Em(e.$slots,"file-icon",{},(()=>[jg(a,{name:"file"})]))]),Lg("div",MA,op(n.file.name),1),n.file.extension?(kg(),Ag("div",AA,op(n.file.extension),1)):Ug("",!0)],2))])}var CA=Z_(SA,[["render",RA]]);const OA={name:"RoomFiles",components:{SvgIcon:fb,RoomFile:CA},props:{files:{type:Array,required:!0}},emits:["remove-file","reset-message"],computed:{}},IA={key:0,class:"vac-room-files-container"},BA={class:"vac-files-box"},PA={class:"vac-icon-close"};function LA(e,t,n,o,r,s){const i=vm("room-file"),a=vm("svg-icon");return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.files.length?(kg(),Ag("div",IA,[Lg("div",BA,[(kg(!0),Ag(vg,null,km(n.files,((n,o)=>(kg(),Ag("div",{key:o},[jg(i,{file:n,index:o,onRemoveFile:t[0]||(t[0]=t=>e.$emit("remove-file",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["file","index"])])))),128))]),Lg("div",PA,[Lg("div",{class:"vac-svg-button",onClick:t[1]||(t[1]=t=>e.$emit("reset-message"))},[Em(e.$slots,"files-close-icon",{},(()=>[jg(a,{name:"close-outline"})]))])])])):Ug("",!0)])),_:3})}var jA=Z_(OA,[["render",LA]]);const NA={props:{percentage:{type:Number,default:0},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["hover-audio-progress","change-linehead"],data(){return{isMouseDown:!1}},methods:{onMouseDown(e){if(this.messageSelectionEnabled)return;this.isMouseDown=!0;const t=this.calculateLineHeadPosition(e,this.$refs.progress);this.$emit("change-linehead",t),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)},onMouseUp(e){if(this.messageSelectionEnabled)return;this.isMouseDown=!1,document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("mousemove",this.onMouseMove);const t=this.calculateLineHeadPosition(e,this.$refs.progress);this.$emit("change-linehead",t)},onMouseMove(e){if(this.messageSelectionEnabled)return;const t=this.calculateLineHeadPosition(e,this.$refs.progress);this.$emit("change-linehead",t)},calculateLineHeadPosition(e,t){const n=t.getBoundingClientRect().width,o=t.getBoundingClientRect().left;let r=(e.clientX-o)/n;return r=r<0?0:r,r=r>1?1:r,r}}},FA={class:"vac-player-progress"},DA={class:"vac-line-container"};function HA(e,t,n,o,r,s){return kg(),Ag("div",{ref:"progress",class:"vac-player-bar",onMousedown:t[0]||(t[0]=(...e)=>s.onMouseDown&&s.onMouseDown(...e)),onMouseover:t[1]||(t[1]=t=>e.$emit("hover-audio-progress",!0)),onMouseout:t[2]||(t[2]=t=>e.$emit("hover-audio-progress",!1))},[Lg("div",FA,[Lg("div",DA,[Lg("div",{class:"vac-line-progress",style:Zf({width:`${n.percentage}%`})},null,4),Lg("div",{class:tp(["vac-line-dot",{"vac-line-dot__active":r.isMouseDown}]),style:Zf({left:`${n.percentage}%`})},null,6)])])],544)}var UA=Z_(NA,[["render",HA]]);const VA={name:"AudioPlayer",components:{SvgIcon:fb,AudioControl:UA},props:{messageId:{type:[String,Number],default:null},src:{type:String,default:null},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["hover-audio-progress","update-progress-time"],data(){return{isPlaying:!1,duration:this.convertTimeMMSS(0),playedTime:this.convertTimeMMSS(0),progress:0}},computed:{playerUniqId(){return`audio-player${this.messageId}`},audioSource(){return this.src?this.src:(this.resetProgress(),null)}},mounted(){this.player=this.$el.querySelector("#"+this.playerUniqId),this.player.addEventListener("ended",(()=>{this.isPlaying=!1})),this.player.addEventListener("loadeddata",(()=>{this.resetProgress(),this.duration=this.convertTimeMMSS(this.player.duration),this.updateProgressTime()})),this.player.addEventListener("timeupdate",this.onTimeUpdate)},methods:{convertTimeMMSS(e){return new Date(1e3*e).toISOString().substr(14,5)},playback(){!this.messageSelectionEnabled&&this.audioSource&&(this.isPlaying?this.player.pause():setTimeout((()=>this.player.play())),this.isPlaying=!this.isPlaying)},resetProgress(){this.isPlaying&&this.player.pause(),this.duration=this.convertTimeMMSS(0),this.playedTime=this.convertTimeMMSS(0),this.progress=0,this.isPlaying=!1,this.updateProgressTime()},onTimeUpdate(){this.playedTime=this.convertTimeMMSS(this.player.currentTime),this.progress=this.player.currentTime/this.player.duration*100,this.updateProgressTime()},onUpdateProgress(e){e&&(this.player.currentTime=e*this.player.duration)},updateProgressTime(){this.$emit("update-progress-time",this.progress>1?this.playedTime:this.duration)}}},$A={class:"vac-audio-player"},zA=["id","src"];function qA(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("audio-control");return kg(),Ag("div",null,[Lg("div",$A,[Lg("div",{class:"vac-svg-button",onClick:t[0]||(t[0]=(...e)=>s.playback&&s.playback(...e))},[r.isPlaying?Em(e.$slots,"audio-pause-icon_"+n.messageId,{key:0},(()=>[jg(i,{name:"audio-pause"})])):Em(e.$slots,"audio-play-icon_"+n.messageId,{key:1},(()=>[jg(i,{name:"audio-play"})]))]),jg(a,{percentage:r.progress,"message-selection-enabled":n.messageSelectionEnabled,onChangeLinehead:s.onUpdateProgress,onHoverAudioProgress:t[1]||(t[1]=t=>e.$emit("hover-audio-progress",t))},null,8,["percentage","message-selection-enabled","onChangeLinehead"]),Lg("audio",{id:s.playerUniqId,src:s.audioSource},null,8,zA)])])}var YA=Z_(VA,[["render",qA]]);const GA={name:"RoomMessageReply",components:{SvgIcon:fb,FormatMessage:zk,AudioPlayer:YA},props:{room:{type:Object,required:!0},messageReply:{type:Object,default:null},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0}},emits:["reset-message"],computed:{firstFile(){var e,t;return(null==(t=null==(e=this.messageReply)?void 0:e.files)?void 0:t.length)?this.messageReply.files[0]:{}},isImage(){return aS(this.firstFile)},isVideo(){return lS(this.firstFile)},isAudio(){return uS(this.firstFile)},isOtherFile(){var e,t;return(null==(t=null==(e=this.messageReply)?void 0:e.files)?void 0:t.length)&&!this.isAudio&&!this.isVideo&&!this.isImage}}},XA={key:0,class:"vac-reply-container"},WA={class:"vac-reply-box"},KA={class:"vac-reply-info"},ZA={class:"vac-reply-username"},QA={class:"vac-reply-content"},JA=["src"],eR={key:1,controls:"",class:"vac-image-reply"},tR=["src"],nR={key:3,class:"vac-image-reply vac-file-container"},oR={class:"vac-text-ellipsis"},rR={key:0,class:"vac-text-ellipsis vac-text-extension"},sR={class:"vac-icon-reply"};function iR(e,t,n,o,r,s){const i=vm("format-message"),a=vm("audio-player"),l=vm("svg-icon");return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.messageReply?(kg(),Ag("div",XA,[Lg("div",WA,[Lg("div",KA,[Lg("div",ZA,op(n.messageReply.username),1),Lg("div",QA,[jg(i,{"message-id":n.messageReply._id,content:n.messageReply.content,users:n.room.users,"text-formatting":n.textFormatting,"link-options":n.linkOptions,reply:!0},null,8,["message-id","content","users","text-formatting","link-options"])])]),s.isImage?(kg(),Ag("img",{key:0,src:s.firstFile.url,class:"vac-image-reply"},null,8,JA)):s.isVideo?(kg(),Ag("video",eR,[Lg("source",{src:s.firstFile.url},null,8,tR)])):s.isAudio?(kg(),Rg(a,{key:2,src:s.firstFile.url,"message-selection-enabled":!1,class:"vac-audio-reply"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["src"])):s.isOtherFile?(kg(),Ag("div",nR,[Lg("div",null,[Em(e.$slots,"file-icon",{},(()=>[jg(l,{name:"file"})]))]),Lg("div",oR,op(s.firstFile.name),1),s.firstFile.extension?(kg(),Ag("div",rR,op(s.firstFile.extension),1)):Ug("",!0)])):Ug("",!0)]),Lg("div",sR,[Lg("div",{class:"vac-svg-button",onClick:t[0]||(t[0]=t=>e.$emit("reset-message"))},[Em(e.$slots,"reply-close-icon",{},(()=>[jg(l,{name:"close-outline"})]))])])])):Ug("",!0)])),_:3})}var aR=Z_(GA,[["render",iR]]);const lR={name:"RoomUsersTag",props:{filteredUsersTag:{type:Array,required:!0},selectItem:{type:Boolean,default:null},activeUpOrDown:{type:Number,default:null}},emits:["select-user-tag","activate-item"],data(){return{activeItem:null}},watch:{filteredUsersTag(e,t){t.length&&e.length===t.length||(this.activeItem=0)},selectItem(e){e&&this.$emit("select-user-tag",this.filteredUsersTag[this.activeItem])},activeUpOrDown(){this.activeUpOrDown>0&&this.activeItem<this.filteredUsersTag.length-1?this.activeItem++:this.activeUpOrDown<0&&this.activeItem>0&&this.activeItem--,this.$emit("activate-item")}}},cR={key:0,class:"vac-tags-container"},uR=["onMouseover","onClick"],dR={class:"vac-tags-info"},fR={class:"vac-tags-username"};function pR(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.filteredUsersTag.length?(kg(),Ag("div",cR,[(kg(!0),Ag(vg,null,km(n.filteredUsersTag,((t,n)=>(kg(),Ag("div",{key:t._id,class:tp(["vac-tags-box",{"vac-tags-box-active":n===r.activeItem}]),onMouseover:e=>r.activeItem=n,onClick:n=>e.$emit("select-user-tag",t)},[Lg("div",dR,[t.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar vac-tags-avatar",style:Zf({"background-image":`url('${t.avatar}')`})},null,4)):Ug("",!0),Lg("div",fR,op(t.username),1)])],42,uR)))),128))])):Ug("",!0)])),_:1})}var hR=Z_(lR,[["render",pR]]);const mR={name:"RoomEmojis",props:{filteredEmojis:{type:Array,required:!0},selectItem:{type:Boolean,default:null},activeUpOrDown:{type:Number,default:null}},emits:["select-emoji","activate-item"],data(){return{activeItem:null}},watch:{filteredEmojis(e,t){t.length&&e.length===t.length||(this.activeItem=0)},selectItem(e){e&&this.$emit("select-emoji",this.filteredEmojis[this.activeItem])},activeUpOrDown(){this.activeUpOrDown>0&&this.activeItem<this.filteredEmojis.length-1?this.activeItem++:this.activeUpOrDown<0&&this.activeItem>0&&this.activeItem--,this.$emit("activate-item")}}},gR={key:0,class:"vac-emojis-container"},vR=["onMouseover","onClick"];function _R(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.filteredEmojis.length?(kg(),Ag("div",gR,[(kg(!0),Ag(vg,null,km(n.filteredEmojis,((t,n)=>(kg(),Ag("div",{key:t,class:tp(["vac-emoji-element",{"vac-emoji-element-active":n===r.activeItem}]),onMouseover:e=>r.activeItem=n,onClick:n=>e.$emit("select-emoji",t)},op(t),43,vR)))),128))])):Ug("",!0)])),_:1})}var bR=Z_(mR,[["render",_R]]);const yR={name:"RoomTemplatesText",props:{filteredTemplatesText:{type:Array,required:!0},selectItem:{type:Boolean,default:null},activeUpOrDown:{type:Number,default:null}},emits:["select-template-text","activate-item"],data(){return{activeItem:null}},watch:{filteredTemplatesText(e,t){t.length&&e.length===t.length||(this.activeItem=0)},selectItem(e){e&&this.$emit("select-template-text",this.filteredTemplatesText[this.activeItem])},activeUpOrDown(){this.activeUpOrDown>0&&this.activeItem<this.filteredTemplatesText.length-1?this.activeItem++:this.activeUpOrDown<0&&this.activeItem>0&&this.activeItem--,this.$emit("activate-item")}}},xR={key:0,class:"vac-template-container vac-app-box-shadow"},wR=["onMouseover","onClick"],kR={class:"vac-template-info"},SR={class:"vac-template-tag"},ER={class:"vac-template-text"};function TR(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-slide-up"},{default:xh((()=>[n.filteredTemplatesText.length?(kg(),Ag("div",xR,[(kg(!0),Ag(vg,null,km(n.filteredTemplatesText,((t,n)=>(kg(),Ag("div",{key:n,class:tp(["vac-template-box",{"vac-template-active":n===r.activeItem}]),onMouseover:e=>r.activeItem=n,onClick:n=>e.$emit("select-template-text",t)},[Lg("div",kR,[Lg("div",SR," /"+op(t.tag),1),Lg("div",ER,op(t.text),1)])],42,wR)))),128))])):Ug("",!0)])),_:1})}var MR=Z_(yR,[["render",TR]]);function AR(e){return new Int8Array(e)}function RR(e){return new Int16Array(e)}function CR(e){return new Int32Array(e)}function OR(e){return new Float32Array(e)}function IR(e){return new Float64Array(e)}function BR(e){if(1==e.length)return OR(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(BR(e));return n}function PR(e){if(1==e.length)return CR(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(PR(e));return n}function LR(e){if(1==e.length)return RR(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(LR(e));return n}function jR(e){if(1==e.length)return new Array(e[0]);var t=e[0];e=e.slice(1);for(var n=[],o=0;o<t;o++)n.push(jR(e));return n}var NR={fill:function(e,t,n,o){if(2==arguments.length)for(var r=0;r<e.length;r++)e[r]=arguments[1];else for(r=t;r<n;r++)e[r]=o}},FR={arraycopy:function(e,t,n,o,r){var s=t+r;while(t<s)n[o++]=e[t++]},out:{}};FR.out.println=function(e){console.log(e)},FR.out.printf=function(){console.log.apply(console,arguments)};var DR={};function HR(e){this.ordinal=e}DR.SQRT2=1.4142135623730951,DR.FAST_LOG10=function(e){return Math.log10(e)},DR.FAST_LOG10_X=function(e,t){return Math.log10(e)*t},HR.short_block_allowed=new HR(0),HR.short_block_coupled=new HR(1),HR.short_block_dispensed=new HR(2),HR.short_block_forced=new HR(3);var UR={};function VR(e){this.ordinal=e}UR.MAX_VALUE=34028235e31,VR.vbr_off=new VR(0),VR.vbr_mt=new VR(1),VR.vbr_rh=new VR(2),VR.vbr_abr=new VR(3),VR.vbr_mtrh=new VR(4),VR.vbr_default=VR.vbr_mtrh;var $R=function(e){},zR={System:FR,VbrMode:VR,Float:UR,ShortBlock:HR,Util:DR,Arrays:NR,new_array_n:jR,new_byte:AR,new_double:IR,new_float:OR,new_float_n:BR,new_int:CR,new_int_n:PR,new_short:RR,new_short_n:LR,assert:$R},qR=zR.System,YR=zR.Util,GR=zR.Arrays,XR=zR.new_float;function WR(){var e=[-.1482523854003001,32.308141959636465,296.40344946382766,883.1344870032432,11113.947376231741,1057.2713659324597,305.7402417275812,30.825928907280012,3.8533188138216365,59.42900443849514,709.5899960123345,5281.91112291017,-5829.66483675846,-817.6293103748613,-76.91656988279972,-4.594269939176596,.9063471690191471,.1960342806591213,-.15466694054279598,34.324387823855965,301.8067566458425,817.599602898885,11573.795901679885,1181.2520595540152,321.59731579894424,31.232021761053772,3.7107095756221318,53.650946155329365,684.167428119626,5224.56624370173,-6366.391851890084,-908.9766368219582,-89.83068876699639,-5.411397422890401,.8206787908286602,.3901806440322567,-.16070888947830023,36.147034243915876,304.11815768187864,732.7429163887613,11989.60988270091,1300.012278487897,335.28490093152146,31.48816102859945,3.373875931311736,47.232241542899175,652.7371796173471,5132.414255594984,-6909.087078780055,-1001.9990371107289,-103.62185754286375,-6.104916304710272,.7416505462720353,.5805693545089249,-.16636367662261495,37.751650073343995,303.01103387567713,627.9747488785183,12358.763425278165,1412.2779918482834,346.7496836825721,31.598286663170416,3.1598635433980946,40.57878626349686,616.1671130880391,5007.833007176154,-7454.040671756168,-1095.7960341867115,-118.24411666465777,-6.818469345853504,.6681786379192989,.7653668647301797,-.1716176790982088,39.11551877123304,298.3413246578966,503.5259106886539,12679.589408408976,1516.5821921214542,355.9850766329023,31.395241710249053,2.9164211881972335,33.79716964664243,574.8943997801362,4853.234992253242,-7997.57021486075,-1189.7624067269965,-133.6444792601766,-7.7202770609839915,.5993769336819237,.9427934736519954,-.17645823955292173,40.21879108166477,289.9982036694474,359.3226160751053,12950.259102786438,1612.1013903507662,362.85067106591504,31.045922092242872,2.822222032597987,26.988862316190684,529.8996541764288,4671.371946949588,-8535.899136645805,-1282.5898586244496,-149.58553632943463,-8.643494270763135,.5345111359507916,1.111140466039205,-.36174739330527045,41.04429910497807,277.5463268268618,195.6386023135583,13169.43812144731,1697.6433561479398,367.40983966190305,30.557037410382826,2.531473372857427,20.070154905927314,481.50208566532336,4464.970341588308,-9065.36882077239,-1373.62841526722,-166.1660487028118,-9.58289321133207,.4729647758913199,1.268786568327291,-.36970682634889585,41.393213350082036,261.2935935556502,12.935476055240873,13336.131683328815,1772.508612059496,369.76534388639965,29.751323653701338,2.4023193045459172,13.304795348228817,430.5615775526625,4237.0568611071185,-9581.931701634761,-1461.6913552409758,-183.12733958476446,-10.718010163869403,.41421356237309503,1.414213562373095,-.37677560326535325,41.619486213528496,241.05423794991074,-187.94665032361226,13450.063605744153,1836.153896465782,369.4908799925761,29.001847876923147,2.0714759319987186,6.779591200894186,377.7767837205709,3990.386575512536,-10081.709459700915,-1545.947424837898,-200.3762958015653,-11.864482073055006,.3578057213145241,1.546020906725474,-.3829366947518991,41.1516456456653,216.47684307105183,-406.1569483347166,13511.136535077321,1887.8076599260432,367.3025214564151,28.136213436723654,1.913880671464418,.3829366947518991,323.85365704338597,3728.1472257487526,-10561.233882199509,-1625.2025997821418,-217.62525175416,-13.015432208941645,.3033466836073424,1.66293922460509,-.5822628872992417,40.35639251440489,188.20071124269245,-640.2706748618148,13519.21490106562,1927.6022433578062,362.8197642637487,26.968821921868447,1.7463817695935329,-5.62650678237171,269.3016715297017,3453.386536448852,-11016.145278780888,-1698.6569643425091,-234.7658734267683,-14.16351421663124,.2504869601913055,1.76384252869671,-.5887180101749253,39.23429103868072,155.76096234403798,-889.2492977967378,13475.470561874661,1955.0535223723712,356.4450994756727,25.894952980042156,1.5695032905781554,-11.181939564328772,214.80884394039484,3169.1640829158237,-11443.321309975563,-1765.1588461316153,-251.68908574481912,-15.49755935939164,.198912367379658,1.847759065022573,-.7912582233652842,37.39369355329111,119.699486012458,-1151.0956593239027,13380.446257078214,1970.3952110853447,348.01959814116185,24.731487364283044,1.3850130831637748,-16.421408865300393,161.05030052864092,2878.3322807850063,-11838.991423510031,-1823.985884688674,-268.2854986386903,-16.81724543849939,.1483359875383474,1.913880671464418,-.7960642926861912,35.2322109610459,80.01928065061526,-1424.0212633405113,13235.794061869668,1973.804052543835,337.9908651258184,23.289159354463873,1.3934255946442087,-21.099669467133474,108.48348407242611,2583.700758091299,-12199.726194855148,-1874.2780658979746,-284.2467154529415,-18.11369784385905,.09849140335716425,1.961570560806461,-.998795456205172,32.56307803611191,36.958364584370486,-1706.075448829146,13043.287458812016,1965.3831106103316,326.43182772364605,22.175018750622293,1.198638339011324,-25.371248002043963,57.53505923036915,2288.41886619975,-12522.674544337233,-1914.8400385312243,-299.26241273417224,-19.37805630698734,.04912684976946725,1.990369453344394,.035780907*YR.SQRT2*.5/2384e-9,.017876148*YR.SQRT2*.5/2384e-9,.003134727*YR.SQRT2*.5/2384e-9,.002457142*YR.SQRT2*.5/2384e-9,971317e-9*YR.SQRT2*.5/2384e-9,218868e-9*YR.SQRT2*.5/2384e-9,101566e-9*YR.SQRT2*.5/2384e-9,13828e-9*YR.SQRT2*.5/2384e-9,12804.797818791945,1945.5515939597317,313.4244966442953,20.801593959731544,1995.1556208053692,9.000838926174497,-29.20218120805369],t=12,n=36,o=[[2382191739347913e-28,6423305872147834e-28,9400849094049688e-28,1122435026096556e-27,1183840321267481e-27,1122435026096556e-27,940084909404969e-27,6423305872147839e-28,2382191739347918e-28,5456116108943412e-27,4878985199565852e-27,4240448995017367e-27,3559909094758252e-27,2858043359288075e-27,2156177623817898e-27,1475637723558783e-27,8371015190102974e-28,2599706096327376e-28,-5456116108943412e-27,-4878985199565852e-27,-4240448995017367e-27,-3559909094758252e-27,-2858043359288076e-27,-2156177623817898e-27,-1475637723558783e-27,-8371015190102975e-28,-2599706096327376e-28,-2382191739347923e-28,-6423305872147843e-28,-9400849094049696e-28,-1122435026096556e-27,-1183840321267481e-27,-1122435026096556e-27,-9400849094049694e-28,-642330587214784e-27,-2382191739347918e-28],[2382191739347913e-28,6423305872147834e-28,9400849094049688e-28,1122435026096556e-27,1183840321267481e-27,1122435026096556e-27,9400849094049688e-28,6423305872147841e-28,2382191739347918e-28,5456116108943413e-27,4878985199565852e-27,4240448995017367e-27,3559909094758253e-27,2858043359288075e-27,2156177623817898e-27,1475637723558782e-27,8371015190102975e-28,2599706096327376e-28,-5461314069809755e-27,-4921085770524055e-27,-4343405037091838e-27,-3732668368707687e-27,-3093523840190885e-27,-2430835727329465e-27,-1734679010007751e-27,-974825365660928e-27,-2797435120168326e-28,0,0,0,0,0,0,-2283748241799531e-28,-4037858874020686e-28,-2146547464825323e-28],[.1316524975873958,.414213562373095,.7673269879789602,1.091308501069271,1.303225372841206,1.56968557711749,1.920982126971166,2.414213562373094,3.171594802363212,4.510708503662055,7.595754112725146,22.90376554843115,.984807753012208,.6427876096865394,.3420201433256688,.9396926207859084,-.1736481776669303,-.7660444431189779,.8660254037844387,.5,-.5144957554275265,-.4717319685649723,-.3133774542039019,-.1819131996109812,-.09457419252642064,-.04096558288530405,-.01419856857247115,-.003699974673760037,.8574929257125442,.8817419973177052,.9496286491027329,.9833145924917901,.9955178160675857,.9991605581781475,.999899195244447,.9999931550702802],[0,0,0,0,0,0,2283748241799531e-28,4037858874020686e-28,2146547464825323e-28,5461314069809755e-27,4921085770524055e-27,4343405037091838e-27,3732668368707687e-27,3093523840190885e-27,2430835727329466e-27,1734679010007751e-27,974825365660928e-27,2797435120168326e-28,-5456116108943413e-27,-4878985199565852e-27,-4240448995017367e-27,-3559909094758253e-27,-2858043359288075e-27,-2156177623817898e-27,-1475637723558782e-27,-8371015190102975e-28,-2599706096327376e-28,-2382191739347913e-28,-6423305872147834e-28,-9400849094049688e-28,-1122435026096556e-27,-1183840321267481e-27,-1122435026096556e-27,-9400849094049688e-28,-6423305872147841e-28,-2382191739347918e-28]],r=o[cC.SHORT_TYPE],s=o[cC.SHORT_TYPE],i=o[cC.SHORT_TYPE],a=o[cC.SHORT_TYPE],l=[0,1,16,17,8,9,24,25,4,5,20,21,12,13,28,29,2,3,18,19,10,11,26,27,6,7,22,23,14,15,30,31];function c(t,n,o){for(var r,s,i,a=10,l=n+238-14-286,c=-15;c<0;c++){var u,d,f;u=e[a+-10],d=t[l+-224]*u,f=t[n+224]*u,u=e[a+-9],d+=t[l+-160]*u,f+=t[n+160]*u,u=e[a+-8],d+=t[l+-96]*u,f+=t[n+96]*u,u=e[a+-7],d+=t[l+-32]*u,f+=t[n+32]*u,u=e[a+-6],d+=t[l+32]*u,f+=t[n+-32]*u,u=e[a+-5],d+=t[l+96]*u,f+=t[n+-96]*u,u=e[a+-4],d+=t[l+160]*u,f+=t[n+-160]*u,u=e[a+-3],d+=t[l+224]*u,f+=t[n+-224]*u,u=e[a+-2],d+=t[n+-256]*u,f-=t[l+256]*u,u=e[a+-1],d+=t[n+-192]*u,f-=t[l+192]*u,u=e[a+0],d+=t[n+-128]*u,f-=t[l+128]*u,u=e[a+1],d+=t[n+-64]*u,f-=t[l+64]*u,u=e[a+2],d+=t[n+0]*u,f-=t[l+0]*u,u=e[a+3],d+=t[n+64]*u,f-=t[l+-64]*u,u=e[a+4],d+=t[n+128]*u,f-=t[l+-128]*u,u=e[a+5],d+=t[n+192]*u,f-=t[l+-192]*u,d*=e[a+6],u=f-d,o[30+2*c]=f+d,o[31+2*c]=e[a+7]*u,a+=18,n--,l++}f=t[n+-16]*e[a+-10],d=t[n+-32]*e[a+-2],f+=(t[n+-48]-t[n+16])*e[a+-9],d+=t[n+-96]*e[a+-1],f+=(t[n+-80]+t[n+48])*e[a+-8],d+=t[n+-160]*e[a+0],f+=(t[n+-112]-t[n+80])*e[a+-7],d+=t[n+-224]*e[a+1],f+=(t[n+-144]+t[n+112])*e[a+-6],d-=t[n+32]*e[a+2],f+=(t[n+-176]-t[n+144])*e[a+-5],d-=t[n+96]*e[a+3],f+=(t[n+-208]+t[n+176])*e[a+-4],d-=t[n+160]*e[a+4],f+=(t[n+-240]-t[n+208])*e[a+-3],d-=t[n+224],r=d-f,s=d+f,f=o[14],d=o[15]-f,o[31]=s+f,o[30]=r+d,o[15]=r-d,o[14]=s-f,i=o[28]-o[0],o[0]+=o[28],o[28]=i*e[a+-36+7],i=o[29]-o[1],o[1]+=o[29],o[29]=i*e[a+-36+7],i=o[26]-o[2],o[2]+=o[26],o[26]=i*e[a+-72+7],i=o[27]-o[3],o[3]+=o[27],o[27]=i*e[a+-72+7],i=o[24]-o[4],o[4]+=o[24],o[24]=i*e[a+-108+7],i=o[25]-o[5],o[5]+=o[25],o[25]=i*e[a+-108+7],i=o[22]-o[6],o[6]+=o[22],o[22]=i*YR.SQRT2,i=o[23]-o[7],o[7]+=o[23],o[23]=i*YR.SQRT2-o[7],o[7]-=o[6],o[22]-=o[7],o[23]-=o[22],i=o[6],o[6]=o[31]-i,o[31]=o[31]+i,i=o[7],o[7]=o[30]-i,o[30]=o[30]+i,i=o[22],o[22]=o[15]-i,o[15]=o[15]+i,i=o[23],o[23]=o[14]-i,o[14]=o[14]+i,i=o[20]-o[8],o[8]+=o[20],o[20]=i*e[a+-180+7],i=o[21]-o[9],o[9]+=o[21],o[21]=i*e[a+-180+7],i=o[18]-o[10],o[10]+=o[18],o[18]=i*e[a+-216+7],i=o[19]-o[11],o[11]+=o[19],o[19]=i*e[a+-216+7],i=o[16]-o[12],o[12]+=o[16],o[16]=i*e[a+-252+7],i=o[17]-o[13],o[13]+=o[17],o[17]=i*e[a+-252+7],i=-o[20]+o[24],o[20]+=o[24],o[24]=i*e[a+-216+7],i=-o[21]+o[25],o[21]+=o[25],o[25]=i*e[a+-216+7],i=o[4]-o[8],o[4]+=o[8],o[8]=i*e[a+-216+7],i=o[5]-o[9],o[5]+=o[9],o[9]=i*e[a+-216+7],i=o[0]-o[12],o[0]+=o[12],o[12]=i*e[a+-72+7],i=o[1]-o[13],o[1]+=o[13],o[13]=i*e[a+-72+7],i=o[16]-o[28],o[16]+=o[28],o[28]=i*e[a+-72+7],i=-o[17]+o[29],o[17]+=o[29],o[29]=i*e[a+-72+7],i=YR.SQRT2*(o[2]-o[10]),o[2]+=o[10],o[10]=i,i=YR.SQRT2*(o[3]-o[11]),o[3]+=o[11],o[11]=i,i=YR.SQRT2*(-o[18]+o[26]),o[18]+=o[26],o[26]=i-o[18],i=YR.SQRT2*(-o[19]+o[27]),o[19]+=o[27],o[27]=i-o[19],i=o[2],o[19]-=o[3],o[3]-=i,o[2]=o[31]-i,o[31]+=i,i=o[3],o[11]-=o[19],o[18]-=i,o[3]=o[30]-i,o[30]+=i,i=o[18],o[27]-=o[11],o[19]-=i,o[18]=o[15]-i,o[15]+=i,i=o[19],o[10]-=i,o[19]=o[14]-i,o[14]+=i,i=o[10],o[11]-=i,o[10]=o[23]-i,o[23]+=i,i=o[11],o[26]-=i,o[11]=o[22]-i,o[22]+=i,i=o[26],o[27]-=i,o[26]=o[7]-i,o[7]+=i,i=o[27],o[27]=o[6]-i,o[6]+=i,i=YR.SQRT2*(o[0]-o[4]),o[0]+=o[4],o[4]=i,i=YR.SQRT2*(o[1]-o[5]),o[1]+=o[5],o[5]=i,i=YR.SQRT2*(o[16]-o[20]),o[16]+=o[20],o[20]=i,i=YR.SQRT2*(o[17]-o[21]),o[17]+=o[21],o[21]=i,i=-YR.SQRT2*(o[8]-o[12]),o[8]+=o[12],o[12]=i-o[8],i=-YR.SQRT2*(o[9]-o[13]),o[9]+=o[13],o[13]=i-o[9],i=-YR.SQRT2*(o[25]-o[29]),o[25]+=o[29],o[29]=i-o[25],i=-YR.SQRT2*(o[24]+o[28]),o[24]-=o[28],o[28]=i-o[24],i=o[24]-o[16],o[24]=i,i=o[20]-i,o[20]=i,i=o[28]-i,o[28]=i,i=o[25]-o[17],o[25]=i,i=o[21]-i,o[21]=i,i=o[29]-i,o[29]=i,i=o[17]-o[1],o[17]=i,i=o[9]-i,o[9]=i,i=o[25]-i,o[25]=i,i=o[5]-i,o[5]=i,i=o[21]-i,o[21]=i,i=o[13]-i,o[13]=i,i=o[29]-i,o[29]=i,i=o[1]-o[0],o[1]=i,i=o[16]-i,o[16]=i,i=o[17]-i,o[17]=i,i=o[8]-i,o[8]=i,i=o[9]-i,o[9]=i,i=o[24]-i,o[24]=i,i=o[25]-i,o[25]=i,i=o[4]-i,o[4]=i,i=o[5]-i,o[5]=i,i=o[20]-i,o[20]=i,i=o[21]-i,o[21]=i,i=o[12]-i,o[12]=i,i=o[13]-i,o[13]=i,i=o[28]-i,o[28]=i,i=o[29]-i,o[29]=i,i=o[0],o[0]+=o[31],o[31]-=i,i=o[1],o[1]+=o[30],o[30]-=i,i=o[16],o[16]+=o[15],o[15]-=i,i=o[17],o[17]+=o[14],o[14]-=i,i=o[8],o[8]+=o[23],o[23]-=i,i=o[9],o[9]+=o[22],o[22]-=i,i=o[24],o[24]+=o[7],o[7]-=i,i=o[25],o[25]+=o[6],o[6]-=i,i=o[4],o[4]+=o[27],o[27]-=i,i=o[5],o[5]+=o[26],o[26]-=i,i=o[20],o[20]+=o[11],o[11]-=i,i=o[21],o[21]+=o[10],o[10]-=i,i=o[12],o[12]+=o[19],o[19]-=i,i=o[13],o[13]+=o[18],o[18]-=i,i=o[28],o[28]+=o[3],o[3]-=i,i=o[29],o[29]+=o[2],o[2]-=i}function u(e,t){for(var n=0;n<3;n++){var r,s,i,a,l,c;a=e[t+6]*o[cC.SHORT_TYPE][0]-e[t+15],r=e[t+0]*o[cC.SHORT_TYPE][2]-e[t+9],s=a+r,i=a-r,a=e[t+15]*o[cC.SHORT_TYPE][0]+e[t+6],r=e[t+9]*o[cC.SHORT_TYPE][2]+e[t+0],l=a+r,c=-a+r,r=2069978111953089e-26*(e[t+3]*o[cC.SHORT_TYPE][1]-e[t+12]),a=2069978111953089e-26*(e[t+12]*o[cC.SHORT_TYPE][1]+e[t+3]),e[t+0]=190752519173728e-25*s+r,e[t+15]=190752519173728e-25*-l+a,i=.8660254037844387*i*1907525191737281e-26,l=.5*l*1907525191737281e-26+a,e[t+3]=i-l,e[t+6]=i+l,s=.5*s*1907525191737281e-26-r,c=.8660254037844387*c*1907525191737281e-26,e[t+9]=s+c,e[t+12]=s-c,t++}}function d(e,t,n){var o,r,i,a,l,c,u,d,f,p,h,m,g,v,_,b,y,x;i=n[17]-n[9],l=n[15]-n[11],c=n[14]-n[12],u=n[0]+n[8],d=n[1]+n[7],f=n[2]+n[6],p=n[3]+n[5],e[t+17]=u+f-p-(d-n[4]),r=(u+f-p)*s[19]+(d-n[4]),o=(i-l-c)*s[18],e[t+5]=o+r,e[t+6]=o-r,a=(n[16]-n[10])*s[18],d=d*s[19]+n[4],o=i*s[12]+a+l*s[13]+c*s[14],r=-u*s[16]+d-f*s[17]+p*s[15],e[t+1]=o+r,e[t+2]=o-r,o=i*s[13]-a-l*s[14]+c*s[12],r=-u*s[17]+d-f*s[15]+p*s[16],e[t+9]=o+r,e[t+10]=o-r,o=i*s[14]-a+l*s[12]-c*s[13],r=u*s[15]-d+f*s[16]-p*s[17],e[t+13]=o+r,e[t+14]=o-r,h=n[8]-n[0],g=n[6]-n[2],v=n[5]-n[3],_=n[17]+n[9],b=n[16]+n[10],y=n[15]+n[11],x=n[14]+n[12],e[t+0]=_+y+x+(b+n[13]),o=(_+y+x)*s[19]-(b+n[13]),r=(h-g+v)*s[18],e[t+11]=o+r,e[t+12]=o-r,m=(n[7]-n[1])*s[18],b=n[13]-b*s[19],o=_*s[15]-b+y*s[16]+x*s[17],r=h*s[14]+m+g*s[12]+v*s[13],e[t+3]=o+r,e[t+4]=o-r,o=-_*s[17]+b-y*s[15]-x*s[16],r=h*s[13]+m-g*s[14]-v*s[12],e[t+7]=o+r,e[t+8]=o-r,o=-_*s[16]+b-y*s[17]-x*s[15],r=h*s[12]-m+g*s[13]-v*s[14],e[t+15]=o+r,e[t+16]=o-r}this.mdct_sub48=function(e,s,f){for(var p=s,h=286,m=0;m<e.channels_out;m++){for(var g=0;g<e.mode_gr;g++){for(var v,_=e.l3_side.tt[g][m],b=_.xr,y=0,x=e.sb_sample[m][1-g],w=0,k=0;k<9;k++)for(c(p,h,x[w]),c(p,h+32,x[w+1]),w+=2,h+=64,v=1;v<32;v+=2)x[w-1][v]*=-1;for(v=0;v<32;v++,y+=18){var S=_.block_type,E=e.sb_sample[m][g],T=e.sb_sample[m][1-g];if(0!=_.mixed_block_flag&&v<2&&(S=0),e.amp_filter[v]<1e-12)GR.fill(b,y+0,y+18,0);else{if(e.amp_filter[v]<1)for(k=0;k<18;k++)T[k][l[v]]*=e.amp_filter[v];if(S==cC.SHORT_TYPE){for(k=-t/4;k<0;k++){var M=o[cC.SHORT_TYPE][k+3];b[y+3*k+9]=E[9+k][l[v]]*M-E[8-k][l[v]],b[y+3*k+18]=E[14-k][l[v]]*M+E[15+k][l[v]],b[y+3*k+10]=E[15+k][l[v]]*M-E[14-k][l[v]],b[y+3*k+19]=T[2-k][l[v]]*M+T[3+k][l[v]],b[y+3*k+11]=T[3+k][l[v]]*M-T[2-k][l[v]],b[y+3*k+20]=T[8-k][l[v]]*M+T[9+k][l[v]]}u(b,y)}else{var A=XR(18);for(k=-n/4;k<0;k++){var R,C;R=o[S][k+27]*T[k+9][l[v]]+o[S][k+36]*T[8-k][l[v]],C=o[S][k+9]*E[k+9][l[v]]-o[S][k+18]*E[8-k][l[v]],A[k+9]=R-C*r[3+k+9],A[k+18]=R*r[3+k+9]+C}d(b,y,A)}}if(S!=cC.SHORT_TYPE&&0!=v)for(k=7;k>=0;--k){var O,I;O=b[y+k]*i[20+k]+b[y+-1-k]*a[28+k],I=b[y+k]*a[28+k]-b[y+-1-k]*i[20+k],b[y+-1-k]=O,b[y+k]=I}}}if(p=f,h=286,1==e.mode_gr)for(var B=0;B<18;B++)qR.arraycopy(e.sb_sample[m][1][B],0,e.sb_sample[m][0][B],0,32)}}}var KR=zR.System,ZR=zR.new_float,QR=zR.new_float_n;function JR(){this.l=ZR(cC.SBMAX_l),this.s=QR([cC.SBMAX_s,3]);var e=this;this.assign=function(t){KR.arraycopy(t.l,0,e.l,0,cC.SBMAX_l);for(var n=0;n<cC.SBMAX_s;n++)for(var o=0;o<3;o++)e.s[n][o]=t.s[n][o]}}function eC(){this.thm=new JR,this.en=new JR}function tC(e){var t=e;this.ordinal=function(){return t}}tC.STEREO=new tC(0),tC.JOINT_STEREO=new tC(1),tC.DUAL_CHANNEL=new tC(2),tC.MONO=new tC(3),tC.NOT_SET=new tC(4);var nC=zR.System,oC=zR.VbrMode,rC=zR.new_array_n,sC=zR.new_float,iC=zR.new_float_n,aC=zR.new_int,lC=zR.assert;function cC(){var e=cC.FFTOFFSET,t=cC.MPG_MD_MS_LR,n=null;this.psy=null;var o=null,r=null,s=null;this.setModules=function(e,t,i,a){n=e,this.psy=t,o=t,r=a,s=i};var i=new WR;function a(e){var t,n;if(0!=e.ATH.useAdjust)if(n=e.loudness_sq[0][0],t=e.loudness_sq[1][0],2==e.channels_out?(n+=e.loudness_sq[0][1],t+=e.loudness_sq[1][1]):(n+=n,t+=t),2==e.mode_gr&&(n=Math.max(n,t)),n*=.5,n*=e.ATH.aaSensitivityP,n>.03125)e.ATH.adjust>=1?e.ATH.adjust=1:e.ATH.adjust<e.ATH.adjustLimit&&(e.ATH.adjust=e.ATH.adjustLimit),e.ATH.adjustLimit=1;else{var o=31.98*n+625e-6;e.ATH.adjust>=o?(e.ATH.adjust*=.075*o+.925,e.ATH.adjust<o&&(e.ATH.adjust=o)):e.ATH.adjustLimit>=o?e.ATH.adjust=o:e.ATH.adjust<e.ATH.adjustLimit&&(e.ATH.adjust=e.ATH.adjustLimit),e.ATH.adjustLimit=o}else e.ATH.adjust=1}function l(e){var t,n;for(lC(e.bitrate_index>=0&&e.bitrate_index<16),lC(e.mode_ext>=0&&e.mode_ext<4),e.bitrate_stereoMode_Hist[e.bitrate_index][4]++,e.bitrate_stereoMode_Hist[15][4]++,2==e.channels_out&&(e.bitrate_stereoMode_Hist[e.bitrate_index][e.mode_ext]++,e.bitrate_stereoMode_Hist[15][e.mode_ext]++),t=0;t<e.mode_gr;++t)for(n=0;n<e.channels_out;++n){var o=0|e.l3_side.tt[t][n].block_type;0!=e.l3_side.tt[t][n].mixed_block_flag&&(o=4),e.bitrate_blockType_Hist[e.bitrate_index][o]++,e.bitrate_blockType_Hist[e.bitrate_index][5]++,e.bitrate_blockType_Hist[15][o]++,e.bitrate_blockType_Hist[15][5]++}}function c(e,t){var n,o,r=e.internal_flags;if(0==r.lame_encode_frame_init){var s,a,l=sC(2014),c=sC(2014);for(r.lame_encode_frame_init=1,s=0,a=0;s<286+576*(1+r.mode_gr);++s)s<576*r.mode_gr?(l[s]=0,2==r.channels_out&&(c[s]=0)):(l[s]=t[0][a],2==r.channels_out&&(c[s]=t[1][a]),++a);for(o=0;o<r.mode_gr;o++)for(n=0;n<r.channels_out;n++)r.l3_side.tt[o][n].block_type=cC.SHORT_TYPE;i.mdct_sub48(r,l,c),lC(r.mf_size>=cC.BLKSIZE+e.framesize-cC.FFTOFFSET),lC(r.mf_size>=512+e.framesize-32)}}this.lame_encode_mp3_frame=function(u,d,f,p,h,m){var g,v=rC([2,2]);v[0][0]=new eC,v[0][1]=new eC,v[1][0]=new eC,v[1][1]=new eC;var _,b=rC([2,2]);b[0][0]=new eC,b[0][1]=new eC,b[1][0]=new eC,b[1][1]=new eC;var y,x,w,k=[null,null],S=u.internal_flags,E=iC([2,4]),T=[.5,.5],M=[[0,0],[0,0]],A=[[0,0],[0,0]];if(k[0]=d,k[1]=f,0==S.lame_encode_frame_init&&c(u,k),S.padding=0,(S.slot_lag-=S.frac_SpF)<0&&(S.slot_lag+=u.out_samplerate,S.padding=1),0!=S.psymodel){var R,C=[null,null],O=0,I=aC(2);for(w=0;w<S.mode_gr;w++){for(x=0;x<S.channels_out;x++)C[x]=k[x],O=576+576*w-cC.FFTOFFSET;if(R=u.VBR==oC.vbr_mtrh||u.VBR==oC.vbr_mt?o.L3psycho_anal_vbr(u,C,O,w,v,b,M[w],A[w],E[w],I):o.L3psycho_anal_ns(u,C,O,w,v,b,M[w],A[w],E[w],I),0!=R)return-4;for(u.mode==tC.JOINT_STEREO&&(T[w]=E[w][2]+E[w][3],T[w]>0&&(T[w]=E[w][3]/T[w])),x=0;x<S.channels_out;x++){var B=S.l3_side.tt[w][x];B.block_type=I[x],B.mixed_block_flag=0}}}else for(w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)S.l3_side.tt[w][x].block_type=cC.NORM_TYPE,S.l3_side.tt[w][x].mixed_block_flag=0,A[w][x]=M[w][x]=700;if(a(S),i.mdct_sub48(S,k[0],k[1]),S.mode_ext=cC.MPG_MD_LR_LR,u.force_ms)S.mode_ext=cC.MPG_MD_MS_LR;else if(u.mode==tC.JOINT_STEREO){var P=0,L=0;for(w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)P+=A[w][x],L+=M[w][x];if(P<=1*L){var j=S.l3_side.tt[0],N=S.l3_side.tt[S.mode_gr-1];j[0].block_type==j[1].block_type&&N[0].block_type==N[1].block_type&&(S.mode_ext=cC.MPG_MD_MS_LR)}}if(S.mode_ext==t?(_=b,y=A):(_=v,y=M),u.analysis&&null!=S.pinfo)for(w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)S.pinfo.ms_ratio[w]=S.ms_ratio[w],S.pinfo.ms_ener_ratio[w]=T[w],S.pinfo.blocktype[w][x]=S.l3_side.tt[w][x].block_type,S.pinfo.pe[w][x]=y[w][x],nC.arraycopy(S.l3_side.tt[w][x].xr,0,S.pinfo.xr[w][x],0,576),S.mode_ext==t&&(S.pinfo.ers[w][x]=S.pinfo.ers[w][x+2],nC.arraycopy(S.pinfo.energy[w][x+2],0,S.pinfo.energy[w][x],0,S.pinfo.energy[w][x].length));if(u.VBR==oC.vbr_off||u.VBR==oC.vbr_abr){var F,D;for(F=0;F<18;F++)S.nsPsy.pefirbuf[F]=S.nsPsy.pefirbuf[F+1];for(D=0,w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)D+=y[w][x];for(S.nsPsy.pefirbuf[18]=D,D=S.nsPsy.pefirbuf[9],F=0;F<9;F++)D+=(S.nsPsy.pefirbuf[F]+S.nsPsy.pefirbuf[18-F])*cC.fircoef[F];for(D=3350*S.mode_gr*S.channels_out/D,w=0;w<S.mode_gr;w++)for(x=0;x<S.channels_out;x++)y[w][x]*=D}if(S.iteration_loop.iteration_loop(u,y,T,_),n.format_bitstream(u),g=n.copy_buffer(S,p,h,m,1),u.bWriteVbrTag&&r.addVbrFrame(u),u.analysis&&null!=S.pinfo){for(x=0;x<S.channels_out;x++){var H;for(H=0;H<e;H++)S.pinfo.pcmdata[x][H]=S.pinfo.pcmdata[x][H+u.framesize];for(H=e;H<1600;H++)S.pinfo.pcmdata[x][H]=k[x][H-e]}s.set_frame_pinfo(u,_)}return l(S),g}}cC.ENCDELAY=576,cC.POSTDELAY=1152,cC.MDCTDELAY=48,cC.FFTOFFSET=224+cC.MDCTDELAY,cC.DECDELAY=528,cC.SBLIMIT=32,cC.CBANDS=64,cC.SBPSY_l=21,cC.SBPSY_s=12,cC.SBMAX_l=22,cC.SBMAX_s=13,cC.PSFB21=6,cC.PSFB12=6,cC.BLKSIZE=1024,cC.HBLKSIZE=cC.BLKSIZE/2+1,cC.BLKSIZE_s=256,cC.HBLKSIZE_s=cC.BLKSIZE_s/2+1,cC.NORM_TYPE=0,cC.START_TYPE=1,cC.SHORT_TYPE=2,cC.STOP_TYPE=3,cC.MPG_MD_LR_LR=0,cC.MPG_MD_LR_I=1,cC.MPG_MD_MS_LR=2,cC.MPG_MD_MS_I=3,cC.fircoef=[-.1039435,-.1892065,5*-.0432472,-.155915,3898045e-23,.0467745*5,.50455,.756825,.187098*5];var uC=zR.Util,dC=zR.new_float;function fC(){var e=dC(cC.BLKSIZE),t=dC(cC.BLKSIZE_s/2),n=[.9238795325112867,.3826834323650898,.9951847266721969,.0980171403295606,.9996988186962042,.02454122852291229,.9999811752826011,.006135884649154475];function o(e,t,o){var r,s,i,a=0;o<<=1;var l=t+o;r=4;do{var c,u,d,f,p,h,m;m=r>>1,f=r,p=r<<1,h=p+f,r=p<<1,s=t,i=s+m;do{w=e[s+0]-e[s+f],x=e[s+0]+e[s+f],T=e[s+p]-e[s+h],S=e[s+p]+e[s+h],e[s+p]=x-S,e[s+0]=x+S,e[s+h]=w-T,e[s+f]=w+T,w=e[i+0]-e[i+f],x=e[i+0]+e[i+f],T=uC.SQRT2*e[i+h],S=uC.SQRT2*e[i+p],e[i+p]=x-S,e[i+0]=x+S,e[i+h]=w-T,e[i+f]=w+T,i+=r,s+=r}while(s<l);for(u=n[a+0],c=n[a+1],d=1;d<m;d++){var g,v;g=1-2*c*c,v=2*c*u,s=t+d,i=t+f-d;do{var _,b,y,x,w,k,S,E,T,M;b=v*e[s+f]-g*e[i+f],_=g*e[s+f]+v*e[i+f],w=e[s+0]-_,x=e[s+0]+_,k=e[i+0]-b,y=e[i+0]+b,b=v*e[s+h]-g*e[i+h],_=g*e[s+h]+v*e[i+h],T=e[s+p]-_,S=e[s+p]+_,M=e[i+p]-b,E=e[i+p]+b,b=c*S-u*M,_=u*S+c*M,e[s+p]=x-_,e[s+0]=x+_,e[i+h]=k-b,e[i+f]=k+b,b=u*E-c*T,_=c*E+u*T,e[i+p]=y-_,e[i+0]=y+_,e[s+h]=w-b,e[s+f]=w+b,i+=r,s+=r}while(s<l);g=u,u=g*n[a+0]-c*n[a+1],c=g*n[a+1]+c*n[a+0]}a+=2}while(r<o)}var r=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254];this.fft_short=function(e,n,s,i,a){for(var l=0;l<3;l++){var c=cC.BLKSIZE_s/2,u=65535&192*(l+1),d=cC.BLKSIZE_s/8-1;do{var f,p,h,m,g,v=255&r[d<<2];f=t[v]*i[s][a+v+u],g=t[127-v]*i[s][a+v+u+128],p=f-g,f+=g,h=t[v+64]*i[s][a+v+u+64],g=t[63-v]*i[s][a+v+u+192],m=h-g,h+=g,c-=4,n[l][c+0]=f+h,n[l][c+2]=f-h,n[l][c+1]=p+m,n[l][c+3]=p-m,f=t[v+1]*i[s][a+v+u+1],g=t[126-v]*i[s][a+v+u+129],p=f-g,f+=g,h=t[v+65]*i[s][a+v+u+65],g=t[62-v]*i[s][a+v+u+193],m=h-g,h+=g,n[l][c+cC.BLKSIZE_s/2+0]=f+h,n[l][c+cC.BLKSIZE_s/2+2]=f-h,n[l][c+cC.BLKSIZE_s/2+1]=p+m,n[l][c+cC.BLKSIZE_s/2+3]=p-m}while(--d>=0);o(n[l],c,cC.BLKSIZE_s/2)}},this.fft_long=function(t,n,s,i,a){var l=cC.BLKSIZE/8-1,c=cC.BLKSIZE/2;do{var u,d,f,p,h,m=255&r[l];u=e[m]*i[s][a+m],h=e[m+512]*i[s][a+m+512],d=u-h,u+=h,f=e[m+256]*i[s][a+m+256],h=e[m+768]*i[s][a+m+768],p=f-h,f+=h,c-=4,n[c+0]=u+f,n[c+2]=u-f,n[c+1]=d+p,n[c+3]=d-p,u=e[m+1]*i[s][a+m+1],h=e[m+513]*i[s][a+m+513],d=u-h,u+=h,f=e[m+257]*i[s][a+m+257],h=e[m+769]*i[s][a+m+769],p=f-h,f+=h,n[c+cC.BLKSIZE/2+0]=u+f,n[c+cC.BLKSIZE/2+2]=u-f,n[c+cC.BLKSIZE/2+1]=d+p,n[c+cC.BLKSIZE/2+3]=d-p}while(--l>=0);o(n,c,cC.BLKSIZE/2)},this.init_fft=function(n){for(var o=0;o<cC.BLKSIZE;o++)e[o]=.42-.5*Math.cos(2*Math.PI*(o+.5)/cC.BLKSIZE)+.08*Math.cos(4*Math.PI*(o+.5)/cC.BLKSIZE);for(o=0;o<cC.BLKSIZE_s/2;o++)t[o]=.5*(1-Math.cos(2*Math.PI*(o+.5)/cC.BLKSIZE_s))}}var pC=zR.VbrMode,hC=zR.Float,mC=zR.ShortBlock,gC=zR.Util,vC=zR.Arrays,_C=zR.new_float,bC=zR.new_float_n,yC=zR.new_int,xC=zR.assert;function wC(){var e=new fC,t=2.302585092994046,n=2,o=16,r=2,s=16,i=.34,a=1/217621504/(cC.BLKSIZE/2),l=.01,c=.8,u=.6,d=.3,f=3.5,p=21,h=.2302585093;function m(e){return e}function g(e,t){for(var n=0,o=0;o<cC.BLKSIZE/2;++o)n+=e[o]*t.ATH.eql_w[o];return n*=a,n}function v(t,n,o,r,s,i,a,l,c,u,d){var f=t.internal_flags;if(c<2)e.fft_long(f,r[s],c,u,d),e.fft_short(f,i[a],c,u,d);else if(2==c){for(var p=cC.BLKSIZE-1;p>=0;--p){var h=r[s+0][p],v=r[s+1][p];r[s+0][p]=(h+v)*gC.SQRT2*.5,r[s+1][p]=(h-v)*gC.SQRT2*.5}for(var _=2;_>=0;--_)for(p=cC.BLKSIZE_s-1;p>=0;--p){h=i[a+0][_][p],v=i[a+1][_][p];i[a+0][_][p]=(h+v)*gC.SQRT2*.5,i[a+1][_][p]=(h-v)*gC.SQRT2*.5}}n[0]=m(r[s+0][0]),n[0]*=n[0];for(p=cC.BLKSIZE/2-1;p>=0;--p){var b=r[s+0][cC.BLKSIZE/2-p],y=r[s+0][cC.BLKSIZE/2+p];n[cC.BLKSIZE/2-p]=m(.5*(b*b+y*y))}for(_=2;_>=0;--_){o[_][0]=i[a+0][_][0],o[_][0]*=o[_][0];for(p=cC.BLKSIZE_s/2-1;p>=0;--p){b=i[a+0][_][cC.BLKSIZE_s/2-p],y=i[a+0][_][cC.BLKSIZE_s/2+p];o[_][cC.BLKSIZE_s/2-p]=m(.5*(b*b+y*y))}}var x=0;for(p=11;p<cC.HBLKSIZE;p++)x+=n[p];if(f.tot_ener[c]=x,t.analysis){for(p=0;p<cC.HBLKSIZE;p++)f.pinfo.energy[l][c][p]=f.pinfo.energy_save[c][p],f.pinfo.energy_save[c][p]=n[p];f.pinfo.pe[l][c]=f.pe[c]}2==t.athaa_loudapprox&&c<2&&(f.loudness_sq[l][c]=f.loudness_sq_save[c],f.loudness_sq_save[c]=g(n,f))}var _,b,y,x=8,w=23,k=15,S=[1,.79433,.63096,.63096,.63096,.63096,.63096,.25119,.11749];function E(){_=Math.pow(10,(x+1)/16),b=Math.pow(10,(w+1)/16),y=Math.pow(10,k/10)}var T=[3.3246*3.3246,3.23837*3.23837,9.9500500969,9.0247369744,8.1854926609,7.0440875649,2.46209*2.46209,2.284*2.284,4.4892710641,1.96552*1.96552,1.82335*1.82335,1.69146*1.69146,2.4621061921,2.1508568964,1.37074*1.37074,1.31036*1.31036,1.5691069696,1.4555939904,1.16203*1.16203,1.2715945225,1.09428*1.09428,1.0659*1.0659,1.0779838276,1.0382591025,1],M=[1.7782755904,1.35879*1.35879,1.38454*1.38454,1.39497*1.39497,1.40548*1.40548,1.3537*1.3537,1.6999465924,1.22321*1.22321,1.3169398564,1],A=[5.5396212496,2.29259*2.29259,4.9868695969,2.12675*2.12675,2.02545*2.02545,1.87894*1.87894,1.74303*1.74303,1.61695*1.61695,2.2499700001,1.39148*1.39148,1.29083*1.29083,1.19746*1.19746,1.2339655056,1.0779838276];function R(e,t,n,o,r,s){var i;if(t>e){if(!(t<e*b))return e+t;i=t/e}else{if(e>=t*b)return e+t;i=e/t}if(e+=t,o+3<=6){if(i>=_)return e;var a=0|gC.FAST_LOG10_X(i,16);return e*M[a]}var l,c;a=0|gC.FAST_LOG10_X(i,16);return t=0!=s?r.ATH.cb_s[n]*r.ATH.adjust:r.ATH.cb_l[n]*r.ATH.adjust,e<y*t?e>t?(l=1,a<=13&&(l=A[a]),c=gC.FAST_LOG10_X(e/t,10/15),e*((T[a]-l)*c+l)):a>13?e:e*A[a]:e*T[a]}var C=[1.7782755904,1.35879*1.35879,1.38454*1.38454,1.39497*1.39497,1.40548*1.40548,1.3537*1.3537,1.6999465924,1.22321*1.22321,1.3169398564,1];function O(e,t,n){var o;if(e<0&&(e=0),t<0&&(t=0),e<=0)return t;if(t<=0)return e;if(o=t>e?t/e:e/t,n>=-2&&n<=2){if(o>=_)return e+t;var r=0|gC.FAST_LOG10_X(o,16);return(e+t)*C[r]}return o<b?e+t:(e<t&&(e=t),e)}function I(e,t){var n=e.internal_flags;if(n.channels_out>1){for(var o=0;o<cC.SBMAX_l;o++){var r=n.thm[0].l[o],s=n.thm[1].l[o];n.thm[0].l[o]+=s*t,n.thm[1].l[o]+=r*t}for(o=0;o<cC.SBMAX_s;o++)for(var i=0;i<3;i++){r=n.thm[0].s[o][i],s=n.thm[1].s[o][i];n.thm[0].s[o][i]+=s*t,n.thm[1].s[o][i]+=r*t}}}function B(e){for(var t=0;t<cC.SBMAX_l;t++)if(!(e.thm[0].l[t]>1.58*e.thm[1].l[t]||e.thm[1].l[t]>1.58*e.thm[0].l[t])){var n=e.mld_l[t]*e.en[3].l[t],o=Math.max(e.thm[2].l[t],Math.min(e.thm[3].l[t],n));n=e.mld_l[t]*e.en[2].l[t];var r=Math.max(e.thm[3].l[t],Math.min(e.thm[2].l[t],n));e.thm[2].l[t]=o,e.thm[3].l[t]=r}for(t=0;t<cC.SBMAX_s;t++)for(var s=0;s<3;s++)if(!(e.thm[0].s[t][s]>1.58*e.thm[1].s[t][s]||e.thm[1].s[t][s]>1.58*e.thm[0].s[t][s])){n=e.mld_s[t]*e.en[3].s[t][s],o=Math.max(e.thm[2].s[t][s],Math.min(e.thm[3].s[t][s],n));n=e.mld_s[t]*e.en[2].s[t][s];r=Math.max(e.thm[3].s[t][s],Math.min(e.thm[2].s[t][s],n));e.thm[2].s[t][s]=o,e.thm[3].s[t][s]=r}}function P(e,t,n){var o=t,r=Math.pow(10,n);t*=2,o*=2;for(var s=0;s<cC.SBMAX_l;s++){if(d=e.ATH.cb_l[e.bm_l[s]]*r,l=Math.min(Math.max(e.thm[0].l[s],d),Math.max(e.thm[1].l[s],d)),c=Math.max(e.thm[2].l[s],d),u=Math.max(e.thm[3].l[s],d),l*t<c+u){var i=l*o/(c+u);c*=i,u*=i}e.thm[2].l[s]=Math.min(c,e.thm[2].l[s]),e.thm[3].l[s]=Math.min(u,e.thm[3].l[s])}r*=cC.BLKSIZE_s/cC.BLKSIZE;for(s=0;s<cC.SBMAX_s;s++)for(var a=0;a<3;a++){var l,c,u,d;if(d=e.ATH.cb_s[e.bm_s[s]]*r,l=Math.min(Math.max(e.thm[0].s[s][a],d),Math.max(e.thm[1].s[s][a],d)),c=Math.max(e.thm[2].s[s][a],d),u=Math.max(e.thm[3].s[s][a],d),l*t<c+u){i=l*t/(c+u);c*=i,u*=i}e.thm[2].s[s][a]=Math.min(e.thm[2].s[s][a],c),e.thm[3].s[s][a]=Math.min(e.thm[3].s[s][a],u)}}function L(e,t,n,o,r){var s,i,a=0,l=0;for(s=i=0;s<cC.SBMAX_s;++i,++s){var c=e.bo_s[s],u=e.npart_s,d=c<u?c:u;while(i<d)xC(t[i]>=0),xC(n[i]>=0),a+=t[i],l+=n[i],i++;if(e.en[o].s[s][r]=a,e.thm[o].s[s][r]=l,i>=u){++s;break}xC(t[i]>=0),xC(n[i]>=0);var f=e.PSY.bo_s_weight[s],p=1-f;a=f*t[i],l=f*n[i],e.en[o].s[s][r]+=a,e.thm[o].s[s][r]+=l,a=p*t[i],l=p*n[i]}for(;s<cC.SBMAX_s;++s)e.en[o].s[s][r]=0,e.thm[o].s[s][r]=0}function j(e,t,n,o){var r,s,i=0,a=0;for(r=s=0;r<cC.SBMAX_l;++s,++r){var l=e.bo_l[r],c=e.npart_l,u=l<c?l:c;while(s<u)xC(t[s]>=0),xC(n[s]>=0),i+=t[s],a+=n[s],s++;if(e.en[o].l[r]=i,e.thm[o].l[r]=a,s>=c){++r;break}xC(t[s]>=0),xC(n[s]>=0);var d=e.PSY.bo_l_weight[r],f=1-d;i=d*t[s],a=d*n[s],e.en[o].l[r]+=i,e.thm[o].l[r]+=a,i=f*t[s],a=f*n[s]}for(;r<cC.SBMAX_l;++r)e.en[o].l[r]=0,e.thm[o].l[r]=0}function N(e,t,n,o,i,a){var l,c,u=e.internal_flags;for(c=l=0;c<u.npart_s;++c){for(var d=0,f=u.numlines_s[c],p=0;p<f;++p,++l){var h=t[a][l];d+=h}n[c]=d}for(xC(c==u.npart_s),l=c=0;c<u.npart_s;c++){var m=u.s3ind_s[c][0],g=u.s3_ss[l++]*n[m];++m;while(m<=u.s3ind_s[c][1])g+=u.s3_ss[l]*n[m],++l,++m;var v=r*u.nb_s1[i][c];if(o[c]=Math.min(g,v),u.blocktype_old[1&i]==cC.SHORT_TYPE){v=s*u.nb_s2[i][c];var _=o[c];o[c]=Math.min(v,_)}u.nb_s2[i][c]=u.nb_s1[i][c],u.nb_s1[i][c]=g,xC(o[c]>=0)}for(;c<=cC.CBANDS;++c)n[c]=0,o[c]=0}function F(e,t,n,o){var r=e.internal_flags;e.short_blocks!=mC.short_block_coupled||0!=t[0]&&0!=t[1]||(t[0]=t[1]=0);for(var s=0;s<r.channels_out;s++)o[s]=cC.NORM_TYPE,e.short_blocks==mC.short_block_dispensed&&(t[s]=1),e.short_blocks==mC.short_block_forced&&(t[s]=0),0!=t[s]?(xC(r.blocktype_old[s]!=cC.START_TYPE),r.blocktype_old[s]==cC.SHORT_TYPE&&(o[s]=cC.STOP_TYPE)):(o[s]=cC.SHORT_TYPE,r.blocktype_old[s]==cC.NORM_TYPE&&(r.blocktype_old[s]=cC.START_TYPE),r.blocktype_old[s]==cC.STOP_TYPE&&(r.blocktype_old[s]=cC.SHORT_TYPE)),n[s]=r.blocktype_old[s],r.blocktype_old[s]=o[s]}function D(e,t,n){return n>=1?e:n<=0?t:t>0?Math.pow(e/t,n)*t:0}var H=[11.8,13.6,17.2,32,46.5,51.3,57.5,67.1,71.5,84.6,97.6,130];function U(e,n){for(var o=309.07,r=0;r<cC.SBMAX_s-1;r++)for(var s=0;s<3;s++){var i=e.thm.s[r][s];if(i>0){var a=i*n,l=e.en.s[r][s];l>a&&(o+=l>1e10*a?H[r]*(10*t):H[r]*gC.FAST_LOG10(l/a))}}return o}var V=[6.8,5.8,5.8,6.4,6.5,9.9,12.1,14.4,15,18.9,21.6,26.9,34.2,40.2,46.8,56.5,60.7,73.9,85.7,93.4,126.1];function $(e,n){for(var o=281.0575,r=0;r<cC.SBMAX_l-1;r++){var s=e.thm.l[r];if(s>0){var i=s*n,a=e.en.l[r];a>i&&(o+=a>1e10*i?V[r]*(10*t):V[r]*gC.FAST_LOG10(a/i))}}return o}function z(e,t,n,o,r){var s,i;for(s=i=0;s<e.npart_l;++s){var a,l=0,c=0;for(a=0;a<e.numlines_l[s];++a,++i){var u=t[i];l+=u,c<u&&(c=u)}n[s]=l,o[s]=c,r[s]=l*e.rnumlines_l[s],xC(e.rnumlines_l[s]>=0),xC(n[s]>=0),xC(o[s]>=0),xC(r[s]>=0)}}function q(e,t,n,o){var r=S.length-1,s=0,i=n[s]+n[s+1];if(i>0){var a=t[s];a<t[s+1]&&(a=t[s+1]),xC(e.numlines_l[s]+e.numlines_l[s+1]-1>0),i=20*(2*a-i)/(i*(e.numlines_l[s]+e.numlines_l[s+1]-1));var l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;for(s=1;s<e.npart_l-1;s++)if(i=n[s-1]+n[s]+n[s+1],i>0){a=t[s-1];a<t[s]&&(a=t[s]),a<t[s+1]&&(a=t[s+1]),xC(e.numlines_l[s-1]+e.numlines_l[s]+e.numlines_l[s+1]-1>0),i=20*(3*a-i)/(i*(e.numlines_l[s-1]+e.numlines_l[s]+e.numlines_l[s+1]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;if(xC(s==e.npart_l-1),i=n[s-1]+n[s],i>0){a=t[s-1];a<t[s]&&(a=t[s]),xC(e.numlines_l[s-1]+e.numlines_l[s]-1>0),i=20*(2*a-i)/(i*(e.numlines_l[s-1]+e.numlines_l[s]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;xC(s==e.npart_l-1)}var Y=[-1730326e-23,-.01703172,-1349528e-23,.0418072,-673278e-22,-.0876324,-30835e-21,.1863476,-1104424e-22,-.627638];function G(t,n,o,r,s,i,a,l){var c=t.internal_flags;if(r<2)e.fft_long(c,a[l],r,n,o);else if(2==r)for(var u=cC.BLKSIZE-1;u>=0;--u){var d=a[l+0][u],f=a[l+1][u];a[l+0][u]=(d+f)*gC.SQRT2*.5,a[l+1][u]=(d-f)*gC.SQRT2*.5}i[0]=m(a[l+0][0]),i[0]*=i[0];for(u=cC.BLKSIZE/2-1;u>=0;--u){var p=a[l+0][cC.BLKSIZE/2-u],h=a[l+0][cC.BLKSIZE/2+u];i[cC.BLKSIZE/2-u]=m(.5*(p*p+h*h))}var g=0;for(u=11;u<cC.HBLKSIZE;u++)g+=i[u];if(c.tot_ener[r]=g,t.analysis){for(u=0;u<cC.HBLKSIZE;u++)c.pinfo.energy[s][r][u]=c.pinfo.energy_save[r][u],c.pinfo.energy_save[r][u]=i[u];c.pinfo.pe[s][r]=c.pe[r]}}function X(t,n,o,r,s,i,a,l){var c=t.internal_flags;if(0==s&&r<2&&e.fft_short(c,a[l],r,n,o),2==r)for(var u=cC.BLKSIZE_s-1;u>=0;--u){var d=a[l+0][s][u],f=a[l+1][s][u];a[l+0][s][u]=(d+f)*gC.SQRT2*.5,a[l+1][s][u]=(d-f)*gC.SQRT2*.5}i[s][0]=a[l+0][s][0],i[s][0]*=i[s][0];for(u=cC.BLKSIZE_s/2-1;u>=0;--u){var p=a[l+0][s][cC.BLKSIZE_s/2-u],h=a[l+0][s][cC.BLKSIZE_s/2+u];i[s][cC.BLKSIZE_s/2-u]=m(.5*(p*p+h*h))}}function W(e,t,n,o){var r=e.internal_flags;2==e.athaa_loudapprox&&n<2&&(r.loudness_sq[t][n]=r.loudness_sq_save[n],r.loudness_sq_save[n]=g(o,r))}this.L3psycho_anal_ns=function(e,t,r,s,i,a,l,f,h,m){var g,_,b,y,x,w,k,E,T,M,A=e.internal_flags,C=bC([2,cC.BLKSIZE]),O=bC([2,3,cC.BLKSIZE_s]),H=_C(cC.CBANDS+1),V=_C(cC.CBANDS+1),G=_C(cC.CBANDS+2),X=yC(2),W=yC(2),K=bC([2,576]),Z=yC(cC.CBANDS+2),Q=yC(cC.CBANDS+2);for(vC.fill(Q,0),g=A.channels_out,e.mode==tC.JOINT_STEREO&&(g=4),T=e.VBR==pC.vbr_off?0==A.ResvMax?0:A.ResvSize/A.ResvMax*.5:e.VBR==pC.vbr_rh||e.VBR==pC.vbr_mtrh||e.VBR==pC.vbr_mt?.6:1,_=0;_<A.channels_out;_++){var J=t[_],ee=r+576-350-p+192;for(y=0;y<576;y++){var te,ne;for(te=J[ee+y+10],ne=0,x=0;x<(p-1)/2-1;x+=2)te+=Y[x]*(J[ee+y+x]+J[ee+y+p-x]),ne+=Y[x+1]*(J[ee+y+x+1]+J[ee+y+p-x-1]);K[_][y]=te+ne}i[s][_].en.assign(A.en[_]),i[s][_].thm.assign(A.thm[_]),g>2&&(a[s][_].en.assign(A.en[_+2]),a[s][_].thm.assign(A.thm[_+2]))}for(_=0;_<g;_++){var oe,re,se,ie=_C(12),ae=[0,0,0,0],le=_C(12),ce=1,ue=_C(cC.CBANDS),de=_C(cC.CBANDS),fe=[0,0,0,0],pe=_C(cC.HBLKSIZE),he=bC([3,cC.HBLKSIZE_s]);for(xC(A.npart_s<=cC.CBANDS),xC(A.npart_l<=cC.CBANDS),y=0;y<3;y++)ie[y]=A.nsPsy.last_en_subshort[_][y+6],xC(A.nsPsy.last_en_subshort[_][y+4]>0),le[y]=ie[y]/A.nsPsy.last_en_subshort[_][y+4],ae[0]+=ie[y];if(2==_)for(y=0;y<576;y++){var me,ge;me=K[0][y],ge=K[1][y],K[0][y]=me+ge,K[1][y]=me-ge}var ve=K[1&_],_e=0;for(y=0;y<9;y++){for(var be=_e+64,ye=1;_e<be;_e++)ye<Math.abs(ve[_e])&&(ye=Math.abs(ve[_e]));A.nsPsy.last_en_subshort[_][y]=ie[y+3]=ye,ae[1+y/3]+=ye,ye>ie[y+3-2]?(xC(ie[y+3-2]>0),ye/=ie[y+3-2]):ye=ie[y+3-2]>10*ye?ie[y+3-2]/(10*ye):0,le[y+3]=ye}if(e.analysis){var xe=le[0];for(y=1;y<12;y++)xe<le[y]&&(xe=le[y]);A.pinfo.ers[s][_]=A.pinfo.ers_save[_],A.pinfo.ers_save[_]=xe}for(se=3==_?A.nsPsy.attackthre_s:A.nsPsy.attackthre,y=0;y<12;y++)0==fe[y/3]&&le[y]>se&&(fe[y/3]=y%3+1);for(y=1;y<4;y++){var we;ae[y-1]>ae[y]?(xC(ae[y]>0),we=ae[y-1]/ae[y]):(xC(ae[y-1]>0),we=ae[y]/ae[y-1]),we<1.7&&(fe[y]=0,1==y&&(fe[0]=0))}for(0!=fe[0]&&0!=A.nsPsy.lastAttacks[_]&&(fe[0]=0),3!=A.nsPsy.lastAttacks[_]&&fe[0]+fe[1]+fe[2]+fe[3]==0||(ce=0,0!=fe[1]&&0!=fe[0]&&(fe[1]=0),0!=fe[2]&&0!=fe[1]&&(fe[2]=0),0!=fe[3]&&0!=fe[2]&&(fe[3]=0)),_<2?W[_]=ce:0==ce&&(W[0]=W[1]=0),h[_]=A.tot_ener[_],re=O,oe=C,v(e,pe,he,oe,1&_,re,1&_,s,_,t,r),z(A,pe,H,ue,de),q(A,ue,de,Z),E=0;E<3;E++){var ke,Se;for(N(e,he,V,G,_,E),L(A,V,G,_,E),k=0;k<cC.SBMAX_s;k++){if(Se=A.thm[_].s[k][E],Se*=c,fe[E]>=2||1==fe[E+1]){var Ee=0!=E?E-1:2;ye=D(A.thm[_].s[k][Ee],Se,u*T);Se=Math.min(Se,ye)}if(1==fe[E]){Ee=0!=E?E-1:2,ye=D(A.thm[_].s[k][Ee],Se,d*T);Se=Math.min(Se,ye)}else if(0!=E&&3==fe[E-1]||0==E&&3==A.nsPsy.lastAttacks[_]){Ee=2!=E?E+1:0,ye=D(A.thm[_].s[k][Ee],Se,d*T);Se=Math.min(Se,ye)}ke=ie[3*E+3]+ie[3*E+4]+ie[3*E+5],6*ie[3*E+5]<ke&&(Se*=.5,6*ie[3*E+4]<ke&&(Se*=.5)),A.thm[_].s[k][E]=Se}}for(A.nsPsy.lastAttacks[_]=fe[2],w=0,b=0;b<A.npart_l;b++){var Te=A.s3ind[b][0],Me=H[Te]*S[Z[Te]],Ae=A.s3_ll[w++]*Me;while(++Te<=A.s3ind[b][1])Me=H[Te]*S[Z[Te]],Ae=R(Ae,A.s3_ll[w++]*Me,Te,Te-b,A,0);Ae*=.158489319246111,A.blocktype_old[1&_]==cC.SHORT_TYPE?G[b]=Ae:G[b]=D(Math.min(Ae,Math.min(n*A.nb_1[_][b],o*A.nb_2[_][b])),Ae,T),A.nb_2[_][b]=A.nb_1[_][b],A.nb_1[_][b]=Ae}for(;b<=cC.CBANDS;++b)H[b]=0,G[b]=0;j(A,H,G,_)}(e.mode!=tC.STEREO&&e.mode!=tC.JOINT_STEREO||e.interChRatio>0&&I(e,e.interChRatio),e.mode==tC.JOINT_STEREO)&&(B(A),M=e.msfix,Math.abs(M)>0&&P(A,M,e.ATHlower*A.ATH.adjust));for(F(e,W,m,X),_=0;_<g;_++){var Re,Ce,Oe,Ie=0;_>1?(Re=f,Ie=-2,Ce=cC.NORM_TYPE,m[0]!=cC.SHORT_TYPE&&m[1]!=cC.SHORT_TYPE||(Ce=cC.SHORT_TYPE),Oe=a[s][_-2]):(Re=l,Ie=0,Ce=m[_],Oe=i[s][_]),Ce==cC.SHORT_TYPE?Re[Ie+_]=U(Oe,A.masking_lower):Re[Ie+_]=$(Oe,A.masking_lower),e.analysis&&(A.pinfo.pe[s][_]=Re[Ie+_])}return 0};var K=[-1730326e-23,-.01703172,-1349528e-23,.0418072,-673278e-22,-.0876324,-30835e-21,.1863476,-1104424e-22,-.627638];function Z(e,t,n,o,r,s,i,a,l,c){for(var u=bC([2,576]),d=e.internal_flags,f=d.channels_out,h=e.mode==tC.JOINT_STEREO?4:f,m=0;m<f;m++){firbuf=t[m];for(var g=n+576-350-p+192,v=0;v<576;v++){var _,b;_=firbuf[g+v+10],b=0;for(var y=0;y<(p-1)/2-1;y+=2)_+=K[y]*(firbuf[g+v+y]+firbuf[g+v+p-y]),b+=K[y+1]*(firbuf[g+v+y+1]+firbuf[g+v+p-y-1]);u[m][v]=_+b}r[o][m].en.assign(d.en[m]),r[o][m].thm.assign(d.thm[m]),h>2&&(s[o][m].en.assign(d.en[m+2]),s[o][m].thm.assign(d.thm[m+2]))}for(m=0;m<h;m++){var x=_C(12),w=_C(12),k=[0,0,0,0],S=u[1&m],E=0,T=3==m?d.nsPsy.attackthre_s:d.nsPsy.attackthre,M=1;if(2==m)for(v=0,y=576;y>0;++v,--y){var A=u[0][v],R=u[1][v];u[0][v]=A+R,u[1][v]=A-R}for(v=0;v<3;v++)w[v]=d.nsPsy.last_en_subshort[m][v+6],xC(d.nsPsy.last_en_subshort[m][v+4]>0),x[v]=w[v]/d.nsPsy.last_en_subshort[m][v+4],k[0]+=w[v];for(v=0;v<9;v++){for(var C=E+64,O=1;E<C;E++)O<Math.abs(S[E])&&(O=Math.abs(S[E]));d.nsPsy.last_en_subshort[m][v]=w[v+3]=O,k[1+v/3]+=O,O>w[v+3-2]?(xC(w[v+3-2]>0),O/=w[v+3-2]):O=w[v+3-2]>10*O?w[v+3-2]/(10*O):0,x[v+3]=O}for(v=0;v<3;++v){var I=w[3*v+3]+w[3*v+4]+w[3*v+5],B=1;6*w[3*v+5]<I&&(B*=.5,6*w[3*v+4]<I&&(B*=.5)),a[m][v]=B}if(e.analysis){var P=x[0];for(v=1;v<12;v++)P<x[v]&&(P=x[v]);d.pinfo.ers[o][m]=d.pinfo.ers_save[m],d.pinfo.ers_save[m]=P}for(v=0;v<12;v++)0==l[m][v/3]&&x[v]>T&&(l[m][v/3]=v%3+1);for(v=1;v<4;v++){var L=k[v-1],j=k[v],N=Math.max(L,j);N<4e4&&L<1.7*j&&j<1.7*L&&(1==v&&l[m][0]<=l[m][v]&&(l[m][0]=0),l[m][v]=0)}l[m][0]<=d.nsPsy.lastAttacks[m]&&(l[m][0]=0),3!=d.nsPsy.lastAttacks[m]&&l[m][0]+l[m][1]+l[m][2]+l[m][3]==0||(M=0,0!=l[m][1]&&0!=l[m][0]&&(l[m][1]=0),0!=l[m][2]&&0!=l[m][1]&&(l[m][2]=0),0!=l[m][3]&&0!=l[m][2]&&(l[m][3]=0)),m<2?c[m]=M:0==M&&(c[0]=c[1]=0),i[m]=d.tot_ener[m]}}function Q(e,t,n){if(0==n)for(var o=0;o<e.npart_s;o++)e.nb_s2[t][o]=e.nb_s1[t][o],e.nb_s1[t][o]=0}function J(e,t){for(var n=0;n<e.npart_l;n++)e.nb_2[t][n]=e.nb_1[t][n],e.nb_1[t][n]=0}function ee(e,t,n,o){var r=S.length-1,s=0,i=n[s]+n[s+1];if(i>0){var a=t[s];a<t[s+1]&&(a=t[s+1]),xC(e.numlines_s[s]+e.numlines_s[s+1]-1>0),i=20*(2*a-i)/(i*(e.numlines_s[s]+e.numlines_s[s+1]-1));var l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;for(s=1;s<e.npart_s-1;s++)if(i=n[s-1]+n[s]+n[s+1],xC(s+1<e.npart_s),i>0){a=t[s-1];a<t[s]&&(a=t[s]),a<t[s+1]&&(a=t[s+1]),xC(e.numlines_s[s-1]+e.numlines_s[s]+e.numlines_s[s+1]-1>0),i=20*(3*a-i)/(i*(e.numlines_s[s-1]+e.numlines_s[s]+e.numlines_s[s+1]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;if(xC(s==e.npart_s-1),i=n[s-1]+n[s],i>0){a=t[s-1];a<t[s]&&(a=t[s]),xC(e.numlines_s[s-1]+e.numlines_s[s]-1>0),i=20*(2*a-i)/(i*(e.numlines_s[s-1]+e.numlines_s[s]-1));l=0|i;l>r&&(l=r),o[s]=l}else o[s]=0;xC(s==e.npart_s-1)}function te(e,t,n,o,r,s){var i,a,l,c=e.internal_flags,u=new float[cC.CBANDS],d=_C(cC.CBANDS),f=new int[cC.CBANDS];for(l=a=0;l<c.npart_s;++l){var p=0,h=0,m=c.numlines_s[l];for(i=0;i<m;++i,++a){var g=t[s][a];p+=g,h<g&&(h=g)}n[l]=p,u[l]=h,d[l]=p/m,xC(d[l]>=0)}for(xC(l==c.npart_s);l<cC.CBANDS;++l)u[l]=0,d[l]=0;for(ee(c,u,d,f),a=l=0;l<c.npart_s;l++){var v,_,b,y,x,w=c.s3ind_s[l][0],k=c.s3ind_s[l][1];v=f[w],_=1,y=c.s3_ss[a]*n[w]*S[f[w]],++a,++w;while(w<=k)v+=f[w],_+=1,b=c.s3_ss[a]*n[w]*S[f[w]],y=O(y,b,w-l),++a,++w;v=(1+2*v)/(2*_),x=.5*S[v],y*=x,o[l]=y,c.nb_s2[r][l]=c.nb_s1[r][l],c.nb_s1[r][l]=y,b=u[l],b*=c.minval_s[l],b*=x,o[l]>b&&(o[l]=b),c.masking_lower>1&&(o[l]*=c.masking_lower),o[l]>n[l]&&(o[l]=n[l]),c.masking_lower<1&&(o[l]*=c.masking_lower),xC(o[l]>=0)}for(;l<cC.CBANDS;++l)n[l]=0,o[l]=0}function ne(e,t,r,s,i){var a,l=_C(cC.CBANDS),c=_C(cC.CBANDS),u=yC(cC.CBANDS+2);z(e,t,r,l,c),q(e,l,c,u);var f=0;for(a=0;a<e.npart_l;a++){var p,h,m,g,v=e.s3ind[a][0],_=e.s3ind[a][1],b=0,y=0;b=u[v],y+=1,h=e.s3_ll[f]*r[v]*S[u[v]],++f,++v;while(v<=_)b+=u[v],y+=1,p=e.s3_ll[f]*r[v]*S[u[v]],g=O(h,p,v-a),h=g,++f,++v;if(b=(1+2*b)/(2*y),m=.5*S[b],h*=m,e.blocktype_old[1&i]==cC.SHORT_TYPE){var x=n*e.nb_1[i][a];s[a]=x>0?Math.min(h,x):Math.min(h,r[a]*d)}else{var w=o*e.nb_2[i][a],k=n*e.nb_1[i][a];w<=0&&(w=h),k<=0&&(k=h),x=e.blocktype_old[1&i]==cC.NORM_TYPE?Math.min(k,w):k,s[a]=Math.min(h,x)}e.nb_2[i][a]=e.nb_1[i][a],e.nb_1[i][a]=h,p=l[a],p*=e.minval_l[a],p*=m,s[a]>p&&(s[a]=p),e.masking_lower>1&&(s[a]*=e.masking_lower),s[a]>r[a]&&(s[a]=r[a]),e.masking_lower<1&&(s[a]*=e.masking_lower),xC(s[a]>=0)}for(;a<cC.CBANDS;++a)r[a]=0,s[a]=0}function oe(e,t){var n=e.internal_flags;e.short_blocks!=mC.short_block_coupled||0!=t[0]&&0!=t[1]||(t[0]=t[1]=0);for(var o=0;o<n.channels_out;o++)e.short_blocks==mC.short_block_dispensed&&(t[o]=1),e.short_blocks==mC.short_block_forced&&(t[o]=0)}function re(e,t,n){for(var o=e.internal_flags,r=0;r<o.channels_out;r++){var s=cC.NORM_TYPE;0!=t[r]?(xC(o.blocktype_old[r]!=cC.START_TYPE),o.blocktype_old[r]==cC.SHORT_TYPE&&(s=cC.STOP_TYPE)):(s=cC.SHORT_TYPE,o.blocktype_old[r]==cC.NORM_TYPE&&(o.blocktype_old[r]=cC.START_TYPE),o.blocktype_old[r]==cC.STOP_TYPE&&(o.blocktype_old[r]=cC.SHORT_TYPE)),n[r]=o.blocktype_old[r],o.blocktype_old[r]=s}}function se(e,t,n,o,r,s,i){for(var a,l,c=2*s,u=s>0?Math.pow(10,r):1,d=0;d<i;++d){var f=e[2][d],p=e[3][d],h=t[0][d],m=t[1][d],g=t[2][d],v=t[3][d];if(h<=1.58*m&&m<=1.58*h){var _=n[d]*p,b=n[d]*f;l=Math.max(g,Math.min(v,_)),a=Math.max(v,Math.min(g,b))}else l=g,a=v;if(s>0){var y,x,w=o[d]*u;if(y=Math.min(Math.max(h,w),Math.max(m,w)),g=Math.max(l,w),v=Math.max(a,w),x=g+v,x>0&&y*c<x){var k=y*c/x;g*=k,v*=k}l=Math.min(g,l),a=Math.min(v,a)}l>f&&(l=f),a>p&&(a=p),t[2][d]=l,t[3][d]=a}}function ie(e,t){var n,o=e;return n=o>=0?27*-o:o*t,n<=-72?0:Math.exp(n*h)}function ae(e){var t=0,n=0,o=0;for(o=0;ie(o,e)>1e-20;o-=1);r=o,s=0;while(Math.abs(s-r)>1e-12)o=(s+r)/2,ie(o,e)>0?s=o:r=o;t=r;var r,s;o=0;for(o=0;ie(o,e)>1e-20;o+=1);r=0,s=o;while(Math.abs(s-r)>1e-12)o=(s+r)/2,ie(o,e)>0?r=o:s=o;n=s;var i,a=0,l=1e3;for(i=0;i<=l;++i){o=t+i*(n-t)/l;var c=ie(o,e);a+=c}var u=(l+1)/(a*(n-t));return u}function le(e){var t,n,o,r;return t=e,t*=t>=0?3:1.5,t>=.5&&t<=2.5?(r=t-.5,n=8*(r*r-2*r)):n=0,t+=.474,o=15.811389+7.5*t-17.5*Math.sqrt(1+t*t),o<=-60?0:(t=Math.exp((n+o)*h),t/=.6609193,t)}function ce(e){return e<0&&(e=0),e*=.001,13*Math.atan(.76*e)+3.5*Math.atan(e*e/56.25)}function ue(e,t,n,o,r,s,a,l,c,u,d,f){var p,h=_C(cC.CBANDS+1),m=l/(f>15?1152:384),g=yC(cC.HBLKSIZE);l/=c;var v=0,_=0;for(p=0;p<cC.CBANDS;p++){var b;for(A=ce(l*v),h[p]=l*v,b=v;ce(l*b)-A<i&&b<=c/2;b++);e[p]=b-v,_=p+1;while(v<b)g[v++]=p;if(v>c/2){v=c/2,++p;break}}h[p]=l*v;for(var y=0;y<f;y++){var x,w,k,S,E;k=u[y],S=u[y+1],x=0|Math.floor(.5+d*(k-.5)),x<0&&(x=0),w=0|Math.floor(.5+d*(S-.5)),w>c/2&&(w=c/2),n[y]=(g[x]+g[w])/2,t[y]=g[w];var T=m*S;a[y]=(T-h[t[y]])/(h[t[y]+1]-h[t[y]]),a[y]<0?a[y]=0:a[y]>1&&(a[y]=1),E=ce(l*u[y]*d),E=Math.min(E,15.5)/15.5,s[y]=Math.pow(10,1.25*(1-Math.cos(Math.PI*E))-2.5)}v=0;for(var M=0;M<_;M++){var A,R,C=e[M];A=ce(l*v),R=ce(l*(v+C-1)),o[M]=.5*(A+R),A=ce(l*(v-.5)),R=ce(l*(v+C-.5)),r[M]=R-A,v+=C}return _}function de(e,t,n,o,r,s){var i,a=bC([cC.CBANDS,cC.CBANDS]),l=0;if(s)for(var c=0;c<t;c++)for(i=0;i<t;i++){var u=le(n[c]-n[i])*o[i];a[c][i]=u*r[c]}else for(i=0;i<t;i++){var d=15+Math.min(21/n[i],12),f=ae(d);for(c=0;c<t;c++){u=f*ie(n[c]-n[i],d)*o[i];a[c][i]=u*r[c]}}for(c=0;c<t;c++){for(i=0;i<t;i++)if(a[c][i]>0)break;for(e[c][0]=i,i=t-1;i>0;i--)if(a[c][i]>0)break;e[c][1]=i,l+=e[c][1]-e[c][0]+1}var p=_C(l),h=0;for(c=0;c<t;c++)for(i=e[c][0];i<=e[c][1];i++)p[h++]=a[c][i];return p}function fe(e){var t=ce(e);return t=Math.min(t,15.5)/15.5,Math.pow(10,1.25*(1-Math.cos(Math.PI*t))-2.5)}function pe(e,t){e<-.3&&(e=3410),e/=1e3,e=Math.max(.1,e);var n=3.64*Math.pow(e,-.8)-6.8*Math.exp(-.6*Math.pow(e-3.4,2))+6*Math.exp(-.15*Math.pow(e-8.7,2))+.001*(.6+.04*t)*Math.pow(e,4);return n}this.L3psycho_anal_vbr=function(e,t,n,o,r,s,i,a,l,f){var p,h,m=e.internal_flags,g=_C(cC.HBLKSIZE),v=bC([3,cC.HBLKSIZE_s]),_=bC([2,cC.BLKSIZE]),b=bC([2,3,cC.BLKSIZE_s]),y=bC([4,cC.CBANDS]),x=bC([4,cC.CBANDS]),w=bC([4,3]),k=.6,S=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],E=yC(2),T=e.mode==tC.JOINT_STEREO?4:m.channels_out;Z(e,t,n,o,r,s,l,w,S,E),oe(e,E);for(var M=0;M<T;M++){var A=1&M;p=_,G(e,t,n,M,o,g,p,A),W(e,o,M,g),0!=E[A]?ne(m,g,y[M],x[M],M):J(m,M)}E[0]+E[1]==2&&e.mode==tC.JOINT_STEREO&&se(y,x,m.mld_cb_l,m.ATH.cb_l,e.ATHlower*m.ATH.adjust,e.msfix,m.npart_l);for(M=0;M<T;M++){A=1&M;0!=E[A]&&j(m,y[M],x[M],M)}for(var R=0;R<3;R++){for(M=0;M<T;++M){A=1&M;0!=E[A]?Q(m,M,R):(h=b,X(e,t,n,M,R,v,h,A),te(e,v,y[M],x[M],M,R))}E[0]+E[1]==0&&e.mode==tC.JOINT_STEREO&&se(y,x,m.mld_cb_s,m.ATH.cb_s,e.ATHlower*m.ATH.adjust,e.msfix,m.npart_s);for(M=0;M<T;++M){A=1&M;0==E[A]&&L(m,y[M],x[M],M,R)}}for(M=0;M<T;M++){A=1&M;if(0==E[A])for(var C=0;C<cC.SBMAX_s;C++){var O=_C(3);for(R=0;R<3;R++){var I=m.thm[M].s[C][R];if(I*=c,S[M][R]>=2||1==S[M][R+1]){var B=0!=R?R-1:2,P=D(m.thm[M].s[C][B],I,u*k);I=Math.min(I,P)}else if(1==S[M][R]){B=0!=R?R-1:2,P=D(m.thm[M].s[C][B],I,d*k);I=Math.min(I,P)}else if(0!=R&&3==S[M][R-1]||0==R&&3==m.nsPsy.lastAttacks[M]){B=2!=R?R+1:0,P=D(m.thm[M].s[C][B],I,d*k);I=Math.min(I,P)}I*=w[M][R],O[R]=I}for(R=0;R<3;R++)m.thm[M].s[C][R]=O[R]}}for(M=0;M<T;M++)m.nsPsy.lastAttacks[M]=S[M][2];re(e,E,f);for(M=0;M<T;M++){var N,F,H,V;M>1?(N=a,F=-2,H=cC.NORM_TYPE,f[0]!=cC.SHORT_TYPE&&f[1]!=cC.SHORT_TYPE||(H=cC.SHORT_TYPE),V=s[o][M-2]):(N=i,F=0,H=f[M],V=r[o][M]),H==cC.SHORT_TYPE?N[F+M]=U(V,m.masking_lower):N[F+M]=$(V,m.masking_lower),e.analysis&&(m.pinfo.pe[o][M]=N[F+M])}return 0},this.psymodel_init=function(n){var o,r=n.internal_flags,s=!0,i=13,a=24,c=0,u=0,d=-8.25,p=-4.5,h=_C(cC.CBANDS),m=_C(cC.CBANDS),g=_C(cC.CBANDS),v=n.out_samplerate;switch(n.experimentalZ){default:case 0:s=!0;break;case 1:s=!(n.VBR==pC.vbr_mtrh||n.VBR==pC.vbr_mt);break;case 2:s=!1;break;case 3:i=8,c=-1.75,u=-.0125,d=-8.25,p=-2.25;break}for(r.ms_ener_ratio_old=.25,r.blocktype_old[0]=r.blocktype_old[1]=cC.NORM_TYPE,o=0;o<4;++o){for(var _=0;_<cC.CBANDS;++_)r.nb_1[o][_]=1e20,r.nb_2[o][_]=1e20,r.nb_s1[o][_]=r.nb_s2[o][_]=1;for(var b=0;b<cC.SBMAX_l;b++)r.en[o].l[b]=1e20,r.thm[o].l[b]=1e20;for(_=0;_<3;++_){for(b=0;b<cC.SBMAX_s;b++)r.en[o].s[b][_]=1e20,r.thm[o].s[b][_]=1e20;r.nsPsy.lastAttacks[o]=0}for(_=0;_<9;_++)r.nsPsy.last_en_subshort[o][_]=10}for(r.loudness_sq_save[0]=r.loudness_sq_save[1]=0,r.npart_l=ue(r.numlines_l,r.bo_l,r.bm_l,h,m,r.mld_l,r.PSY.bo_l_weight,v,cC.BLKSIZE,r.scalefac_band.l,cC.BLKSIZE/1152,cC.SBMAX_l),xC(r.npart_l<cC.CBANDS),o=0;o<r.npart_l;o++){var y=c;h[o]>=i&&(y=u*(h[o]-i)/(a-i)+c*(a-h[o])/(a-i)),g[o]=Math.pow(10,y/10),r.numlines_l[o]>0?r.rnumlines_l[o]=1/r.numlines_l[o]:r.rnumlines_l[o]=0}r.s3_ll=de(r.s3ind,r.npart_l,h,m,g,s);var x;_=0;for(o=0;o<r.npart_l;o++){S=hC.MAX_VALUE;for(var w=0;w<r.numlines_l[o];w++,_++){var k=v*_/(1e3*cC.BLKSIZE);T=this.ATHformula(1e3*k,n)-20,T=Math.pow(10,.1*T),T*=r.numlines_l[o],S>T&&(S=T)}r.ATH.cb_l[o]=S,S=20*h[o]/10-20,S>6&&(S=100),S<-15&&(S=-15),S-=8,r.minval_l[o]=Math.pow(10,S/10)*r.numlines_l[o]}for(r.npart_s=ue(r.numlines_s,r.bo_s,r.bm_s,h,m,r.mld_s,r.PSY.bo_s_weight,v,cC.BLKSIZE_s,r.scalefac_band.s,cC.BLKSIZE_s/384,cC.SBMAX_s),xC(r.npart_s<cC.CBANDS),_=0,o=0;o<r.npart_s;o++){var S;y=d;h[o]>=i&&(y=p*(h[o]-i)/(a-i)+d*(a-h[o])/(a-i)),g[o]=Math.pow(10,y/10),S=hC.MAX_VALUE;for(w=0;w<r.numlines_s[o];w++,_++){var T;k=v*_/(1e3*cC.BLKSIZE_s);T=this.ATHformula(1e3*k,n)-20,T=Math.pow(10,.1*T),T*=r.numlines_s[o],S>T&&(S=T)}r.ATH.cb_s[o]=S,S=7*h[o]/12-7,h[o]>12&&(S*=1+3.1*Math.log(1+S)),h[o]<12&&(S*=1+2.3*Math.log(1-S)),S<-15&&(S=-15),S-=8,r.minval_s[o]=Math.pow(10,S/10)*r.numlines_s[o]}r.s3_ss=de(r.s3ind_s,r.npart_s,h,m,g,s),E(),e.init_fft(r),r.decay=Math.exp(-1*t/(l*v/192)),x=f,0!=(2&n.exp_nspsytune)&&(x=1),Math.abs(n.msfix)>0&&(x=n.msfix),n.msfix=x;for(var M=0;M<r.npart_l;M++)r.s3ind[M][1]>r.npart_l-1&&(r.s3ind[M][1]=r.npart_l-1);var A=576*r.mode_gr/v;if(r.ATH.decay=Math.pow(10,-1.2*A),r.ATH.adjust=.01,r.ATH.adjustLimit=1,xC(r.bo_l[cC.SBMAX_l-1]<=r.npart_l),xC(r.bo_s[cC.SBMAX_s-1]<=r.npart_s),-1!=n.ATHtype){var R=n.out_samplerate/cC.BLKSIZE,C=0;for(k=0,o=0;o<cC.BLKSIZE/2;++o)k+=R,r.ATH.eql_w[o]=1/Math.pow(10,this.ATHformula(k,n)/10),C+=r.ATH.eql_w[o];for(C=1/C,o=cC.BLKSIZE/2;--o>=0;)r.ATH.eql_w[o]*=C}for(M=_=0;M<r.npart_s;++M)for(o=0;o<r.numlines_s[M];++o)++_;for(M=_=0;M<r.npart_l;++M)for(o=0;o<r.numlines_l[M];++o)++_;for(_=0,o=0;o<r.npart_l;o++){k=v*(_+r.numlines_l[o]/2)/(1*cC.BLKSIZE);r.mld_cb_l[o]=fe(k),_+=r.numlines_l[o]}for(;o<cC.CBANDS;++o)r.mld_cb_l[o]=1;for(_=0,o=0;o<r.npart_s;o++){k=v*(_+r.numlines_s[o]/2)/(1*cC.BLKSIZE_s);r.mld_cb_s[o]=fe(k),_+=r.numlines_s[o]}for(;o<cC.CBANDS;++o)r.mld_cb_s[o]=1;return 0},this.ATHformula=function(e,t){var n;switch(t.ATHtype){case 0:n=pe(e,9);break;case 1:n=pe(e,-1);break;case 2:n=pe(e,0);break;case 3:n=pe(e,1)+6;break;case 4:n=pe(e,t.ATHcurve);break;default:n=pe(e,0);break}return n}}function kC(){this.class_id=0,this.num_samples=0,this.num_channels=0,this.in_samplerate=0,this.out_samplerate=0,this.scale=0,this.scale_left=0,this.scale_right=0,this.analysis=!1,this.bWriteVbrTag=!1,this.decode_only=!1,this.quality=0,this.mode=tC.STEREO,this.force_ms=!1,this.free_format=!1,this.findReplayGain=!1,this.decode_on_the_fly=!1,this.write_id3tag_automatic=!1,this.brate=0,this.compression_ratio=0,this.copyright=0,this.original=0,this.extension=0,this.emphasis=0,this.error_protection=0,this.strict_ISO=!1,this.disable_reservoir=!1,this.quant_comp=0,this.quant_comp_short=0,this.experimentalY=!1,this.experimentalZ=0,this.exp_nspsytune=0,this.preset=0,this.VBR=null,this.VBR_q_frac=0,this.VBR_q=0,this.VBR_mean_bitrate_kbps=0,this.VBR_min_bitrate_kbps=0,this.VBR_max_bitrate_kbps=0,this.VBR_hard_min=0,this.lowpassfreq=0,this.highpassfreq=0,this.lowpasswidth=0,this.highpasswidth=0,this.maskingadjust=0,this.maskingadjust_short=0,this.ATHonly=!1,this.ATHshort=!1,this.noATH=!1,this.ATHtype=0,this.ATHcurve=0,this.ATHlower=0,this.athaa_type=0,this.athaa_loudapprox=0,this.athaa_sensitivity=0,this.short_blocks=null,this.useTemporal=!1,this.interChRatio=0,this.msfix=0,this.tune=!1,this.tune_value_a=0,this.version=0,this.encoder_delay=0,this.encoder_padding=0,this.framesize=0,this.frameNum=0,this.lame_allocated_gfp=0,this.internal_flags=null}var SC={};SC.SFBMAX=3*cC.SBMAX_s;var EC=zR.new_float,TC=zR.new_int;function MC(){this.xr=EC(576),this.l3_enc=TC(576),this.scalefac=TC(SC.SFBMAX),this.xrpow_max=0,this.part2_3_length=0,this.big_values=0,this.count1=0,this.global_gain=0,this.scalefac_compress=0,this.block_type=0,this.mixed_block_flag=0,this.table_select=TC(3),this.subblock_gain=TC(4),this.region0_count=0,this.region1_count=0,this.preflag=0,this.scalefac_scale=0,this.count1table_select=0,this.part2_length=0,this.sfb_lmax=0,this.sfb_smin=0,this.psy_lmax=0,this.sfbmax=0,this.psymax=0,this.sfbdivide=0,this.width=TC(SC.SFBMAX),this.window=TC(SC.SFBMAX),this.count1bits=0,this.sfb_partition_table=null,this.slen=TC(4),this.max_nonzero_coeff=0;var e=this;function t(e){return new Int32Array(e)}function n(e){return new Float32Array(e)}this.assign=function(o){e.xr=n(o.xr),e.l3_enc=t(o.l3_enc),e.scalefac=t(o.scalefac),e.xrpow_max=o.xrpow_max,e.part2_3_length=o.part2_3_length,e.big_values=o.big_values,e.count1=o.count1,e.global_gain=o.global_gain,e.scalefac_compress=o.scalefac_compress,e.block_type=o.block_type,e.mixed_block_flag=o.mixed_block_flag,e.table_select=t(o.table_select),e.subblock_gain=t(o.subblock_gain),e.region0_count=o.region0_count,e.region1_count=o.region1_count,e.preflag=o.preflag,e.scalefac_scale=o.scalefac_scale,e.count1table_select=o.count1table_select,e.part2_length=o.part2_length,e.sfb_lmax=o.sfb_lmax,e.sfb_smin=o.sfb_smin,e.psy_lmax=o.psy_lmax,e.sfbmax=o.sfbmax,e.psymax=o.psymax,e.sfbdivide=o.sfbdivide,e.width=t(o.width),e.window=t(o.window),e.count1bits=o.count1bits,e.sfb_partition_table=o.sfb_partition_table.slice(0),e.slen=t(o.slen),e.max_nonzero_coeff=o.max_nonzero_coeff}}var AC=zR.new_int;function RC(){this.tt=[[null,null],[null,null]],this.main_data_begin=0,this.private_bits=0,this.resvDrain_pre=0,this.resvDrain_post=0,this.scfsi=[AC(4),AC(4)];for(var e=0;e<2;e++)for(var t=0;t<2;t++)this.tt[e][t]=new MC}var CC=zR.System,OC=zR.new_int;function IC(e,t,n,o){this.l=OC(1+cC.SBMAX_l),this.s=OC(1+cC.SBMAX_s),this.psfb21=OC(1+cC.PSFB21),this.psfb12=OC(1+cC.PSFB12);var r=this.l,s=this.s;4==arguments.length&&(this.arrL=arguments[0],this.arrS=arguments[1],this.arr21=arguments[2],this.arr12=arguments[3],CC.arraycopy(this.arrL,0,r,0,Math.min(this.arrL.length,this.l.length)),CC.arraycopy(this.arrS,0,s,0,Math.min(this.arrS.length,this.s.length)),CC.arraycopy(this.arr21,0,this.psfb21,0,Math.min(this.arr21.length,this.psfb21.length)),CC.arraycopy(this.arr12,0,this.psfb12,0,Math.min(this.arr12.length,this.psfb12.length)))}var BC=zR.new_float,PC=zR.new_float_n,LC=zR.new_int;function jC(){this.last_en_subshort=PC([4,9]),this.lastAttacks=LC(4),this.pefirbuf=BC(19),this.longfact=BC(cC.SBMAX_l),this.shortfact=BC(cC.SBMAX_s),this.attackthre=0,this.attackthre_s=0}function NC(){this.sum=0,this.seen=0,this.want=0,this.pos=0,this.size=0,this.bag=null,this.nVbrNumFrames=0,this.nBytesWritten=0,this.TotalFrameSize=0}var FC=zR.new_byte,DC=zR.new_double,HC=zR.new_float,UC=zR.new_float_n,VC=zR.new_int,$C=zR.new_int_n;function zC(){var e=40;function t(){this.write_timing=0,this.ptr=0,this.buf=FC(e)}this.Class_ID=0,this.lame_encode_frame_init=0,this.iteration_init_init=0,this.fill_buffer_resample_init=0,this.mfbuf=UC([2,zC.MFSIZE]),this.mode_gr=0,this.channels_in=0,this.channels_out=0,this.resample_ratio=0,this.mf_samples_to_encode=0,this.mf_size=0,this.VBR_min_bitrate=0,this.VBR_max_bitrate=0,this.bitrate_index=0,this.samplerate_index=0,this.mode_ext=0,this.lowpass1=0,this.lowpass2=0,this.highpass1=0,this.highpass2=0,this.noise_shaping=0,this.noise_shaping_amp=0,this.substep_shaping=0,this.psymodel=0,this.noise_shaping_stop=0,this.subblock_gain=0,this.use_best_huffman=0,this.full_outer_loop=0,this.l3_side=new RC,this.ms_ratio=HC(2),this.padding=0,this.frac_SpF=0,this.slot_lag=0,this.tag_spec=null,this.nMusicCRC=0,this.OldValue=VC(2),this.CurrentStep=VC(2),this.masking_lower=0,this.bv_scf=VC(576),this.pseudohalf=VC(SC.SFBMAX),this.sfb21_extra=!1,this.inbuf_old=new Array(2),this.blackfilt=new Array(2*zC.BPC+1),this.itime=DC(2),this.sideinfo_len=0,this.sb_sample=UC([2,2,18,cC.SBLIMIT]),this.amp_filter=HC(32),this.header=new Array(zC.MAX_HEADER_BUF),this.h_ptr=0,this.w_ptr=0,this.ancillary_flag=0,this.ResvSize=0,this.ResvMax=0,this.scalefac_band=new IC,this.minval_l=HC(cC.CBANDS),this.minval_s=HC(cC.CBANDS),this.nb_1=UC([4,cC.CBANDS]),this.nb_2=UC([4,cC.CBANDS]),this.nb_s1=UC([4,cC.CBANDS]),this.nb_s2=UC([4,cC.CBANDS]),this.s3_ss=null,this.s3_ll=null,this.decay=0,this.thm=new Array(4),this.en=new Array(4),this.tot_ener=HC(4),this.loudness_sq=UC([2,2]),this.loudness_sq_save=HC(2),this.mld_l=HC(cC.SBMAX_l),this.mld_s=HC(cC.SBMAX_s),this.bm_l=VC(cC.SBMAX_l),this.bo_l=VC(cC.SBMAX_l),this.bm_s=VC(cC.SBMAX_s),this.bo_s=VC(cC.SBMAX_s),this.npart_l=0,this.npart_s=0,this.s3ind=$C([cC.CBANDS,2]),this.s3ind_s=$C([cC.CBANDS,2]),this.numlines_s=VC(cC.CBANDS),this.numlines_l=VC(cC.CBANDS),this.rnumlines_l=HC(cC.CBANDS),this.mld_cb_l=HC(cC.CBANDS),this.mld_cb_s=HC(cC.CBANDS),this.numlines_s_num1=0,this.numlines_l_num1=0,this.pe=HC(4),this.ms_ratio_s_old=0,this.ms_ratio_l_old=0,this.ms_ener_ratio_old=0,this.blocktype_old=VC(2),this.nsPsy=new jC,this.VBR_seek_table=new NC,this.ATH=null,this.PSY=null,this.nogap_total=0,this.nogap_current=0,this.decode_on_the_fly=!0,this.findReplayGain=!0,this.findPeakSample=!0,this.PeakSample=0,this.RadioGain=0,this.AudiophileGain=0,this.rgdata=null,this.noclipGainChange=0,this.noclipScale=0,this.bitrate_stereoMode_Hist=$C([16,5]),this.bitrate_blockType_Hist=$C([16,6]),this.pinfo=null,this.hip=null,this.in_buffer_nsamples=0,this.in_buffer_0=null,this.in_buffer_1=null,this.iteration_loop=null;for(var n=0;n<this.en.length;n++)this.en[n]=new JR;for(n=0;n<this.thm.length;n++)this.thm[n]=new JR;for(n=0;n<this.header.length;n++)this.header[n]=new t}zC.MFSIZE=3456+cC.ENCDELAY-cC.MDCTDELAY,zC.MAX_HEADER_BUF=256,zC.MAX_BITS_PER_CHANNEL=4095,zC.MAX_BITS_PER_GRANULE=7680,zC.BPC=320;var qC=zR.new_float;function YC(){this.useAdjust=0,this.aaSensitivityP=0,this.adjust=0,this.adjustLimit=0,this.decay=0,this.floor=0,this.l=qC(cC.SBMAX_l),this.s=qC(cC.SBMAX_s),this.psfb21=qC(cC.PSFB21),this.psfb12=qC(cC.PSFB12),this.cb_l=qC(cC.CBANDS),this.cb_s=qC(cC.CBANDS),this.eql_w=qC(cC.BLKSIZE/2)}var GC=zR.System,XC=zR.Arrays;function WC(){var e=64.82,t=.95,n=WC.RMS_WINDOW_TIME_NUMERATOR,o=WC.RMS_WINDOW_TIME_DENOMINATOR,r=[[.038575994352,-3.84664617118067,-.02160367184185,7.81501653005538,-.00123395316851,-11.34170355132042,-9291677959e-14,13.05504219327545,-.01655260341619,-12.28759895145294,.02161526843274,9.4829380631979,-.02074045215285,-5.87257861775999,.00594298065125,2.75465861874613,.00306428023191,-.86984376593551,.00012025322027,.13919314567432,.00288463683916],[.0541865640643,-3.47845948550071,-.02911007808948,6.36317777566148,-.00848709379851,-8.54751527471874,-.00851165645469,9.4769360780128,-.00834990904936,-8.81498681370155,.02245293253339,6.85401540936998,-.02596338512915,-4.39470996079559,.01624864962975,2.19611684890774,-.00240879051584,-.75104302451432,.00674613682247,.13149317958808,-.00187763777362],[.15457299681924,-2.37898834973084,-.09331049056315,2.84868151156327,-.06247880153653,-2.64577170229825,.02163541888798,2.23697657451713,-.05588393329856,-1.67148153367602,.04781476674921,1.00595954808547,.00222312597743,-.45953458054983,.03174092540049,.16378164858596,-.01390589421898,-.05032077717131,.00651420667831,.0234789740702,-.00881362733839],[.30296907319327,-1.61273165137247,-.22613988682123,1.0797749225997,-.08587323730772,-.2565625775407,.03282930172664,-.1627671912044,-.00915702933434,-.22638893773906,-.02364141202522,.39120800788284,-.00584456039913,-.22138138954925,.06276101321749,.04500235387352,-828086748e-14,.02005851806501,.00205861885564,.00302439095741,-.02950134983287],[.33642304856132,-1.49858979367799,-.2557224142557,.87350271418188,-.11828570177555,.12205022308084,.11921148675203,-.80774944671438,-.07834489609479,.47854794562326,-.0046997791438,-.12453458140019,-.0058950022444,-.04067510197014,.05724228140351,.08333755284107,.00832043980773,-.04237348025746,-.0163538138454,.02977207319925,-.0176017656815],[.4491525660845,-.62820619233671,-.14351757464547,.29661783706366,-.22784394429749,-.372563729424,-.01419140100551,.00213767857124,.04078262797139,-.42029820170918,-.12398163381748,.22199650564824,.04097565135648,.00613424350682,.10478503600251,.06747620744683,-.01863887810927,.05784820375801,-.03193428438915,.03222754072173,.00541907748707],[.56619470757641,-1.04800335126349,-.75464456939302,.29156311971249,.1624213774223,-.26806001042947,.16744243493672,.00819999645858,-.18901604199609,.45054734505008,.3093178284183,-.33032403314006,-.27562961986224,.0673936833311,.00647310677246,-.04784254229033,.08647503780351,.01639907836189,-.0378898455484,.01807364323573,-.00588215443421],[.58100494960553,-.51035327095184,-.53174909058578,-.31863563325245,-.14289799034253,-.20256413484477,.17520704835522,.1472815413433,.02377945217615,.38952639978999,.15558449135573,-.23313271880868,-.25344790059353,-.05246019024463,.01628462406333,-.02505961724053,.06920467763959,.02442357316099,-.03721611395801,.01818801111503,-.00749618797172],[.53648789255105,-.2504987195602,-.42163034350696,-.43193942311114,-.00275953611929,-.03424681017675,.04267842219415,-.04678328784242,-.10214864179676,.26408300200955,.14590772289388,.15113130533216,-.02459864859345,-.17556493366449,-.11202315195388,-.18823009262115,-.04060034127,.05477720428674,.0478866554818,.0470440968812,-.02217936801134]],s=[[.98621192462708,-1.97223372919527,-1.97242384925416,.97261396931306,.98621192462708],[.98500175787242,-1.96977855582618,-1.97000351574484,.9702284756635,.98500175787242],[.97938932735214,-1.95835380975398,-1.95877865470428,.95920349965459,.97938932735214],[.97531843204928,-1.95002759149878,-1.95063686409857,.95124613669835,.97531843204928],[.97316523498161,-1.94561023566527,-1.94633046996323,.94705070426118,.97316523498161],[.96454515552826,-1.92783286977036,-1.92909031105652,.93034775234268,.96454515552826],[.96009142950541,-1.91858953033784,-1.92018285901082,.92177618768381,.96009142950541],[.95856916599601,-1.9154210807478,-1.91713833199203,.91885558323625,.95856916599601],[.94597685600279,-1.88903307939452,-1.89195371200558,.89487434461664,.94597685600279]];function i(e,t,n,o,r,s){while(0!=r--)n[o]=1e-10+e[t+0]*s[0]-n[o-1]*s[1]+e[t-1]*s[2]-n[o-2]*s[3]+e[t-2]*s[4]-n[o-3]*s[5]+e[t-3]*s[6]-n[o-4]*s[7]+e[t-4]*s[8]-n[o-5]*s[9]+e[t-5]*s[10]-n[o-6]*s[11]+e[t-6]*s[12]-n[o-7]*s[13]+e[t-7]*s[14]-n[o-8]*s[15]+e[t-8]*s[16]-n[o-9]*s[17]+e[t-9]*s[18]-n[o-10]*s[19]+e[t-10]*s[20],++o,++t}function a(e,t,n,o,r,s){while(0!=r--)n[o]=e[t+0]*s[0]-n[o-1]*s[1]+e[t-1]*s[2]-n[o-2]*s[3]+e[t-2]*s[4],++o,++t}function l(e,t){for(var r=0;r<MAX_ORDER;r++)e.linprebuf[r]=e.lstepbuf[r]=e.loutbuf[r]=e.rinprebuf[r]=e.rstepbuf[r]=e.routbuf[r]=0;switch(0|t){case 48e3:e.reqindex=0;break;case 44100:e.reqindex=1;break;case 32e3:e.reqindex=2;break;case 24e3:e.reqindex=3;break;case 22050:e.reqindex=4;break;case 16e3:e.reqindex=5;break;case 12e3:e.reqindex=6;break;case 11025:e.reqindex=7;break;case 8e3:e.reqindex=8;break;default:return INIT_GAIN_ANALYSIS_ERROR}return e.sampleWindow=0|(t*n+o-1)/o,e.lsum=0,e.rsum=0,e.totsamp=0,XC.ill(e.A,0),INIT_GAIN_ANALYSIS_OK}function c(e){return e*e}function u(n,o){var r,s=0;for(r=0;r<o;r++)s+=n[r];if(0==s)return GAIN_NOT_ENOUGH_SAMPLES;var i=0|Math.ceil(s*(1-t));for(r=o;r-- >0;)if((i-=n[r])<=0)break;return e-r/WC.STEPS_per_dB}this.InitGainAnalysis=function(e,t){return l(e,t)!=INIT_GAIN_ANALYSIS_OK?INIT_GAIN_ANALYSIS_ERROR:(e.linpre=MAX_ORDER,e.rinpre=MAX_ORDER,e.lstep=MAX_ORDER,e.rstep=MAX_ORDER,e.lout=MAX_ORDER,e.rout=MAX_ORDER,XC.fill(e.B,0),INIT_GAIN_ANALYSIS_OK)},this.AnalyzeSamples=function(e,t,n,o,l,u,d){var f,p,h,m,g,v,_;if(0==u)return GAIN_ANALYSIS_OK;switch(_=0,g=u,d){case 1:o=t,l=n;break;case 2:break;default:return GAIN_ANALYSIS_ERROR}u<MAX_ORDER?(GC.arraycopy(t,n,e.linprebuf,MAX_ORDER,u),GC.arraycopy(o,l,e.rinprebuf,MAX_ORDER,u)):(GC.arraycopy(t,n,e.linprebuf,MAX_ORDER,MAX_ORDER),GC.arraycopy(o,l,e.rinprebuf,MAX_ORDER,MAX_ORDER));while(g>0){v=g>e.sampleWindow-e.totsamp?e.sampleWindow-e.totsamp:g,_<MAX_ORDER?(f=e.linpre+_,p=e.linprebuf,h=e.rinpre+_,m=e.rinprebuf,v>MAX_ORDER-_&&(v=MAX_ORDER-_)):(f=n+_,p=t,h=l+_,m=o),i(p,f,e.lstepbuf,e.lstep+e.totsamp,v,r[e.reqindex]),i(m,h,e.rstepbuf,e.rstep+e.totsamp,v,r[e.reqindex]),a(e.lstepbuf,e.lstep+e.totsamp,e.loutbuf,e.lout+e.totsamp,v,s[e.reqindex]),a(e.rstepbuf,e.rstep+e.totsamp,e.routbuf,e.rout+e.totsamp,v,s[e.reqindex]),f=e.lout+e.totsamp,p=e.loutbuf,h=e.rout+e.totsamp,m=e.routbuf;var b=v%8;while(0!=b--)e.lsum+=c(p[f++]),e.rsum+=c(m[h++]);b=v/8;while(0!=b--)e.lsum+=c(p[f+0])+c(p[f+1])+c(p[f+2])+c(p[f+3])+c(p[f+4])+c(p[f+5])+c(p[f+6])+c(p[f+7]),f+=8,e.rsum+=c(m[h+0])+c(m[h+1])+c(m[h+2])+c(m[h+3])+c(m[h+4])+c(m[h+5])+c(m[h+6])+c(m[h+7]),h+=8;if(g-=v,_+=v,e.totsamp+=v,e.totsamp==e.sampleWindow){var y=10*WC.STEPS_per_dB*Math.log10((e.lsum+e.rsum)/e.totsamp*.5+1e-37),x=y<=0?0:0|y;x>=e.A.length&&(x=e.A.length-1),e.A[x]++,e.lsum=e.rsum=0,GC.arraycopy(e.loutbuf,e.totsamp,e.loutbuf,0,MAX_ORDER),GC.arraycopy(e.routbuf,e.totsamp,e.routbuf,0,MAX_ORDER),GC.arraycopy(e.lstepbuf,e.totsamp,e.lstepbuf,0,MAX_ORDER),GC.arraycopy(e.rstepbuf,e.totsamp,e.rstepbuf,0,MAX_ORDER),e.totsamp=0}if(e.totsamp>e.sampleWindow)return GAIN_ANALYSIS_ERROR}return u<MAX_ORDER?(GC.arraycopy(e.linprebuf,u,e.linprebuf,0,MAX_ORDER-u),GC.arraycopy(e.rinprebuf,u,e.rinprebuf,0,MAX_ORDER-u),GC.arraycopy(t,n,e.linprebuf,MAX_ORDER-u,u),GC.arraycopy(o,l,e.rinprebuf,MAX_ORDER-u,u)):(GC.arraycopy(t,n+u-MAX_ORDER,e.linprebuf,0,MAX_ORDER),GC.arraycopy(o,l+u-MAX_ORDER,e.rinprebuf,0,MAX_ORDER)),GAIN_ANALYSIS_OK},this.GetTitleGain=function(e){for(var t=u(e.A,e.A.length),n=0;n<e.A.length;n++)e.B[n]+=e.A[n],e.A[n]=0;for(n=0;n<MAX_ORDER;n++)e.linprebuf[n]=e.lstepbuf[n]=e.loutbuf[n]=e.rinprebuf[n]=e.rstepbuf[n]=e.routbuf[n]=0;return e.totsamp=0,e.lsum=e.rsum=0,t}}WC.STEPS_per_dB=100,WC.MAX_dB=120,WC.GAIN_NOT_ENOUGH_SAMPLES=-24601,WC.GAIN_ANALYSIS_ERROR=0,WC.GAIN_ANALYSIS_OK=1,WC.INIT_GAIN_ANALYSIS_ERROR=0,WC.INIT_GAIN_ANALYSIS_OK=1,WC.YULE_ORDER=10,WC.MAX_ORDER=WC.YULE_ORDER,WC.MAX_SAMP_FREQ=48e3,WC.RMS_WINDOW_TIME_NUMERATOR=1,WC.RMS_WINDOW_TIME_DENOMINATOR=20,WC.MAX_SAMPLES_PER_WINDOW=WC.MAX_SAMP_FREQ*WC.RMS_WINDOW_TIME_NUMERATOR/WC.RMS_WINDOW_TIME_DENOMINATOR+1;var KC=zR.new_float,ZC=zR.new_int;function QC(){this.linprebuf=KC(NaN),this.linpre=0,this.lstepbuf=KC(NaN),this.lstep=0,this.loutbuf=KC(NaN),this.lout=0,this.rinprebuf=KC(NaN),this.rinpre=0,this.rstepbuf=KC(NaN),this.rstep=0,this.routbuf=KC(NaN),this.rout=0,this.sampleWindow=0,this.totsamp=0,this.lsum=0,this.rsum=0,this.freqindex=0,this.first=0,this.A=ZC(0),this.B=ZC(0)}function JC(e){this.bits=e}var eO=zR.new_float,tO=zR.new_int,nO=zR.assert;function oO(e){var t=e;this.quantize=t,this.iteration_loop=function(e,t,n,o){var r,s=e.internal_flags,i=eO(SC.SFBMAX),a=eO(576),l=tO(2),c=0,u=s.l3_side,d=new JC(c);this.quantize.rv.ResvFrameBegin(e,d),c=d.bits;for(var f=0;f<s.mode_gr;f++){r=this.quantize.qupvt.on_pe(e,t,l,c,f,f),s.mode_ext==cC.MPG_MD_MS_LR&&(this.quantize.ms_convert(s.l3_side,f),this.quantize.qupvt.reduce_side(l,n[f],c,r));for(var p=0;p<s.channels_out;p++){var h,m,g=u.tt[f][p];g.block_type!=cC.SHORT_TYPE?(h=0,m=s.PSY.mask_adjust-h):(h=0,m=s.PSY.mask_adjust_short-h),s.masking_lower=Math.pow(10,.1*m),this.quantize.init_outer_loop(s,g),this.quantize.init_xrpow(s,g,a)&&(this.quantize.qupvt.calc_xmin(e,o[f][p],g,i),this.quantize.outer_loop(e,g,i,a,p,l[p])),this.quantize.iteration_finish_one(s,f,p),nO(g.part2_3_length<=zC.MAX_BITS_PER_CHANNEL),nO(g.part2_3_length<=l[p])}}this.quantize.rv.ResvFrameEnd(s,c)}}function rO(e,t,n,o){this.xlen=e,this.linmax=t,this.table=n,this.hlen=o}var sO={t1HB:[1,1,1,0],t2HB:[1,2,1,3,1,1,3,2,0],t3HB:[3,2,1,1,1,1,3,2,0],t5HB:[1,2,6,5,3,1,4,4,7,5,7,1,6,1,1,0],t6HB:[7,3,5,1,6,2,3,2,5,4,4,1,3,3,2,0],t7HB:[1,2,10,19,16,10,3,3,7,10,5,3,11,4,13,17,8,4,12,11,18,15,11,2,7,6,9,14,3,1,6,4,5,3,2,0],t8HB:[3,4,6,18,12,5,5,1,2,16,9,3,7,3,5,14,7,3,19,17,15,13,10,4,13,5,8,11,5,1,12,4,4,1,1,0],t9HB:[7,5,9,14,15,7,6,4,5,5,6,7,7,6,8,8,8,5,15,6,9,10,5,1,11,7,9,6,4,1,14,4,6,2,6,0],t10HB:[1,2,10,23,35,30,12,17,3,3,8,12,18,21,12,7,11,9,15,21,32,40,19,6,14,13,22,34,46,23,18,7,20,19,33,47,27,22,9,3,31,22,41,26,21,20,5,3,14,13,10,11,16,6,5,1,9,8,7,8,4,4,2,0],t11HB:[3,4,10,24,34,33,21,15,5,3,4,10,32,17,11,10,11,7,13,18,30,31,20,5,25,11,19,59,27,18,12,5,35,33,31,58,30,16,7,5,28,26,32,19,17,15,8,14,14,12,9,13,14,9,4,1,11,4,6,6,6,3,2,0],t12HB:[9,6,16,33,41,39,38,26,7,5,6,9,23,16,26,11,17,7,11,14,21,30,10,7,17,10,15,12,18,28,14,5,32,13,22,19,18,16,9,5,40,17,31,29,17,13,4,2,27,12,11,15,10,7,4,1,27,12,8,12,6,3,1,0],t13HB:[1,5,14,21,34,51,46,71,42,52,68,52,67,44,43,19,3,4,12,19,31,26,44,33,31,24,32,24,31,35,22,14,15,13,23,36,59,49,77,65,29,40,30,40,27,33,42,16,22,20,37,61,56,79,73,64,43,76,56,37,26,31,25,14,35,16,60,57,97,75,114,91,54,73,55,41,48,53,23,24,58,27,50,96,76,70,93,84,77,58,79,29,74,49,41,17,47,45,78,74,115,94,90,79,69,83,71,50,59,38,36,15,72,34,56,95,92,85,91,90,86,73,77,65,51,44,43,42,43,20,30,44,55,78,72,87,78,61,46,54,37,30,20,16,53,25,41,37,44,59,54,81,66,76,57,54,37,18,39,11,35,33,31,57,42,82,72,80,47,58,55,21,22,26,38,22,53,25,23,38,70,60,51,36,55,26,34,23,27,14,9,7,34,32,28,39,49,75,30,52,48,40,52,28,18,17,9,5,45,21,34,64,56,50,49,45,31,19,12,15,10,7,6,3,48,23,20,39,36,35,53,21,16,23,13,10,6,1,4,2,16,15,17,27,25,20,29,11,17,12,16,8,1,1,0,1],t15HB:[7,12,18,53,47,76,124,108,89,123,108,119,107,81,122,63,13,5,16,27,46,36,61,51,42,70,52,83,65,41,59,36,19,17,15,24,41,34,59,48,40,64,50,78,62,80,56,33,29,28,25,43,39,63,55,93,76,59,93,72,54,75,50,29,52,22,42,40,67,57,95,79,72,57,89,69,49,66,46,27,77,37,35,66,58,52,91,74,62,48,79,63,90,62,40,38,125,32,60,56,50,92,78,65,55,87,71,51,73,51,70,30,109,53,49,94,88,75,66,122,91,73,56,42,64,44,21,25,90,43,41,77,73,63,56,92,77,66,47,67,48,53,36,20,71,34,67,60,58,49,88,76,67,106,71,54,38,39,23,15,109,53,51,47,90,82,58,57,48,72,57,41,23,27,62,9,86,42,40,37,70,64,52,43,70,55,42,25,29,18,11,11,118,68,30,55,50,46,74,65,49,39,24,16,22,13,14,7,91,44,39,38,34,63,52,45,31,52,28,19,14,8,9,3,123,60,58,53,47,43,32,22,37,24,17,12,15,10,2,1,71,37,34,30,28,20,17,26,21,16,10,6,8,6,2,0],t16HB:[1,5,14,44,74,63,110,93,172,149,138,242,225,195,376,17,3,4,12,20,35,62,53,47,83,75,68,119,201,107,207,9,15,13,23,38,67,58,103,90,161,72,127,117,110,209,206,16,45,21,39,69,64,114,99,87,158,140,252,212,199,387,365,26,75,36,68,65,115,101,179,164,155,264,246,226,395,382,362,9,66,30,59,56,102,185,173,265,142,253,232,400,388,378,445,16,111,54,52,100,184,178,160,133,257,244,228,217,385,366,715,10,98,48,91,88,165,157,148,261,248,407,397,372,380,889,884,8,85,84,81,159,156,143,260,249,427,401,392,383,727,713,708,7,154,76,73,141,131,256,245,426,406,394,384,735,359,710,352,11,139,129,67,125,247,233,229,219,393,743,737,720,885,882,439,4,243,120,118,115,227,223,396,746,742,736,721,712,706,223,436,6,202,224,222,218,216,389,386,381,364,888,443,707,440,437,1728,4,747,211,210,208,370,379,734,723,714,1735,883,877,876,3459,865,2,377,369,102,187,726,722,358,711,709,866,1734,871,3458,870,434,0,12,10,7,11,10,17,11,9,13,12,10,7,5,3,1,3],t24HB:[15,13,46,80,146,262,248,434,426,669,653,649,621,517,1032,88,14,12,21,38,71,130,122,216,209,198,327,345,319,297,279,42,47,22,41,74,68,128,120,221,207,194,182,340,315,295,541,18,81,39,75,70,134,125,116,220,204,190,178,325,311,293,271,16,147,72,69,135,127,118,112,210,200,188,352,323,306,285,540,14,263,66,129,126,119,114,214,202,192,180,341,317,301,281,262,12,249,123,121,117,113,215,206,195,185,347,330,308,291,272,520,10,435,115,111,109,211,203,196,187,353,332,313,298,283,531,381,17,427,212,208,205,201,193,186,177,169,320,303,286,268,514,377,16,335,199,197,191,189,181,174,333,321,305,289,275,521,379,371,11,668,184,183,179,175,344,331,314,304,290,277,530,383,373,366,10,652,346,171,168,164,318,309,299,287,276,263,513,375,368,362,6,648,322,316,312,307,302,292,284,269,261,512,376,370,364,359,4,620,300,296,294,288,282,273,266,515,380,374,369,365,361,357,2,1033,280,278,274,267,264,259,382,378,372,367,363,360,358,356,0,43,20,19,17,15,13,11,9,7,6,4,7,5,3,1,3],t32HB:[1,10,8,20,12,20,16,32,14,12,24,0,28,16,24,16],t33HB:[15,28,26,48,22,40,36,64,14,24,20,32,12,16,8,0],t1l:[1,4,3,5],t2l:[1,4,7,4,5,7,6,7,8],t3l:[2,3,7,4,4,7,6,7,8],t5l:[1,4,7,8,4,5,8,9,7,8,9,10,8,8,9,10],t6l:[3,4,6,8,4,4,6,7,5,6,7,8,7,7,8,9],t7l:[1,4,7,9,9,10,4,6,8,9,9,10,7,7,9,10,10,11,8,9,10,11,11,11,8,9,10,11,11,12,9,10,11,12,12,12],t8l:[2,4,7,9,9,10,4,4,6,10,10,10,7,6,8,10,10,11,9,10,10,11,11,12,9,9,10,11,12,12,10,10,11,11,13,13],t9l:[3,4,6,7,9,10,4,5,6,7,8,10,5,6,7,8,9,10,7,7,8,9,9,10,8,8,9,9,10,11,9,9,10,10,11,11],t10l:[1,4,7,9,10,10,10,11,4,6,8,9,10,11,10,10,7,8,9,10,11,12,11,11,8,9,10,11,12,12,11,12,9,10,11,12,12,12,12,12,10,11,12,12,13,13,12,13,9,10,11,12,12,12,13,13,10,10,11,12,12,13,13,13],t11l:[2,4,6,8,9,10,9,10,4,5,6,8,10,10,9,10,6,7,8,9,10,11,10,10,8,8,9,11,10,12,10,11,9,10,10,11,11,12,11,12,9,10,11,12,12,13,12,13,9,9,9,10,11,12,12,12,9,9,10,11,12,12,12,12],t12l:[4,4,6,8,9,10,10,10,4,5,6,7,9,9,10,10,6,6,7,8,9,10,9,10,7,7,8,8,9,10,10,10,8,8,9,9,10,10,10,11,9,9,10,10,10,11,10,11,9,9,9,10,10,11,11,12,10,10,10,11,11,11,11,12],t13l:[1,5,7,8,9,10,10,11,10,11,12,12,13,13,14,14,4,6,8,9,10,10,11,11,11,11,12,12,13,14,14,14,7,8,9,10,11,11,12,12,11,12,12,13,13,14,15,15,8,9,10,11,11,12,12,12,12,13,13,13,13,14,15,15,9,9,11,11,12,12,13,13,12,13,13,14,14,15,15,16,10,10,11,12,12,12,13,13,13,13,14,13,15,15,16,16,10,11,12,12,13,13,13,13,13,14,14,14,15,15,16,16,11,11,12,13,13,13,14,14,14,14,15,15,15,16,18,18,10,10,11,12,12,13,13,14,14,14,14,15,15,16,17,17,11,11,12,12,13,13,13,15,14,15,15,16,16,16,18,17,11,12,12,13,13,14,14,15,14,15,16,15,16,17,18,19,12,12,12,13,14,14,14,14,15,15,15,16,17,17,17,18,12,13,13,14,14,15,14,15,16,16,17,17,17,18,18,18,13,13,14,15,15,15,16,16,16,16,16,17,18,17,18,18,14,14,14,15,15,15,17,16,16,19,17,17,17,19,18,18,13,14,15,16,16,16,17,16,17,17,18,18,21,20,21,18],t15l:[3,5,6,8,8,9,10,10,10,11,11,12,12,12,13,14,5,5,7,8,9,9,10,10,10,11,11,12,12,12,13,13,6,7,7,8,9,9,10,10,10,11,11,12,12,13,13,13,7,8,8,9,9,10,10,11,11,11,12,12,12,13,13,13,8,8,9,9,10,10,11,11,11,11,12,12,12,13,13,13,9,9,9,10,10,10,11,11,11,11,12,12,13,13,13,14,10,9,10,10,10,11,11,11,11,12,12,12,13,13,14,14,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,14,10,10,10,11,11,11,11,12,12,12,12,13,13,14,14,14,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,11,11,11,11,12,12,12,12,12,13,13,13,13,14,15,14,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,12,12,11,12,12,12,13,13,13,13,13,13,14,14,15,15,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,13,13,13,13,13,13,13,13,14,14,14,14,15,15,14,15,13,13,13,13,13,13,13,14,14,14,14,14,15,15,15,15],t16_5l:[1,5,7,9,10,10,11,11,12,12,12,13,13,13,14,11,4,6,8,9,10,11,11,11,12,12,12,13,14,13,14,11,7,8,9,10,11,11,12,12,13,12,13,13,13,14,14,12,9,9,10,11,11,12,12,12,13,13,14,14,14,15,15,13,10,10,11,11,12,12,13,13,13,14,14,14,15,15,15,12,10,10,11,11,12,13,13,14,13,14,14,15,15,15,16,13,11,11,11,12,13,13,13,13,14,14,14,14,15,15,16,13,11,11,12,12,13,13,13,14,14,15,15,15,15,17,17,13,11,12,12,13,13,13,14,14,15,15,15,15,16,16,16,13,12,12,12,13,13,14,14,15,15,15,15,16,15,16,15,14,12,13,12,13,14,14,14,14,15,16,16,16,17,17,16,13,13,13,13,13,14,14,15,16,16,16,16,16,16,15,16,14,13,14,14,14,14,15,15,15,15,17,16,16,16,16,18,14,15,14,14,14,15,15,16,16,16,18,17,17,17,19,17,14,14,15,13,14,16,16,15,16,16,17,18,17,19,17,16,14,11,11,11,12,12,13,13,13,14,14,14,14,14,14,14,12],t16l:[1,5,7,9,10,10,11,11,12,12,12,13,13,13,14,10,4,6,8,9,10,11,11,11,12,12,12,13,14,13,14,10,7,8,9,10,11,11,12,12,13,12,13,13,13,14,14,11,9,9,10,11,11,12,12,12,13,13,14,14,14,15,15,12,10,10,11,11,12,12,13,13,13,14,14,14,15,15,15,11,10,10,11,11,12,13,13,14,13,14,14,15,15,15,16,12,11,11,11,12,13,13,13,13,14,14,14,14,15,15,16,12,11,11,12,12,13,13,13,14,14,15,15,15,15,17,17,12,11,12,12,13,13,13,14,14,15,15,15,15,16,16,16,12,12,12,12,13,13,14,14,15,15,15,15,16,15,16,15,13,12,13,12,13,14,14,14,14,15,16,16,16,17,17,16,12,13,13,13,13,14,14,15,16,16,16,16,16,16,15,16,13,13,14,14,14,14,15,15,15,15,17,16,16,16,16,18,13,15,14,14,14,15,15,16,16,16,18,17,17,17,19,17,13,14,15,13,14,16,16,15,16,16,17,18,17,19,17,16,13,10,10,10,11,11,12,12,12,13,13,13,13,13,13,13,10],t24l:[4,5,7,8,9,10,10,11,11,12,12,12,12,12,13,10,5,6,7,8,9,10,10,11,11,11,12,12,12,12,12,10,7,7,8,9,9,10,10,11,11,11,11,12,12,12,13,9,8,8,9,9,10,10,10,11,11,11,11,12,12,12,12,9,9,9,9,10,10,10,10,11,11,11,12,12,12,12,13,9,10,9,10,10,10,10,11,11,11,11,12,12,12,12,12,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,9,11,10,10,10,11,11,11,11,12,12,12,12,12,13,13,10,11,11,11,11,11,11,11,11,11,12,12,12,12,13,13,10,11,11,11,11,11,11,11,12,12,12,12,12,13,13,13,10,12,11,11,11,11,12,12,12,12,12,12,13,13,13,13,10,12,12,11,11,11,12,12,12,12,12,12,13,13,13,13,10,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,10,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,10,13,12,12,12,12,12,12,13,13,13,13,13,13,13,13,10,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,6],t32l:[1,5,5,7,5,8,7,9,5,7,7,9,7,9,9,10],t33l:[4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]};sO.ht=[new rO(0,0,null,null),new rO(2,0,sO.t1HB,sO.t1l),new rO(3,0,sO.t2HB,sO.t2l),new rO(3,0,sO.t3HB,sO.t3l),new rO(0,0,null,null),new rO(4,0,sO.t5HB,sO.t5l),new rO(4,0,sO.t6HB,sO.t6l),new rO(6,0,sO.t7HB,sO.t7l),new rO(6,0,sO.t8HB,sO.t8l),new rO(6,0,sO.t9HB,sO.t9l),new rO(8,0,sO.t10HB,sO.t10l),new rO(8,0,sO.t11HB,sO.t11l),new rO(8,0,sO.t12HB,sO.t12l),new rO(16,0,sO.t13HB,sO.t13l),new rO(0,0,null,sO.t16_5l),new rO(16,0,sO.t15HB,sO.t15l),new rO(1,1,sO.t16HB,sO.t16l),new rO(2,3,sO.t16HB,sO.t16l),new rO(3,7,sO.t16HB,sO.t16l),new rO(4,15,sO.t16HB,sO.t16l),new rO(6,63,sO.t16HB,sO.t16l),new rO(8,255,sO.t16HB,sO.t16l),new rO(10,1023,sO.t16HB,sO.t16l),new rO(13,8191,sO.t16HB,sO.t16l),new rO(4,15,sO.t24HB,sO.t24l),new rO(5,31,sO.t24HB,sO.t24l),new rO(6,63,sO.t24HB,sO.t24l),new rO(7,127,sO.t24HB,sO.t24l),new rO(8,255,sO.t24HB,sO.t24l),new rO(9,511,sO.t24HB,sO.t24l),new rO(11,2047,sO.t24HB,sO.t24l),new rO(13,8191,sO.t24HB,sO.t24l),new rO(0,0,sO.t32HB,sO.t32l),new rO(0,0,sO.t33HB,sO.t33l)],sO.largetbl=[65540,327685,458759,589832,655369,655370,720906,720907,786443,786444,786444,851980,851980,851980,917517,655370,262149,393222,524295,589832,655369,720906,720906,720907,786443,786443,786444,851980,917516,851980,917516,655370,458759,524295,589832,655369,720905,720906,786442,786443,851979,786443,851979,851980,851980,917516,917517,720905,589832,589832,655369,720905,720906,786442,786442,786443,851979,851979,917515,917516,917516,983052,983052,786441,655369,655369,720905,720906,786442,786442,851978,851979,851979,917515,917516,917516,983052,983052,983053,720905,655370,655369,720906,720906,786442,851978,851979,917515,851979,917515,917516,983052,983052,983052,1048588,786441,720906,720906,720906,786442,851978,851979,851979,851979,917515,917516,917516,917516,983052,983052,1048589,786441,720907,720906,786442,786442,851979,851979,851979,917515,917516,983052,983052,983052,983052,1114125,1114125,786442,720907,786443,786443,851979,851979,851979,917515,917515,983051,983052,983052,983052,1048588,1048589,1048589,786442,786443,786443,786443,851979,851979,917515,917515,983052,983052,983052,983052,1048588,983053,1048589,983053,851978,786444,851979,786443,851979,917515,917516,917516,917516,983052,1048588,1048588,1048589,1114125,1114125,1048589,786442,851980,851980,851979,851979,917515,917516,983052,1048588,1048588,1048588,1048588,1048589,1048589,983053,1048589,851978,851980,917516,917516,917516,917516,983052,983052,983052,983052,1114124,1048589,1048589,1048589,1048589,1179661,851978,983052,917516,917516,917516,983052,983052,1048588,1048588,1048589,1179661,1114125,1114125,1114125,1245197,1114125,851978,917517,983052,851980,917516,1048588,1048588,983052,1048589,1048589,1114125,1179661,1114125,1245197,1114125,1048589,851978,655369,655369,655369,720905,720905,786441,786441,786441,851977,851977,851977,851978,851978,851978,851978,655366],sO.table23=[65538,262147,458759,262148,327684,458759,393222,458759,524296],sO.table56=[65539,262148,458758,524296,262148,327684,524294,589831,458757,524294,589831,655368,524295,524295,589832,655369],sO.bitrate_table=[[0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1],[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],[0,8,16,24,32,40,48,56,64,-1,-1,-1,-1,-1,-1,-1]],sO.samplerate_table=[[22050,24e3,16e3,-1],[44100,48e3,32e3,-1],[11025,12e3,8e3,-1]],sO.scfsi_band=[0,6,11,16,21];var iO=zR.VbrMode,aO=zR.Float,lO=zR.Util,cO=zR.new_float,uO=zR.new_int,dO=zR.assert;function fO(){var e=null,t=null,n=null;function o(e){return d[e+fO.Q_MAX2]}this.setModules=function(o,r,s){e=o,t=r,n=s},this.IPOW20=function(e){return f[e]};var r=2220446049250313e-31,s=fO.IXMAX_VAL,i=s+2,a=fO.Q_MAX,l=fO.Q_MAX2,c=100;this.nr_of_sfb_block=[[[6,5,5,5],[9,9,9,9],[6,9,9,9]],[[6,5,7,3],[9,9,12,6],[6,9,12,6]],[[11,10,0,0],[18,18,0,0],[15,18,0,0]],[[7,7,7,0],[12,12,12,0],[6,15,12,0]],[[6,6,6,3],[12,9,9,6],[6,12,9,6]],[[8,8,5,0],[15,12,9,0],[6,18,9,0]]];var u=[0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0];this.pretab=u,this.sfBandIndex=[new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,24,32,42,56,74,100,132,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576],[0,4,8,12,18,26,36,48,62,80,104,136,180,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,26,36,48,62,80,104,134,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576],[0,4,8,12,16,22,30,40,52,66,84,106,136,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576],[0,4,8,12,16,22,28,38,50,64,80,100,126,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576],[0,4,8,12,16,22,30,42,58,78,104,138,180,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,26,36,48,62,80,104,134,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576],[0,4,8,12,18,26,36,48,62,80,104,134,174,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]),new IC([0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576],[0,8,16,24,36,52,72,96,124,160,162,164,166,192],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0])];var d=cO(a+l+1),f=cO(a),p=cO(i),h=cO(i);function m(e,t){var o=n.ATHformula(t,e);return o-=c,o=Math.pow(10,o/10+e.ATHlower),o}function g(e){for(var t=e.internal_flags.ATH.l,n=e.internal_flags.ATH.psfb21,o=e.internal_flags.ATH.s,r=e.internal_flags.ATH.psfb12,s=e.internal_flags,i=e.out_samplerate,a=0;a<cC.SBMAX_l;a++){var l=s.scalefac_band.l[a],c=s.scalefac_band.l[a+1];t[a]=aO.MAX_VALUE;for(var u=l;u<c;u++){var d=u*i/1152,f=m(e,d);t[a]=Math.min(t[a],f)}}for(a=0;a<cC.PSFB21;a++){l=s.scalefac_band.psfb21[a],c=s.scalefac_band.psfb21[a+1];n[a]=aO.MAX_VALUE;for(u=l;u<c;u++){d=u*i/1152,f=m(e,d);n[a]=Math.min(n[a],f)}}for(a=0;a<cC.SBMAX_s;a++){l=s.scalefac_band.s[a],c=s.scalefac_band.s[a+1];o[a]=aO.MAX_VALUE;for(u=l;u<c;u++){d=u*i/384,f=m(e,d);o[a]=Math.min(o[a],f)}o[a]*=s.scalefac_band.s[a+1]-s.scalefac_band.s[a]}for(a=0;a<cC.PSFB12;a++){l=s.scalefac_band.psfb12[a],c=s.scalefac_band.psfb12[a+1];r[a]=aO.MAX_VALUE;for(u=l;u<c;u++){d=u*i/384,f=m(e,d);r[a]=Math.min(r[a],f)}r[a]*=s.scalefac_band.s[13]-s.scalefac_band.s[12]}if(e.noATH){for(a=0;a<cC.SBMAX_l;a++)t[a]=1e-20;for(a=0;a<cC.PSFB21;a++)n[a]=1e-20;for(a=0;a<cC.SBMAX_s;a++)o[a]=1e-20;for(a=0;a<cC.PSFB12;a++)r[a]=1e-20}s.ATH.floor=10*Math.log10(m(e,-1))}function v(e){this.s=e}this.adj43=h,this.iteration_init=function(t){var n,o=t.internal_flags,r=o.l3_side;if(0==o.iteration_init_init){for(o.iteration_init_init=1,r.main_data_begin=0,g(t),p[0]=0,n=1;n<i;n++)p[n]=Math.pow(n,4/3);for(n=0;n<i-1;n++)h[n]=n+1-Math.pow(.5*(p[n]+p[n+1]),.75);for(h[n]=.5,n=0;n<a;n++)f[n]=Math.pow(2,-.1875*(n-210));for(n=0;n<=a+l;n++)d[n]=Math.pow(2,.25*(n-210-l));var s,c,u,m;for(e.huffman_init(o),n=t.exp_nspsytune>>2&63,n>=32&&(n-=64),s=Math.pow(10,n/4/10),n=t.exp_nspsytune>>8&63,n>=32&&(n-=64),c=Math.pow(10,n/4/10),n=t.exp_nspsytune>>14&63,n>=32&&(n-=64),u=Math.pow(10,n/4/10),n=t.exp_nspsytune>>20&63,n>=32&&(n-=64),m=u*Math.pow(10,n/4/10),n=0;n<cC.SBMAX_l;n++){v=n<=6?s:n<=13?c:n<=20?u:m,o.nsPsy.longfact[n]=v}for(n=0;n<cC.SBMAX_s;n++){var v;v=n<=5?s:n<=10?c:n<=11?u:m,o.nsPsy.shortfact[n]=v}}},this.on_pe=function(e,n,o,r,s,i){var a,l,c=e.internal_flags,u=0,d=uO(2),f=new JC(u),p=t.ResvMaxBits(e,r,f,i);u=f.bits;var h=u+p;for(h>zC.MAX_BITS_PER_GRANULE&&(h=zC.MAX_BITS_PER_GRANULE),a=0,l=0;l<c.channels_out;++l)o[l]=Math.min(zC.MAX_BITS_PER_CHANNEL,u/c.channels_out),d[l]=0|o[l]*n[s][l]/700-o[l],d[l]>3*r/4&&(d[l]=3*r/4),d[l]<0&&(d[l]=0),d[l]+o[l]>zC.MAX_BITS_PER_CHANNEL&&(d[l]=Math.max(0,zC.MAX_BITS_PER_CHANNEL-o[l])),a+=d[l];if(a>p)for(l=0;l<c.channels_out;++l)d[l]=p*d[l]/a;for(l=0;l<c.channels_out;++l)o[l]+=d[l],p-=d[l];for(a=0,l=0;l<c.channels_out;++l)a+=o[l];if(a>zC.MAX_BITS_PER_GRANULE){for(l=0;l<c.channels_out;++l)o[l]*=zC.MAX_BITS_PER_GRANULE,o[l]/=a,o[l]}return h},this.reduce_side=function(e,t,n,o){dO(e[0]+e[1]<=zC.MAX_BITS_PER_GRANULE);var r=.33*(.5-t)/.5;r<0&&(r=0),r>.5&&(r=.5);var s=0|.5*r*(e[0]+e[1]);s>zC.MAX_BITS_PER_CHANNEL-e[0]&&(s=zC.MAX_BITS_PER_CHANNEL-e[0]),s<0&&(s=0),e[1]>=125&&(e[1]-s>125?(e[0]<n&&(e[0]+=s),e[1]-=s):(e[0]+=e[1]-125,e[1]=125)),s=e[0]+e[1],s>o&&(e[0]=o*e[0]/s,e[1]=o*e[1]/s),dO(e[0]<=zC.MAX_BITS_PER_CHANNEL),dO(e[1]<=zC.MAX_BITS_PER_CHANNEL),dO(e[0]+e[1]<=zC.MAX_BITS_PER_GRANULE)},this.athAdjust=function(e,t,n){var o=90.30873362,r=94.82444863,s=lO.FAST_LOG10_X(t,10),i=e*e,a=0;return s-=n,i>1e-20&&(a=1+lO.FAST_LOG10_X(i,10/o)),a<0&&(a=0),s*=a,s+=n+o-r,Math.pow(10,.1*s)},this.calc_xmin=function(e,t,n,o){var s,i=0,a=e.internal_flags,l=0,c=0,u=a.ATH,d=n.xr,f=e.VBR==iO.vbr_mtrh?1:0,p=a.masking_lower;for(e.VBR!=iO.vbr_mtrh&&e.VBR!=iO.vbr_mt||(p=1),s=0;s<n.psy_lmax;s++){w=e.VBR==iO.vbr_rh||e.VBR==iO.vbr_mtrh?athAdjust(u.adjust,u.l[s],u.floor):u.adjust*u.l[s],b=n.width[s],k=w/b,S=r,T=b>>1,E=0;do{M=d[l]*d[l],E+=M,S+=M<k?M:k,l++,A=d[l]*d[l],E+=A,S+=A<k?A:k,l++}while(--T>0);if(E>w&&c++,s==cC.SBPSY_l){var h=w*a.nsPsy.longfact[s];S<h&&(S=h)}if(0!=f&&(w=S),!e.ATHonly){var m=t.en.l[s];if(m>0)h=E*t.thm.l[s]*p/m,0!=f&&(h*=a.nsPsy.longfact[s]),w<h&&(w=h)}o[i++]=0!=f?w:w*a.nsPsy.longfact[s]}var g=575;if(n.block_type!=cC.SHORT_TYPE){var v=576;while(0!=v--&&SO.EQ(d[v],0))g=v}n.max_nonzero_coeff=g;for(var _=n.sfb_smin;s<n.psymax;_++,s+=3){var b,y,x;for(x=e.VBR==iO.vbr_rh||e.VBR==iO.vbr_mtrh?athAdjust(u.adjust,u.s[_],u.floor):u.adjust*u.s[_],b=n.width[s],y=0;y<3;y++){var w,k,S,E=0,T=b>>1;k=x/b,S=r;do{var M,A;M=d[l]*d[l],E+=M,S+=M<k?M:k,l++,A=d[l]*d[l],E+=A,S+=A<k?A:k,l++}while(--T>0);if(E>x&&c++,_==cC.SBPSY_s){h=x*a.nsPsy.shortfact[_];S<h&&(S=h)}if(w=0!=f?S:x,!e.ATHonly&&!e.ATHshort){m=t.en.s[_][y];if(m>0)h=E*t.thm.s[_][y]*p/m,0!=f&&(h*=a.nsPsy.shortfact[_]),w<h&&(w=h)}o[i++]=0!=f?w:w*a.nsPsy.shortfact[_]}e.useTemporal&&(o[i-3]>o[i-3+1]&&(o[i-3+1]+=(o[i-3]-o[i-3+1])*a.decay),o[i-3+1]>o[i-3+2]&&(o[i-3+2]+=(o[i-3+1]-o[i-3+2])*a.decay))}return c},this.calc_noise_core=function(e,t,n,o){var r=0,s=t.s,i=e.l3_enc;if(s>e.count1)while(0!=n--){l=e.xr[s],s++,r+=l*l,l=e.xr[s],s++,r+=l*l}else if(s>e.big_values){var a=cO(2);a[0]=0,a[1]=o;while(0!=n--){l=Math.abs(e.xr[s])-a[i[s]],s++,r+=l*l,l=Math.abs(e.xr[s])-a[i[s]],s++,r+=l*l}}else while(0!=n--){var l;l=Math.abs(e.xr[s])-p[i[s]]*o,s++,r+=l*l,l=Math.abs(e.xr[s])-p[i[s]]*o,s++,r+=l*l}return t.s=s,r},this.calc_noise=function(e,t,n,r,s){var i,a,l=0,c=0,d=0,f=0,p=0,h=-20,m=0,g=e.scalefac,_=0;for(r.over_SSD=0,i=0;i<e.psymax;i++){var b,y=e.global_gain-(g[_++]+(0!=e.preflag?u[i]:0)<<e.scalefac_scale+1)-8*e.subblock_gain[e.window[i]],x=0;if(null!=s&&s.step[i]==y)x=s.noise[i],m+=e.width[i],n[l++]=x/t[c++],x=s.noise_log[i];else{var w,k=o(y);if(a=e.width[i]>>1,m+e.width[i]>e.max_nonzero_coeff)w=e.max_nonzero_coeff-m+1,a=w>0?w>>1:0;var S=new v(m);x=this.calc_noise_core(e,S,a,k),m=S.s,null!=s&&(s.step[i]=y,s.noise[i]=x),x=n[l++]=x/t[c++],x=lO.FAST_LOG10(Math.max(x,1e-20)),null!=s&&(s.noise_log[i]=x)}if(null!=s&&(s.global_gain=e.global_gain),p+=x,x>0)b=Math.max(0|10*x+.5,1),r.over_SSD+=b*b,d++,f+=x;h=Math.max(h,x)}return r.over_count=d,r.tot_noise=p,r.over_noise=f,r.max_noise=h,d},this.set_pinfo=function(e,t,n,o,r){var s,i,a,l,c,d=e.internal_flags,f=0==t.scalefac_scale?.5:1,p=t.scalefac,h=cO(L3Side.SFBMAX),m=cO(L3Side.SFBMAX),g=new CalcNoiseResult;calc_xmin(e,n,t,h),calc_noise(t,h,m,g,null);var v=0;for(i=t.sfb_lmax,t.block_type!=cC.SHORT_TYPE&&0==t.mixed_block_flag&&(i=22),s=0;s<i;s++){var _=d.scalefac_band.l[s],b=d.scalefac_band.l[s+1],y=b-_;for(l=0;v<b;v++)l+=t.xr[v]*t.xr[v];l/=y,c=1e15,d.pinfo.en[o][r][s]=c*l,d.pinfo.xfsf[o][r][s]=c*h[s]*m[s]/y,n.en.l[s]>0&&!e.ATHonly?l/=n.en.l[s]:l=0,d.pinfo.thr[o][r][s]=c*Math.max(l*n.thm.l[s],d.ATH.l[s]),d.pinfo.LAMEsfb[o][r][s]=0,0!=t.preflag&&s>=11&&(d.pinfo.LAMEsfb[o][r][s]=-f*u[s]),s<cC.SBPSY_l&&(dO(p[s]>=0),d.pinfo.LAMEsfb[o][r][s]-=f*p[s])}if(t.block_type==cC.SHORT_TYPE)for(i=s,s=t.sfb_smin;s<cC.SBMAX_s;s++){_=d.scalefac_band.s[s],b=d.scalefac_band.s[s+1],y=b-_;for(var x=0;x<3;x++){for(l=0,a=_;a<b;a++)l+=t.xr[v]*t.xr[v],v++;l=Math.max(l/y,1e-20),c=1e15,d.pinfo.en_s[o][r][3*s+x]=c*l,d.pinfo.xfsf_s[o][r][3*s+x]=c*h[i]*m[i]/y,n.en.s[s][x]>0?l/=n.en.s[s][x]:l=0,(e.ATHonly||e.ATHshort)&&(l=0),d.pinfo.thr_s[o][r][3*s+x]=c*Math.max(l*n.thm.s[s][x],d.ATH.s[s]),d.pinfo.LAMEsfb_s[o][r][3*s+x]=-2*t.subblock_gain[x],s<cC.SBPSY_s&&(d.pinfo.LAMEsfb_s[o][r][3*s+x]-=f*p[i]),i++}}d.pinfo.LAMEqss[o][r]=t.global_gain,d.pinfo.LAMEmainbits[o][r]=t.part2_3_length+t.part2_length,d.pinfo.LAMEsfbits[o][r]=t.part2_length,d.pinfo.over[o][r]=g.over_count,d.pinfo.max_noise[o][r]=10*g.max_noise,d.pinfo.over_noise[o][r]=10*g.over_noise,d.pinfo.tot_noise[o][r]=10*g.tot_noise,d.pinfo.over_SSD[o][r]=g.over_SSD}}fO.Q_MAX=257,fO.Q_MAX2=116,fO.LARGE_BITS=1e5,fO.IXMAX_VAL=8206;var pO=zR.System,hO=zR.Arrays,mO=zR.new_int,gO=zR.assert;function vO(){var e=null;function t(e){this.bits=0|e}this.qupvt=null,this.setModules=function(t){this.qupvt=t,e=t};var n=[[0,0],[0,0],[0,0],[0,0],[0,0],[0,1],[1,1],[1,1],[1,2],[2,2],[2,3],[2,3],[3,4],[3,4],[3,4],[4,5],[4,5],[4,6],[5,6],[5,6],[5,7],[6,7],[6,7]];function o(e,t,n,o,r,s){var i=.5946/t;e>>=1;while(0!=e--)r[s++]=i>n[o++]?0:1,r[s++]=i>n[o++]?0:1}function r(t,n,o,r,s,i){t>>=1;var a=t%2;t>>=1;while(0!=t--){var l,c,u,d,f,p,h,m;l=o[r++]*n,c=o[r++]*n,f=0|l,u=o[r++]*n,p=0|c,d=o[r++]*n,h=0|u,l+=e.adj43[f],m=0|d,c+=e.adj43[p],s[i++]=0|l,u+=e.adj43[h],s[i++]=0|c,d+=e.adj43[m],s[i++]=0|u,s[i++]=0|d}0!=a&&(l=o[r++]*n,c=o[r++]*n,f=0|l,p=0|c,l+=e.adj43[f],c+=e.adj43[p],s[i++]=0|l,s[i++]=0|c)}function s(t,n,s,i,a){var l,c,u,d=0,f=0,p=0,h=0,m=n,g=0,v=m,_=0,b=t,y=0;for(u=null!=a&&i.global_gain==a.global_gain,c=i.block_type==cC.SHORT_TYPE?38:21,l=0;l<=c;l++){var x=-1;if((u||i.block_type==cC.NORM_TYPE)&&(x=i.global_gain-(i.scalefac[l]+(0!=i.preflag?e.pretab[l]:0)<<i.scalefac_scale+1)-8*i.subblock_gain[i.window[l]]),gO(i.width[l]>=0),u&&a.step[l]==x)0!=f&&(r(f,s,b,y,v,_),f=0),0!=p&&(o(p,s,b,y,v,_),p=0);else{var w,k=i.width[l];if(d+i.width[l]>i.max_nonzero_coeff)w=i.max_nonzero_coeff-d+1,hO.fill(n,i.max_nonzero_coeff,576,0),k=w,k<0&&(k=0),l=c+1;if(0==f&&0==p&&(v=m,_=g,b=t,y=h),null!=a&&a.sfb_count1>0&&l>=a.sfb_count1&&a.step[l]>0&&x>=a.step[l]?(0!=f&&(r(f,s,b,y,v,_),f=0,v=m,_=g,b=t,y=h),p+=k):(0!=p&&(o(p,s,b,y,v,_),p=0,v=m,_=g,b=t,y=h),f+=k),k<=0){0!=p&&(o(p,s,b,y,v,_),p=0),0!=f&&(r(f,s,b,y,v,_),f=0);break}}l<=c&&(g+=i.width[l],h+=i.width[l],d+=i.width[l])}0!=f&&(r(f,s,b,y,v,_),f=0),0!=p&&(o(p,s,b,y,v,_),p=0)}function i(e,t,n){var o=0,r=0;do{var s=e[t++],i=e[t++];o<s&&(o=s),r<i&&(r=i)}while(t<n);return o<r&&(o=r),o}function a(e,t,n,o,r,s){var i,a=65536*sO.ht[o].xlen+sO.ht[r].xlen,l=0;do{var c=e[t++],u=e[t++];0!=c&&(c>14&&(c=15,l+=a),c*=16),0!=u&&(u>14&&(u=15,l+=a),c+=u),l+=sO.largetbl[c]}while(t<n);return i=65535&l,l>>=16,l>i&&(l=i,o=r),s.bits+=l,o}function l(e,t,n,o){var r=0,s=sO.ht[1].hlen;do{var i=2*e[t+0]+e[t+1];t+=2,r+=s[i]}while(t<n);return o.bits+=r,1}function c(e,t,n,o,r){var s,i,a=0,l=sO.ht[o].xlen;i=2==o?sO.table23:sO.table56;do{var c=e[t+0]*l+e[t+1];t+=2,a+=i[c]}while(t<n);return s=65535&a,a>>=16,a>s&&(a=s,o++),r.bits+=a,o}function u(e,t,n,o,r){var s=0,i=0,a=0,l=sO.ht[o].xlen,c=sO.ht[o].hlen,u=sO.ht[o+1].hlen,d=sO.ht[o+2].hlen;do{var f=e[t+0]*l+e[t+1];t+=2,s+=c[f],i+=u[f],a+=d[f]}while(t<n);var p=o;return s>i&&(s=i,p++),s>a&&(s=a,p=o+2),r.bits+=s,p}var d=[1,2,5,7,7,10,10,13,13,13,13,13,13,13,13];function f(e,t,n,o){var r=i(e,t,n);switch(r){case 0:return r;case 1:return l(e,t,n,o);case 2:case 3:return c(e,t,n,d[r-1],o);case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:return u(e,t,n,d[r-1],o);default:if(r>fO.IXMAX_VAL)return o.bits=fO.LARGE_BITS,-1;var s,f;for(r-=15,s=24;s<32;s++)if(sO.ht[s].linmax>=r)break;for(f=s-8;f<24;f++)if(sO.ht[f].linmax>=r)break;return a(e,t,n,f,s,o)}}function p(e,n,o,r,s,i,a){for(var l=n.big_values,c=0;c<=22;c++)r[c]=fO.LARGE_BITS;for(c=0;c<16;c++){var u=e.scalefac_band.l[c+1];if(u>=l)break;var d=0,p=new t(d),h=f(o,0,u,p);d=p.bits;for(var m=0;m<8;m++){var g=e.scalefac_band.l[c+m+2];if(g>=l)break;var v=d;p=new t(v);var _=f(o,u,g,p);v=p.bits,r[c+m]>v&&(r[c+m]=v,s[c+m]=c,i[c+m]=h,a[c+m]=_)}}}function h(e,n,o,r,s,i,a,l){for(var c=n.big_values,u=2;u<cC.SBMAX_l+1;u++){var d=e.scalefac_band.l[u];if(d>=c)break;var p=s[u-2]+n.count1bits;if(o.part2_3_length<=p)break;var h=new t(p),m=f(r,d,c,h);p=h.bits,o.part2_3_length<=p||(o.assign(n),o.part2_3_length=p,o.region0_count=i[u-2],o.region1_count=u-2-i[u-2],o.table_select[0]=a[u-2],o.table_select[1]=l[u-2],o.table_select[2]=m)}}this.noquant_count_bits=function(e,n,o){var r=n.l3_enc,s=Math.min(576,n.max_nonzero_coeff+2>>1<<1);for(null!=o&&(o.sfb_count1=0);s>1;s-=2)if(0!=(r[s-1]|r[s-2]))break;n.count1=s;for(var i=0,a=0;s>3;s-=4){var l;if((2147483647&(r[s-1]|r[s-2]|r[s-3]|r[s-4]))>1)break;l=2*(2*(2*r[s-4]+r[s-3])+r[s-2])+r[s-1],i+=sO.t32l[l],a+=sO.t33l[l]}var c=i;if(n.count1table_select=0,i>a&&(c=a,n.count1table_select=1),n.count1bits=c,n.big_values=s,0==s)return c;if(n.block_type==cC.SHORT_TYPE)i=3*e.scalefac_band.s[3],i>n.big_values&&(i=n.big_values),a=n.big_values;else if(n.block_type==cC.NORM_TYPE){if(i=n.region0_count=e.bv_scf[s-2],a=n.region1_count=e.bv_scf[s-1],a=e.scalefac_band.l[i+a+2],i=e.scalefac_band.l[i+1],a<s){var u=new t(c);n.table_select[2]=f(r,a,s,u),c=u.bits}}else n.region0_count=7,n.region1_count=cC.SBMAX_l-1-7-1,i=e.scalefac_band.l[8],a=s,i>a&&(i=a);if(i=Math.min(i,s),a=Math.min(a,s),i>0){u=new t(c);n.table_select[0]=f(r,0,i,u),c=u.bits}if(i<a){u=new t(c);n.table_select[1]=f(r,i,a,u),c=u.bits}if(2==e.use_best_huffman&&(n.part2_3_length=c,best_huffman_divide(e,n),c=n.part2_3_length),null!=o&&n.block_type==cC.NORM_TYPE){var d=0;while(e.scalefac_band.l[d]<n.big_values)d++;o.sfb_count1=d}return c},this.count_bits=function(t,n,o,r){var i=o.l3_enc,a=fO.IXMAX_VAL/e.IPOW20(o.global_gain);if(o.xrpow_max>a)return fO.LARGE_BITS;if(s(n,i,e.IPOW20(o.global_gain),o,r),0!=(2&t.substep_shaping))for(var l=0,c=o.global_gain+o.scalefac_scale,u=.634521682242439/e.IPOW20(c),d=0;d<o.sfbmax;d++){var f,p=o.width[d];if(0==t.pseudohalf[d])l+=p;else for(f=l,l+=p;f<l;++f)i[f]=n[f]>=u?i[f]:0}return this.noquant_count_bits(t,o,r)},this.best_huffman_divide=function(e,n){var o=new MC,r=n.l3_enc,s=mO(23),i=mO(23),a=mO(23),l=mO(23);if(n.block_type!=cC.SHORT_TYPE||1!=e.mode_gr){o.assign(n),n.block_type==cC.NORM_TYPE&&(p(e,n,r,s,i,a,l),h(e,o,n,r,s,i,a,l));var c=o.big_values;if(!(0==c||(r[c-2]|r[c-1])>1)&&(c=n.count1+2,!(c>576))){o.assign(n),o.count1=c;for(var u=0,d=0;c>o.big_values;c-=4){var m=2*(2*(2*r[c-4]+r[c-3])+r[c-2])+r[c-1];u+=sO.t32l[m],d+=sO.t33l[m]}if(o.big_values=c,o.count1table_select=0,u>d&&(u=d,o.count1table_select=1),o.count1bits=u,o.block_type==cC.NORM_TYPE)h(e,o,n,r,s,i,a,l);else{if(o.part2_3_length=u,u=e.scalefac_band.l[8],u>c&&(u=c),u>0){var g=new t(o.part2_3_length);o.table_select[0]=f(r,0,u,g),o.part2_3_length=g.bits}if(c>u){g=new t(o.part2_3_length);o.table_select[1]=f(r,u,c,g),o.part2_3_length=g.bits}n.part2_3_length>o.part2_3_length&&n.assign(o)}}}};var m=[1,1,1,1,8,2,2,2,4,4,4,8,8,8,16,16],g=[1,2,4,8,1,2,4,8,2,4,8,2,4,8,4,8],v=[0,0,0,0,3,1,1,1,2,2,2,3,3,3,4,4],_=[0,1,2,3,0,1,2,3,1,2,3,1,2,3,2,3];function b(e,t){for(var n,o=t.tt[1][e],r=t.tt[0][e],s=0;s<sO.scfsi_band.length-1;s++){for(n=sO.scfsi_band[s];n<sO.scfsi_band[s+1];n++)if(r.scalefac[n]!=o.scalefac[n]&&o.scalefac[n]>=0)break;if(n==sO.scfsi_band[s+1]){for(n=sO.scfsi_band[s];n<sO.scfsi_band[s+1];n++)o.scalefac[n]=-1;t.scfsi[e][s]=1}}var i=0,a=0;for(n=0;n<11;n++)-1!=o.scalefac[n]&&(a++,i<o.scalefac[n]&&(i=o.scalefac[n]));for(var l=0,c=0;n<cC.SBPSY_l;n++)-1!=o.scalefac[n]&&(c++,l<o.scalefac[n]&&(l=o.scalefac[n]));for(s=0;s<16;s++)if(i<m[s]&&l<g[s]){var u=v[s]*a+_[s]*c;o.part2_length>u&&(o.part2_length=u,o.scalefac_compress=s)}}function y(e,t){for(var n=0;n<t;++n)if(e[n]<0)return!1;return!0}vO.slen1_tab=v,vO.slen2_tab=_,this.best_scalefac_store=function(t,n,o,r){var s,i,a,l,c=r.tt[n][o],u=0;for(a=0,s=0;s<c.sfbmax;s++){var d=c.width[s];for(a+=d,l=-d;l<0;l++)if(0!=c.l3_enc[l+a])break;0==l&&(c.scalefac[s]=u=-2)}if(0==c.scalefac_scale&&0==c.preflag){var f=0;for(s=0;s<c.sfbmax;s++)c.scalefac[s]>0&&(f|=c.scalefac[s]);if(0==(1&f)&&0!=f){for(s=0;s<c.sfbmax;s++)c.scalefac[s]>0&&(c.scalefac[s]>>=1);c.scalefac_scale=u=1}}if(0==c.preflag&&c.block_type!=cC.SHORT_TYPE&&2==t.mode_gr){for(s=11;s<cC.SBPSY_l;s++)if(c.scalefac[s]<e.pretab[s]&&-2!=c.scalefac[s])break;if(s==cC.SBPSY_l){for(s=11;s<cC.SBPSY_l;s++)c.scalefac[s]>0&&(c.scalefac[s]-=e.pretab[s]);c.preflag=u=1}}for(i=0;i<4;i++)r.scfsi[o][i]=0;for(2==t.mode_gr&&1==n&&r.tt[0][o].block_type!=cC.SHORT_TYPE&&r.tt[1][o].block_type!=cC.SHORT_TYPE&&(b(o,r),u=0),s=0;s<c.sfbmax;s++)-2==c.scalefac[s]&&(c.scalefac[s]=0);0!=u&&(2==t.mode_gr?this.scale_bitcount(c):this.scale_bitcount_lsf(t,c))};var x=[0,18,36,54,54,36,54,72,54,72,90,72,90,108,108,126],w=[0,18,36,54,51,35,53,71,52,70,88,69,87,105,104,122],k=[0,10,20,30,33,21,31,41,32,42,52,43,53,63,64,74];this.scale_bitcount=function(t){var n,o,r,s=0,i=0,a=t.scalefac;if(gO(y(a,t.sfbmax)),t.block_type==cC.SHORT_TYPE)r=x,0!=t.mixed_block_flag&&(r=w);else if(r=k,0==t.preflag){for(o=11;o<cC.SBPSY_l;o++)if(a[o]<e.pretab[o])break;if(o==cC.SBPSY_l)for(t.preflag=1,o=11;o<cC.SBPSY_l;o++)a[o]-=e.pretab[o]}for(o=0;o<t.sfbdivide;o++)s<a[o]&&(s=a[o]);for(;o<t.sfbmax;o++)i<a[o]&&(i=a[o]);for(t.part2_length=fO.LARGE_BITS,n=0;n<16;n++)s<m[n]&&i<g[n]&&t.part2_length>r[n]&&(t.part2_length=r[n],t.scalefac_compress=n);return t.part2_length==fO.LARGE_BITS};var S=[[15,15,7,7],[15,15,7,0],[7,3,0,0],[15,31,31,0],[7,7,7,0],[3,3,0,0]];this.scale_bitcount_lsf=function(t,n){var o,r,s,i,a,l,c,u,d=mO(4),f=n.scalefac;for(o=0!=n.preflag?2:0,c=0;c<4;c++)d[c]=0;if(n.block_type==cC.SHORT_TYPE){r=1;var p=e.nr_of_sfb_block[o][r];for(u=0,s=0;s<4;s++)for(i=p[s]/3,c=0;c<i;c++,u++)for(a=0;a<3;a++)f[3*u+a]>d[s]&&(d[s]=f[3*u+a])}else{r=0;p=e.nr_of_sfb_block[o][r];for(u=0,s=0;s<4;s++)for(i=p[s],c=0;c<i;c++,u++)f[u]>d[s]&&(d[s]=f[u])}for(l=!1,s=0;s<4;s++)d[s]>S[o][s]&&(l=!0);if(!l){var h,m,g,v;for(n.sfb_partition_table=e.nr_of_sfb_block[o][r],s=0;s<4;s++)n.slen[s]=E[d[s]];switch(h=n.slen[0],m=n.slen[1],g=n.slen[2],v=n.slen[3],o){case 0:n.scalefac_compress=(5*h+m<<4)+(g<<2)+v;break;case 1:n.scalefac_compress=400+(5*h+m<<2)+g;break;case 2:n.scalefac_compress=500+3*h+m;break;default:pO.err.printf("intensity stereo not implemented yet\n");break}}if(!l)for(gO(null!=n.sfb_partition_table),n.part2_length=0,s=0;s<4;s++)n.part2_length+=n.slen[s]*n.sfb_partition_table[s];return l};var E=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];this.huffman_init=function(e){for(var t=2;t<=576;t+=2){var o,r=0;while(e.scalefac_band.l[++r]<t);o=n[r][0];while(e.scalefac_band.l[o+1]>t)o--;o<0&&(o=n[r][0]),e.bv_scf[t-2]=o,o=n[r][1];while(e.scalefac_band.l[o+e.bv_scf[t-2]+2]>t)o--;o<0&&(o=n[r][1]),e.bv_scf[t-1]=o}}}var _O=zR.System,bO=zR.Arrays,yO=zR.new_byte,xO=zR.new_float_n,wO=zR.new_int,kO=zR.assert;function SO(){var e=this,t=32773,n=null,o=null,r=null,s=null;this.setModules=function(e,t,i,a){n=e,o=t,r=i,s=a};var i=null,a=0,l=0,c=0;function u(e){_O.arraycopy(e.header[e.w_ptr].buf,0,i,l,e.sideinfo_len),l+=e.sideinfo_len,a+=8*e.sideinfo_len,e.w_ptr=e.w_ptr+1&zC.MAX_HEADER_BUF-1}function d(e,t,n){while(n>0){var o;0==c&&(c=8,l++,kO(e.header[e.w_ptr].write_timing>=a),e.header[e.w_ptr].write_timing==a&&u(e),i[l]=0),o=Math.min(n,c),n-=o,c-=o,i[l]|=t>>n<<c,a+=o}}function f(e,t,n){while(n>0){var o;0==c&&(c=8,l++,i[l]=0),o=Math.min(n,c),n-=o,c-=o,i[l]|=t>>n<<c,a+=o}}function p(e,t){var n,o=e.internal_flags;if(t>=8&&(d(o,76,8),t-=8),t>=8&&(d(o,65,8),t-=8),t>=8&&(d(o,77,8),t-=8),t>=8&&(d(o,69,8),t-=8),t>=32){var s=r.getLameShortVersion();if(t>=32)for(n=0;n<s.length&&t>=8;++n)t-=8,d(o,s.charAt(n),8)}for(;t>=1;t-=1)d(o,o.ancillary_flag,1),o.ancillary_flag^=e.disable_reservoir?0:1}function h(e,t,n){var o=e.header[e.h_ptr].ptr;while(n>0){var r=Math.min(n,8-(7&o));n-=r,e.header[e.h_ptr].buf[o>>3]|=t>>n<<8-(7&o)-r,o+=r}e.header[e.h_ptr].ptr=o}function m(e,n){e<<=8;for(var o=0;o<8;o++)e<<=1,n<<=1,0!=(65536&(n^e))&&(n^=t);return n}function g(e,t){var n,o,r,s=e.internal_flags;if(n=s.l3_side,s.header[s.h_ptr].ptr=0,bO.fill(s.header[s.h_ptr].buf,0,s.sideinfo_len,0),e.out_samplerate<16e3?h(s,4094,12):h(s,4095,12),h(s,e.version,1),h(s,1,2),h(s,e.error_protection?0:1,1),h(s,s.bitrate_index,4),h(s,s.samplerate_index,2),h(s,s.padding,1),h(s,e.extension,1),h(s,e.mode.ordinal(),2),h(s,s.mode_ext,2),h(s,e.copyright,1),h(s,e.original,1),h(s,e.emphasis,2),e.error_protection&&h(s,0,16),1==e.version){for(kO(n.main_data_begin>=0),h(s,n.main_data_begin,9),2==s.channels_out?h(s,n.private_bits,3):h(s,n.private_bits,5),r=0;r<s.channels_out;r++){var i;for(i=0;i<4;i++)h(s,n.scfsi[r][i],1)}for(o=0;o<2;o++)for(r=0;r<s.channels_out;r++){var a=n.tt[o][r];h(s,a.part2_3_length+a.part2_length,12),h(s,a.big_values/2,9),h(s,a.global_gain,8),h(s,a.scalefac_compress,4),a.block_type!=cC.NORM_TYPE?(h(s,1,1),h(s,a.block_type,2),h(s,a.mixed_block_flag,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),h(s,a.subblock_gain[0],3),h(s,a.subblock_gain[1],3),h(s,a.subblock_gain[2],3)):(h(s,0,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),14==a.table_select[2]&&(a.table_select[2]=16),h(s,a.table_select[2],5),kO(a.region0_count>=0&&a.region0_count<16),kO(a.region1_count>=0&&a.region1_count<8),h(s,a.region0_count,4),h(s,a.region1_count,3)),h(s,a.preflag,1),h(s,a.scalefac_scale,1),h(s,a.count1table_select,1)}}else for(kO(n.main_data_begin>=0),h(s,n.main_data_begin,8),h(s,n.private_bits,s.channels_out),o=0,r=0;r<s.channels_out;r++){a=n.tt[o][r];h(s,a.part2_3_length+a.part2_length,12),h(s,a.big_values/2,9),h(s,a.global_gain,8),h(s,a.scalefac_compress,9),a.block_type!=cC.NORM_TYPE?(h(s,1,1),h(s,a.block_type,2),h(s,a.mixed_block_flag,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),h(s,a.subblock_gain[0],3),h(s,a.subblock_gain[1],3),h(s,a.subblock_gain[2],3)):(h(s,0,1),14==a.table_select[0]&&(a.table_select[0]=16),h(s,a.table_select[0],5),14==a.table_select[1]&&(a.table_select[1]=16),h(s,a.table_select[1],5),14==a.table_select[2]&&(a.table_select[2]=16),h(s,a.table_select[2],5),kO(a.region0_count>=0&&a.region0_count<16),kO(a.region1_count>=0&&a.region1_count<8),h(s,a.region0_count,4),h(s,a.region1_count,3)),h(s,a.scalefac_scale,1),h(s,a.count1table_select,1)}e.error_protection&&CRC_writeheader(s,s.header[s.h_ptr].buf);var l=s.h_ptr;kO(s.header[l].ptr==8*s.sideinfo_len),s.h_ptr=l+1&zC.MAX_HEADER_BUF-1,s.header[s.h_ptr].write_timing=s.header[l].write_timing+t,s.h_ptr==s.w_ptr&&_O.err.println("Error: MAX_HEADER_BUF too small in bitstream.c \n")}function v(e,t){var n,o=sO.ht[t.count1table_select+32],r=0,s=t.big_values,i=t.big_values;for(kO(t.count1table_select<2),n=(t.count1-t.big_values)/4;n>0;--n){var a,l=0,c=0;a=t.l3_enc[s+0],0!=a&&(c+=8,t.xr[i+0]<0&&l++),a=t.l3_enc[s+1],0!=a&&(c+=4,l*=2,t.xr[i+1]<0&&l++),a=t.l3_enc[s+2],0!=a&&(c+=2,l*=2,t.xr[i+2]<0&&l++),a=t.l3_enc[s+3],0!=a&&(c++,l*=2,t.xr[i+3]<0&&l++),s+=4,i+=4,d(e,l+o.table[c],o.hlen[c]),r+=o.hlen[c]}return r}function _(e,t,n,o,r){var s=sO.ht[t],i=0;if(0==t)return i;for(var a=n;a<o;a+=2){var l=0,c=0,u=s.xlen,f=s.xlen,p=0,h=r.l3_enc[a],m=r.l3_enc[a+1];if(0!=h&&(r.xr[a]<0&&p++,l--),t>15){if(h>14){var g=h-15;kO(g<=s.linmax),p|=g<<1,c=u,h=15}if(m>14){var v=m-15;kO(v<=s.linmax),p<<=u,p|=v,c+=u,m=15}f=16}0!=m&&(p<<=1,r.xr[a+1]<0&&p++,l--),h=h*f+m,c-=l,l+=s.hlen[h],d(e,s.table[h],l),d(e,p,c),i+=l+c}return i}function b(e,t){var n=3*e.scalefac_band.s[3];n>t.big_values&&(n=t.big_values);var o=_(e,t.table_select[0],0,n,t);return o+=_(e,t.table_select[1],n,t.big_values,t),o}function y(e,t){var n,o,r,s;n=t.big_values;var i=t.region0_count+1;return kO(i<e.scalefac_band.l.length),r=e.scalefac_band.l[i],i+=t.region1_count+1,kO(i<e.scalefac_band.l.length),s=e.scalefac_band.l[i],r>n&&(r=n),s>n&&(s=n),o=_(e,t.table_select[0],0,r,t),o+=_(e,t.table_select[1],r,s,t),o+=_(e,t.table_select[2],s,n,t),o}function x(e){var t,n,o,r,s=0,i=e.internal_flags,a=i.l3_side;if(1==e.version)for(t=0;t<2;t++)for(n=0;n<i.channels_out;n++){var l=a.tt[t][n],c=vO.slen1_tab[l.scalefac_compress],u=vO.slen2_tab[l.scalefac_compress];for(r=0,o=0;o<l.sfbdivide;o++)-1!=l.scalefac[o]&&(d(i,l.scalefac[o],c),r+=c);for(;o<l.sfbmax;o++)-1!=l.scalefac[o]&&(d(i,l.scalefac[o],u),r+=u);kO(r==l.part2_length),l.block_type==cC.SHORT_TYPE?r+=b(i,l):r+=y(i,l),r+=v(i,l),kO(r==l.part2_3_length+l.part2_length),s+=r}else for(t=0,n=0;n<i.channels_out;n++){l=a.tt[t][n];var f,p,h=0;if(kO(null!=l.sfb_partition_table),r=0,o=0,p=0,l.block_type==cC.SHORT_TYPE){for(;p<4;p++){var m=l.sfb_partition_table[p]/3,g=l.slen[p];for(f=0;f<m;f++,o++)d(i,Math.max(l.scalefac[3*o+0],0),g),d(i,Math.max(l.scalefac[3*o+1],0),g),d(i,Math.max(l.scalefac[3*o+2],0),g),h+=3*g}r+=b(i,l)}else{for(;p<4;p++){m=l.sfb_partition_table[p],g=l.slen[p];for(f=0;f<m;f++,o++)d(i,Math.max(l.scalefac[o],0),g),h+=g}r+=y(i,l)}r+=v(i,l),kO(r==l.part2_3_length),kO(h==l.part2_length),s+=h+r}return s}function w(){this.total=0}function k(t,n){var o,r,s,i,c,u=t.internal_flags;return c=u.w_ptr,i=u.h_ptr-1,-1==i&&(i=zC.MAX_HEADER_BUF-1),o=u.header[i].write_timing-a,n.total=o,o>=0&&(r=1+i-c,i<c&&(r=1+i-c+zC.MAX_HEADER_BUF),o-=8*r*u.sideinfo_len),s=e.getframebits(t),o+=s,n.total+=s,n.total%8!=0?n.total=1+n.total/8:n.total=n.total/8,n.total+=l+1,o<0&&_O.err.println("strange error flushing buffer ... \n"),o}this.getframebits=function(e){var t,n=e.internal_flags;t=0!=n.bitrate_index?sO.bitrate_table[e.version][n.bitrate_index]:e.brate;var o=0|72e3*(e.version+1)*t/e.out_samplerate+n.padding;return 8*o},this.CRC_writeheader=function(e,t){var n=65535;n=m(255&t[2],n),n=m(255&t[3],n);for(var o=6;o<e.sideinfo_len;o++)n=m(255&t[o],n);t[4]=byte(n>>8),t[5]=byte(255&n)},this.flush_bitstream=function(e){var t,o,r=e.internal_flags,s=r.h_ptr-1;if(-1==s&&(s=zC.MAX_HEADER_BUF-1),t=r.l3_side,!((o=k(e,new w))<0)){if(p(e,o),kO(r.header[s].write_timing+this.getframebits(e)==a),r.ResvSize=0,t.main_data_begin=0,r.findReplayGain){var i=n.GetTitleGain(r.rgdata);kO(NEQ(i,GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES)),r.RadioGain=0|Math.floor(10*i+.5)}r.findPeakSample&&(r.noclipGainChange=0|Math.ceil(20*Math.log10(r.PeakSample/32767)*10),r.noclipGainChange>0&&(EQ(e.scale,1)||EQ(e.scale,0))?r.noclipScale=Math.floor(32767/r.PeakSample*100)/100:r.noclipScale=-1)}},this.add_dummy_byte=function(e,t,n){var o,r=e.internal_flags;while(n-- >0)for(f(r,t,8),o=0;o<zC.MAX_HEADER_BUF;++o)r.header[o].write_timing+=8},this.format_bitstream=function(e){var t,n=e.internal_flags;t=n.l3_side;var o=this.getframebits(e);p(e,t.resvDrain_pre),g(e,o);var r=8*n.sideinfo_len;if(r+=x(e),p(e,t.resvDrain_post),r+=t.resvDrain_post,t.main_data_begin+=(o-r)/8,k(e,new w)!=n.ResvSize&&_O.err.println("Internal buffer inconsistency. flushbits <> ResvSize"),8*t.main_data_begin!=n.ResvSize&&(_O.err.printf("bit reservoir error: \nl3_side.main_data_begin: %d \nResvoir size:             %d \nresv drain (post)         %d \nresv drain (pre)          %d \nheader and sideinfo:      %d \ndata bits:                %d \ntotal bits:               %d (remainder: %d) \nbitsperframe:             %d \n",8*t.main_data_begin,n.ResvSize,t.resvDrain_post,t.resvDrain_pre,8*n.sideinfo_len,r-t.resvDrain_post-8*n.sideinfo_len,r,r%8,o),_O.err.println("This is a fatal error.  It has several possible causes:"),_O.err.println("90%%  LAME compiled with buggy version of gcc using advanced optimizations"),_O.err.println(" 9%%  Your system is overclocked"),_O.err.println(" 1%%  bug in LAME encoding library"),n.ResvSize=8*t.main_data_begin),a>1e9){var s;for(s=0;s<zC.MAX_HEADER_BUF;++s)n.header[s].write_timing-=a;a=0}return 0},this.copy_buffer=function(e,t,r,a,u){var d=l+1;if(d<=0)return 0;if(0!=a&&d>a)return-1;if(_O.arraycopy(i,0,t,r,d),l=-1,c=0,0!=u){var f=wO(1);if(f[0]=e.nMusicCRC,s.updateMusicCRC(f,t,r,d),e.nMusicCRC=f[0],d>0&&(e.VBR_seek_table.nBytesWritten+=d),e.decode_on_the_fly){var p,h=xO([2,1152]),m=d,g=-1;while(0!=g)if(g=o.hip_decode1_unclipped(e.hip,t,r,m,h[0],h[1]),m=0,-1==g&&(g=0),g>0){if(e.findPeakSample){for(p=0;p<g;p++)h[0][p]>e.PeakSample?e.PeakSample=h[0][p]:-h[0][p]>e.PeakSample&&(e.PeakSample=-h[0][p]);if(e.channels_out>1)for(p=0;p<g;p++)h[1][p]>e.PeakSample?e.PeakSample=h[1][p]:-h[1][p]>e.PeakSample&&(e.PeakSample=-h[1][p])}if(e.findReplayGain&&n.AnalyzeSamples(e.rgdata,h[0],0,h[1],0,g,e.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6}}}return d},this.init_bit_stream_w=function(e){i=yO(IO.LAME_MAXMP3BUFFER),e.h_ptr=e.w_ptr=0,e.header[e.h_ptr].write_timing=0,l=-1,c=0,a=0}}SO.EQ=function(e,t){return Math.abs(e)>Math.abs(t)?Math.abs(e-t)<=1e-6*Math.abs(e):Math.abs(e-t)<=1e-6*Math.abs(t)},SO.NEQ=function(e,t){return!SO.EQ(e,t)};var EO=zR.System,TO=zR.VbrMode,MO=zR.ShortBlock,AO=zR.new_float,RO=zR.new_int_n,CO=zR.new_short_n,OO=zR.assert;function IO(){var e=this,t=131072;IO.V9=410,IO.V8=420,IO.V7=430,IO.V6=440,IO.V5=450,IO.V4=460,IO.V3=470,IO.V2=480,IO.V1=490,IO.V0=500,IO.R3MIX=1e3,IO.STANDARD=1001,IO.EXTREME=1002,IO.INSANE=1003,IO.STANDARD_FAST=1004,IO.EXTREME_FAST=1005,IO.MEDIUM=1006,IO.MEDIUM_FAST=1007;var n,o,r,s,i,a=16384+t;IO.LAME_MAXMP3BUFFER=a;var l,c,u,d=new wC;function f(){this.mask_adjust=0,this.mask_adjust_short=0,this.bo_l_weight=AO(cC.SBMAX_l),this.bo_s_weight=AO(cC.SBMAX_s)}function p(){this.lowerlimit=0}function h(e,t){this.lowpass=t}this.enc=new cC,this.setModules=function(e,t,a,f,p,h,m,g,v){n=e,o=t,r=a,s=f,i=p,l=h,c=g,u=v,this.enc.setModules(o,d,s,l)};var m=4294479419;function g(e){var t;return e.class_id=m,t=e.internal_flags=new zC,e.mode=tC.NOT_SET,e.original=1,e.in_samplerate=44100,e.num_channels=2,e.num_samples=-1,e.bWriteVbrTag=!0,e.quality=-1,e.short_blocks=null,t.subblock_gain=-1,e.lowpassfreq=0,e.highpassfreq=0,e.lowpasswidth=-1,e.highpasswidth=-1,e.VBR=TO.vbr_off,e.VBR_q=4,e.ATHcurve=-1,e.VBR_mean_bitrate_kbps=128,e.VBR_min_bitrate_kbps=0,e.VBR_max_bitrate_kbps=0,e.VBR_hard_min=0,t.VBR_min_bitrate=1,t.VBR_max_bitrate=13,e.quant_comp=-1,e.quant_comp_short=-1,e.msfix=-1,t.resample_ratio=1,t.OldValue[0]=180,t.OldValue[1]=180,t.CurrentStep[0]=4,t.CurrentStep[1]=4,t.masking_lower=1,t.nsPsy.attackthre=-1,t.nsPsy.attackthre_s=-1,e.scale=-1,e.athaa_type=-1,e.ATHtype=-1,e.athaa_loudapprox=-1,e.athaa_sensitivity=0,e.useTemporal=null,e.interChRatio=-1,t.mf_samples_to_encode=cC.ENCDELAY+cC.POSTDELAY,e.encoder_padding=0,t.mf_size=cC.ENCDELAY-cC.MDCTDELAY,e.findReplayGain=!1,e.decode_on_the_fly=!1,t.decode_on_the_fly=!1,t.findReplayGain=!1,t.findPeakSample=!1,t.RadioGain=0,t.AudiophileGain=0,t.noclipGainChange=0,t.noclipScale=-1,e.preset=0,e.write_id3tag_automatic=!0,0}function v(e){return e>1?0:e<=0?1:Math.cos(Math.PI/2*e)}function _(e,t){var n=44100;return t>=48e3?n=48e3:t>=44100?n=44100:t>=32e3?n=32e3:t>=24e3?n=24e3:t>=22050?n=22050:t>=16e3?n=16e3:t>=12e3?n=12e3:t>=11025?n=11025:t>=8e3&&(n=8e3),-1==e?n:(e<=15960&&(n=44100),e<=15250&&(n=32e3),e<=11220&&(n=24e3),e<=9970&&(n=22050),e<=7230&&(n=16e3),e<=5420&&(n=12e3),e<=4510&&(n=11025),e<=3970&&(n=8e3),t<n?t>44100?48e3:t>32e3?44100:t>24e3?32e3:t>22050?24e3:t>16e3?22050:t>12e3?16e3:t>11025?12e3:t>8e3?11025:8e3:n)}function b(e,t){switch(e){case 44100:return t.version=1,0;case 48e3:return t.version=1,1;case 32e3:return t.version=1,2;case 22050:return t.version=0,0;case 24e3:return t.version=0,1;case 16e3:return t.version=0,2;case 11025:return t.version=0,0;case 12e3:return t.version=0,1;case 8e3:return t.version=0,2;default:return t.version=0,-1}}function y(e,t,n){n<16e3&&(t=2);for(var o=sO.bitrate_table[t][1],r=2;r<=14;r++)sO.bitrate_table[t][r]>0&&Math.abs(sO.bitrate_table[t][r]-e)<Math.abs(o-e)&&(o=sO.bitrate_table[t][r]);return o}function x(e,t,n){n<16e3&&(t=2);for(var o=0;o<=14;o++)if(sO.bitrate_table[t][o]>0&&sO.bitrate_table[t][o]==e)return o;return-1}function w(t,n){var o=[new h(8,2e3),new h(16,3700),new h(24,3900),new h(32,5500),new h(40,7e3),new h(48,7500),new h(56,1e4),new h(64,11e3),new h(80,13500),new h(96,15100),new h(112,15600),new h(128,17e3),new h(160,17500),new h(192,18600),new h(224,19400),new h(256,19700),new h(320,20500)],r=e.nearestBitrateFullIndex(n);t.lowerlimit=o[r].lowpass}function k(e){var t=e.internal_flags,n=32,o=-1;if(t.lowpass1>0){for(var r=999,s=0;s<=31;s++){var i=s/31;i>=t.lowpass2&&(n=Math.min(n,s)),t.lowpass1<i&&i<t.lowpass2&&(r=Math.min(r,s))}t.lowpass1=999==r?(n-.75)/31:(r-.75)/31,t.lowpass2=n/31}if(t.highpass2>0&&t.highpass2<.75/31*.9&&(t.highpass1=0,t.highpass2=0,EO.err.println("Warning: highpass filter disabled.  highpass frequency too small\n")),t.highpass2>0){var a=-1;for(s=0;s<=31;s++){i=s/31;i<=t.highpass1&&(o=Math.max(o,s)),t.highpass1<i&&i<t.highpass2&&(a=Math.max(a,s))}t.highpass1=o/31,t.highpass2=-1==a?(o+.75)/31:(a+.75)/31}for(s=0;s<32;s++){var l,c;i=s/31;l=t.highpass2>t.highpass1?v((t.highpass2-i)/(t.highpass2-t.highpass1+1e-20)):1,c=t.lowpass2>t.lowpass1?v((i-t.lowpass1)/(t.lowpass2-t.lowpass1+1e-20)):1,t.amp_filter[s]=l*c}}function S(e){var t=e.internal_flags;switch(e.quality){default:case 9:t.psymodel=0,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 8:e.quality=7;case 7:t.psymodel=1,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 6:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 5:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 4:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 3:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),t.noise_shaping_amp=1,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 2:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),0==t.substep_shaping&&(t.substep_shaping=2),t.noise_shaping_amp=1,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 1:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),0==t.substep_shaping&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 0:t.psymodel=1,0==t.noise_shaping&&(t.noise_shaping=1),0==t.substep_shaping&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,-1==t.subblock_gain&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break}}function E(e){var t=e.internal_flags;e.frameNum=0,e.write_id3tag_automatic&&c.id3tag_write_v2(e),t.bitrate_stereoMode_Hist=RO([16,5]),t.bitrate_blockType_Hist=RO([16,6]),t.PeakSample=0,e.bWriteVbrTag&&l.InitVbrTag(e)}function T(e,t){(null==e.in_buffer_0||e.in_buffer_nsamples<t)&&(e.in_buffer_0=AO(t),e.in_buffer_1=AO(t),e.in_buffer_nsamples=t)}function M(e){var t=cC.BLKSIZE+e.framesize-cC.FFTOFFSET;return t=Math.max(t,512+e.framesize-32),t}function A(e,t,r,s,i,a,l){var c,u,d,f,p,h=e.internal_flags,g=0,v=[null,null],_=[null,null];if(h.Class_ID!=m)return-3;if(0==s)return 0;if(p=o.copy_buffer(h,i,a,l,0),p<0)return p;if(a+=p,g+=p,_[0]=t,_[1]=r,SO.NEQ(e.scale,0)&&SO.NEQ(e.scale,1))for(u=0;u<s;++u)_[0][u]*=e.scale,2==h.channels_out&&(_[1][u]*=e.scale);if(SO.NEQ(e.scale_left,0)&&SO.NEQ(e.scale_left,1))for(u=0;u<s;++u)_[0][u]*=e.scale_left;if(SO.NEQ(e.scale_right,0)&&SO.NEQ(e.scale_right,1))for(u=0;u<s;++u)_[1][u]*=e.scale_right;if(2==e.num_channels&&1==h.channels_out)for(u=0;u<s;++u)_[0][u]=.5*(_[0][u]+_[1][u]),_[1][u]=0;f=M(e),v[0]=h.mfbuf[0],v[1]=h.mfbuf[1];var b=0;while(s>0){var y=[null,null],x=0,w=0;y[0]=_[0],y[1]=_[1];var k=new C;if(L(e,v,y,b,s,k),x=k.n_in,w=k.n_out,h.findReplayGain&&!h.decode_on_the_fly&&n.AnalyzeSamples(h.rgdata,v[0],h.mf_size,v[1],h.mf_size,w,h.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6;if(s-=x,b+=x,h.channels_out,h.mf_size+=w,OO(h.mf_size<=zC.MFSIZE),h.mf_samples_to_encode<1&&(h.mf_samples_to_encode=cC.ENCDELAY+cC.POSTDELAY),h.mf_samples_to_encode+=w,h.mf_size>=f){var S=l-g;if(0==l&&(S=0),c=R(e,v[0],v[1],i,a,S),c<0)return c;for(a+=c,g+=c,h.mf_size-=e.framesize,h.mf_samples_to_encode-=e.framesize,d=0;d<h.channels_out;d++)for(u=0;u<h.mf_size;u++)v[d][u]=v[d][u+e.framesize]}}return g}function R(t,n,o,r,s,i){var a=e.enc.lame_encode_mp3_frame(t,n,o,r,s,i);return t.frameNum++,a}function C(){this.n_in=0,this.n_out=0}function O(){this.num_used=0}function I(e,t){return 0!=t?I(t,e%t):e}function B(e,t,n){var o=Math.PI*t;e/=n,e<0&&(e=0),e>1&&(e=1);var r=e-.5,s=.42-.5*Math.cos(2*e*Math.PI)+.08*Math.cos(4*e*Math.PI);return Math.abs(r)<1e-9?o/Math.PI:s*Math.sin(n*o*r)/(Math.PI*n*r)}function P(e,t,n,o,r,s,i,a,l){var c,u,d=e.internal_flags,f=0,p=e.out_samplerate/I(e.out_samplerate,e.in_samplerate);p>zC.BPC&&(p=zC.BPC);var h=Math.abs(d.resample_ratio-Math.floor(.5+d.resample_ratio))<1e-4?1:0,m=1/d.resample_ratio;m>1&&(m=1);var g=31;g%2==0&&--g,g+=h;var v=g+1;if(0==d.fill_buffer_resample_init){for(d.inbuf_old[0]=AO(v),d.inbuf_old[1]=AO(v),c=0;c<=2*p;++c)d.blackfilt[c]=AO(v);for(d.itime[0]=0,d.itime[1]=0,f=0;f<=2*p;f++){var _=0,b=(f-p)/(2*p);for(c=0;c<=g;c++)_+=d.blackfilt[f][c]=B(c-b,m,g);for(c=0;c<=g;c++)d.blackfilt[f][c]/=_}d.fill_buffer_resample_init=1}var y=d.inbuf_old[l];for(u=0;u<o;u++){var x,w;if(x=u*d.resample_ratio,f=0|Math.floor(x-d.itime[l]),g+f-g/2>=i)break;b=x-d.itime[l]-(f+g%2*.5);w=0|Math.floor(2*b*p+p+.5);var k=0;for(c=0;c<=g;++c){var S,E=0|c+f-g/2;S=E<0?y[v+E]:r[s+E],k+=S*d.blackfilt[w][c]}t[n+u]=k}if(a.num_used=Math.min(i,g+f-g/2),d.itime[l]+=a.num_used-u*d.resample_ratio,a.num_used>=v)for(c=0;c<v;c++)y[c]=r[s+a.num_used+c-v];else{var T=v-a.num_used;for(c=0;c<T;++c)y[c]=y[c+a.num_used];for(f=0;c<v;++c,++f)y[c]=r[s+f];OO(f==a.num_used)}return u}function L(e,t,n,o,r,s){var i=e.internal_flags;if(i.resample_ratio<.9999||i.resample_ratio>1.0001)for(var a=0;a<i.channels_out;a++){var l=new O;s.n_out=P(e,t[a],i.mf_size,e.framesize,n[a],o,r,l,a),s.n_in=l.num_used}else{s.n_out=Math.min(e.framesize,r),s.n_in=s.n_out;for(var c=0;c<s.n_out;++c)t[0][i.mf_size+c]=n[0][o+c],2==i.channels_out&&(t[1][i.mf_size+c]=n[1][o+c])}}this.lame_init=function(){var e=new kC;return g(e),e.lame_allocated_gfp=1,e},this.nearestBitrateFullIndex=function(e){var t=[8,16,24,32,40,48,56,64,80,96,112,128,160,192,224,256,320],n=0,o=0,r=0,s=0;s=t[16],r=16,o=t[16],n=16;for(var i=0;i<16;i++)if(Math.max(e,t[i+1])!=e){s=t[i+1],r=i+1,o=t[i],n=i;break}return s-e>e-o?n:r},this.lame_init_params=function(e){var t=e.internal_flags;if(t.Class_ID=0,null==t.ATH&&(t.ATH=new YC),null==t.PSY&&(t.PSY=new f),null==t.rgdata&&(t.rgdata=new QC),t.channels_in=e.num_channels,1==t.channels_in&&(e.mode=tC.MONO),t.channels_out=e.mode==tC.MONO?1:2,t.mode_ext=cC.MPG_MD_MS_LR,e.mode==tC.MONO&&(e.force_ms=!1),e.VBR==TO.vbr_off&&128!=e.VBR_mean_bitrate_kbps&&0==e.brate&&(e.brate=e.VBR_mean_bitrate_kbps),e.VBR==TO.vbr_off||e.VBR==TO.vbr_mtrh||e.VBR==TO.vbr_mt||(e.free_format=!1),e.VBR==TO.vbr_off&&0==e.brate&&SO.EQ(e.compression_ratio,0)&&(e.compression_ratio=11.025),e.VBR==TO.vbr_off&&e.compression_ratio>0&&(0==e.out_samplerate&&(e.out_samplerate=map2MP3Frequency(int(.97*e.in_samplerate))),e.brate=0|16*e.out_samplerate*t.channels_out/(1e3*e.compression_ratio),t.samplerate_index=b(e.out_samplerate,e),e.free_format||(e.brate=y(e.brate,e.version,e.out_samplerate))),0!=e.out_samplerate&&(e.out_samplerate<16e3?(e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,64)):e.out_samplerate<32e3?(e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,160)):(e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,32),e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,320))),0==e.lowpassfreq){var a=16e3;switch(e.VBR){case TO.vbr_off:var l=new p;w(l,e.brate),a=l.lowerlimit;break;case TO.vbr_abr:l=new p;w(l,e.VBR_mean_bitrate_kbps),a=l.lowerlimit;break;case TO.vbr_rh:var c=[19500,19e3,18600,18e3,17500,16e3,15600,14900,12500,1e4,3950];if(e.VBR_q>=0&&e.VBR_q<=9){var h=c[e.VBR_q],g=c[e.VBR_q+1],v=e.VBR_q_frac;a=linear_int(h,g,v)}else a=19500;break;default:c=[19500,19e3,18500,18e3,17500,16500,15500,14500,12500,9500,3950];if(e.VBR_q>=0&&e.VBR_q<=9){h=c[e.VBR_q],g=c[e.VBR_q+1],v=e.VBR_q_frac;a=linear_int(h,g,v)}else a=19500}e.mode!=tC.MONO||e.VBR!=TO.vbr_off&&e.VBR!=TO.vbr_abr||(a*=1.5),e.lowpassfreq=0|a}if(0==e.out_samplerate&&(2*e.lowpassfreq>e.in_samplerate&&(e.lowpassfreq=e.in_samplerate/2),e.out_samplerate=_(0|e.lowpassfreq,e.in_samplerate)),e.lowpassfreq=Math.min(20500,e.lowpassfreq),e.lowpassfreq=Math.min(e.out_samplerate/2,e.lowpassfreq),e.VBR==TO.vbr_off&&(e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.brate)),e.VBR==TO.vbr_abr&&(e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.VBR_mean_bitrate_kbps)),e.bWriteVbrTag||(e.findReplayGain=!1,e.decode_on_the_fly=!1,t.findPeakSample=!1),t.findReplayGain=e.findReplayGain,t.decode_on_the_fly=e.decode_on_the_fly,t.decode_on_the_fly&&(t.findPeakSample=!0),t.findReplayGain&&n.InitGainAnalysis(t.rgdata,e.out_samplerate)==GainAnalysis.INIT_GAIN_ANALYSIS_ERROR)return e.internal_flags=null,-6;switch(t.decode_on_the_fly&&!e.decode_only&&(null!=t.hip&&u.hip_decode_exit(t.hip),t.hip=u.hip_decode_init()),t.mode_gr=e.out_samplerate<=24e3?1:2,e.framesize=576*t.mode_gr,e.encoder_delay=cC.ENCDELAY,t.resample_ratio=e.in_samplerate/e.out_samplerate,e.VBR){case TO.vbr_mt:case TO.vbr_rh:case TO.vbr_mtrh:var T=[5.7,6.5,7.3,8.2,10,11.9,13,14,15,16.5];e.compression_ratio=T[e.VBR_q];break;case TO.vbr_abr:e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.VBR_mean_bitrate_kbps);break;default:e.compression_ratio=16*e.out_samplerate*t.channels_out/(1e3*e.brate);break}if(e.mode==tC.NOT_SET&&(e.mode=tC.JOINT_STEREO),e.highpassfreq>0?(t.highpass1=2*e.highpassfreq,e.highpasswidth>=0?t.highpass2=2*(e.highpassfreq+e.highpasswidth):t.highpass2=2*e.highpassfreq,t.highpass1/=e.out_samplerate,t.highpass2/=e.out_samplerate):(t.highpass1=0,t.highpass2=0),e.lowpassfreq>0?(t.lowpass2=2*e.lowpassfreq,e.lowpasswidth>=0?(t.lowpass1=2*(e.lowpassfreq-e.lowpasswidth),t.lowpass1<0&&(t.lowpass1=0)):t.lowpass1=2*e.lowpassfreq,t.lowpass1/=e.out_samplerate,t.lowpass2/=e.out_samplerate):(t.lowpass1=0,t.lowpass2=0),k(e),t.samplerate_index=b(e.out_samplerate,e),t.samplerate_index<0)return e.internal_flags=null,-1;if(e.VBR==TO.vbr_off){if(e.free_format)t.bitrate_index=0;else if(e.brate=y(e.brate,e.version,e.out_samplerate),t.bitrate_index=x(e.brate,e.version,e.out_samplerate),t.bitrate_index<=0)return e.internal_flags=null,-1}else t.bitrate_index=1;e.analysis&&(e.bWriteVbrTag=!1),null!=t.pinfo&&(e.bWriteVbrTag=!1),o.init_bit_stream_w(t);for(var M,A=t.samplerate_index+3*e.version+6*(e.out_samplerate<16e3?1:0),R=0;R<cC.SBMAX_l+1;R++)t.scalefac_band.l[R]=s.sfBandIndex[A].l[R];for(R=0;R<cC.PSFB21+1;R++){var C=(t.scalefac_band.l[22]-t.scalefac_band.l[21])/cC.PSFB21,O=t.scalefac_band.l[21]+R*C;t.scalefac_band.psfb21[R]=O}t.scalefac_band.psfb21[cC.PSFB21]=576;for(R=0;R<cC.SBMAX_s+1;R++)t.scalefac_band.s[R]=s.sfBandIndex[A].s[R];for(R=0;R<cC.PSFB12+1;R++){C=(t.scalefac_band.s[13]-t.scalefac_band.s[12])/cC.PSFB12,O=t.scalefac_band.s[12]+R*C;t.scalefac_band.psfb12[R]=O}for(t.scalefac_band.psfb12[cC.PSFB12]=192,1==e.version?t.sideinfo_len=1==t.channels_out?21:36:t.sideinfo_len=1==t.channels_out?13:21,e.error_protection&&(t.sideinfo_len+=2),E(e),t.Class_ID=m,M=0;M<19;M++)t.nsPsy.pefirbuf[M]=700*t.mode_gr*t.channels_out;switch(-1==e.ATHtype&&(e.ATHtype=4),OO(e.VBR_q<=9),OO(e.VBR_q>=0),e.VBR){case TO.vbr_mt:e.VBR=TO.vbr_mtrh;case TO.vbr_mtrh:null==e.useTemporal&&(e.useTemporal=!1),r.apply_preset(e,500-10*e.VBR_q,0),e.quality<0&&(e.quality=LAME_DEFAULT_QUALITY),e.quality<5&&(e.quality=0),e.quality>5&&(e.quality=5),t.PSY.mask_adjust=e.maskingadjust,t.PSY.mask_adjust_short=e.maskingadjust_short,e.experimentalY?t.sfb21_extra=!1:t.sfb21_extra=e.out_samplerate>44e3,t.iteration_loop=new VBRNewIterationLoop(i);break;case TO.vbr_rh:r.apply_preset(e,500-10*e.VBR_q,0),t.PSY.mask_adjust=e.maskingadjust,t.PSY.mask_adjust_short=e.maskingadjust_short,e.experimentalY?t.sfb21_extra=!1:t.sfb21_extra=e.out_samplerate>44e3,e.quality>6&&(e.quality=6),e.quality<0&&(e.quality=LAME_DEFAULT_QUALITY),t.iteration_loop=new VBROldIterationLoop(i);break;default:var I;t.sfb21_extra=!1,e.quality<0&&(e.quality=LAME_DEFAULT_QUALITY),I=e.VBR,I==TO.vbr_off&&(e.VBR_mean_bitrate_kbps=e.brate),r.apply_preset(e,e.VBR_mean_bitrate_kbps,0),e.VBR=I,t.PSY.mask_adjust=e.maskingadjust,t.PSY.mask_adjust_short=e.maskingadjust_short,I==TO.vbr_off?t.iteration_loop=new oO(i):t.iteration_loop=new ABRIterationLoop(i);break}if(OO(e.scale>=0),e.VBR!=TO.vbr_off){if(t.VBR_min_bitrate=1,t.VBR_max_bitrate=14,e.out_samplerate<16e3&&(t.VBR_max_bitrate=8),0!=e.VBR_min_bitrate_kbps&&(e.VBR_min_bitrate_kbps=y(e.VBR_min_bitrate_kbps,e.version,e.out_samplerate),t.VBR_min_bitrate=x(e.VBR_min_bitrate_kbps,e.version,e.out_samplerate),t.VBR_min_bitrate<0))return-1;if(0!=e.VBR_max_bitrate_kbps&&(e.VBR_max_bitrate_kbps=y(e.VBR_max_bitrate_kbps,e.version,e.out_samplerate),t.VBR_max_bitrate=x(e.VBR_max_bitrate_kbps,e.version,e.out_samplerate),t.VBR_max_bitrate<0))return-1;e.VBR_min_bitrate_kbps=sO.bitrate_table[e.version][t.VBR_min_bitrate],e.VBR_max_bitrate_kbps=sO.bitrate_table[e.version][t.VBR_max_bitrate],e.VBR_mean_bitrate_kbps=Math.min(sO.bitrate_table[e.version][t.VBR_max_bitrate],e.VBR_mean_bitrate_kbps),e.VBR_mean_bitrate_kbps=Math.max(sO.bitrate_table[e.version][t.VBR_min_bitrate],e.VBR_mean_bitrate_kbps)}return e.tune&&(t.PSY.mask_adjust+=e.tune_value_a,t.PSY.mask_adjust_short+=e.tune_value_a),S(e),OO(e.scale>=0),e.athaa_type<0?t.ATH.useAdjust=3:t.ATH.useAdjust=e.athaa_type,t.ATH.aaSensitivityP=Math.pow(10,e.athaa_sensitivity/-10),null==e.short_blocks&&(e.short_blocks=MO.short_block_allowed),e.short_blocks!=MO.short_block_allowed||e.mode!=tC.JOINT_STEREO&&e.mode!=tC.STEREO||(e.short_blocks=MO.short_block_coupled),e.quant_comp<0&&(e.quant_comp=1),e.quant_comp_short<0&&(e.quant_comp_short=0),e.msfix<0&&(e.msfix=0),e.exp_nspsytune=1|e.exp_nspsytune,e.internal_flags.nsPsy.attackthre<0&&(e.internal_flags.nsPsy.attackthre=wC.NSATTACKTHRE),e.internal_flags.nsPsy.attackthre_s<0&&(e.internal_flags.nsPsy.attackthre_s=wC.NSATTACKTHRE_S),OO(e.scale>=0),e.scale<0&&(e.scale=1),e.ATHtype<0&&(e.ATHtype=4),e.ATHcurve<0&&(e.ATHcurve=4),e.athaa_loudapprox<0&&(e.athaa_loudapprox=2),e.interChRatio<0&&(e.interChRatio=0),null==e.useTemporal&&(e.useTemporal=!0),t.slot_lag=t.frac_SpF=0,e.VBR==TO.vbr_off&&(t.slot_lag=t.frac_SpF=72e3*(e.version+1)*e.brate%e.out_samplerate|0),s.iteration_init(e),d.psymodel_init(e),OO(e.scale>=0),0},this.lame_encode_flush=function(e,t,n,r){var s,i,a,l,u=e.internal_flags,d=CO([2,1152]),f=0,p=u.mf_samples_to_encode-cC.POSTDELAY,h=M(e);if(u.mf_samples_to_encode<1)return 0;s=0,e.in_samplerate!=e.out_samplerate&&(p+=16*e.out_samplerate/e.in_samplerate),a=e.framesize-p%e.framesize,a<576&&(a+=e.framesize),e.encoder_padding=a,l=(p+a)/e.framesize;while(l>0&&f>=0){var m=h-u.mf_size,g=e.frameNum;m*=e.in_samplerate,m/=e.out_samplerate,m>1152&&(m=1152),m<1&&(m=1),i=r-s,0==r&&(i=0),f=this.lame_encode_buffer(e,d[0],d[1],m,t,n,i),n+=f,s+=f,l-=g!=e.frameNum?1:0}if(u.mf_samples_to_encode=0,f<0)return f;if(i=r-s,0==r&&(i=0),o.flush_bitstream(e),f=o.copy_buffer(u,t,n,i,1),f<0)return f;if(n+=f,s+=f,i=r-s,0==r&&(i=0),e.write_id3tag_automatic){if(c.id3tag_write_v1(e),f=o.copy_buffer(u,t,n,i,0),f<0)return f;s+=f}return s},this.lame_encode_buffer=function(e,t,n,o,r,s,i){var a=e.internal_flags,l=[null,null];if(a.Class_ID!=m)return-3;if(0==o)return 0;T(a,o),l[0]=a.in_buffer_0,l[1]=a.in_buffer_1;for(var c=0;c<o;c++)l[0][c]=t[c],a.channels_in>1&&(l[1][c]=n[c]);return A(e,l[0],l[1],o,r,s,i)}}var BO=zR.VbrMode;function PO(){function e(e,t,n,o,r,s,i,a,l,c,u,d,f,p,h){this.vbr_q=e,this.quant_comp=t,this.quant_comp_s=n,this.expY=o,this.st_lrm=r,this.st_s=s,this.masking_adj=i,this.masking_adj_short=a,this.ath_lower=l,this.ath_curve=c,this.ath_sensitivity=u,this.interch=d,this.safejoint=f,this.sfb21mod=p,this.msfix=h}function t(e,t,n,o,r,s,i,a,l,c,u,d,f,p){this.quant_comp=t,this.quant_comp_s=n,this.safejoint=o,this.nsmsfix=r,this.st_lrm=s,this.st_s=i,this.nsbass=a,this.scale=l,this.masking_adj=c,this.ath_lower=u,this.ath_curve=d,this.interch=f,this.sfscale=p}var n;this.setModules=function(e){n=e};var o=[new e(0,9,9,0,5.2,125,-4.2,-6.3,4.8,1,0,0,2,21,.97),new e(1,9,9,0,5.3,125,-3.6,-5.6,4.5,1.5,0,0,2,21,1.35),new e(2,9,9,0,5.6,125,-2.2,-3.5,2.8,2,0,0,2,21,1.49),new e(3,9,9,1,5.8,130,-1.8,-2.8,2.6,3,-4,0,2,20,1.64),new e(4,9,9,1,6,135,-.7,-1.1,1.1,3.5,-8,0,2,0,1.79),new e(5,9,9,1,6.4,140,.5,.4,-7.5,4,-12,2e-4,0,0,1.95),new e(6,9,9,1,6.6,145,.67,.65,-14.7,6.5,-19,4e-4,0,0,2.3),new e(7,9,9,1,6.6,145,.8,.75,-19.7,8,-22,6e-4,0,0,2.7),new e(8,9,9,1,6.6,145,1.2,1.15,-27.5,10,-23,7e-4,0,0,0),new e(9,9,9,1,6.6,145,1.6,1.6,-36,11,-25,8e-4,0,0,0),new e(10,9,9,1,6.6,145,2,2,-36,12,-25,8e-4,0,0,0)],r=[new e(0,9,9,0,4.2,25,-7,-4,7.5,1,0,0,2,26,.97),new e(1,9,9,0,4.2,25,-5.6,-3.6,4.5,1.5,0,0,2,21,1.35),new e(2,9,9,0,4.2,25,-4.4,-1.8,2,2,0,0,2,18,1.49),new e(3,9,9,1,4.2,25,-3.4,-1.25,1.1,3,-4,0,2,15,1.64),new e(4,9,9,1,4.2,25,-2.2,.1,0,3.5,-8,0,2,0,1.79),new e(5,9,9,1,4.2,25,-1,1.65,-7.7,4,-12,2e-4,0,0,1.95),new e(6,9,9,1,4.2,25,-0,2.47,-7.7,6.5,-19,4e-4,0,0,2),new e(7,9,9,1,4.2,25,.5,2,-14.5,8,-22,6e-4,0,0,2),new e(8,9,9,1,4.2,25,1,2.4,-22,10,-23,7e-4,0,0,2),new e(9,9,9,1,4.2,25,1.5,2.95,-30,11,-25,8e-4,0,0,2),new e(10,9,9,1,4.2,25,2,2.95,-36,12,-30,8e-4,0,0,2)];function s(e,t,n){var s=e.VBR==BO.vbr_rh?o:r,i=e.VBR_q_frac,a=s[t],c=s[t+1],u=a;a.st_lrm=a.st_lrm+i*(c.st_lrm-a.st_lrm),a.st_s=a.st_s+i*(c.st_s-a.st_s),a.masking_adj=a.masking_adj+i*(c.masking_adj-a.masking_adj),a.masking_adj_short=a.masking_adj_short+i*(c.masking_adj_short-a.masking_adj_short),a.ath_lower=a.ath_lower+i*(c.ath_lower-a.ath_lower),a.ath_curve=a.ath_curve+i*(c.ath_curve-a.ath_curve),a.ath_sensitivity=a.ath_sensitivity+i*(c.ath_sensitivity-a.ath_sensitivity),a.interch=a.interch+i*(c.interch-a.interch),a.msfix=a.msfix+i*(c.msfix-a.msfix),l(e,u.vbr_q),0!=n?e.quant_comp=u.quant_comp:Math.abs(e.quant_comp- -1)>0||(e.quant_comp=u.quant_comp),0!=n?e.quant_comp_short=u.quant_comp_s:Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=u.quant_comp_s),0!=u.expY&&(e.experimentalY=0!=u.expY),0!=n?e.internal_flags.nsPsy.attackthre=u.st_lrm:Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=u.st_lrm),0!=n?e.internal_flags.nsPsy.attackthre_s=u.st_s:Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=u.st_s),0!=n?e.maskingadjust=u.masking_adj:Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=u.masking_adj),0!=n?e.maskingadjust_short=u.masking_adj_short:Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=u.masking_adj_short),0!=n?e.ATHlower=-u.ath_lower/10:Math.abs(10*-e.ATHlower-0)>0||(e.ATHlower=-u.ath_lower/10),0!=n?e.ATHcurve=u.ath_curve:Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=u.ath_curve),0!=n?e.athaa_sensitivity=u.ath_sensitivity:Math.abs(e.athaa_sensitivity- -1)>0||(e.athaa_sensitivity=u.ath_sensitivity),u.interch>0&&(0!=n?e.interChRatio=u.interch:Math.abs(e.interChRatio- -1)>0||(e.interChRatio=u.interch)),u.safejoint>0&&(e.exp_nspsytune=e.exp_nspsytune|u.safejoint),u.sfb21mod>0&&(e.exp_nspsytune=e.exp_nspsytune|u.sfb21mod<<20),0!=n?e.msfix=u.msfix:Math.abs(e.msfix- -1)>0||(e.msfix=u.msfix),0==n&&(e.VBR_q=t,e.VBR_q_frac=i)}var i=[new t(8,9,9,0,0,6.6,145,0,.95,0,-30,11,.0012,1),new t(16,9,9,0,0,6.6,145,0,.95,0,-25,11,.001,1),new t(24,9,9,0,0,6.6,145,0,.95,0,-20,11,.001,1),new t(32,9,9,0,0,6.6,145,0,.95,0,-15,11,.001,1),new t(40,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new t(48,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new t(56,9,9,0,0,6.6,145,0,.95,0,-6,11,8e-4,1),new t(64,9,9,0,0,6.6,145,0,.95,0,-2,11,8e-4,1),new t(80,9,9,0,0,6.6,145,0,.95,0,0,8,7e-4,1),new t(96,9,9,0,2.5,6.6,145,0,.95,0,1,5.5,6e-4,1),new t(112,9,9,0,2.25,6.6,145,0,.95,0,2,4.5,5e-4,1),new t(128,9,9,0,1.95,6.4,140,0,.95,0,3,4,2e-4,1),new t(160,9,9,1,1.79,6,135,0,.95,-2,5,3.5,0,1),new t(192,9,9,1,1.49,5.6,125,0,.97,-4,7,3,0,0),new t(224,9,9,1,1.25,5.2,125,0,.98,-6,9,2,0,0),new t(256,9,9,1,.97,5.2,125,0,1,-8,10,1,0,0),new t(320,9,9,1,.9,5.2,125,0,1,-10,12,0,0,0)];function a(e,t,o){var r=t,s=n.nearestBitrateFullIndex(t);if(e.VBR=BO.vbr_abr,e.VBR_mean_bitrate_kbps=r,e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,320),e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.brate=e.VBR_mean_bitrate_kbps,e.VBR_mean_bitrate_kbps>320&&(e.disable_reservoir=!0),i[s].safejoint>0&&(e.exp_nspsytune=2|e.exp_nspsytune),i[s].sfscale>0&&(e.internal_flags.noise_shaping=2),Math.abs(i[s].nsbass)>0){var a=int(4*i[s].nsbass);a<0&&(a+=64),e.exp_nspsytune=e.exp_nspsytune|a<<2}return 0!=o?e.quant_comp=i[s].quant_comp:Math.abs(e.quant_comp- -1)>0||(e.quant_comp=i[s].quant_comp),0!=o?e.quant_comp_short=i[s].quant_comp_s:Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=i[s].quant_comp_s),0!=o?e.msfix=i[s].nsmsfix:Math.abs(e.msfix- -1)>0||(e.msfix=i[s].nsmsfix),0!=o?e.internal_flags.nsPsy.attackthre=i[s].st_lrm:Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=i[s].st_lrm),0!=o?e.internal_flags.nsPsy.attackthre_s=i[s].st_s:Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=i[s].st_s),0!=o?e.scale=i[s].scale:Math.abs(e.scale- -1)>0||(e.scale=i[s].scale),0!=o?e.maskingadjust=i[s].masking_adj:Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=i[s].masking_adj),i[s].masking_adj>0?0!=o?e.maskingadjust_short=.9*i[s].masking_adj:Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=.9*i[s].masking_adj):0!=o?e.maskingadjust_short=1.1*i[s].masking_adj:Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=1.1*i[s].masking_adj),0!=o?e.ATHlower=-i[s].ath_lower/10:Math.abs(10*-e.ATHlower-0)>0||(e.ATHlower=-i[s].ath_lower/10),0!=o?e.ATHcurve=i[s].ath_curve:Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=i[s].ath_curve),0!=o?e.interChRatio=i[s].interch:Math.abs(e.interChRatio- -1)>0||(e.interChRatio=i[s].interch),t}function l(e,t){var n=0;return t<0&&(n=-1,t=0),t>9&&(n=-1,t=9),e.VBR_q=t,e.VBR_q_frac=0,n}this.apply_preset=function(e,t,n){switch(t){case IO.R3MIX:t=IO.V3,e.VBR=BO.vbr_mtrh;break;case IO.MEDIUM:t=IO.V4,e.VBR=BO.vbr_rh;break;case IO.MEDIUM_FAST:t=IO.V4,e.VBR=BO.vbr_mtrh;break;case IO.STANDARD:t=IO.V2,e.VBR=BO.vbr_rh;break;case IO.STANDARD_FAST:t=IO.V2,e.VBR=BO.vbr_mtrh;break;case IO.EXTREME:t=IO.V0,e.VBR=BO.vbr_rh;break;case IO.EXTREME_FAST:t=IO.V0,e.VBR=BO.vbr_mtrh;break;case IO.INSANE:return t=320,e.preset=t,a(e,t,n),e.VBR=BO.vbr_off,t}switch(e.preset=t,t){case IO.V9:return s(e,9,n),t;case IO.V8:return s(e,8,n),t;case IO.V7:return s(e,7,n),t;case IO.V6:return s(e,6,n),t;case IO.V5:return s(e,5,n),t;case IO.V4:return s(e,4,n),t;case IO.V3:return s(e,3,n),t;case IO.V2:return s(e,2,n),t;case IO.V1:return s(e,1,n),t;case IO.V0:return s(e,0,n),t}return t>=8&&t<=320?a(e,t,n):(e.preset=0,t)}}function LO(){this.setModules=function(e,t){}}function jO(){this.over_noise=0,this.tot_noise=0,this.max_noise=0,this.over_count=0,this.over_SSD=0,this.bits=0}var NO=zR.new_float,FO=zR.new_int;function DO(){this.global_gain=0,this.sfb_count1=0,this.step=FO(39),this.noise=NO(39),this.noise_log=NO(39)}var HO=zR.System,UO=zR.VbrMode,VO=zR.Util,$O=zR.Arrays,zO=zR.new_float,qO=zR.assert;function YO(){var e,t,n;this.rv=null,this.qupvt=null;var o,r=new LO;function s(e,t,n,o){o=0;for(var r=0;r<=n;++r){var s=Math.abs(e.xr[r]);o+=s,t[r]=Math.sqrt(s*Math.sqrt(s)),t[r]>e.xrpow_max&&(e.xrpow_max=t[r])}return o}function i(e,t){var o=e.ATH,r=t.xr;if(t.block_type!=cC.SHORT_TYPE)for(var s=!1,i=cC.PSFB21-1;i>=0&&!s;i--){var a=e.scalefac_band.psfb21[i],l=e.scalefac_band.psfb21[i+1],c=n.athAdjust(o.adjust,o.psfb21[i],o.floor);e.nsPsy.longfact[21]>1e-12&&(c*=e.nsPsy.longfact[21]);for(var u=l-1;u>=a;u--){if(!(Math.abs(r[u])<c)){s=!0;break}r[u]=0}}else for(var d=0;d<3;d++)for(s=!1,i=cC.PSFB12-1;i>=0&&!s;i--){a=3*e.scalefac_band.s[12]+(e.scalefac_band.s[13]-e.scalefac_band.s[12])*d+(e.scalefac_band.psfb12[i]-e.scalefac_band.psfb12[0]),l=a+(e.scalefac_band.psfb12[i+1]-e.scalefac_band.psfb12[i]);var f=n.athAdjust(o.adjust,o.psfb12[i],o.floor);e.nsPsy.shortfact[12]>1e-12&&(f*=e.nsPsy.shortfact[12]);for(u=l-1;u>=a;u--){if(!(Math.abs(r[u])<f)){s=!0;break}r[u]=0}}}function a(e){this.ordinal=e}function l(e,t,n,r,s){var i,l=e.CurrentStep[r],c=!1,u=e.OldValue[r],d=a.BINSEARCH_NONE;for(t.global_gain=u,n-=t.part2_length;;){var f;if(i=o.count_bits(e,s,t,null),1==l||i==n)break;i>n?(d==a.BINSEARCH_DOWN&&(c=!0),c&&(l/=2),d=a.BINSEARCH_UP,f=l):(d==a.BINSEARCH_UP&&(c=!0),c&&(l/=2),d=a.BINSEARCH_DOWN,f=-l),t.global_gain+=f,t.global_gain<0&&(t.global_gain=0,c=!0),t.global_gain>255&&(t.global_gain=255,c=!0)}qO(t.global_gain>=0),qO(t.global_gain<256);while(i>n&&t.global_gain<255)t.global_gain++,i=o.count_bits(e,s,t,null);return e.CurrentStep[r]=u-t.global_gain>=4?4:2,e.OldValue[r]=t.global_gain,t.part2_3_length=i,i}function c(e){for(var t=0;t<e.sfbmax;t++)if(e.scalefac[t]+e.subblock_gain[e.window[t]]==0)return!1;return!0}function u(e){return VO.FAST_LOG10(.368+.632*e*e*e)}function d(e,t){for(var n=1e-37,o=0;o<t.psymax;o++)n+=u(e[o]);return Math.max(1e-20,n)}function f(e,t,n,o,r){var s;switch(e){default:case 9:t.over_count>0?(s=n.over_SSD<=t.over_SSD,n.over_SSD==t.over_SSD&&(s=n.bits<t.bits)):s=n.max_noise<0&&10*n.max_noise+n.bits<=10*t.max_noise+t.bits;break;case 0:s=n.over_count<t.over_count||n.over_count==t.over_count&&n.over_noise<t.over_noise||n.over_count==t.over_count&&BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 8:n.max_noise=d(r,o);case 1:s=n.max_noise<t.max_noise;break;case 2:s=n.tot_noise<t.tot_noise;break;case 3:s=n.tot_noise<t.tot_noise&&n.max_noise<t.max_noise;break;case 4:s=n.max_noise<=0&&t.max_noise>.2||n.max_noise<=0&&t.max_noise<0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise||n.max_noise<=0&&t.max_noise>0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.05&&t.max_noise>n.max_noise-.1&&n.tot_noise+n.over_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.1&&t.max_noise>n.max_noise-.15&&n.tot_noise+n.over_noise+n.over_noise<t.tot_noise+t.over_noise+t.over_noise;break;case 5:s=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 6:s=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&(n.max_noise<t.max_noise||BitStream.EQ(n.max_noise,t.max_noise)&&n.tot_noise<=t.tot_noise);break;case 7:s=n.over_count<t.over_count||n.over_noise<t.over_noise;break}return 0==t.over_count&&(s=s&&n.bits<t.bits),s}function p(e,t,n,o,r){var s,i=e.internal_flags;s=0==t.scalefac_scale?1.2968395546510096:1.6817928305074292;for(var a=0,l=0;l<t.sfbmax;l++)a<n[l]&&(a=n[l]);var c=i.noise_shaping_amp;switch(3==c&&(c=r?2:1),c){case 2:break;case 1:a>1?a=Math.pow(a,.5):a*=.95;break;case 0:default:a>1?a=1:a*=.95;break}var u=0;for(l=0;l<t.sfbmax;l++){var d,f=t.width[l];if(u+=f,!(n[l]<a)){if(0!=(2&i.substep_shaping)&&(i.pseudohalf[l]=0==i.pseudohalf[l]?1:0,0==i.pseudohalf[l]&&2==i.noise_shaping_amp))return;for(t.scalefac[l]++,d=-f;d<0;d++)o[u+d]*=s,o[u+d]>t.xrpow_max&&(t.xrpow_max=o[u+d]);if(2==i.noise_shaping_amp)return}}}function h(e,t){for(var o=1.2968395546510096,r=0,s=0;s<e.sfbmax;s++){var i=e.width[s],a=e.scalefac[s];if(0!=e.preflag&&(a+=n.pretab[s]),r+=i,0!=(1&a)){a++;for(var l=-i;l<0;l++)t[r+l]*=o,t[r+l]>e.xrpow_max&&(e.xrpow_max=t[r+l])}e.scalefac[s]=a>>1}e.preflag=0,e.scalefac_scale=1}function m(e,t,o){var r,s=t.scalefac;for(r=0;r<t.sfb_lmax;r++)if(s[r]>=16)return!0;for(var i=0;i<3;i++){var a=0,l=0;for(r=t.sfb_lmax+i;r<t.sfbdivide;r+=3)a<s[r]&&(a=s[r]);for(;r<t.sfbmax;r+=3)l<s[r]&&(l=s[r]);if(!(a<16&&l<8)){if(t.subblock_gain[i]>=7)return!0;t.subblock_gain[i]++;var c=e.scalefac_band.l[t.sfb_lmax];for(r=t.sfb_lmax+i;r<t.sfbmax;r+=3){var u=t.width[r],d=s[r];if(d-=4>>t.scalefac_scale,d>=0)s[r]=d,c+=3*u;else{s[r]=0;var f=210+(d<<t.scalefac_scale+1);h=n.IPOW20(f),c+=u*(i+1);for(var p=-u;p<0;p++)o[c+p]*=h,o[c+p]>t.xrpow_max&&(t.xrpow_max=o[c+p]);c+=u*(3-i-1)}}var h=n.IPOW20(202);c+=t.width[r]*(i+1);for(p=-t.width[r];p<0;p++)o[c+p]*=h,o[c+p]>t.xrpow_max&&(t.xrpow_max=o[c+p])}}return!1}function g(e,t,n,r,s){var i=e.internal_flags;p(e,t,n,r,s);var a=c(t);return!a&&(a=2==i.mode_gr?o.scale_bitcount(t):o.scale_bitcount_lsf(i,t),!a||(i.noise_shaping>1&&($O.fill(i.pseudohalf,0),0==t.scalefac_scale?(h(t,r),a=!1):t.block_type==cC.SHORT_TYPE&&i.subblock_gain>0&&(a=m(i,t,r)||c(t))),a||(a=2==i.mode_gr?o.scale_bitcount(t):o.scale_bitcount_lsf(i,t)),!a))}this.setModules=function(s,i,a,l){e=s,t=i,this.rv=i,n=a,this.qupvt=a,o=l,r.setModules(n,o)},this.ms_convert=function(e,t){for(var n=0;n<576;++n){var o=e.tt[t][0].xr[n],r=e.tt[t][1].xr[n];e.tt[t][0].xr[n]=(o+r)*(.5*VO.SQRT2),e.tt[t][1].xr[n]=(o-r)*(.5*VO.SQRT2)}},this.init_xrpow=function(e,t,n){var o=0,r=0|t.max_nonzero_coeff;if(t.xrpow_max=0,$O.fill(n,r,576,0),o=s(t,n,r,o),o>1e-20){var i=0;0!=(2&e.substep_shaping)&&(i=1);for(var a=0;a<t.psymax;a++)e.pseudohalf[a]=i;return!0}return $O.fill(t.l3_enc,0,576,0),!1},this.init_outer_loop=function(e,t){t.part2_3_length=0,t.big_values=0,t.count1=0,t.global_gain=210,t.scalefac_compress=0,t.table_select[0]=0,t.table_select[1]=0,t.table_select[2]=0,t.subblock_gain[0]=0,t.subblock_gain[1]=0,t.subblock_gain[2]=0,t.subblock_gain[3]=0,t.region0_count=0,t.region1_count=0,t.preflag=0,t.scalefac_scale=0,t.count1table_select=0,t.part2_length=0,t.sfb_lmax=cC.SBPSY_l,t.sfb_smin=cC.SBPSY_s,t.psy_lmax=e.sfb21_extra?cC.SBMAX_l:cC.SBPSY_l,t.psymax=t.psy_lmax,t.sfbmax=t.sfb_lmax,t.sfbdivide=11;for(var o=0;o<cC.SBMAX_l;o++)t.width[o]=e.scalefac_band.l[o+1]-e.scalefac_band.l[o],t.window[o]=3;if(t.block_type==cC.SHORT_TYPE){var r=zO(576);t.sfb_smin=0,t.sfb_lmax=0,0!=t.mixed_block_flag&&(t.sfb_smin=3,t.sfb_lmax=2*e.mode_gr+4),t.psymax=t.sfb_lmax+3*((e.sfb21_extra?cC.SBMAX_s:cC.SBPSY_s)-t.sfb_smin),t.sfbmax=t.sfb_lmax+3*(cC.SBPSY_s-t.sfb_smin),t.sfbdivide=t.sfbmax-18,t.psy_lmax=t.sfb_lmax;var s=e.scalefac_band.l[t.sfb_lmax];HO.arraycopy(t.xr,0,r,0,576);for(o=t.sfb_smin;o<cC.SBMAX_s;o++)for(var a=e.scalefac_band.s[o],l=e.scalefac_band.s[o+1],c=0;c<3;c++)for(var u=a;u<l;u++)t.xr[s++]=r[3*u+c];var d=t.sfb_lmax;for(o=t.sfb_smin;o<cC.SBMAX_s;o++)t.width[d]=t.width[d+1]=t.width[d+2]=e.scalefac_band.s[o+1]-e.scalefac_band.s[o],t.window[d]=0,t.window[d+1]=1,t.window[d+2]=2,d+=3}t.count1bits=0,t.sfb_partition_table=n.nr_of_sfb_block[0][0],t.slen[0]=0,t.slen[1]=0,t.slen[2]=0,t.slen[3]=0,t.max_nonzero_coeff=575,$O.fill(t.scalefac,0),i(e,t)},a.BINSEARCH_NONE=new a(0),a.BINSEARCH_UP=new a(1),a.BINSEARCH_DOWN=new a(2),this.trancate_smallspectrums=function(e,t,r,s){var i=zO(SC.SFBMAX);if((0!=(4&e.substep_shaping)||t.block_type!=cC.SHORT_TYPE)&&0==(128&e.substep_shaping)){n.calc_noise(t,r,i,new jO,null);for(var a=0;a<576;a++){var l=0;0!=t.l3_enc[a]&&(l=Math.abs(t.xr[a])),s[a]=l}a=0;var c=8;t.block_type==cC.SHORT_TYPE&&(c=6);do{var u,d,f,p,h=t.width[c];if(a+=h,!(i[c]>=1)&&($O.sort(s,a-h,h),!BitStream.EQ(s[a-1],0))){u=(1-i[c])*r[c],d=0,p=0;do{var m;for(f=1;p+f<h;f++)if(BitStream.NEQ(s[p+a-h],s[p+a+f-h]))break;if(m=s[p+a-h]*s[p+a-h]*f,u<m){0!=p&&(d=s[p+a-h-1]);break}u-=m,p+=f}while(p<h);if(!BitStream.EQ(d,0))do{Math.abs(t.xr[a-h])<=d&&(t.l3_enc[a-h]=0)}while(--h>0)}}while(++c<t.psymax);t.part2_3_length=o.noquant_count_bits(e,t,null)}},this.outer_loop=function(e,t,r,s,i,a){var c,u=e.internal_flags,d=new MC,p=zO(576),h=zO(SC.SFBMAX),m=new jO,v=new DO,_=9999999,b=!1,y=!1,x=0;if(l(u,t,a,i,s),0==u.noise_shaping)return 100;n.calc_noise(t,r,h,m,v),m.bits=t.part2_3_length,d.assign(t);var w=0;HO.arraycopy(s,0,p,0,576);while(!b){do{var k,S=new jO,E=255;if(k=0!=(2&u.substep_shaping)?20:3,u.sfb21_extra){if(h[d.sfbmax]>1)break;if(d.block_type==cC.SHORT_TYPE&&(h[d.sfbmax+1]>1||h[d.sfbmax+2]>1))break}if(!g(e,d,h,s,y))break;0!=d.scalefac_scale&&(E=254);var T=a-d.part2_length;if(T<=0)break;while((d.part2_3_length=o.count_bits(u,s,d,v))>T&&d.global_gain<=E)d.global_gain++;if(d.global_gain>E)break;if(0==m.over_count){while((d.part2_3_length=o.count_bits(u,s,d,v))>_&&d.global_gain<=E)d.global_gain++;if(d.global_gain>E)break}if(n.calc_noise(d,r,h,S,v),S.bits=d.part2_3_length,c=t.block_type!=cC.SHORT_TYPE?e.quant_comp:e.quant_comp_short,c=f(c,m,S,d,h)?1:0,0!=c)_=t.part2_3_length,m=S,t.assign(d),w=0,HO.arraycopy(s,0,p,0,576);else if(0==u.full_outer_loop){if(++w>k&&0==m.over_count)break;if(3==u.noise_shaping_amp&&y&&w>30)break;if(3==u.noise_shaping_amp&&y&&d.global_gain-x>15)break}}while(d.global_gain+d.scalefac_scale<255);3==u.noise_shaping_amp?y?b=!0:(d.assign(t),HO.arraycopy(p,0,s,0,576),w=0,x=d.global_gain,y=!0):b=!0}return qO(t.global_gain+t.scalefac_scale<=255),e.VBR==UO.vbr_rh||e.VBR==UO.vbr_mtrh?HO.arraycopy(p,0,s,0,576):0!=(1&u.substep_shaping)&&trancate_smallspectrums(u,t,r,s),m.over_count},this.iteration_finish_one=function(e,n,r){var s=e.l3_side,i=s.tt[n][r];o.best_scalefac_store(e,n,r,s),1==e.use_best_huffman&&o.best_huffman_divide(e,i),t.ResvAdjust(e,i)},this.VBR_encode_granule=function(e,t,n,o,r,s,i){var a,l,c=e.internal_flags,u=new MC,d=zO(576),f=i,p=i+1,h=(i+s)/2,m=0,g=c.sfb21_extra;qO(f<=LameInternalFlags.MAX_BITS_PER_CHANNEL),$O.fill(u.l3_enc,0);do{c.sfb21_extra=!(h>f-42)&&g,l=outer_loop(e,t,n,o,r,h),l<=0?(m=1,p=t.part2_3_length,u.assign(t),HO.arraycopy(o,0,d,0,576),i=p-32,a=i-s,h=(i+s)/2):(s=h+32,a=i-s,h=(i+s)/2,0!=m&&(m=2,t.assign(u),HO.arraycopy(d,0,o,0,576)))}while(a>12);c.sfb21_extra=g,2==m&&HO.arraycopy(u.l3_enc,0,t.l3_enc,0,576),qO(t.part2_3_length<=f)},this.get_framebits=function(n,o){var r=n.internal_flags;r.bitrate_index=r.VBR_min_bitrate;var s=e.getframebits(n);r.bitrate_index=1,s=e.getframebits(n);for(var i=1;i<=r.VBR_max_bitrate;i++){r.bitrate_index=i;var a=new MeanBits(s);o[i]=t.ResvFrameBegin(n,a),s=a.bits}},this.VBR_old_prepare=function(e,o,r,s,i,a,l,c,u){var d,f=e.internal_flags,p=0,h=1,m=0;f.bitrate_index=f.VBR_max_bitrate;var g=t.ResvFrameBegin(e,new MeanBits(0))/f.mode_gr;get_framebits(e,a);for(var v=0;v<f.mode_gr;v++){var _=n.on_pe(e,o,c[v],g,v,0);f.mode_ext==cC.MPG_MD_MS_LR&&(ms_convert(f.l3_side,v),n.reduce_side(c[v],r[v],g,_));for(var b=0;b<f.channels_out;++b){var y=f.l3_side.tt[v][b];y.block_type!=cC.SHORT_TYPE?(p=1.28/(1+Math.exp(3.5-o[v][b]/300))-.05,d=f.PSY.mask_adjust-p):(p=2.56/(1+Math.exp(3.5-o[v][b]/300))-.14,d=f.PSY.mask_adjust_short-p),f.masking_lower=Math.pow(10,.1*d),init_outer_loop(f,y),u[v][b]=n.calc_xmin(e,s[v][b],y,i[v][b]),0!=u[v][b]&&(h=0),l[v][b]=126,m+=c[v][b]}}for(v=0;v<f.mode_gr;v++)for(b=0;b<f.channels_out;b++)m>a[f.VBR_max_bitrate]&&(c[v][b]*=a[f.VBR_max_bitrate],c[v][b]/=m),l[v][b]>c[v][b]&&(l[v][b]=c[v][b]);return h},this.bitpressure_strategy=function(e,t,n,o){for(var r=0;r<e.mode_gr;r++)for(var s=0;s<e.channels_out;s++){for(var i=e.l3_side.tt[r][s],a=t[r][s],l=0,c=0;c<i.psy_lmax;c++)a[l++]*=1+.029*c*c/cC.SBMAX_l/cC.SBMAX_l;if(i.block_type==cC.SHORT_TYPE)for(c=i.sfb_smin;c<cC.SBMAX_s;c++)a[l++]*=1+.029*c*c/cC.SBMAX_s/cC.SBMAX_s,a[l++]*=1+.029*c*c/cC.SBMAX_s/cC.SBMAX_s,a[l++]*=1+.029*c*c/cC.SBMAX_s/cC.SBMAX_s;o[r][s]=0|Math.max(n[r][s],.9*o[r][s])}},this.VBR_new_prepare=function(e,o,r,s,i,a){var l,c=e.internal_flags,u=1,d=0,f=0;if(e.free_format){c.bitrate_index=0;p=new MeanBits(d);l=t.ResvFrameBegin(e,p),d=p.bits,i[0]=l}else{c.bitrate_index=c.VBR_max_bitrate;var p=new MeanBits(d);t.ResvFrameBegin(e,p),d=p.bits,get_framebits(e,i),l=i[c.VBR_max_bitrate]}for(var h=0;h<c.mode_gr;h++){n.on_pe(e,o,a[h],d,h,0),c.mode_ext==cC.MPG_MD_MS_LR&&ms_convert(c.l3_side,h);for(var m=0;m<c.channels_out;++m){var g=c.l3_side.tt[h][m];c.masking_lower=Math.pow(10,.1*c.PSY.mask_adjust),init_outer_loop(c,g),0!=n.calc_xmin(e,r[h][m],g,s[h][m])&&(u=0),f+=a[h][m]}}for(h=0;h<c.mode_gr;h++)for(m=0;m<c.channels_out;m++)f>l&&(a[h][m]*=l,a[h][m]/=f);return u},this.calc_target_bits=function(o,r,s,i,a,l){var c,u,d,f,p=o.internal_flags,h=p.l3_side,m=0;p.bitrate_index=p.VBR_max_bitrate;var g=new MeanBits(m);for(l[0]=t.ResvFrameBegin(o,g),m=g.bits,p.bitrate_index=1,m=e.getframebits(o)-8*p.sideinfo_len,a[0]=m/(p.mode_gr*p.channels_out),m=o.VBR_mean_bitrate_kbps*o.framesize*1e3,0!=(1&p.substep_shaping)&&(m*=1.09),m/=o.out_samplerate,m-=8*p.sideinfo_len,m/=p.mode_gr*p.channels_out,c=.93+.07*(11-o.compression_ratio)/5.5,c<.9&&(c=.9),c>1&&(c=1),u=0;u<p.mode_gr;u++){var v=0;for(d=0;d<p.channels_out;d++){if(i[u][d]=int(c*m),r[u][d]>700){var _=int((r[u][d]-700)/1.4),b=h.tt[u][d];i[u][d]=int(c*m),b.block_type==cC.SHORT_TYPE&&_<m/2&&(_=m/2),_>3*m/2?_=3*m/2:_<0&&(_=0),i[u][d]+=_}i[u][d]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(i[u][d]=LameInternalFlags.MAX_BITS_PER_CHANNEL),v+=i[u][d]}if(v>LameInternalFlags.MAX_BITS_PER_GRANULE)for(d=0;d<p.channels_out;++d)i[u][d]*=LameInternalFlags.MAX_BITS_PER_GRANULE,i[u][d]/=v}if(p.mode_ext==cC.MPG_MD_MS_LR)for(u=0;u<p.mode_gr;u++)n.reduce_side(i[u],s[u],m*p.channels_out,LameInternalFlags.MAX_BITS_PER_GRANULE);for(f=0,u=0;u<p.mode_gr;u++)for(d=0;d<p.channels_out;d++)i[u][d]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(i[u][d]=LameInternalFlags.MAX_BITS_PER_CHANNEL),f+=i[u][d];if(f>l[0])for(u=0;u<p.mode_gr;u++)for(d=0;d<p.channels_out;d++)i[u][d]*=l[0],i[u][d]/=f}}var GO=zR.assert;function XO(){var e;this.setModules=function(t){e=t},this.ResvFrameBegin=function(t,n){var o,r=t.internal_flags,s=r.l3_side,i=e.getframebits(t);n.bits=(i-8*r.sideinfo_len)/r.mode_gr;var a=2048*r.mode_gr-8;t.brate>320?o=8*int(1e3*t.brate/(t.out_samplerate/1152)/8+.5):(o=11520,t.strict_ISO&&(o=8*int(32e4/(t.out_samplerate/1152)/8+.5))),r.ResvMax=o-i,r.ResvMax>a&&(r.ResvMax=a),(r.ResvMax<0||t.disable_reservoir)&&(r.ResvMax=0);var l=n.bits*r.mode_gr+Math.min(r.ResvSize,r.ResvMax);return l>o&&(l=o),GO(r.ResvMax%8==0),GO(r.ResvMax>=0),s.resvDrain_pre=0,null!=r.pinfo&&(r.pinfo.mean_bits=n.bits/2,r.pinfo.resvsize=r.ResvSize),l},this.ResvMaxBits=function(e,t,n,o){var r,s=e.internal_flags,i=s.ResvSize,a=s.ResvMax;0!=o&&(i+=t),0!=(1&s.substep_shaping)&&(a*=.9),n.bits=t,10*i>9*a?(r=i-9*a/10,n.bits+=r,s.substep_shaping|=128):(r=0,s.substep_shaping&=127,e.disable_reservoir||0!=(1&s.substep_shaping)||(n.bits-=.1*t));var l=i<6*s.ResvMax/10?i:6*s.ResvMax/10;return l-=r,l<0&&(l=0),l},this.ResvAdjust=function(e,t){e.ResvSize-=t.part2_3_length+t.part2_length},this.ResvFrameEnd=function(e,t){var n,o=e.l3_side;e.ResvSize+=t*e.mode_gr;var r=0;o.resvDrain_post=0,o.resvDrain_pre=0,0!=(n=e.ResvSize%8)&&(r+=n),n=e.ResvSize-r-e.ResvMax,n>0&&(r+=n);var s=Math.min(8*o.main_data_begin,r)/8;o.resvDrain_pre+=8*s,r-=8*s,e.ResvSize-=8*s,o.main_data_begin-=s,o.resvDrain_post+=r,e.ResvSize-=r}}function WO(){var e="http://www.mp3dev.org/",t=3,n=98,o=4,r=0,s=93;this.getLameVersion=function(){return t+"."+n+"."+o},this.getLameShortVersion=function(){return t+"."+n+"."+o},this.getLameVeryShortVersion=function(){return"LAME"+t+"."+n+"r"},this.getPsyVersion=function(){return r+"."+s},this.getLameUrl=function(){return e},this.getLameOsBitness=function(){return"32bits"}}var KO=zR.System,ZO=zR.VbrMode,QO=zR.ShortBlock,JO=zR.Arrays,eI=zR.new_byte,tI=zR.assert;function nI(){var e,t,n;this.setModules=function(o,r,s){e=o,t=r,n=s};var o=1,r=2,s=4,i=8,a=nI.NUMTOCENTRIES,l=nI.MAXFRAMESIZE,c=a+4+4+4+4+4,u=c+9+1+1+8+1+1+3+1+1+2+4+2+2,d=128,f=64,p=32,h=null,m="Xing",g="Info",v=[0,49345,49537,320,49921,960,640,49729,50689,1728,1920,51009,1280,50625,50305,1088,52225,3264,3456,52545,3840,53185,52865,3648,2560,51905,52097,2880,51457,2496,2176,51265,55297,6336,6528,55617,6912,56257,55937,6720,7680,57025,57217,8e3,56577,7616,7296,56385,5120,54465,54657,5440,55041,6080,5760,54849,53761,4800,4992,54081,4352,53697,53377,4160,61441,12480,12672,61761,13056,62401,62081,12864,13824,63169,63361,14144,62721,13760,13440,62529,15360,64705,64897,15680,65281,16320,16e3,65089,64001,15040,15232,64321,14592,63937,63617,14400,10240,59585,59777,10560,60161,11200,10880,59969,60929,11968,12160,61249,11520,60865,60545,11328,58369,9408,9600,58689,9984,59329,59009,9792,8704,58049,58241,9024,57601,8640,8320,57409,40961,24768,24960,41281,25344,41921,41601,25152,26112,42689,42881,26432,42241,26048,25728,42049,27648,44225,44417,27968,44801,28608,28288,44609,43521,27328,27520,43841,26880,43457,43137,26688,30720,47297,47489,31040,47873,31680,31360,47681,48641,32448,32640,48961,32e3,48577,48257,31808,46081,29888,30080,46401,30464,47041,46721,30272,29184,45761,45953,29504,45313,29120,28800,45121,20480,37057,37249,20800,37633,21440,21120,37441,38401,22208,22400,38721,21760,38337,38017,21568,39937,23744,23936,40257,24320,40897,40577,24128,23040,39617,39809,23360,39169,22976,22656,38977,34817,18624,18816,35137,19200,35777,35457,19008,19968,36545,36737,20288,36097,19904,19584,35905,17408,33985,34177,17728,34561,18368,18048,34369,33281,17088,17280,33601,16640,33217,32897,16448];function _(e,t){if(e.nVbrNumFrames++,e.sum+=t,e.seen++,!(e.seen<e.want)&&(e.pos<e.size&&(e.bag[e.pos]=e.sum,e.pos++,e.seen=0),e.pos==e.size)){for(var n=1;n<e.size;n+=2)e.bag[n/2]=e.bag[n];e.want*=2,e.pos/=2}}function b(e,t){if(!(e.pos<=0))for(var n=1;n<a;++n){var o,r,s=n/a,i=0|Math.floor(s*e.pos);i>e.pos-1&&(i=e.pos-1),o=e.bag[i],r=e.sum;var l=0|256*o/r;l>255&&(l=255),t[n]=255&l}}function y(e,t){var n=255&e[t+0];return n<<=8,n|=255&e[t+1],n<<=8,n|=255&e[t+2],n<<=8,n|=255&e[t+3],n}function x(e,t,n){e[t+0]=255&n>>24,e[t+1]=255&n>>16,e[t+2]=255&n>>8,e[t+3]=255&n}function w(e,t,n){e[t+0]=255&n>>8,e[t+1]=255&n}function k(e,t){return new String(e,t,m.length(),h).equals(m)||new String(e,t,g.length(),h).equals(g)}function S(e,t,n){return 255&(e<<t|n&~(-1<<t))}function E(t,n){var o=t.internal_flags;n[0]=S(n[0],8,255),n[1]=S(n[1],3,7),n[1]=S(n[1],1,t.out_samplerate<16e3?0:1),n[1]=S(n[1],1,t.version),n[1]=S(n[1],2,1),n[1]=S(n[1],1,t.error_protection?0:1),n[2]=S(n[2],4,o.bitrate_index),n[2]=S(n[2],2,o.samplerate_index),n[2]=S(n[2],1,0),n[2]=S(n[2],1,t.extension),n[3]=S(n[3],2,t.mode.ordinal()),n[3]=S(n[3],2,o.mode_ext),n[3]=S(n[3],1,t.copyright),n[3]=S(n[3],1,t.original),n[3]=S(n[3],2,t.emphasis),n[0]=255;var r,s,i=241&n[1];r=1==t.version?d:t.out_samplerate<16e3?p:f,t.VBR==ZO.vbr_off&&(r=t.brate),s=t.free_format?0:255&16*e.BitrateIndex(r,t.version,t.out_samplerate),1==t.version?(n[1]=255&(10|i),i=13&n[2],n[2]=255&(s|i)):(n[1]=255&(2|i),i=13&n[2],n[2]=255&(s|i))}function T(e,t){var n=t^e;return t=t>>8^v[255&n],t}function M(e,t,o,r,s){var i,a,l,c=e.internal_flags,u=0,d=e.encoder_delay,f=e.encoder_padding,p=100-10*e.VBR_q-e.quality,h=n.getLameVeryShortVersion(),m=0,g=[1,5,3,2,4,0,3],v=0|(e.lowpassfreq/100+.5>255?255:e.lowpassfreq/100+.5),_=0,b=0,y=0,k=e.internal_flags.noise_shaping,S=0,E=0,M=0,A=0,R=0,C=0!=(1&e.exp_nspsytune),O=0!=(2&e.exp_nspsytune),I=!1,B=!1,P=e.internal_flags.nogap_total,L=e.internal_flags.nogap_current,j=e.ATHtype,N=0;switch(e.VBR){case vbr_abr:l=e.VBR_mean_bitrate_kbps;break;case vbr_off:l=e.brate;break;default:l=e.VBR_min_bitrate_kbps}switch(i=e.VBR.ordinal()<g.length?g[e.VBR.ordinal()]:0,a=16*m+i,c.findReplayGain&&(c.RadioGain>510&&(c.RadioGain=510),c.RadioGain<-510&&(c.RadioGain=-510),b=8192,b|=3072,c.RadioGain>=0?b|=c.RadioGain:(b|=512,b|=-c.RadioGain)),c.findPeakSample&&(_=Math.abs(0|c.PeakSample/32767*Math.pow(2,23)+.5)),-1!=P&&(L>0&&(B=!0),L<P-1&&(I=!0)),N=j+((C?1:0)<<4)+((O?1:0)<<5)+((I?1:0)<<6)+((B?1:0)<<7),p<0&&(p=0),e.mode){case MONO:S=0;break;case STEREO:S=1;break;case DUAL_CHANNEL:S=2;break;case JOINT_STEREO:S=e.force_ms?4:3;break;case NOT_SET:default:S=7;break}M=e.in_samplerate<=32e3?0:48e3==e.in_samplerate?2:e.in_samplerate>48e3?3:1,(e.short_blocks==QO.short_block_forced||e.short_blocks==QO.short_block_dispensed||-1==e.lowpassfreq&&-1==e.highpassfreq||e.scale_left<e.scale_right||e.scale_left>e.scale_right||e.disable_reservoir&&e.brate<320||e.noATH||e.ATHonly||0==j||e.in_samplerate<=32e3)&&(E=1),A=k+(S<<2)+(E<<5)+(M<<6),R=c.nMusicCRC,x(o,r+u,p),u+=4;for(var F=0;F<9;F++)o[r+u+F]=255&h.charAt(F);u+=9,o[r+u]=255&a,u++,o[r+u]=255&v,u++,x(o,r+u,_),u+=4,w(o,r+u,b),u+=2,w(o,r+u,y),u+=2,o[r+u]=255&N,u++,o[r+u]=l>=255?255:255&l,u++,o[r+u]=255&d>>4,o[r+u+1]=255&(d<<4)+(f>>8),o[r+u+2]=255&f,u+=3,o[r+u]=255&A,u++,o[r+u++]=0,w(o,r+u,e.preset),u+=2,x(o,r+u,t),u+=4,w(o,r+u,R),u+=2;for(var D=0;D<u;D++)s=T(o[r+D],s);return w(o,r+u,s),u+=2,u}function A(e){e.seek(0);var t,n=eI(10);return e.readFully(n),t=new String(n,"ISO-8859-1").startsWith("ID3")?0:((127&n[6])<<21|(127&n[7])<<14|(127&n[8])<<7|127&n[9])+n.length,t}this.addVbrFrame=function(e){var t=e.internal_flags,n=Tables.bitrate_table[e.version][t.bitrate_index];tI(null!=t.VBR_seek_table.bag),_(t.VBR_seek_table,n)},this.getVbrTag=function(e){var t=new VBRTagData,n=0;t.flags=0;var l=e[n+1]>>3&1,c=e[n+2]>>2&3,u=e[n+3]>>6&3,d=e[n+2]>>4&15;if(d=Tables.bitrate_table[l][d],e[n+1]>>4==14?t.samprate=Tables.samplerate_table[2][c]:t.samprate=Tables.samplerate_table[l][c],n+=0!=l?3!=u?36:21:3!=u?21:13,!k(e,n))return null;n+=4,t.hId=l;var f=t.flags=y(e,n);if(n+=4,0!=(f&o)&&(t.frames=y(e,n),n+=4),0!=(f&r)&&(t.bytes=y(e,n),n+=4),0!=(f&s)){if(null!=t.toc)for(var p=0;p<a;p++)t.toc[p]=e[n+p];n+=a}t.vbrScale=-1,0!=(f&i)&&(t.vbrScale=y(e,n),n+=4),t.headersize=72e3*(l+1)*d/t.samprate,n+=21;var h=e[n+0]<<4;h+=e[n+1]>>4;var m=(15&e[n+1])<<8;return m+=255&e[n+2],(h<0||h>3e3)&&(h=-1),(m<0||m>3e3)&&(m=-1),t.encDelay=h,t.encPadding=m,t},this.InitVbrTag=function(e){var n,o=e.internal_flags;n=1==e.version?d:e.out_samplerate<16e3?p:f,e.VBR==ZO.vbr_off&&(n=e.brate);var r=72e3*(e.version+1)*n/e.out_samplerate,s=o.sideinfo_len+u;if(o.VBR_seek_table.TotalFrameSize=r,r<s||r>l)e.bWriteVbrTag=!1;else{o.VBR_seek_table.nVbrNumFrames=0,o.VBR_seek_table.nBytesWritten=0,o.VBR_seek_table.sum=0,o.VBR_seek_table.seen=0,o.VBR_seek_table.want=1,o.VBR_seek_table.pos=0,null==o.VBR_seek_table.bag&&(o.VBR_seek_table.bag=new int[400],o.VBR_seek_table.size=400);var i=eI(l);E(e,i);for(var a=o.VBR_seek_table.TotalFrameSize,c=0;c<a;++c)t.add_dummy_byte(e,255&i[c],1)}},this.updateMusicCRC=function(e,t,n,o){for(var r=0;r<o;++r)e[0]=T(t[n+r],e[0])},this.getLameTagFrame=function(e,n){var l=e.internal_flags;if(!e.bWriteVbrTag)return 0;if(l.Class_ID!=Lame.LAME_ID)return 0;if(l.VBR_seek_table.pos<=0)return 0;if(n.length<l.VBR_seek_table.TotalFrameSize)return l.VBR_seek_table.TotalFrameSize;JO.fill(n,0,l.VBR_seek_table.TotalFrameSize,0),E(e,n);var c=eI(a);if(e.free_format)for(var u=1;u<a;++u)c[u]=255&255*u/100;else b(l.VBR_seek_table,c);var d=l.sideinfo_len;e.error_protection&&(d-=2),e.VBR==ZO.vbr_off?(n[d++]=255&g.charAt(0),n[d++]=255&g.charAt(1),n[d++]=255&g.charAt(2),n[d++]=255&g.charAt(3)):(n[d++]=255&m.charAt(0),n[d++]=255&m.charAt(1),n[d++]=255&m.charAt(2),n[d++]=255&m.charAt(3)),x(n,d,o+r+s+i),d+=4,x(n,d,l.VBR_seek_table.nVbrNumFrames),d+=4;var f=l.VBR_seek_table.nBytesWritten+l.VBR_seek_table.TotalFrameSize;x(n,d,0|f),d+=4,KO.arraycopy(c,0,n,d,c.length),d+=c.length,e.error_protection&&t.CRC_writeheader(l,n);var p=0;for(u=0;u<d;u++)p=T(n[u],p);return d+=M(e,f,n,d,p),l.VBR_seek_table.TotalFrameSize},this.putVbrTag=function(e,t){var n=e.internal_flags;if(n.VBR_seek_table.pos<=0)return-1;if(t.seek(t.length()),0==t.length())return-1;var o=A(t);t.seek(o);var r=eI(l),s=getLameTagFrame(e,r);return s>r.length?-1:(s<1||t.write(r,0,s),0)}}nI.NUMTOCENTRIES=100,nI.MAXFRAMESIZE=2880;var oI=zR.new_byte,rI=zR.assert;function sI(){this.setModules=function(e,t){}}function iI(){this.setModules=function(e,t,n){}}function aI(){}function lI(){this.setModules=function(e,t){}}function cI(e,t,n){3!=arguments.length&&(console.error("WARN: Mp3Encoder(channels, samplerate, kbps) not specified"),e=1,t=44100,n=128);var o=new IO,r=new sI,s=new WC,i=new SO,a=new PO,l=new fO,c=new YO,u=new nI,d=new WO,f=new lI,p=new XO,h=new vO,m=new iI,g=new aI;o.setModules(s,i,a,l,c,u,d,f,g),i.setModules(s,g,d,u),f.setModules(i,d),a.setModules(o),c.setModules(i,p,l,h),l.setModules(h,p,o.enc.psy),p.setModules(i),h.setModules(l),u.setModules(o,i,d),r.setModules(m,g),m.setModules(d,f,a);var v=o.lame_init();v.num_channels=e,v.in_samplerate=t,v.brate=n,v.mode=tC.STEREO,v.quality=3,v.bWriteVbrTag=!1,v.disable_reservoir=!0,v.write_id3tag_automatic=!1,o.lame_init_params(v);var _=1152,b=0|1.25*_+7200,y=oI(b);this.encodeBuffer=function(t,n){1==e&&(n=t),rI(t.length==n.length),t.length>_&&(_=t.length,b=0|1.25*_+7200,y=oI(b));var r=o.lame_encode_buffer(v,t,n,t.length,y,0,b);return new Int8Array(y.subarray(0,r))},this.flush=function(){var e=o.lame_encode_flush(v,y,0,b);return new Int8Array(y.subarray(0,e))}}function uI(e){return e.charCodeAt(0)<<24|e.charCodeAt(1)<<16|e.charCodeAt(2)<<8|e.charCodeAt(3)}uI("RIFF"),uI("WAVE"),uI("fmt "),uI("data");class dI{constructor(e){this.bitRate=e.bitRate,this.sampleRate=e.sampleRate,this.dataBuffer=[],this.encoder=new cI(1,this.sampleRate,this.bitRate)}encode(e){const t=1152,n=this._convertBuffer(e);let o=n.length;for(let r=0;o>=0;r+=t){const e=n.subarray(r,r+t),s=this.encoder.encodeBuffer(e);this.dataBuffer.push(new Int8Array(s)),o-=t}}finish(){this.dataBuffer.push(this.encoder.flush());const e=new Blob(this.dataBuffer,{type:"audio/mp3"});return this.dataBuffer=[],{id:Date.now(),blob:e,url:URL.createObjectURL(e)}}_floatTo16BitPCM(e,t){for(let n=0;n<e.length;n++){const o=Math.max(-1,Math.min(1,e[n]));t[n]=o<0?32768*o:32767*o}}_convertBuffer(e){const t=new Float32Array(e),n=new Int16Array(e.length);return this._floatTo16BitPCM(t,n),n}}class fI{constructor(e={}){this.beforeRecording=e.beforeRecording,this.pauseRecording=e.pauseRecording,this.afterRecording=e.afterRecording,this.micFailed=e.micFailed,this.encoderOptions={bitRate:e.bitRate,sampleRate:e.sampleRate},this.bufferSize=4096,this.records=[],this.isPause=!1,this.isRecording=!1,this.duration=0,this.volume=0,this._duration=0}start(){const e={video:!1,audio:{channelCount:1,echoCancellation:!1}};this.beforeRecording&&this.beforeRecording("start recording"),navigator.mediaDevices.getUserMedia(e).then(this._micCaptured.bind(this)).catch(this._micError.bind(this)),this.isPause=!1,this.isRecording=!0,this.lameEncoder||(this.lameEncoder=new dI(this.encoderOptions))}stop(){this.stream.getTracks().forEach((e=>e.stop())),this.input.disconnect(),this.processor.disconnect(),this.context.close();let e=null;e=this.lameEncoder.finish(),e.duration=this.duration,this.records.push(e),this._duration=0,this.duration=0,this.isPause=!1,this.isRecording=!1,this.afterRecording&&this.afterRecording(e)}pause(){this.stream.getTracks().forEach((e=>e.stop())),this.input.disconnect(),this.processor.disconnect(),this._duration=this.duration,this.isPause=!0,this.pauseRecording&&this.pauseRecording("pause recording")}_micCaptured(e){this.context=new(window.AudioContext||window.webkitAudioContext),this.duration=this._duration,this.input=this.context.createMediaStreamSource(e),this.processor=this.context.createScriptProcessor(this.bufferSize,1,1),this.stream=e,this.processor.onaudioprocess=e=>{const t=e.inputBuffer.getChannelData(0);let n=0;this.lameEncoder&&this.lameEncoder.encode(t);for(let o=0;o<t.length;++o)n+=t[o]*t[o];this.duration=parseFloat(this._duration)+parseFloat(this.context.currentTime.toFixed(2)),this.volume=Math.sqrt(n/t.length).toFixed(2)},this.input.connect(this.processor),this.processor.connect(this.context.destination)}_micError(e){this.micFailed&&this.micFailed(e)}}var pI=window.chrome,hI=window.navigator,mI=hI.vendor,gI="undefined"!==typeof window.opr,vI=hI.userAgent.indexOf("Edg")>-1,_I=hI.userAgent.match("CriOS");function bI(){return!!_I||null!==pI&&"undefined"!==typeof pI&&"Google Inc."===mI&&!1===gI&&!1===vI}function yI(){var e=xI(),t=e.substr(0,4);return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(t)}function xI(){var e=navigator.userAgent||navigator.vendor||window.opera||null;if(!e)throw new Error("Failed to look for user agent information.");return e}const wI={name:"RoomFooter",components:{SvgIcon:fb,EmojiPickerContainer:kA,RoomFiles:jA,RoomMessageReply:aR,RoomUsersTag:hR,RoomEmojis:bR,RoomTemplatesText:MR},directives:{clickOutside:rS},props:{room:{type:Object,required:!0},roomId:{type:[String,Number],required:!0},roomMessage:{type:String,default:null},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},textMessages:{type:Object,required:!0},showSendIcon:{type:Boolean,required:!0},showFiles:{type:Boolean,required:!0},showAudio:{type:Boolean,required:!0},showEmojis:{type:Boolean,required:!0},showFooter:{type:Boolean,required:!0},acceptedFiles:{type:String,required:!0},multipleFiles:{type:Boolean,default:!0},captureFiles:{type:String,required:!0},textareaActionEnabled:{type:Boolean,required:!0},textareaAutoFocus:{type:Boolean,required:!0},userTagsEnabled:{type:Boolean,required:!0},emojisSuggestionEnabled:{type:Boolean,required:!0},templatesText:{type:Array,default:null},audioBitRate:{type:Number,required:!0},audioSampleRate:{type:Number,required:!0},initReplyMessage:{type:Object,default:null},initEditMessage:{type:Object,default:null},droppedFiles:{type:Array,default:null},emojiDataSource:{type:String,default:void 0}},emits:["edit-message","send-message","update-edited-message-id","textarea-action-handler","typing-message"],data(){return{message:"",editedMessage:{},messageReply:null,cursorRangePosition:null,files:[],fileDialog:!1,selectUsersTagItem:null,selectEmojiItem:null,selectTemplatesTextItem:null,format:"mp3",activeUpOrDownEmojis:null,activeUpOrDownUsersTag:null,activeUpOrDownTemplatesText:null,emojisDB:new yT({dataSource:this.emojiDataSource}),emojiOpened:!1,keepKeyboardOpen:!1,filteredEmojis:[],filteredUsersTag:[],selectedUsersTag:[],filteredTemplatesText:[],recorder:this.initRecorder(),isRecording:!1}},computed:{isMessageEmpty(){return!this.files.length&&!this.message.trim()},isFileLoading(){return this.files.some((e=>e.loading))},recordedTime(){return new Date(1e3*this.recorder.duration).toISOString().substr(14,5)},shadowFooter(){return!!this.filteredEmojis.length||!!this.filteredUsersTag.length||!!this.filteredTemplatesText.length||!!this.files.length||!!this.messageReply}},watch:{roomId(){this.resetMessage(!0,!0),this.roomMessage&&(this.message=this.roomMessage,setTimeout((()=>this.onChangeInput())))},message(e){this.getTextareaRef().value=e},roomMessage:{immediate:!0,handler(e){e&&(this.message=this.roomMessage)}},editedMessage(e){this.$emit("update-edited-message-id",e._id)},initReplyMessage(e){e&&this.replyMessage(e)},initEditMessage(e){e&&this.editMessage(e)},droppedFiles(e){e&&this.onFileChange(e)}},mounted(){const e=yI();let t=!0;this.getTextareaRef().addEventListener("keyup",(n=>{"Enter"!==n.key||n.shiftKey||this.fileDialog||(e?(this.message=this.message+"\n",setTimeout((()=>this.onChangeInput()))):!t||this.filteredEmojis.length||this.filteredUsersTag.length||this.filteredTemplatesText.length||this.sendMessage()),t=!n.isComposing,setTimeout((()=>{this.updateFooterLists()}),60)})),this.getTextareaRef().addEventListener("click",(()=>{e&&(this.keepKeyboardOpen=!0),this.updateFooterLists()})),this.getTextareaRef().addEventListener("blur",(()=>{setTimeout((()=>{this.resetFooterList()}),100),e&&setTimeout((()=>this.keepKeyboardOpen=!1))}))},beforeUnmount(){this.stopRecorder()},methods:{getTextareaRef(){return this.$refs.roomTextarea},focusTextarea(e){yI()&&e||this.getTextareaRef()&&(this.getTextareaRef().focus(),this.cursorRangePosition&&setTimeout((()=>{const e=bI()?0:1;this.getTextareaRef().setSelectionRange(this.cursorRangePosition+e,this.cursorRangePosition+e),this.cursorRangePosition=null})))},onChangeInput(){var e,t,n;((null==(e=this.getTextareaRef())?void 0:e.value)||""===(null==(t=this.getTextareaRef())?void 0:t.value))&&(this.message=null==(n=this.getTextareaRef())?void 0:n.value),this.keepKeyboardOpen=!0,this.resizeTextarea(),this.$emit("typing-message",this.message)},resizeTextarea(){const e=this.getTextareaRef();if(!e)return;const t=window.getComputedStyle(e,null).getPropertyValue("padding-top").replace("px","");e.style.height=0,e.style.height=e.scrollHeight-2*t+"px"},escapeTextarea(){this.filteredEmojis.length?this.filteredEmojis=[]:this.filteredUsersTag.length?this.filteredUsersTag=[]:this.filteredTemplatesText.length?this.filteredTemplatesText=[]:this.resetMessage()},onPasteImage(e){var t;const n=null==(t=e.clipboardData)?void 0:t.items;n&&Array.from(n).forEach((e=>{if(e.type.includes("image")){const t=e.getAsFile();this.onFileChange([t])}}))},updateActiveUpOrDown(e,t){this.filteredEmojis.length?(this.activeUpOrDownEmojis=t,e.preventDefault()):this.filteredUsersTag.length?(this.activeUpOrDownUsersTag=t,e.preventDefault()):this.filteredTemplatesText.length&&(this.activeUpOrDownTemplatesText=t,e.preventDefault())},selectItem(){this.filteredEmojis.length?this.selectEmojiItem=!0:this.filteredUsersTag.length?this.selectUsersTagItem=!0:this.filteredTemplatesText.length&&(this.selectTemplatesTextItem=!0)},selectEmoji(e){if(this.selectEmojiItem=!1,!e)return;const{position:t,endPosition:n}=this.getCharPosition(":");this.message=this.message.substr(0,t-1)+e+this.message.substr(n,this.message.length-1),this.cursorRangePosition=t,this.focusTextarea()},selectTemplateText(e){if(this.selectTemplatesTextItem=!1,!e)return;const{position:t,endPosition:n}=this.getCharPosition("/"),o=this.message.substr(n,n).length?"":" ";this.message=this.message.substr(0,t-1)+e.text+o+this.message.substr(n,this.message.length-1),this.cursorRangePosition=t+e.text.length+o.length+1,this.focusTextarea()},addEmoji(e){this.message+=e.unicode,this.focusTextarea(!0)},launchFilePicker(){this.$refs.file.value="",this.$refs.file.click()},async onFileChange(e){this.fileDialog=!0,this.focusTextarea(),Array.from(e).forEach((async e=>{const t=URL.createObjectURL(e),n=e.name.lastIndexOf(".");this.files.push({loading:!0,name:e.name.substring(0,n),size:e.size,type:e.type,extension:e.name.substring(n+1),localUrl:t});const o=await fetch(t).then((e=>e.blob()));let r=this.files.find((e=>e.localUrl===t));r&&(r.blob=o,r.loading=!1,delete r.loading)})),setTimeout((()=>this.fileDialog=!1),500)},removeFile(e){this.files.splice(e,1),this.focusTextarea()},toggleRecorder(e){if(this.isRecording=e,this.recorder.isRecording)try{this.recorder.stop();const e=this.recorder.records[0];this.files.push({blob:e.blob,name:`audio.${this.format}`,size:e.blob.size,duration:e.duration,type:e.blob.type,audio:!0,localUrl:URL.createObjectURL(e.blob)}),this.recorder=this.initRecorder(),this.sendMessage()}catch{setTimeout((()=>this.stopRecorder()),100)}else setTimeout((()=>this.recorder.start()),200)},stopRecorder(){if(this.recorder.isRecording)try{this.recorder.stop(),this.recorder=this.initRecorder()}catch{setTimeout((()=>this.stopRecorder()),100)}},textareaActionHandler(){this.$emit("textarea-action-handler",this.message)},sendMessage(){var e;let t=this.message.trim();if(!this.files.length&&!t)return;if(this.isFileLoading)return;this.selectedUsersTag.forEach((e=>{t=t.replace(`@${e.username}`,`<usertag>${e._id}</usertag>`)}));const n=this.files.length?this.files:null;this.editedMessage._id?(this.editedMessage.content!==t||(null==(e=this.editedMessage.files)?void 0:e.length)||this.files.length)&&this.$emit("edit-message",{messageId:this.editedMessage._id,newContent:t,files:n,replyMessage:this.messageReply,usersTag:this.selectedUsersTag}):this.$emit("send-message",{content:t,files:n,replyMessage:this.messageReply,usersTag:this.selectedUsersTag}),this.resetMessage(!0)},editMessage(e){this.resetMessage(),this.editedMessage={...e};let t=e.content;const n=t,o="<usertag>",r="</usertag>",s=[...t.matchAll(new RegExp(o,"gi"))].map((e=>e.index));s.forEach((e=>{const s=n.substring(e+o.length,n.indexOf(r,e)),i=this.room.users.find((e=>e._id===s));t=t.replace(`${o}${s}${r}`,`@${(null==i?void 0:i.username)||"unknown"}`),this.selectUserTag(i,!0)})),this.message=t,e.files&&(this.files=[...e.files]),setTimeout((()=>this.resizeTextarea()))},replyMessage(e){this.editedMessage={},this.messageReply=e,this.focusTextarea()},updateFooterLists(){this.updateFooterList("@"),this.updateFooterList(":"),this.updateFooterList("/")},updateFooterList(e){if(!this.getTextareaRef())return;if(":"===e&&!this.emojisSuggestionEnabled)return;if("@"===e&&(!this.userTagsEnabled||!this.room.users))return;if("/"===e&&!this.templatesText)return;const t=this.getTextareaRef().selectionStart;let n=t;while(n>0&&this.message.charAt(n-1)!==e&&(" "!==this.message.charAt(n-1)||":"!==e))n--;const o=this.message.charAt(n-2),r=!o.match(/^[0-9a-zA-Z]+$/);if(this.message.charAt(n-1)!==e||o&&" "!==o&&!r)this.resetFooterList(e);else{const o=this.message.substring(n,t);":"===e?this.updateEmojis(o):"@"===e?this.updateShowUsersTag(o):"/"===e&&this.updateShowTemplatesText(o)}},updateShowUsersTag(e){this.filteredUsersTag=MS(this.room.users,"username",e,!0).filter((e=>e._id!==this.currentUserId))},selectUserTag(e,t=!1){if(this.selectUsersTagItem=!1,!e)return;const{position:n,endPosition:o}=this.getCharPosition("@"),r=this.message.substr(o,o).length?"":" ";this.message=this.message.substr(0,n)+e.username+r+this.message.substr(o,this.message.length-1),this.selectedUsersTag=[...this.selectedUsersTag,{...e}],t||(this.cursorRangePosition=n+e.username.length+r.length+1),this.focusTextarea()},updateShowTemplatesText(e){this.filteredTemplatesText=MS(this.templatesText,"tag",e,!0)},getCharPosition(e){const t=this.getTextareaRef().selectionStart;let n=t;while(n>0&&this.message.charAt(n-1)!==e)n--;const o=this.getTextareaRef().selectionEnd;return{position:n,endPosition:o}},async updateEmojis(e){if(!e)return;const t=await this.emojisDB.getEmojiBySearchQuery(e);this.filteredEmojis=t.map((e=>e.unicode))},resetFooterList(e=null){":"===e?this.filteredEmojis=[]:"@"===e?this.filteredUsersTag=[]:("/"===e||(this.filteredEmojis=[],this.filteredUsersTag=[]),this.filteredTemplatesText=[])},resetMessage(e=!1,t=!1){t||this.$emit("typing-message",null),this.selectedUsersTag=[],this.resetFooterList(),this.resetTextareaSize(),this.message="",this.editedMessage={},this.messageReply=null,this.files=[],this.emojiOpened=!1,this.preventKeyboardFromClosing(),!this.textareaAutoFocus&&t||setTimeout((()=>this.focusTextarea(e)))},resetTextareaSize(){this.getTextareaRef()&&(this.getTextareaRef().style.height="20px")},preventKeyboardFromClosing(){this.keepKeyboardOpen&&this.getTextareaRef().focus()},initRecorder(){return this.isRecording=!1,new fI({bitRate:Number(this.audioBitRate),sampleRate:Number(this.audioSampleRate),beforeRecording:null,afterRecording:null,pauseRecording:null,micFailed:this.micFailed})},micFailed(){this.isRecording=!1,this.recorder=this.initRecorder()}}},kI={key:0,class:"vac-icon-textarea-left"},SI=Lg("div",{class:"vac-dot-audio-record"},null,-1),EI={class:"vac-dot-audio-record-time"},TI=["placeholder"],MI={class:"vac-icon-textarea"},AI={key:1},RI=["multiple","accept","capture"];function CI(e,t,n,o,r,s){const i=vm("room-emojis"),a=vm("room-users-tag"),l=vm("room-templates-text"),c=vm("room-message-reply"),u=vm("room-files"),d=vm("svg-icon"),f=vm("emoji-picker-container"),p=ym("click-outside");return pm((kg(),Ag("div",{id:"room-footer",class:tp(["vac-room-footer",{"vac-app-box-shadow":s.shadowFooter}])},[jg(i,{"filtered-emojis":r.filteredEmojis,"select-item":r.selectEmojiItem,"active-up-or-down":r.activeUpOrDownEmojis,onSelectEmoji:t[0]||(t[0]=e=>s.selectEmoji(e)),onActivateItem:t[1]||(t[1]=e=>r.activeUpOrDownEmojis=0)},null,8,["filtered-emojis","select-item","active-up-or-down"]),jg(a,{"filtered-users-tag":r.filteredUsersTag,"select-item":r.selectUsersTagItem,"active-up-or-down":r.activeUpOrDownUsersTag,onSelectUserTag:t[2]||(t[2]=e=>s.selectUserTag(e)),onActivateItem:t[3]||(t[3]=e=>r.activeUpOrDownUsersTag=0)},null,8,["filtered-users-tag","select-item","active-up-or-down"]),jg(l,{"filtered-templates-text":r.filteredTemplatesText,"select-item":r.selectTemplatesTextItem,"active-up-or-down":r.activeUpOrDownTemplatesText,onSelectTemplateText:t[4]||(t[4]=e=>s.selectTemplateText(e)),onActivateItem:t[5]||(t[5]=e=>r.activeUpOrDownTemplatesText=0)},null,8,["filtered-templates-text","select-item","active-up-or-down"]),jg(c,{room:n.room,"message-reply":r.messageReply,"text-formatting":n.textFormatting,"link-options":n.linkOptions,onResetMessage:s.resetMessage},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["room","message-reply","text-formatting","link-options","onResetMessage"]),jg(u,{files:r.files,onRemoveFile:s.removeFile,onResetMessage:s.resetMessage},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["files","onRemoveFile","onResetMessage"]),Lg("div",{class:tp(["vac-box-footer",{"vac-box-footer-border":!r.files.length}])},[n.showAudio&&!r.files.length?(kg(),Ag("div",kI,[r.isRecording?(kg(),Ag(vg,{key:0},[Lg("div",{class:"vac-svg-button vac-icon-audio-stop",onClick:t[6]||(t[6]=(...e)=>s.stopRecorder&&s.stopRecorder(...e))},[Em(e.$slots,"audio-stop-icon",{},(()=>[jg(d,{name:"close-outline"})]))]),SI,Lg("div",EI,op(s.recordedTime),1),Lg("div",{class:"vac-svg-button vac-icon-audio-confirm",onClick:t[7]||(t[7]=e=>s.toggleRecorder(!1))},[Em(e.$slots,"audio-check-icon",{},(()=>[jg(d,{name:"checkmark"})]))])],64)):(kg(),Ag("div",{key:1,class:"vac-svg-button",onClick:t[8]||(t[8]=e=>s.toggleRecorder(!0))},[Em(e.$slots,"microphone-icon",{},(()=>[jg(d,{name:"microphone",class:"vac-icon-microphone"})]))]))])):Ug("",!0),Lg("textarea",{id:"roomTextarea",ref:"roomTextarea",placeholder:n.textMessages.TYPE_MESSAGE,class:tp(["vac-textarea",{"vac-textarea-outline":r.editedMessage._id}]),style:{"min-height":"20px","padding-left":"12px"},onInput:t[9]||(t[9]=(...e)=>s.onChangeInput&&s.onChangeInput(...e)),onKeydown:[t[10]||(t[10]=z_(((...e)=>s.escapeTextarea&&s.escapeTextarea(...e)),["esc"])),t[11]||(t[11]=z_(V_(((...e)=>s.selectItem&&s.selectItem(...e)),["exact","prevent"]),["enter"])),t[13]||(t[13]=z_(V_((()=>{}),["exact","prevent"]),["tab"])),t[14]||(t[14]=z_(((...e)=>s.selectItem&&s.selectItem(...e)),["tab"])),t[15]||(t[15]=z_((e=>s.updateActiveUpOrDown(e,-1)),["up"])),t[16]||(t[16]=z_((e=>s.updateActiveUpOrDown(e,1)),["down"]))],onPaste:t[12]||(t[12]=(...e)=>s.onPasteImage&&s.onPasteImage(...e))},null,42,TI),Lg("div",MI,[r.editedMessage._id?(kg(),Ag("div",{key:0,class:"vac-svg-button",onClick:t[17]||(t[17]=(...e)=>s.resetMessage&&s.resetMessage(...e))},[Em(e.$slots,"edit-close-icon",{},(()=>[jg(d,{name:"close-outline"})]))])):Ug("",!0),n.showEmojis?pm((kg(),Ag("div",AI,[Em(e.$slots,"emoji-picker",qg({emojiOpened:r.emojiOpened},{addEmoji:s.addEmoji}),(()=>[jg(f,{"emoji-opened":r.emojiOpened,"position-top":!0,"emoji-data-source":n.emojiDataSource,onAddEmoji:s.addEmoji,onOpenEmoji:t[18]||(t[18]=e=>r.emojiOpened=e)},{"emoji-picker-icon":xh((()=>[Em(e.$slots,"emoji-picker-icon")])),_:3},8,["emoji-opened","emoji-data-source","onAddEmoji"])]))])),[[p,()=>r.emojiOpened=!1]]):Ug("",!0),n.showFiles?(kg(),Ag("div",{key:2,class:"vac-svg-button",onClick:t[19]||(t[19]=(...e)=>s.launchFilePicker&&s.launchFilePicker(...e))},[Em(e.$slots,"paperclip-icon",{},(()=>[jg(d,{name:"paperclip"})]))])):Ug("",!0),n.textareaActionEnabled?(kg(),Ag("div",{key:3,class:"vac-svg-button",onClick:t[20]||(t[20]=(...e)=>s.textareaActionHandler&&s.textareaActionHandler(...e))},[Em(e.$slots,"custom-action-icon",{},(()=>[jg(d,{name:"deleted"})]))])):Ug("",!0),n.showFiles?(kg(),Ag("input",{key:4,ref:"file",type:"file",multiple:!!n.multipleFiles||null,accept:n.acceptedFiles,capture:n.captureFiles,style:{display:"none"},onChange:t[21]||(t[21]=e=>s.onFileChange(e.target.files))},null,40,RI)):Ug("",!0),n.showSendIcon?(kg(),Ag("div",{key:5,class:tp(["vac-svg-button",{"vac-send-disabled":s.isMessageEmpty}]),onClick:t[22]||(t[22]=(...e)=>s.sendMessage&&s.sendMessage(...e))},[Em(e.$slots,"send-icon",{},(()=>[jg(d,{name:"send",param:s.isMessageEmpty||s.isFileLoading?"disabled":""},null,8,["param"])]))],2)):Ug("",!0)])],2)],2)),[[q_,Object.keys(n.room).length&&n.showFooter]])}var OI=Z_(wI,[["render",CI]]);const II={name:"MessageReply",components:{AudioPlayer:YA,SvgIcon:fb,FormatMessage:zk},props:{message:{type:Object,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},roomUsers:{type:Array,required:!0}},computed:{replyUsername(){const{senderId:e}=this.message.replyMessage,t=this.roomUsers.find((t=>t._id===e));return t?t.username:""},firstFile(){var e,t;return(null==(t=null==(e=this.message.replyMessage)?void 0:e.files)?void 0:t.length)?this.message.replyMessage.files[0]:{}},isAudio(){return uS(this.firstFile)},isImage(){return aS(this.firstFile)},isVideo(){return lS(this.firstFile)},isOtherFile(){var e;return(null==(e=this.message.replyMessage.files)?void 0:e.length)&&!this.isAudio&&!this.isVideo&&!this.isImage}}},BI={class:"vac-reply-message"},PI={class:"vac-reply-username"},LI={key:0,class:"vac-image-reply-container"},jI={key:1,class:"vac-video-reply-container"},NI={controls:""},FI=["src"],DI={key:3,class:"vac-file-container"},HI={class:"vac-text-ellipsis"},UI={key:0,class:"vac-text-ellipsis vac-text-extension"},VI={class:"vac-reply-content"};function $I(e,t,n,o,r,s){const i=vm("audio-player"),a=vm("svg-icon"),l=vm("format-message");return kg(),Ag("div",BI,[Lg("div",PI,op(s.replyUsername),1),s.isImage?(kg(),Ag("div",LI,[Lg("div",{class:"vac-message-image vac-message-image-reply",style:Zf({"background-image":`url('${s.firstFile.url}')`})},null,4)])):s.isVideo?(kg(),Ag("div",jI,[Lg("video",NI,[Lg("source",{src:s.firstFile.url},null,8,FI)])])):s.isAudio?(kg(),Rg(i,{key:2,src:s.firstFile.url,"message-selection-enabled":!1,onUpdateProgressTime:t[0]||(t[0]=t=>e.progressTime=t),onHoverAudioProgress:t[1]||(t[1]=t=>e.hoverAudioProgress=t)},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["src"])):s.isOtherFile?(kg(),Ag("div",DI,[Lg("div",null,[Em(e.$slots,"file-icon",{},(()=>[jg(a,{name:"file"})]))]),Lg("div",HI,op(s.firstFile.name),1),s.firstFile.extension?(kg(),Ag("div",UI,op(s.firstFile.extension),1)):Ug("",!0)])):Ug("",!0),Lg("div",VI,[jg(l,{"message-id":n.message.replyMessage._id,content:n.message.replyMessage.content,users:n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions,reply:!0},null,8,["message-id","content","users","text-formatting","link-options"])])])}var zI=Z_(II,[["render",$I]]);const qI={name:"ProgressBar",props:{progress:{type:Number,default:0}},data(){const e=35,t=4,n=e-2*t,o=2*n*Math.PI;return{radius:e,stroke:t,normalizedRadius:n,circumference:o}},computed:{strokeDashoffset(){return this.circumference-this.progress/100*this.circumference}}},YI={ref:"progress",class:"vac-progress-wrapper"},GI=["height","width"],XI=["stroke-dasharray","stroke-width","r","cx","cy"],WI={class:"vac-progress-text"},KI=Lg("span",{class:"vac-progress-pourcent"},"%",-1);function ZI(e,t,n,o,r,s){return kg(),Rg(m_,{name:"vac-fade-spinner",appear:""},{default:xh((()=>[Lg("div",YI,[(kg(),Ag("svg",{height:2*r.radius,width:2*r.radius},[Lg("circle",{stroke:"rgba(255, 255, 255, 0.7)","stroke-dasharray":r.circumference+" "+r.circumference,style:Zf({strokeDashoffset:s.strokeDashoffset,strokeLinecap:"round"}),"stroke-width":r.stroke,fill:"transparent",r:r.normalizedRadius,cx:r.radius,cy:r.radius},null,12,XI)],8,GI)),Lg("div",{class:"vac-progress-content",style:Zf({height:2*r.radius-19+"px",width:2*r.radius-19+"px"})},[Lg("div",WI,[Hg(op(n.progress),1),KI])],4)],512)])),_:1})}var QI=Z_(qI,[["render",ZI]]);const JI={name:"MessageFile",components:{SvgIcon:fb,Loader:ib,ProgressBar:QI},props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0},file:{type:Object,required:!0},index:{type:Number,required:!0},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["open-file"],data(){return{imageResponsive:"",imageLoading:!1,imageHover:!1}},computed:{isImageLoading(){return-1!==this.file.url.indexOf("blob:http")||this.imageLoading},isImage(){return aS(this.file)},isVideo(){return lS(this.file)}},watch:{file:{immediate:!0,handler(){this.checkImgLoad()}}},mounted(){const e=this.$refs["imageRef"+this.index];e&&(this.imageResponsive={maxHeight:e.clientWidth-18,loaderTop:e.clientHeight/2-9})},methods:{checkImgLoad(){if(!aS(this.file))return;this.imageLoading=!0;const e=new Image;e.src=this.file.url,e.addEventListener("load",(()=>this.imageLoading=!1))},openFile(e,t){this.messageSelectionEnabled||(e.stopPropagation(),this.$emit("open-file",{file:this.file,action:t}))}}},eB={class:"vac-message-file-container"},tB={key:0,class:"vac-image-buttons"},nB={controls:""},oB=["src"];function rB(e,t,n,o,r,s){const i=vm("progress-bar"),a=vm("loader"),l=vm("svg-icon");return kg(),Ag("div",eB,[s.isImage?(kg(),Ag("div",{key:0,ref:"imageRef"+n.index,class:"vac-message-image-container",onMouseover:t[2]||(t[2]=e=>r.imageHover=!0),onMouseleave:t[3]||(t[3]=e=>r.imageHover=!1),onClick:t[4]||(t[4]=e=>s.openFile(e,"preview"))},[n.file.progress>=0?(kg(),Rg(i,{key:0,progress:n.file.progress,style:Zf({top:`${r.imageResponsive.loaderTop}px`})},null,8,["progress","style"])):(kg(),Rg(a,{key:1,show:s.isImageLoading,type:"message-file","message-id":n.message._id,style:Zf({top:`${r.imageResponsive.loaderTop}px`})},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show","message-id","style"])),Lg("div",{class:tp(["vac-message-image",{"vac-blur-loading":s.isImageLoading&&n.message.senderId===n.currentUserId}]),style:Zf({"background-image":`url('${s.isImageLoading&&n.file.preview||n.file.url}')`,"max-height":`${r.imageResponsive.maxHeight}px`})},[jg(m_,{name:"vac-fade-image"},{default:xh((()=>[n.messageSelectionEnabled||!r.imageHover||s.isImageLoading?Ug("",!0):(kg(),Ag("div",tB,[Lg("div",{class:"vac-svg-button vac-button-view",onClick:t[0]||(t[0]=e=>s.openFile(e,"preview"))},[Em(e.$slots,"eye-icon_"+n.message._id,{},(()=>[jg(l,{name:"eye"})]))]),Lg("div",{class:"vac-svg-button vac-button-download",onClick:t[1]||(t[1]=e=>s.openFile(e,"download"))},[Em(e.$slots,"document-icon_"+n.message._id,{},(()=>[jg(l,{name:"document"})]))])]))])),_:3})],6)],544)):s.isVideo?(kg(),Ag("div",{key:1,class:"vac-video-container",onClick:t[5]||(t[5]=V_((e=>s.openFile(e,"preview")),["prevent"]))},[n.file.progress>=0?(kg(),Rg(i,{key:0,progress:n.file.progress},null,8,["progress"])):Ug("",!0),Lg("video",nB,[Lg("source",{src:n.file.url},null,8,oB)])])):Ug("",!0)])}var sB=Z_(JI,[["render",rB]]);const iB={name:"MessageFiles",components:{SvgIcon:fb,FormatMessage:zk,ProgressBar:QI,MessageFile:sB},props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0},roomUsers:{type:Array,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},messageSelectionEnabled:{type:Boolean,required:!0}},emits:["open-file","open-user-tag"],computed:{imageVideoFiles(){return this.message.files.filter((e=>cS(e)))},otherFiles(){return this.message.files.filter((e=>!cS(e)))}},methods:{openFile(e,t,n){this.messageSelectionEnabled||(e.stopPropagation(),this.$emit("open-file",{file:t,action:n}))}}},aB={class:"vac-message-files-container"},lB=["onClick"],cB={class:"vac-svg-button"},uB={class:"vac-text-ellipsis"},dB={key:0,class:"vac-text-ellipsis vac-text-extension"};function fB(e,t,n,o,r,s){const i=vm("message-file"),a=vm("progress-bar"),l=vm("svg-icon"),c=vm("format-message");return kg(),Ag("div",aB,[(kg(!0),Ag(vg,null,km(s.imageVideoFiles,((o,r)=>(kg(),Ag("div",{key:r+"iv"},[jg(i,{file:o,"current-user-id":n.currentUserId,message:n.message,index:r,"message-selection-enabled":n.messageSelectionEnabled,onOpenFile:t[0]||(t[0]=t=>e.$emit("open-file",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["file","current-user-id","message","index","message-selection-enabled"])])))),128)),(kg(!0),Ag(vg,null,km(s.otherFiles,((t,n)=>(kg(),Ag("div",{key:n+"a",class:"vac-file-wrapper"},[t.progress>=0?(kg(),Rg(a,{key:0,progress:t.progress,style:{top:"44px"}},null,8,["progress"])):Ug("",!0),Lg("div",{class:tp(["vac-file-container",{"vac-file-container-progress":t.progress>=0}]),onClick:e=>s.openFile(e,t,"download")},[Lg("div",cB,[Em(e.$slots,"document-icon",{},(()=>[jg(l,{name:"document"})]))]),Lg("div",uB,op(t.name),1),t.extension?(kg(),Ag("div",dB,op(t.extension),1)):Ug("",!0)],10,lB)])))),128)),jg(c,{"message-id":n.message._id,content:n.message.content,users:n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions,onOpenUserTag:t[1]||(t[1]=t=>e.$emit("open-user-tag",t))},null,8,["message-id","content","users","text-formatting","link-options"])])}var pB=Z_(iB,[["render",fB]]);const hB={name:"MessageActions",components:{SvgIcon:fb,EmojiPickerContainer:kA},directives:{clickOutside:rS},props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0},messageActions:{type:Array,required:!0},showReactionEmojis:{type:Boolean,required:!0},messageHover:{type:Boolean,required:!0},hoverMessageId:{type:[String,Number],default:null},hoverAudioProgress:{type:Boolean,required:!0},emojiDataSource:{type:String,default:void 0}},emits:["update-emoji-opened","update-options-opened","update-message-hover","message-action-handler","send-message-reaction"],data(){return{menuOptionsTop:0,optionsOpened:!1,optionsClosing:!1,emojiOpened:!1}},computed:{isMessageActions(){return this.filteredMessageActions.length&&this.messageHover&&!this.message.deleted&&!this.message.disableActions&&!this.hoverAudioProgress},isMessageReactions(){return this.showReactionEmojis&&this.messageHover&&!this.message.deleted&&!this.message.disableReactions&&!this.hoverAudioProgress},filteredMessageActions(){return this.message.senderId===this.currentUserId?this.messageActions:this.messageActions.filter((e=>!e.onlyMe))}},watch:{emojiOpened(e){this.$emit("update-emoji-opened",e),e&&(this.optionsOpened=!1)},optionsOpened(e){this.$emit("update-options-opened",e)}},methods:{openOptions(){this.optionsClosing||(this.optionsOpened=!this.optionsOpened,this.optionsOpened&&setTimeout((()=>{const e=bA(this.$el,"#room-footer");if(!e||!this.$refs.menuOptions||!this.$refs.actionIcon)return;const t=this.$refs.menuOptions.getBoundingClientRect().height,n=this.$refs.actionIcon.getBoundingClientRect().top,o=e.getBoundingClientRect().top,r=o-n>t+50;this.menuOptionsTop=r?30:-t})))},closeOptions(){this.optionsOpened=!1,this.optionsClosing=!0,this.updateMessageHover(),setTimeout((()=>this.optionsClosing=!1),100)},openEmoji(){this.emojiOpened=!this.emojiOpened},closeEmoji(){this.emojiOpened=!1,this.updateMessageHover()},updateMessageHover(){this.hoverMessageId!==this.message._id&&this.$emit("update-message-hover",!1)},messageActionHandler(e){this.closeOptions(),this.$emit("message-action-handler",e)},sendMessageReaction(e,t){this.$emit("send-message-reaction",{emoji:e,reaction:t}),this.closeEmoji()}}},mB={class:"vac-message-actions-wrapper"},gB={key:"3"},vB={class:"vac-menu-list"},_B=["onClick"];function bB(e,t,n,o,r,s){const i=vm("svg-icon"),a=vm("emoji-picker-container"),l=ym("click-outside");return kg(),Ag("div",mB,[Lg("div",{class:"vac-options-container",style:Zf({display:n.hoverAudioProgress?"none":"initial",width:s.filteredMessageActions.length&&n.showReactionEmojis?"70px":"45px"})},[jg(L_,{name:"vac-slide-left",tag:"span"},{default:xh((()=>[s.isMessageActions||s.isMessageReactions?(kg(),Ag("div",{key:"1",class:tp(["vac-blur-container",{"vac-options-me":n.message.senderId===n.currentUserId}])},null,2)):Ug("",!0),s.isMessageActions?(kg(),Ag("div",{ref:"actionIcon",key:"2",class:"vac-svg-button vac-message-options",onClick:t[0]||(t[0]=(...e)=>s.openOptions&&s.openOptions(...e))},[Em(e.$slots,"dropdown-icon_"+n.message._id,{},(()=>[jg(i,{name:"dropdown",param:"message"})]))],512)):Ug("",!0),s.isMessageReactions?pm((kg(),Ag("div",gB,[Em(e.$slots,"emoji-picker",qg({emojiOpened:r.emojiOpened},{addEmoji:s.sendMessageReaction}),(()=>[jg(a,{class:"vac-message-emojis",style:Zf({right:s.isMessageActions?"30px":"5px"}),"emoji-opened":r.emojiOpened,"emoji-reaction":!0,"position-right":n.message.senderId===n.currentUserId,"message-id":n.message._id,"emoji-data-source":n.emojiDataSource,onAddEmoji:s.sendMessageReaction,onOpenEmoji:s.openEmoji},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["style","emoji-opened","position-right","message-id","emoji-data-source","onAddEmoji","onOpenEmoji"])]))])),[[l,s.closeEmoji]]):Ug("",!0)])),_:3})],4),s.filteredMessageActions.length?(kg(),Rg(m_,{key:0,name:n.message.senderId===n.currentUserId?"vac-slide-left":"vac-slide-right"},{default:xh((()=>[r.optionsOpened?pm((kg(),Ag("div",{key:0,ref:"menuOptions",class:tp(["vac-menu-options",{"vac-menu-left":n.message.senderId!==n.currentUserId}]),style:Zf({top:`${r.menuOptionsTop}px`})},[Lg("div",vB,[(kg(!0),Ag(vg,null,km(s.filteredMessageActions,(e=>(kg(),Ag("div",{key:e.name},[Lg("div",{class:"vac-menu-item",onClick:t=>s.messageActionHandler(e)},op(e.title),9,_B)])))),128))])],6)),[[l,s.closeOptions]]):Ug("",!0)])),_:1},8,["name"])):Ug("",!0)])}var yB=Z_(hB,[["render",bB]]);const xB={name:"MessageReactions",props:{currentUserId:{type:[String,Number],required:!0},message:{type:Object,required:!0}},emits:["send-message-reaction"],methods:{sendMessageReaction(e,t){this.$emit("send-message-reaction",{emoji:e,reaction:t})}}},wB=["onClick"];function kB(e,t,n,o,r,s){return n.message.deleted?Ug("",!0):(kg(),Rg(L_,{key:0,name:"vac-slide-left",tag:"span"},{default:xh((()=>[(kg(!0),Ag(vg,null,km(n.message.reactions,((e,t)=>pm((kg(),Ag("button",{key:t+0,class:tp(["vac-button-reaction",{"vac-reaction-me":-1!==e.indexOf(n.currentUserId)}]),style:Zf({float:n.message.senderId===n.currentUserId?"right":"left"}),onClick:n=>s.sendMessageReaction({unicode:t},e)},[Hg(op(t),1),Lg("span",null,op(e.length),1)],14,wB)),[[q_,e.length]]))),128))])),_:1}))}var SB=Z_(xB,[["render",kB]]);function EB(e){const t=[{key:"roomId",type:["string","number"]},{key:"roomName",type:["string"]},{key:"users",type:["array"]}],n=(e,t)=>t.every((t=>{let n=!1;return("array"===t.type[0]&&Array.isArray(e[t.key])||t.type.find((n=>n===typeof e[t.key])))&&(n=!0),n&&AB(e,t.key)}));if(!n(e,t))throw new Error("Rooms object is not valid! Must contain at least roomId[String, Number], roomName[String] and users[Array]")}function TB(e){const t=[{key:"_id",type:["string","number"]},{key:"username",type:["string"]}],n=(e,t)=>t.every((t=>{const n=t.type.find((n=>n===typeof e[t.key]));return n&&AB(e,t.key)}));if(!n(e,t))throw new Error("Participants object is not valid! Must contain at least _id[String, Number] and username[String]")}function MB(e){const t=[{key:"_id",type:["string","number"]},{key:"senderId",type:["string","number"]}],n=(e,t)=>t.every((t=>{const n=t.type.find((n=>n===typeof e[t.key]));return n&&AB(e,t.key)}));if(!n(e,t))throw new Error("Messages object is not valid! Must contain at least _id[String, Number] and senderId[String, Number]")}function AB(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&null!==e[t]&&void 0!==e[t]}const RB={name:"RoomMessage",components:{SvgIcon:fb,FormatMessage:zk,AudioPlayer:YA,MessageReply:zI,MessageFiles:pB,MessageActions:yB,MessageReactions:SB},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},index:{type:Number,required:!0},message:{type:Object,required:!0},messages:{type:Array,required:!0},editedMessageId:{type:[String,Number],default:null},roomUsers:{type:Array,default:()=>[]},messageActions:{type:Array,required:!0},newMessages:{type:Array,default:()=>[]},showReactionEmojis:{type:Boolean,required:!0},showNewMessagesDivider:{type:Boolean,required:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},usernameOptions:{type:Object,required:!0},messageSelectionEnabled:{type:Boolean,required:!0},selectedMessages:{type:Array,default:()=>[]},emojiDataSource:{type:String,default:void 0}},emits:["message-added","open-file","open-user-tag","open-failed-message","message-action-handler","send-message-reaction","select-message","unselect-message"],data(){return{hoverMessageId:null,messageHover:!1,optionsOpened:!1,emojiOpened:!1,newMessage:{},progressTime:"- : -",hoverAudioProgress:!1}},computed:{showUsername(){return!(!this.usernameOptions.currentUser&&this.message.senderId===this.currentUserId)&&this.roomUsers.length>=this.usernameOptions.minUsers},showDate(){return this.index>0&&this.message.date!==this.messages[this.index-1].date},messageOffset(){return this.index>0&&this.message.senderId!==this.messages[this.index-1].senderId},isMessageHover(){return this.editedMessageId===this.message._id||this.hoverMessageId===this.message._id},isAudio(){var e;return null==(e=this.message.files)?void 0:e.some((e=>uS(e)))},isCheckmarkVisible(){return this.message.senderId===this.currentUserId&&!this.message.deleted&&(this.message.saved||this.message.distributed||this.message.seen)},hasCurrentUserAvatar(){return this.messages.some((e=>e.senderId===this.currentUserId&&e.avatar))},hasSenderUserAvatar(){return this.messages.some((e=>e.senderId!==this.currentUserId&&e.avatar))},isMessageSelected(){return this.messageSelectionEnabled&&!!this.selectedMessages.find((e=>e._id===this.message._id))}},watch:{newMessages:{immediate:!0,deep:!0,handler(e){e.length&&this.showNewMessagesDivider?this.newMessage=e.reduce(((e,t)=>t.index<e.index?t:e)):this.newMessage={}}},messageSelectionEnabled(){this.resetMessageHover()}},mounted(){MB(this.message),this.$emit("message-added",{message:this.message,index:this.index,ref:this.$refs.message})},methods:{onHoverMessage(){this.messageSelectionEnabled||(this.messageHover=!0,this.canEditMessage()&&(this.hoverMessageId=this.message._id))},canEditMessage(){return!this.message.deleted},onLeaveMessage(){this.messageSelectionEnabled||(this.optionsOpened||this.emojiOpened||(this.messageHover=!1),this.hoverMessageId=null)},resetMessageHover(){this.messageHover=!1,this.hoverMessageId=null},openFile(e){this.$emit("open-file",{message:this.message,file:e})},openUserTag(e){this.$emit("open-user-tag",{user:e})},messageActionHandler(e){this.resetMessageHover(),setTimeout((()=>{this.$emit("message-action-handler",{action:e,message:this.message})}),300)},sendMessageReaction({emoji:e,reaction:t}){this.$emit("send-message-reaction",{messageId:this.message._id,reaction:e,remove:t&&-1!==t.indexOf(this.currentUserId)}),this.messageHover=!1},selectMessage(){this.messageSelectionEnabled&&(this.isMessageSelected?this.$emit("unselect-message",this.message._id):this.$emit("select-message",this.message))}}},CB=["id"],OB={key:0,class:"vac-card-info vac-card-date"},IB={key:1,class:"vac-line-new"},BB={key:2,class:"vac-card-info vac-card-system"},PB={key:1,class:"vac-avatar-offset"},LB={key:0,class:"vac-progress-time"},jB={class:"vac-text-timestamp"},NB={key:0,class:"vac-icon-edited"},FB={key:1},DB=Lg("div",{class:"vac-failure-text"},"!",-1),HB=[DB],UB={key:3,class:"vac-avatar-current-offset"};function VB(e,t,n,o,r,s){const i=vm("format-message"),a=vm("message-reply"),l=vm("message-files"),c=vm("audio-player"),u=vm("svg-icon"),d=vm("message-actions"),f=vm("message-reactions");return kg(),Ag("div",{id:n.message._id,ref:"message",class:"vac-message-wrapper"},[s.showDate?(kg(),Ag("div",OB,op(n.message.date),1)):Ug("",!0),r.newMessage._id===n.message._id?(kg(),Ag("div",IB,op(n.textMessages.NEW_MESSAGES),1)):Ug("",!0),n.message.system?(kg(),Ag("div",BB,[Em(e.$slots,"message_"+n.message._id,{},(()=>[jg(i,{"message-id":n.message._id,content:n.message.content,deleted:!!n.message.deleted,users:n.roomUsers,"text-messages":n.textMessages,"text-formatting":n.textFormatting,"link-options":n.linkOptions,onOpenUserTag:s.openUserTag},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","content","deleted","users","text-messages","text-formatting","link-options","onOpenUserTag"])]))])):(kg(),Ag("div",{key:3,class:tp(["vac-message-box",{"vac-offset-current":n.message.senderId===n.currentUserId}]),onClick:t[8]||(t[8]=(...e)=>s.selectMessage&&s.selectMessage(...e))},[Em(e.$slots,"message_"+n.message._id,{},(()=>[n.message.senderId!==n.currentUserId?Em(e.$slots,"message-avatar_"+n.message._id,{key:0},(()=>[n.message.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar",style:Zf({"background-image":`url('${n.message.avatar}')`})},null,4)):Ug("",!0)])):Ug("",!0),s.hasSenderUserAvatar&&!n.message.avatar?(kg(),Ag("div",PB)):Ug("",!0),Lg("div",{class:tp(["vac-message-container",{"vac-message-container-offset":s.messageOffset}])},[Lg("div",{class:tp(["vac-message-card",{"vac-message-highlight":s.isMessageHover,"vac-message-current":n.message.senderId===n.currentUserId,"vac-message-deleted":n.message.deleted,"vac-item-clickable":n.messageSelectionEnabled,"vac-message-selected":s.isMessageSelected}]),onMouseover:t[5]||(t[5]=(...e)=>s.onHoverMessage&&s.onHoverMessage(...e)),onMouseleave:t[6]||(t[6]=(...e)=>s.onLeaveMessage&&s.onLeaveMessage(...e))},[s.showUsername?(kg(),Ag("div",{key:0,class:tp(["vac-text-username",{"vac-username-reply":!n.message.deleted&&n.message.replyMessage}])},[Lg("span",null,op(n.message.username),1)],2)):Ug("",!0),!n.message.deleted&&n.message.replyMessage?(kg(),Rg(a,{key:1,message:n.message,"room-users":n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message","room-users","text-formatting","link-options"])):Ug("",!0),!n.message.deleted&&n.message.files&&n.message.files.length?!s.isAudio||n.message.files.length>1?(kg(),Rg(l,{key:3,"current-user-id":n.currentUserId,message:n.message,"room-users":n.roomUsers,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"message-selection-enabled":n.messageSelectionEnabled,onOpenFile:s.openFile,onOpenUserTag:s.openUserTag},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","message","room-users","text-formatting","link-options","message-selection-enabled","onOpenFile","onOpenUserTag"])):(kg(),Ag(vg,{key:4},[jg(c,{"message-id":n.message._id,src:n.message.files[0].url,"message-selection-enabled":n.messageSelectionEnabled,onUpdateProgressTime:t[0]||(t[0]=e=>r.progressTime=e),onHoverAudioProgress:t[1]||(t[1]=e=>r.hoverAudioProgress=e)},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","src","message-selection-enabled"]),n.message.deleted?Ug("",!0):(kg(),Ag("div",LB,op(r.progressTime),1))],64)):(kg(),Rg(i,{key:2,"message-id":n.message._id,content:n.message.content,deleted:!!n.message.deleted,users:n.roomUsers,"text-formatting":n.textFormatting,"text-messages":n.textMessages,"link-options":n.linkOptions,onOpenUserTag:s.openUserTag},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["message-id","content","deleted","users","text-formatting","text-messages","link-options","onOpenUserTag"])),Lg("div",jB,[n.message.edited&&!n.message.deleted?(kg(),Ag("div",NB,[Em(e.$slots,"pencil-icon_"+n.message._id,{},(()=>[jg(u,{name:"pencil"})]))])):Ug("",!0),Lg("span",null,op(n.message.timestamp),1),s.isCheckmarkVisible?(kg(),Ag("span",FB,[Em(e.$slots,"checkmark-icon_"+n.message._id,{},(()=>[jg(u,{name:n.message.distributed?"double-checkmark":"checkmark",param:n.message.seen?"seen":"",class:"vac-icon-check"},null,8,["name","param"])]))])):Ug("",!0)]),jg(d,{"current-user-id":n.currentUserId,message:n.message,"message-actions":n.messageActions,"show-reaction-emojis":n.showReactionEmojis,"message-hover":r.messageHover,"hover-message-id":r.hoverMessageId,"hover-audio-progress":r.hoverAudioProgress,"emoji-data-source":n.emojiDataSource,onUpdateMessageHover:t[2]||(t[2]=e=>r.messageHover=e),onUpdateOptionsOpened:t[3]||(t[3]=e=>r.optionsOpened=e),onUpdateEmojiOpened:t[4]||(t[4]=e=>r.emojiOpened=e),onMessageActionHandler:s.messageActionHandler,onSendMessageReaction:s.sendMessageReaction},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","message","message-actions","show-reaction-emojis","message-hover","hover-message-id","hover-audio-progress","emoji-data-source","onMessageActionHandler","onSendMessageReaction"])],34),jg(f,{"current-user-id":n.currentUserId,message:n.message,onSendMessageReaction:s.sendMessageReaction},null,8,["current-user-id","message","onSendMessageReaction"])],2),Em(e.$slots,"message-failure_"+n.message._id,{},(()=>[n.message.failure&&n.message.senderId===n.currentUserId?(kg(),Ag("div",{key:0,class:tp(["vac-failure-container vac-svg-button",{"vac-failure-container-avatar":n.message.avatar&&n.message.senderId===n.currentUserId}]),onClick:t[7]||(t[7]=t=>e.$emit("open-failed-message",{message:n.message}))},HB,2)):Ug("",!0)])),n.message.senderId===n.currentUserId?Em(e.$slots,"message-avatar_"+n.message._id,{key:2},(()=>[n.message.avatar?(kg(),Ag("div",{key:0,class:"vac-avatar vac-avatar-current",style:Zf({"background-image":`url('${n.message.avatar}')`})},null,4)):Ug("",!0)])):Ug("",!0),s.hasCurrentUserAvatar&&!n.message.avatar?(kg(),Ag("div",UB)):Ug("",!0)]))],2))],8,CB)}var $B=Z_(RB,[["render",VB]]);const zB={name:"ChatRoom",components:{Loader:ib,SvgIcon:fb,RoomHeader:ZS,RoomFooter:OI,RoomMessage:$B},props:{currentUserId:{type:[String,Number],required:!0},textMessages:{type:Object,required:!0},singleRoom:{type:Boolean,required:!0},showRoomsList:{type:Boolean,required:!0},isMobile:{type:Boolean,required:!0},rooms:{type:Array,required:!0},roomId:{type:[String,Number],required:!0},loadFirstRoom:{type:Boolean,required:!0},messages:{type:Array,required:!0},roomMessage:{type:String,default:null},messagesLoaded:{type:Boolean,required:!0},menuActions:{type:Array,required:!0},messageActions:{type:Array,required:!0},messageSelectionActions:{type:Array,required:!0},autoScroll:{type:Object,required:!0},showSendIcon:{type:Boolean,required:!0},showFiles:{type:Boolean,required:!0},showAudio:{type:Boolean,required:!0},audioBitRate:{type:Number,required:!0},audioSampleRate:{type:Number,required:!0},showEmojis:{type:Boolean,required:!0},showReactionEmojis:{type:Boolean,required:!0},showNewMessagesDivider:{type:Boolean,required:!0},showFooter:{type:Boolean,required:!0},acceptedFiles:{type:String,required:!0},captureFiles:{type:String,required:!0},multipleFiles:{type:Boolean,default:!0},textFormatting:{type:Object,required:!0},linkOptions:{type:Object,required:!0},loadingRooms:{type:Boolean,required:!0},roomInfoEnabled:{type:Boolean,required:!0},textareaActionEnabled:{type:Boolean,required:!0},textareaAutoFocus:{type:Boolean,required:!0},userTagsEnabled:{type:Boolean,required:!0},emojisSuggestionEnabled:{type:Boolean,required:!0},scrollDistance:{type:Number,required:!0},templatesText:{type:Array,default:null},usernameOptions:{type:Object,required:!0},emojiDataSource:{type:String,default:void 0}},emits:["toggle-rooms-list","room-info","menu-action-handler","message-selection-action-handler","edit-message","send-message","delete-message","message-action-handler","fetch-messages","send-message-reaction","typing-message","open-file","open-user-tag","open-failed-message","textarea-action-handler"],data(){return{editedMessageId:null,initReplyMessage:null,initEditMessage:null,loadingMessages:!1,observer:null,showLoader:!0,loadingMoreMessages:!1,scrollIcon:!1,scrollMessagesCount:0,newMessages:[],messageSelectionEnabled:!1,selectedMessages:[],droppedFiles:[]}},computed:{room(){return this.rooms.find((e=>e.roomId===this.roomId))||{}},showNoMessages(){return this.roomId&&!this.messages.length&&!this.loadingMessages&&!this.loadingRooms},showNoRoom(){const e=!this.rooms.length&&!this.loadingRooms||!this.roomId&&!this.loadFirstRoom;return e&&this.updateLoadingMessages(!1),e},showMessagesStarted(){return this.messages.length&&this.messagesLoaded}},watch:{roomId:{immediate:!0,handler(){this.onRoomChanged()}},messages:{deep:!0,handler(e,t){e.forEach(((e,t)=>{this.showNewMessagesDivider&&!e.seen&&e.senderId!==this.currentUserId&&this.newMessages.push({_id:e._id,index:t})})),(null==t?void 0:t.length)===(null==e?void 0:e.length)-1&&(this.newMessages=[]),setTimeout((()=>this.loadingMoreMessages=!1))}},messagesLoaded(e){e&&this.updateLoadingMessages(!1)}},mounted(){this.newMessages=[]},methods:{updateLoadingMessages(e){this.loadingMessages=e,e||setTimeout((()=>this.initIntersectionObserver()))},initIntersectionObserver(){this.observer&&(this.showLoader=!0,this.observer.disconnect());const e=this.$el.querySelector("#infinite-loader-messages");if(e){const t={root:this.$el.querySelector("#messages-list"),rootMargin:`${this.scrollDistance}px`,threshold:0};this.observer=new IntersectionObserver((e=>{e[0].isIntersecting&&this.loadMoreMessages()}),t),this.observer.observe(e)}},preventTopScroll(){const e=this.$refs.scrollContainer,t=e.scrollHeight,n=new ResizeObserver((o=>{e.scrollHeight!==t&&this.$refs.scrollContainer&&(this.$refs.scrollContainer.scrollTo({top:e.scrollHeight-t}),n.disconnect())}));for(var o=0;o<e.children.length;o++)n.observe(e.children[o])},touchStart(e){if(!this.singleRoom&&1===e.changedTouches.length){const t=e.changedTouches[0].clientX,n=e.changedTouches[0].clientY;addEventListener("touchend",(e=>this.touchEnd(e,t,n)),{once:!0})}},touchEnd(e,t,n){if(1===e.changedTouches.length){const o=e.changedTouches[0].clientX,r=e.changedTouches[0].clientY,s=o-t>100,i=Math.abs(r-n)>50;s&&!i&&this.$emit("toggle-rooms-list")}},onRoomChanged(){this.updateLoadingMessages(!0),this.scrollIcon=!1,this.scrollMessagesCount=0,this.resetMessageSelection();const e=this.$watch((()=>this.messages),(t=>{if(!t||!t.length)return;const n=this.$refs.scrollContainer;n&&(e(),setTimeout((()=>{n.scrollTo({top:n.scrollHeight}),this.updateLoadingMessages(!1)})))}))},resetMessageSelection(){this.messageSelectionEnabled=!1,this.selectedMessages=[]},selectMessage(e){this.selectedMessages.push(e)},unselectMessage(e){this.selectedMessages=this.selectedMessages.filter((t=>t._id!==e))},onMessageAdded({message:e,index:t,ref:n}){if(t!==this.messages.length-1)return;const o=n.offsetHeight+60;setTimeout((()=>{const t=this.$refs.scrollContainer;let n=!1;t&&(n=this.getBottomScroll(t)>o),e.senderId===this.currentUserId?n?this.autoScroll.send.newAfterScrollUp&&this.scrollToBottom():this.autoScroll.send.new&&this.scrollToBottom():n?this.autoScroll.receive.newAfterScrollUp?this.scrollToBottom():(this.scrollIcon=!0,this.scrollMessagesCount++):this.autoScroll.receive.new?this.scrollToBottom():(this.scrollIcon=!0,this.scrollMessagesCount++)}))},onContainerScroll(e){if(!e.target)return;const t=this.getBottomScroll(e.target);t<60&&(this.scrollMessagesCount=0),this.scrollIcon=t>500||this.scrollMessagesCount},loadMoreMessages(){this.loadingMessages||setTimeout((()=>{if(!this.loadingMoreMessages){if(this.messagesLoaded||!this.roomId)return this.loadingMoreMessages=!1,void(this.showLoader=!1);this.preventTopScroll(),this.$emit("fetch-messages"),this.loadingMoreMessages=!0}}),500)},messageActionHandler({action:e,message:t}){switch(e.name){case"replyMessage":return this.initReplyMessage=t,void setTimeout((()=>{this.initReplyMessage=null}));case"editMessage":return this.initEditMessage=t,void setTimeout((()=>{this.initEditMessage=null}));case"deleteMessage":return this.$emit("delete-message",t);case"selectMessages":return this.selectedMessages=[t],void(this.messageSelectionEnabled=!0);default:return this.$emit("message-action-handler",{action:e,message:t})}},messageSelectionActionHandler(e){this.$emit("message-selection-action-handler",{action:e,messages:this.selectedMessages}),this.resetMessageSelection()},sendMessageReaction(e){this.$emit("send-message-reaction",e)},getBottomScroll(e){const{scrollHeight:t,clientHeight:n,scrollTop:o}=e;return t-n-o},scrollToBottom(){setTimeout((()=>{const e=this.$refs.scrollContainer;e&&(e.classList.add("vac-scroll-smooth"),e.scrollTo({top:e.scrollHeight,behavior:"smooth"}),setTimeout((()=>e.classList.remove("vac-scroll-smooth"))))}),50)},openFile({message:e,file:t}){this.$emit("open-file",{message:e,file:t})},openUserTag(e){this.$emit("open-user-tag",e)},onDropFiles(e){this.showFiles&&(this.droppedFiles=e.dataTransfer.files)}}},qB={class:"vac-container-center vac-room-empty"},YB={class:"vac-messages-container"},GB={key:0,class:"vac-text-started"},XB={key:1,class:"vac-text-started"},WB={key:0,id:"infinite-loader-messages"},KB={key:2},ZB={key:0,class:"vac-badge-counter vac-messages-count"};function QB(e,t,n,o,r,s){const i=vm("room-header"),a=vm("loader"),l=vm("room-message"),c=vm("svg-icon"),u=vm("room-footer");return pm((kg(),Ag("div",{class:"vac-col-messages",onDrop:t[12]||(t[12]=V_(((...e)=>s.onDropFiles&&s.onDropFiles(...e)),["prevent"])),onDragenter:t[13]||(t[13]=V_((()=>{}),["prevent"])),onDragover:t[14]||(t[14]=V_((()=>{}),["prevent"])),onDragleave:t[15]||(t[15]=V_((()=>{}),["prevent"])),onTouchstart:t[16]||(t[16]=(...e)=>s.touchStart&&s.touchStart(...e))},[s.showNoRoom?Em(e.$slots,"no-room-selected",{key:0},(()=>[Lg("div",qB,[Lg("div",null,op(n.textMessages.ROOM_EMPTY),1)])])):(kg(),Rg(i,{key:1,"current-user-id":n.currentUserId,"text-messages":n.textMessages,"single-room":n.singleRoom,"show-rooms-list":n.showRoomsList,"is-mobile":n.isMobile,"room-info-enabled":n.roomInfoEnabled,"menu-actions":n.menuActions,room:s.room,"message-selection-enabled":r.messageSelectionEnabled,"message-selection-actions":n.messageSelectionActions,"selected-messages-total":r.selectedMessages.length,onToggleRoomsList:t[0]||(t[0]=t=>e.$emit("toggle-rooms-list")),onRoomInfo:t[1]||(t[1]=t=>e.$emit("room-info")),onMenuActionHandler:t[2]||(t[2]=t=>e.$emit("menu-action-handler",t)),onMessageSelectionActionHandler:s.messageSelectionActionHandler,onCancelMessageSelection:t[3]||(t[3]=e=>r.messageSelectionEnabled=!1)},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","text-messages","single-room","show-rooms-list","is-mobile","room-info-enabled","menu-actions","room","message-selection-enabled","message-selection-actions","selected-messages-total","onMessageSelectionActionHandler"])),Lg("div",{id:"messages-list",ref:"scrollContainer",class:"vac-container-scroll",onScroll:t[5]||(t[5]=(...e)=>s.onContainerScroll&&s.onContainerScroll(...e))},[jg(a,{show:r.loadingMessages,type:"messages"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["show"]),Lg("div",YB,[Lg("div",{class:tp({"vac-messages-hidden":r.loadingMessages})},[jg(m_,{name:"vac-fade-message"},{default:xh((()=>[Lg("div",null,[s.showNoMessages?(kg(),Ag("div",GB,[Em(e.$slots,"messages-empty",{},(()=>[Hg(op(n.textMessages.MESSAGES_EMPTY),1)]))])):Ug("",!0),s.showMessagesStarted?(kg(),Ag("div",XB,op(n.textMessages.CONVERSATION_STARTED)+" "+op(n.messages[0].date),1)):Ug("",!0)])])),_:3}),n.messages.length&&!n.messagesLoaded?(kg(),Ag("div",WB,[jg(a,{show:!0,infinite:!0,type:"infinite-messages"},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1024)])):Ug("",!0),(kg(),Rg(L_,{key:n.roomId,name:"vac-fade-message",tag:"span"},{default:xh((()=>[(kg(!0),Ag(vg,null,km(n.messages,((o,i)=>(kg(),Ag("div",{key:o.indexId||o._id},[jg(l,{"current-user-id":n.currentUserId,message:o,index:i,messages:n.messages,"edited-message-id":r.editedMessageId,"message-actions":n.messageActions,"room-users":s.room.users,"text-messages":n.textMessages,"new-messages":r.newMessages,"show-reaction-emojis":n.showReactionEmojis,"show-new-messages-divider":n.showNewMessagesDivider,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"username-options":n.usernameOptions,"message-selection-enabled":r.messageSelectionEnabled,"selected-messages":r.selectedMessages,"emoji-data-source":n.emojiDataSource,onMessageAdded:s.onMessageAdded,onMessageActionHandler:s.messageActionHandler,onOpenFile:s.openFile,onOpenUserTag:s.openUserTag,onOpenFailedMessage:t[4]||(t[4]=t=>e.$emit("open-failed-message",t)),onSendMessageReaction:s.sendMessageReaction,onSelectMessage:s.selectMessage,onUnselectMessage:s.unselectMessage},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["current-user-id","message","index","messages","edited-message-id","message-actions","room-users","text-messages","new-messages","show-reaction-emojis","show-new-messages-divider","text-formatting","link-options","username-options","message-selection-enabled","selected-messages","emoji-data-source","onMessageAdded","onMessageActionHandler","onOpenFile","onOpenUserTag","onSendMessageReaction","onSelectMessage","onUnselectMessage"])])))),128))])),_:3}))],2)])],544),r.loadingMessages?Ug("",!0):(kg(),Ag("div",KB,[jg(m_,{name:"vac-bounce"},{default:xh((()=>[r.scrollIcon?(kg(),Ag("div",{key:0,class:"vac-icon-scroll",onClick:t[6]||(t[6]=(...e)=>s.scrollToBottom&&s.scrollToBottom(...e))},[jg(m_,{name:"vac-bounce"},{default:xh((()=>[r.scrollMessagesCount?(kg(),Ag("div",ZB,op(r.scrollMessagesCount),1)):Ug("",!0)])),_:1}),Em(e.$slots,"scroll-icon",{},(()=>[jg(c,{name:"dropdown",param:"scroll"})]))])):Ug("",!0)])),_:3})])),jg(u,{room:s.room,"room-id":n.roomId,"room-message":n.roomMessage,"text-messages":n.textMessages,"show-send-icon":n.showSendIcon,"show-files":n.showFiles,"show-audio":n.showAudio,"show-emojis":n.showEmojis,"show-footer":n.showFooter,"accepted-files":n.acceptedFiles,"capture-files":n.captureFiles,"multiple-files":n.multipleFiles,"textarea-action-enabled":n.textareaActionEnabled,"textarea-auto-focus":n.textareaAutoFocus,"user-tags-enabled":n.userTagsEnabled,"emojis-suggestion-enabled":n.emojisSuggestionEnabled,"templates-text":n.templatesText,"text-formatting":n.textFormatting,"link-options":n.linkOptions,"audio-bit-rate":n.audioBitRate,"audio-sample-rate":n.audioSampleRate,"init-reply-message":r.initReplyMessage,"init-edit-message":r.initEditMessage,"dropped-files":r.droppedFiles,"emoji-data-source":n.emojiDataSource,onUpdateEditedMessageId:t[7]||(t[7]=e=>r.editedMessageId=e),onEditMessage:t[8]||(t[8]=t=>e.$emit("edit-message",t)),onSendMessage:t[9]||(t[9]=t=>e.$emit("send-message",t)),onTypingMessage:t[10]||(t[10]=t=>e.$emit("typing-message",t)),onTextareaActionHandler:t[11]||(t[11]=t=>e.$emit("textarea-action-handler",t))},Sm({_:2},[km(e.$slots,((t,n)=>({name:n,fn:xh((t=>[Em(e.$slots,n,np(Fg(t)))]))})))]),1032,["room","room-id","room-message","text-messages","show-send-icon","show-files","show-audio","show-emojis","show-footer","accepted-files","capture-files","multiple-files","textarea-action-enabled","textarea-auto-focus","user-tags-enabled","emojis-suggestion-enabled","templates-text","text-formatting","link-options","audio-bit-rate","audio-sample-rate","init-reply-message","init-edit-message","dropped-files","emoji-data-source"])],544)),[[q_,n.isMobile&&!n.showRoomsList||!n.isMobile||n.singleRoom]])}var JB=Z_(zB,[["render",QB]]);const eP={name:"MediaPreview",components:{SvgIcon:fb},props:{file:{type:Object,required:!0}},emits:["close-media-preview"],computed:{isImage(){return aS(this.file)},isVideo(){return lS(this.file)}},mounted(){this.$refs.modal.focus()},methods:{closeModal(){this.$emit("close-media-preview")}}},tP={key:0,class:"vac-media-preview-container"},nP={key:1,class:"vac-media-preview-container"},oP={controls:"",autoplay:""},rP=["src"],sP={class:"vac-svg-button"};function iP(e,t,n,o,r,s){const i=vm("svg-icon");return kg(),Ag("div",{ref:"modal",tabindex:"0",class:"vac-media-preview",onClick:t[0]||(t[0]=V_(((...e)=>s.closeModal&&s.closeModal(...e)),["stop"])),onKeydown:t[1]||(t[1]=z_(((...e)=>s.closeModal&&s.closeModal(...e)),["esc"]))},[jg(m_,{name:"vac-bounce-preview",appear:""},{default:xh((()=>[s.isImage?(kg(),Ag("div",tP,[Lg("div",{class:"vac-image-preview",style:Zf({"background-image":`url('${n.file.url}')`})},null,4)])):s.isVideo?(kg(),Ag("div",nP,[Lg("video",oP,[Lg("source",{src:n.file.url},null,8,rP)])])):Ug("",!0)])),_:1}),Lg("div",sP,[Em(e.$slots,"preview-close-icon",{},(()=>[jg(i,{name:"close-outline",param:"preview"})]))])],544)}var aP=Z_(eP,[["render",iP]]),lP={ROOMS_EMPTY:"No rooms",ROOM_EMPTY:"No room selected",NEW_MESSAGES:"New Messages",MESSAGE_DELETED:"This message was deleted",MESSAGES_EMPTY:"No messages",CONVERSATION_STARTED:"Conversation started on:",TYPE_MESSAGE:"Type message",SEARCH:"Search",IS_ONLINE:"is online",LAST_SEEN:"last seen ",IS_TYPING:"is writing...",CANCEL_SELECT_MESSAGE:"Cancel"};const cP={light:{general:{color:"#0a0a0a",colorButtonClear:"#1976d2",colorButton:"#fff",backgroundColorButton:"#1976d2",backgroundInput:"#fff",colorPlaceholder:"#9ca6af",colorCaret:"#1976d2",colorSpinner:"#333",borderStyle:"1px solid #e1e4e8",backgroundScrollIcon:"#fff"},container:{border:"none",borderRadius:"4px",boxShadow:"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)"},header:{background:"#fff",colorRoomName:"#0a0a0a",colorRoomInfo:"#9ca6af"},footer:{background:"#f8f9fa",borderStyleInput:"1px solid #e1e4e8",borderInputSelected:"#1976d2",backgroundReply:"#e5e5e6",backgroundTagActive:"#e5e5e6",backgroundTag:"#f8f9fa"},content:{background:"#f8f9fa"},sidemenu:{background:"#fff",backgroundHover:"#f6f6f6",backgroundActive:"#e5effa",colorActive:"#1976d2",borderColorSearch:"#e1e5e8"},dropdown:{background:"#fff",backgroundHover:"#f6f6f6"},message:{background:"#fff",backgroundMe:"#ccf2cf",color:"#0a0a0a",colorStarted:"#9ca6af",backgroundDeleted:"#dadfe2",backgroundSelected:"#c2dcf2",colorDeleted:"#757e85",colorUsername:"#9ca6af",colorTimestamp:"#828c94",backgroundDate:"#e5effa",colorDate:"#505a62",backgroundSystem:"#e5effa",colorSystem:"#505a62",backgroundMedia:"rgba(0, 0, 0, 0.15)",backgroundReply:"rgba(0, 0, 0, 0.08)",colorReplyUsername:"#0a0a0a",colorReply:"#6e6e6e",colorTag:"#0d579c",backgroundImage:"#ddd",colorNewMessages:"#1976d2",backgroundScrollCounter:"#0696c7",colorScrollCounter:"#fff",backgroundReaction:"#eee",borderStyleReaction:"1px solid #eee",backgroundReactionHover:"#fff",borderStyleReactionHover:"1px solid #ddd",colorReactionCounter:"#0a0a0a",backgroundReactionMe:"#cfecf5",borderStyleReactionMe:"1px solid #3b98b8",backgroundReactionHoverMe:"#cfecf5",borderStyleReactionHoverMe:"1px solid #3b98b8",colorReactionCounterMe:"#0b59b3",backgroundAudioRecord:"#eb4034",backgroundAudioLine:"rgba(0, 0, 0, 0.15)",backgroundAudioProgress:"#455247",backgroundAudioProgressSelector:"#455247",colorFileExtension:"#757e85"},markdown:{background:"rgba(239, 239, 239, 0.7)",border:"rgba(212, 212, 212, 0.9)",color:"#e01e5a",colorMulti:"#0a0a0a"},room:{colorUsername:"#0a0a0a",colorMessage:"#67717a",colorTimestamp:"#a2aeb8",colorStateOnline:"#4caf50",colorStateOffline:"#9ca6af",backgroundCounterBadge:"#0696c7",colorCounterBadge:"#fff"},emoji:{background:"#fff"},icons:{search:"#9ca6af",add:"#1976d2",toggle:"#0a0a0a",menu:"#0a0a0a",close:"#9ca6af",closeImage:"#fff",file:"#1976d2",paperclip:"#1976d2",closeOutline:"#000",closePreview:"#fff",send:"#1976d2",sendDisabled:"#9ca6af",emoji:"#1976d2",emojiReaction:"rgba(0, 0, 0, 0.3)",document:"#1976d2",pencil:"#9e9e9e",checkmark:"#9e9e9e",checkmarkSeen:"#0696c7",eye:"#fff",dropdownMessage:"#fff",dropdownMessageBackground:"rgba(0, 0, 0, 0.25)",dropdownRoom:"#9e9e9e",dropdownScroll:"#0a0a0a",microphone:"#1976d2",audioPlay:"#455247",audioPause:"#455247",audioCancel:"#eb4034",audioConfirm:"#1ba65b"}},dark:{general:{color:"#fff",colorButtonClear:"#fff",colorButton:"#fff",backgroundColorButton:"#1976d2",backgroundInput:"#202223",colorPlaceholder:"#596269",colorCaret:"#fff",colorSpinner:"#fff",borderStyle:"none",backgroundScrollIcon:"#fff"},container:{border:"none",borderRadius:"4px",boxShadow:"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)"},header:{background:"#181a1b",colorRoomName:"#fff",colorRoomInfo:"#9ca6af"},footer:{background:"#131415",borderStyleInput:"none",borderInputSelected:"#1976d2",backgroundReply:"#1b1c1c",backgroundTagActive:"#1b1c1c",backgroundTag:"#131415"},content:{background:"#131415"},sidemenu:{background:"#181a1b",backgroundHover:"#202224",backgroundActive:"#151617",colorActive:"#fff",borderColorSearch:"#181a1b"},dropdown:{background:"#2a2c33",backgroundHover:"#26282e"},message:{background:"#22242a",backgroundMe:"#1f7e80",color:"#fff",colorStarted:"#9ca6af",backgroundDeleted:"#1b1c21",backgroundSelected:"#c2dcf2",colorDeleted:"#a2a5a8",colorUsername:"#b3bac9",colorTimestamp:"#ebedf2",backgroundDate:"rgba(0, 0, 0, 0.3)",colorDate:"#bec5cc",backgroundSystem:"rgba(0, 0, 0, 0.3)",colorSystem:"#bec5cc",backgroundMedia:"rgba(0, 0, 0, 0.18)",backgroundReply:"rgba(0, 0, 0, 0.18)",colorReplyUsername:"#fff",colorReply:"#d6d6d6",colorTag:"#f0c60a",backgroundImage:"#ddd",colorNewMessages:"#fff",backgroundScrollCounter:"#1976d2",colorScrollCounter:"#fff",backgroundReaction:"none",borderStyleReaction:"none",backgroundReactionHover:"#202223",borderStyleReactionHover:"none",colorReactionCounter:"#fff",backgroundReactionMe:"#4e9ad1",borderStyleReactionMe:"none",backgroundReactionHoverMe:"#4e9ad1",borderStyleReactionHoverMe:"none",colorReactionCounterMe:"#fff",backgroundAudioRecord:"#eb4034",backgroundAudioLine:"rgba(255, 255, 255, 0.15)",backgroundAudioProgress:"#b7d4d3",backgroundAudioProgressSelector:"#b7d4d3",colorFileExtension:"#a2a5a8"},markdown:{background:"rgba(239, 239, 239, 0.7)",border:"rgba(212, 212, 212, 0.9)",color:"#e01e5a",colorMulti:"#0a0a0a"},room:{colorUsername:"#fff",colorMessage:"#6c7278",colorTimestamp:"#6c7278",colorStateOnline:"#4caf50",colorStateOffline:"#596269",backgroundCounterBadge:"#1976d2",colorCounterBadge:"#fff"},emoji:{background:"#343740"},icons:{search:"#596269",add:"#fff",toggle:"#fff",menu:"#fff",close:"#9ca6af",closeImage:"#fff",file:"#1976d2",paperclip:"#fff",closeOutline:"#fff",closePreview:"#fff",send:"#fff",sendDisabled:"#646a70",emoji:"#fff",emojiReaction:"#fff",document:"#1976d2",pencil:"#ebedf2",checkmark:"#ebedf2",checkmarkSeen:"#f0d90a",eye:"#fff",dropdownMessage:"#fff",dropdownMessageBackground:"rgba(0, 0, 0, 0.25)",dropdownRoom:"#fff",dropdownScroll:"#0a0a0a",microphone:"#fff",audioPlay:"#b7d4d3",audioPause:"#b7d4d3",audioCancel:"#eb4034",audioConfirm:"#1ba65b"}}},uP=({general:e,container:t,header:n,footer:o,sidemenu:r,content:s,dropdown:i,message:a,markdown:l,room:c,emoji:u,icons:d})=>({"--chat-color":e.color,"--chat-color-button-clear":e.colorButtonClear,"--chat-color-button":e.colorButton,"--chat-bg-color-button":e.backgroundColorButton,"--chat-bg-color-input":e.backgroundInput,"--chat-color-spinner":e.colorSpinner,"--chat-color-placeholder":e.colorPlaceholder,"--chat-color-caret":e.colorCaret,"--chat-border-style":e.borderStyle,"--chat-bg-scroll-icon":e.backgroundScrollIcon,"--chat-container-border":t.border,"--chat-container-border-radius":t.borderRadius,"--chat-container-box-shadow":t.boxShadow,"--chat-header-bg-color":n.background,"--chat-header-color-name":n.colorRoomName,"--chat-header-color-info":n.colorRoomInfo,"--chat-footer-bg-color":o.background,"--chat-border-style-input":o.borderStyleInput,"--chat-border-color-input-selected":o.borderInputSelected,"--chat-footer-bg-color-reply":o.backgroundReply,"--chat-footer-bg-color-tag-active":o.backgroundTagActive,"--chat-footer-bg-color-tag":o.backgroundTag,"--chat-content-bg-color":s.background,"--chat-sidemenu-bg-color":r.background,"--chat-sidemenu-bg-color-hover":r.backgroundHover,"--chat-sidemenu-bg-color-active":r.backgroundActive,"--chat-sidemenu-color-active":r.colorActive,"--chat-sidemenu-border-color-search":r.borderColorSearch,"--chat-dropdown-bg-color":i.background,"--chat-dropdown-bg-color-hover":i.backgroundHover,"--chat-message-bg-color":a.background,"--chat-message-bg-color-me":a.backgroundMe,"--chat-message-color-started":a.colorStarted,"--chat-message-bg-color-deleted":a.backgroundDeleted,"--chat-message-bg-color-selected":a.backgroundSelected,"--chat-message-color-deleted":a.colorDeleted,"--chat-message-color-username":a.colorUsername,"--chat-message-color-timestamp":a.colorTimestamp,"--chat-message-bg-color-date":a.backgroundDate,"--chat-message-color-date":a.colorDate,"--chat-message-bg-color-system":a.backgroundSystem,"--chat-message-color-system":a.colorSystem,"--chat-message-color":a.color,"--chat-message-bg-color-media":a.backgroundMedia,"--chat-message-bg-color-reply":a.backgroundReply,"--chat-message-color-reply-username":a.colorReplyUsername,"--chat-message-color-reply-content":a.colorReply,"--chat-message-color-tag":a.colorTag,"--chat-message-bg-color-image":a.backgroundImage,"--chat-message-color-new-messages":a.colorNewMessages,"--chat-message-bg-color-scroll-counter":a.backgroundScrollCounter,"--chat-message-color-scroll-counter":a.colorScrollCounter,"--chat-message-bg-color-reaction":a.backgroundReaction,"--chat-message-border-style-reaction":a.borderStyleReaction,"--chat-message-bg-color-reaction-hover":a.backgroundReactionHover,"--chat-message-border-style-reaction-hover":a.borderStyleReactionHover,"--chat-message-color-reaction-counter":a.colorReactionCounter,"--chat-message-bg-color-reaction-me":a.backgroundReactionMe,"--chat-message-border-style-reaction-me":a.borderStyleReactionMe,"--chat-message-bg-color-reaction-hover-me":a.backgroundReactionHoverMe,"--chat-message-border-style-reaction-hover-me":a.borderStyleReactionHoverMe,"--chat-message-color-reaction-counter-me":a.colorReactionCounterMe,"--chat-message-bg-color-audio-record":a.backgroundAudioRecord,"--chat-message-bg-color-audio-line":a.backgroundAudioLine,"--chat-message-bg-color-audio-progress":a.backgroundAudioProgress,"--chat-message-bg-color-audio-progress-selector":a.backgroundAudioProgressSelector,"--chat-message-color-file-extension":a.colorFileExtension,"--chat-markdown-bg":l.background,"--chat-markdown-border":l.border,"--chat-markdown-color":l.color,"--chat-markdown-color-multi":l.colorMulti,"--chat-room-color-username":c.colorUsername,"--chat-room-color-message":c.colorMessage,"--chat-room-color-timestamp":c.colorTimestamp,"--chat-room-color-online":c.colorStateOnline,"--chat-room-color-offline":c.colorStateOffline,"--chat-room-bg-color-badge":c.backgroundCounterBadge,"--chat-room-color-badge":c.colorCounterBadge,"--chat-emoji-bg-color":u.background,"--chat-icon-color-search":d.search,"--chat-icon-color-add":d.add,"--chat-icon-color-toggle":d.toggle,"--chat-icon-color-menu":d.menu,"--chat-icon-color-close":d.close,"--chat-icon-color-close-image":d.closeImage,"--chat-icon-color-file":d.file,"--chat-icon-color-paperclip":d.paperclip,"--chat-icon-color-close-outline":d.closeOutline,"--chat-icon-color-close-preview":d.closePreview,"--chat-icon-color-send":d.send,"--chat-icon-color-send-disabled":d.sendDisabled,"--chat-icon-color-emoji":d.emoji,"--chat-icon-color-emoji-reaction":d.emojiReaction,"--chat-icon-color-document":d.document,"--chat-icon-color-pencil":d.pencil,"--chat-icon-color-checkmark":d.checkmark,"--chat-icon-color-checkmark-seen":d.checkmarkSeen,"--chat-icon-color-eye":d.eye,"--chat-icon-color-dropdown-message":d.dropdownMessage,"--chat-icon-bg-dropdown-message":d.dropdownMessageBackground,"--chat-icon-color-dropdown-room":d.dropdownRoom,"--chat-icon-color-dropdown-scroll":d.dropdownScroll,"--chat-icon-color-microphone":d.microphone,"--chat-icon-color-audio-play":d.audioPlay,"--chat-icon-color-audio-pause":d.audioPause,"--chat-icon-color-audio-cancel":d.audioCancel,"--chat-icon-color-audio-confirm":d.audioConfirm});var dP='.vac-fade-spinner-enter-from{opacity:0}.vac-fade-spinner-enter-active{transition:opacity .8s}.vac-fade-spinner-leave-active{transition:opacity .2s;opacity:0}.vac-fade-image-enter-from{opacity:0}.vac-fade-image-enter-active{transition:opacity 1s}.vac-fade-image-leave-active{transition:opacity .5s;opacity:0}.vac-fade-message-enter-from{opacity:0}.vac-fade-message-enter-active{transition:opacity .5s}.vac-fade-message-leave-active{transition:opacity .2s;opacity:0}.vac-slide-left-enter-active,.vac-slide-right-enter-active{transition:all .3s ease;transition-property:transform,opacity}.vac-slide-left-leave-active,.vac-slide-right-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)!important;transition-property:transform,opacity}.vac-slide-left-enter-from,.vac-slide-left-leave-to{transform:translate(10px);opacity:0}.vac-slide-right-enter-from,.vac-slide-right-leave-to{transform:translate(-10px);opacity:0}.vac-slide-up-enter-active{transition:all .3s ease}.vac-slide-up-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.vac-slide-up-enter-from,.vac-slide-up-leave-to{transform:translateY(10px);opacity:0}.vac-bounce-enter-active{animation:vac-bounce-in .5s}.vac-bounce-leave-active{animation:vac-bounce-in .3s reverse}@keyframes vac-bounce-in{0%{transform:scale(0)}50%{transform:scale(1.05)}to{transform:scale(1)}}.vac-fade-preview-enter{opacity:0}.vac-fade-preview-enter-active{transition:opacity .1s}.vac-fade-preview-leave-active{transition:opacity .2s;opacity:0}.vac-bounce-preview-enter-active{animation:vac-bounce-image-in .4s}.vac-bounce-preview-leave-active{animation:vac-bounce-image-in .3s reverse}@keyframes vac-bounce-image-in{0%{transform:scale(.6)}to{transform:scale(1)}}.vac-menu-list{border-radius:4px;display:block;cursor:pointer;background:var(--chat-dropdown-bg-color);padding:6px 0}.vac-menu-list :hover{background:var(--chat-dropdown-bg-color-hover);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-list :not(:hover){transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;min-height:30px;padding:5px 16px;position:relative;white-space:nowrap;line-height:30px}.vac-menu-options{position:absolute;right:10px;top:20px;z-index:9999;min-width:150px;display:inline-block;border-radius:4px;font-size:14px;color:var(--chat-color);overflow-y:auto;overflow-x:hidden;contain:content;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-app-border{border:var(--chat-border-style)}.vac-app-border-t{border-top:var(--chat-border-style)}.vac-app-border-r{border-right:var(--chat-border-style)}.vac-app-border-b{border-bottom:var(--chat-border-style)}.vac-app-box-shadow{transition:all .5s;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-item-clickable{cursor:pointer}.vac-vertical-center{display:flex;align-items:center;height:100%}.vac-vertical-center .vac-vertical-container{width:100%;text-align:center}.vac-svg-button{max-height:30px;display:flex;cursor:pointer;transition:all .2s}.vac-svg-button:hover{transform:scale(1.1);opacity:.7}.vac-avatar{background-size:cover;background-position:center center;background-repeat:no-repeat;background-color:#ddd;height:42px;width:42px;min-height:42px;min-width:42px;margin-right:15px;border-radius:50%}.vac-blur-loading{filter:blur(3px)}.vac-badge-counter{height:13px;width:auto;min-width:13px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:3px;font-size:11px;font-weight:500}.vac-text-ellipsis{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-text-tag{color:var(--chat-message-color-tag);cursor:pointer}.vac-file-container{display:flex;align-content:center;justify-content:center;flex-wrap:wrap;text-align:center;background:var(--chat-bg-color-input);border:var(--chat-border-style-input);border-radius:4px;padding:10px}.vac-file-container svg{height:28px;width:28px}.vac-file-container .vac-text-extension{font-size:12px;color:var(--chat-message-color-file-extension);margin-top:-2px}.markdown p{margin:0}.markdown ol{display:flex;flex-direction:column;list-style-position:inside}.markdown ul{display:flex;flex-direction:column}.markdown code{display:block;font-size:12px;color:var(--chat-markdown-color-multi);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:4px 0;padding:7px}.markdown p code{display:inline-block;font-size:12px;color:var(--chat-markdown-color);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:2px 0;padding:2px 3px}.vac-card-window{width:100%;display:block;max-width:100%;background:var(--chat-content-bg-color);color:var(--chat-color);overflow-wrap:break-word;white-space:normal;border:var(--chat-container-border);border-radius:var(--chat-container-border-radius);box-shadow:var(--chat-container-box-shadow);-webkit-tap-highlight-color:transparent}.vac-card-window *{font-family:inherit}.vac-card-window a{color:#0d579c;font-weight:500}.vac-card-window .vac-chat-container{height:100%;display:flex}.vac-card-window .vac-chat-container input{min-width:10px}.vac-card-window .vac-chat-container textarea,.vac-card-window .vac-chat-container input[type=text],.vac-card-window .vac-chat-container input[type=search]{-webkit-appearance:none}.vac-media-preview{position:fixed;top:0;left:0;z-index:99;width:100vw;height:100vh;display:flex;align-items:center;background-color:#000c;outline:none}.vac-media-preview .vac-media-preview-container{height:calc(100% - 140px);width:calc(100% - 80px);padding:70px 40px;margin:0 auto}.vac-media-preview .vac-image-preview{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:center}.vac-media-preview video{width:100%;height:100%}.vac-media-preview .vac-svg-button{position:absolute;top:30px;right:30px;transform:scale(1.4)}@media only screen and (max-width: 768px){.vac-media-preview .vac-svg-button{top:20px;right:20px;transform:scale(1.2)}.vac-media-preview .vac-media-preview-container{width:calc(100% - 40px);padding:70px 20px}}.vac-col-messages{position:relative;height:100%;flex:1;overflow:hidden;display:flex;flex-flow:column}.vac-col-messages .vac-container-center{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.vac-col-messages .vac-room-empty{font-size:14px;color:#9ca6af;font-style:italic;line-height:20px;white-space:pre-line}.vac-col-messages .vac-room-empty div{padding:0 10%}.vac-col-messages .vac-container-scroll{background:var(--chat-content-bg-color);flex:1;overflow-y:auto;margin-right:1px;margin-top:65px;-webkit-overflow-scrolling:touch}.vac-col-messages .vac-container-scroll.vac-scroll-smooth{scroll-behavior:smooth}.vac-col-messages .vac-messages-container{padding:0 5px 5px}.vac-col-messages .vac-text-started{font-size:14px;color:var(--chat-message-color-started);font-style:italic;text-align:center;margin-top:25px;margin-bottom:20px}.vac-col-messages .vac-icon-scroll{position:absolute;bottom:80px;right:20px;padding:8px;background:var(--chat-bg-scroll-icon);border-radius:50%;box-shadow:0 1px 1px -1px #0003,0 1px 1px #00000024,0 1px 2px #0000001f;display:flex;cursor:pointer;z-index:10}.vac-col-messages .vac-icon-scroll svg{height:25px;width:25px}.vac-col-messages .vac-messages-count{position:absolute;top:-8px;left:11px;background-color:var(--chat-message-bg-color-scroll-counter);color:var(--chat-message-color-scroll-counter)}.vac-col-messages .vac-messages-hidden{opacity:0}@media only screen and (max-width: 768px){.vac-col-messages .vac-container-scroll{margin-top:50px}.vac-col-messages .vac-text-started{margin-top:20px}.vac-col-messages .vac-icon-scroll{bottom:70px}}.vac-room-header{position:absolute;display:flex;align-items:center;height:64px;width:100%;z-index:10;margin-right:1px;background:var(--chat-header-bg-color);border-top-right-radius:var(--chat-container-border-radius)}.vac-room-header .vac-room-wrapper{display:flex;align-items:center;min-width:0;height:100%;width:100%;padding:0 16px}.vac-room-header .vac-toggle-button{margin-right:15px}.vac-room-header .vac-toggle-button svg{height:26px;width:26px}.vac-room-header .vac-rotate-icon{transform:rotate(180deg)!important}.vac-room-header .vac-rotate-icon-init{transform:rotate(360deg)}.vac-room-header .vac-info-wrapper,.vac-room-header .vac-room-selection{display:flex;align-items:center;min-width:0;width:100%;height:100%}.vac-room-header .vac-room-selection .vac-selection-button{padding:8px 16px;color:var(--chat-color-button);background-color:var(--chat-bg-color-button);border-radius:4px;margin-right:10px;cursor:pointer;transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-button:hover{opacity:.7}.vac-room-header .vac-room-selection .vac-selection-button:active{opacity:.9}.vac-room-header .vac-room-selection .vac-selection-button .vac-selection-button-count{margin-left:6px;opacity:.9}.vac-room-header .vac-room-selection .vac-selection-cancel{display:flex;align-items:center;margin-left:auto;white-space:nowrap;color:var(--chat-color-button-clear);transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-cancel:hover{opacity:.7}.vac-room-header .vac-room-name{font-size:17px;font-weight:500;line-height:22px;color:var(--chat-header-color-name)}.vac-room-header .vac-room-info{font-size:13px;line-height:18px;color:var(--chat-header-color-info)}.vac-room-header .vac-room-options{margin-left:auto}@media only screen and (max-width: 768px){.vac-room-header{height:50px}.vac-room-header .vac-room-wrapper{padding:0 10px}.vac-room-header .vac-room-name{font-size:16px;line-height:22px}.vac-room-header .vac-room-info{font-size:12px;line-height:16px}.vac-room-header .vac-avatar{height:37px;width:37px;min-height:37px;min-width:37px}}.vac-room-footer{width:100%;border-bottom-right-radius:4px;z-index:10}.vac-box-footer{display:flex;position:relative;background:var(--chat-footer-bg-color);padding:10px 8px}.vac-textarea{max-height:300px;overflow-y:auto;height:20px;width:100%;line-height:20px;outline:0;resize:none;border-radius:20px;padding:12px 16px;box-sizing:content-box;font-size:16px;background:var(--chat-bg-color-input);color:var(--chat-color);caret-color:var(--chat-color-caret);border:var(--chat-border-style-input)}.vac-textarea::placeholder{color:var(--chat-color-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-textarea-outline{border:1px solid var(--chat-border-color-input-selected);box-shadow:inset 0 0 0 1px var(--chat-border-color-input-selected)}.vac-icon-textarea,.vac-icon-textarea-left{display:flex;align-items:center}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea{margin-left:5px}.vac-icon-textarea-left{display:flex;align-items:center;margin-right:5px}.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea-left .vac-icon-microphone{fill:var(--chat-icon-color-microphone);margin:0 7px}.vac-icon-textarea-left .vac-dot-audio-record{height:15px;width:15px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-record);animation:vac-scaling .8s ease-in-out infinite alternate}@keyframes vac-scaling{0%{transform:scale(1);opacity:.4}to{transform:scale(1.1);opacity:1}}.vac-icon-textarea-left .vac-dot-audio-record-time{font-size:16px;color:var(--chat-color);margin-left:8px;width:45px}.vac-icon-textarea-left .vac-icon-audio-stop,.vac-icon-textarea-left .vac-icon-audio-confirm{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop svg,.vac-icon-textarea-left .vac-icon-audio-confirm svg{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop{margin-right:20px}.vac-icon-textarea-left .vac-icon-audio-stop #vac-icon-close-outline{fill:var(--chat-icon-color-audio-cancel)}.vac-icon-textarea-left .vac-icon-audio-confirm{margin-right:3px;margin-left:12px}.vac-icon-textarea-left .vac-icon-audio-confirm #vac-icon-checkmark{fill:var(--chat-icon-color-audio-confirm)}.vac-send-disabled,.vac-send-disabled svg{cursor:none!important;pointer-events:none!important;transform:none!important}@media only screen and (max-width: 768px){.vac-room-footer{width:100%}.vac-box-footer{padding:7px 2px 7px 7px}.vac-box-footer.vac-box-footer-border{border-top:var(--chat-border-style-input)}.vac-textarea{padding:7px;line-height:18px}.vac-textarea::placeholder{color:transparent}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 5px!important}}@media only screen and (max-height: 768px){.vac-textarea{max-height:120px}}.vac-emojis-container{width:calc(100% - 16px);padding:10px 8px;background:var(--chat-footer-bg-color);display:flex;align-items:center;overflow:auto}.vac-emojis-container .vac-emoji-element{padding:0 8px;font-size:30px;border-radius:4px;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-emojis-container .vac-emoji-element-active{background:var(--chat-footer-bg-color-tag-active)}@media only screen and (max-width: 768px){.vac-emojis-container{width:calc(100% - 10px);padding:7px 5px}.vac-emojis-container .vac-emoji-element{padding:0 7px;font-size:26px}}.vac-reply-container{display:flex;padding:10px 10px 0;background:var(--chat-footer-bg-color);align-items:center;width:calc(100% - 20px)}.vac-reply-container .vac-reply-box{width:100%;overflow:hidden;background:var(--chat-footer-bg-color-reply);border-radius:4px;padding:8px 10px}.vac-reply-container .vac-reply-info{overflow:hidden}.vac-reply-container .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-container .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content);white-space:pre-line}.vac-reply-container .vac-icon-reply{margin-left:10px}.vac-reply-container .vac-icon-reply svg{height:20px;width:20px}.vac-reply-container .vac-image-reply{max-height:100px;max-width:200px;margin:4px 10px 0 0;border-radius:4px}.vac-reply-container .vac-audio-reply{margin-right:10px}.vac-reply-container .vac-file-container{max-width:80px}@media only screen and (max-width: 768px){.vac-reply-container{padding:5px 8px;width:calc(100% - 16px)}}.vac-room-files-container{display:flex;align-items:center;padding:10px 6px 0;background:var(--chat-footer-bg-color)}.vac-room-files-container .vac-files-box{display:flex;overflow:auto;width:calc(100% - 30px)}.vac-room-files-container video{height:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-files-container .vac-icon-close{margin-left:auto}.vac-room-files-container .vac-icon-close svg{height:20px;width:20px}@media only screen and (max-width: 768px){.vac-files-container{padding:6px 4px 4px 2px}}.vac-room-file-container{display:flex;position:relative;margin:0 4px}.vac-room-file-container .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:100px;width:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-file-container .vac-file-container{height:80px;width:80px}.vac-room-file-container .vac-icon-remove{position:absolute;top:6px;left:6px;z-index:10}.vac-room-file-container .vac-icon-remove svg{height:20px;width:20px;border-radius:50%}.vac-room-file-container .vac-icon-remove:before{content:" ";position:absolute;width:100%;height:100%;background:rgba(0,0,0,.5);border-radius:50%;z-index:-1}.vac-tags-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-tags-container .vac-tags-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-tags-container .vac-tags-box-active{background:var(--chat-footer-bg-color-tag-active)}.vac-tags-container .vac-tags-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-tags-container .vac-tags-avatar{height:34px;width:34px;min-height:34px;min-width:34px}.vac-tags-container .vac-tags-username{font-size:14px}@media only screen and (max-width: 768px){.vac-tags-container .vac-tags-box{height:50px}.vac-tags-container .vac-tags-info{padding:0 12px}}.vac-template-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-template-container .vac-template-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-template-container .vac-template-active{background:var(--chat-footer-bg-color-tag-active)}.vac-template-container .vac-template-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-template-container .vac-template-tag{font-size:14px;font-weight:700;margin-right:10px}.vac-template-container .vac-template-text{font-size:14px}@media only screen and (max-width: 768px){.vac-template-container .vac-template-box{height:50px}.vac-template-container .vac-template-info{padding:0 12px}}.vac-rooms-container{display:flex;flex-flow:column;flex:0 0 25%;min-width:260px;max-width:500px;position:relative;background:var(--chat-sidemenu-bg-color);height:100%;border-top-left-radius:var(--chat-container-border-radius);border-bottom-left-radius:var(--chat-container-border-radius)}.vac-rooms-container.vac-rooms-container-full{flex:0 0 100%;max-width:100%}.vac-rooms-container .vac-rooms-empty{font-size:14px;color:#9ca6af;font-style:italic;text-align:center;margin:40px 0;line-height:20px;white-space:pre-line}.vac-rooms-container .vac-room-list{flex:1;position:relative;max-width:100%;padding:0 10px 5px;overflow-y:auto}.vac-rooms-container .vac-room-item{border-radius:8px;align-items:center;display:flex;flex:1 1 100%;margin-bottom:5px;padding:0 14px;position:relative;min-height:71px;transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-rooms-container .vac-room-item:hover{background:var(--chat-sidemenu-bg-color-hover)}.vac-rooms-container .vac-room-item:not(.vac-room-selected){cursor:pointer}.vac-rooms-container .vac-room-selected{color:var(--chat-sidemenu-color-active)!important;background:var(--chat-sidemenu-bg-color-active)!important}.vac-rooms-container .vac-room-selected:hover{background:var(--chat-sidemenu-bg-color-active)!important}@media only screen and (max-width: 768px){.vac-rooms-container .vac-room-list{padding:0 7px 5px}.vac-rooms-container .vac-room-item{min-height:60px;padding:0 8px}}.vac-room-container{display:flex;flex:1;align-items:center;width:100%}.vac-room-container .vac-name-container{flex:1}.vac-room-container .vac-title-container{display:flex;align-items:center;line-height:25px}.vac-room-container .vac-state-circle{width:9px;height:9px;border-radius:50%;background-color:var(--chat-room-color-offline);margin-right:6px;transition:.3s}.vac-room-container .vac-state-online{background-color:var(--chat-room-color-online)}.vac-room-container .vac-room-name{flex:1;color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-text-date{margin-left:5px;font-size:11px;color:var(--chat-room-color-timestamp)}.vac-room-container .vac-text-last{display:flex;align-items:center;font-size:12px;line-height:19px;color:var(--chat-room-color-message)}.vac-room-container .vac-message-new{color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-icon-check{display:flex;vertical-align:middle;height:14px;width:14px;margin-top:-2px;margin-right:2px}.vac-room-container .vac-icon-microphone{height:15px;width:15px;vertical-align:middle;margin:-3px 1px 0 -2px;fill:var(--chat-room-color-message)}.vac-room-container .vac-room-options-container{display:flex;margin-left:auto}.vac-room-container .vac-room-badge{background-color:var(--chat-room-bg-color-badge);color:var(--chat-room-color-badge);margin-left:5px}.vac-room-container .vac-list-room-options{height:19px;width:19px;align-items:center;margin-left:5px}.vac-box-empty{margin-top:10px}@media only screen and (max-width: 768px){.vac-box-empty{margin-top:7px}}.vac-box-search{position:sticky;display:flex;align-items:center;height:64px;padding:0 15px}.vac-box-search .vac-icon-search{display:flex;position:absolute;left:30px}.vac-box-search .vac-icon-search svg{width:18px;height:18px}.vac-box-search .vac-input{height:38px;width:100%;background:var(--chat-bg-color-input);color:var(--chat-color);font-size:15px;outline:0;caret-color:var(--chat-color-caret);padding:10px 10px 10px 40px;border:1px solid var(--chat-sidemenu-border-color-search);border-radius:20px}.vac-box-search .vac-input::placeholder{color:var(--chat-color-placeholder)}.vac-box-search .vac-add-icon{margin-left:auto;padding-left:10px}@media only screen and (max-width: 768px){.vac-box-search{height:58px}}.vac-message-wrapper .vac-card-info{border-radius:4px;text-align:center;margin:10px auto;font-size:12px;padding:4px;display:block;overflow-wrap:break-word;position:relative;white-space:normal;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-card-date{max-width:150px;font-weight:500;text-transform:uppercase;color:var(--chat-message-color-date);background-color:var(--chat-message-bg-color-date)}.vac-message-wrapper .vac-card-system{max-width:250px;padding:8px 4px;color:var(--chat-message-color-system);background-color:var(--chat-message-bg-color-system)}.vac-message-wrapper .vac-line-new{color:var(--chat-message-color-new-messages);position:relative;text-align:center;font-size:13px;padding:10px 0}.vac-message-wrapper .vac-line-new:after,.vac-message-wrapper .vac-line-new:before{border-top:1px solid var(--chat-message-color-new-messages);content:"";left:0;position:absolute;top:50%;width:calc(50% - 60px)}.vac-message-wrapper .vac-line-new:before{left:auto;right:0}.vac-message-wrapper .vac-message-box{display:flex;flex:0 0 50%;max-width:50%;justify-content:flex-start;line-height:1.4}.vac-message-wrapper .vac-avatar{height:28px;width:28px;min-height:28px;min-width:28px;margin:0 0 2px;align-self:flex-end}.vac-message-wrapper .vac-avatar-current-offset{margin-right:28px}.vac-message-wrapper .vac-avatar-offset{margin-left:28px}.vac-message-wrapper .vac-failure-container{position:relative;align-self:flex-end;height:20px;width:20px;margin:0 0 2px -4px;border-radius:50%;background-color:#f44336}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:6px}.vac-message-wrapper .vac-failure-container .vac-failure-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:15px;font-weight:700}.vac-message-wrapper .vac-message-container{position:relative;padding:2px 10px;align-items:end;min-width:100px;box-sizing:content-box}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-offset-current{margin-left:50%;justify-content:flex-end}.vac-message-wrapper .vac-message-card{background-color:var(--chat-message-bg-color);color:var(--chat-message-color);border-radius:8px;font-size:14px;padding:6px 9px 3px;white-space:pre-line;max-width:100%;-webkit-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);will-change:box-shadow;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-message-highlight{box-shadow:0 1px 2px -1px #0000001a,0 1px 2px -1px #0000001c,0 1px 5px -1px #0000001c}.vac-message-wrapper .vac-message-current{background-color:var(--chat-message-bg-color-me)!important}.vac-message-wrapper .vac-message-deleted{color:var(--chat-message-color-deleted)!important;font-size:13px!important;font-style:italic!important;background-color:var(--chat-message-bg-color-deleted)!important}.vac-message-wrapper .vac-message-selected{background-color:var(--chat-message-bg-color-selected)!important;transition:background-color .2s}.vac-message-wrapper .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:250px;width:250px;max-width:100%;border-radius:4px;margin:4px auto 5px;transition:.4s filter linear}.vac-message-wrapper .vac-text-username{font-size:13px;color:var(--chat-message-color-username);margin-bottom:2px}.vac-message-wrapper .vac-username-reply{margin-bottom:5px}.vac-message-wrapper .vac-text-timestamp{font-size:10px;color:var(--chat-message-color-timestamp);text-align:right}.vac-message-wrapper .vac-progress-time{float:left;margin:-2px 0 0 40px;color:var(--chat-color);font-size:12px}.vac-message-wrapper .vac-icon-edited{-webkit-box-align:center;align-items:center;display:-webkit-inline-box;display:inline-flex;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;vertical-align:middle;margin:0 4px 2px}.vac-message-wrapper .vac-icon-edited svg{height:12px;width:12px}.vac-message-wrapper .vac-icon-check{height:14px;width:14px;vertical-align:middle;margin:-3px -3px 0 3px}@media only screen and (max-width: 768px){.vac-message-wrapper .vac-message-container{padding:2px 3px 1px}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-message-box{flex:0 0 80%;max-width:80%}.vac-message-wrapper .vac-avatar{height:25px;width:25px;min-height:25px;min-width:25px;margin:0 6px 1px 0}.vac-message-wrapper .vac-avatar.vac-avatar-current{margin:0 0 1px 6px}.vac-message-wrapper .vac-avatar-current-offset{margin-right:31px}.vac-message-wrapper .vac-avatar-offset{margin-left:31px}.vac-message-wrapper .vac-failure-container{margin-left:2px}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:0}.vac-message-wrapper .vac-offset-current{margin-left:20%}.vac-message-wrapper .vac-progress-time{margin-left:37px}}.vac-audio-player{display:flex;margin:8px 0 5px}.vac-audio-player .vac-svg-button{max-width:18px;margin-left:7px}@media only screen and (max-width: 768px){.vac-audio-player{margin:4px 0 0}.vac-audio-player .vac-svg-button{max-width:16px;margin-left:5px}}.vac-player-bar{display:flex;align-items:center;max-width:calc(100% - 18px);margin-right:7px;margin-left:20px}.vac-player-bar .vac-player-progress{width:190px}.vac-player-bar .vac-player-progress .vac-line-container{position:relative;height:4px;border-radius:5px;background-color:var(--chat-message-bg-color-audio-line)}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-progress{position:absolute;height:inherit;background-color:var(--chat-message-bg-color-audio-progress);border-radius:inherit}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{position:absolute;top:-5px;margin-left:-7px;height:14px;width:14px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-progress-selector);transition:transform .25s}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot__active{transform:scale(1.2)}@media only screen and (max-width: 768px){.vac-player-bar{margin-right:5px}.vac-player-bar .vac-player-progress .vac-line-container{height:3px}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{height:12px;width:12px;top:-5px;margin-left:-5px}}.vac-message-actions-wrapper .vac-options-container{position:absolute;top:2px;right:10px;height:40px;width:70px;overflow:hidden;border-top-right-radius:8px}.vac-message-actions-wrapper .vac-blur-container{position:absolute;height:100%;width:100%;left:8px;bottom:10px;background:var(--chat-message-bg-color);filter:blur(3px);border-bottom-left-radius:8px}.vac-message-actions-wrapper .vac-options-me{background:var(--chat-message-bg-color-me)}.vac-message-actions-wrapper .vac-message-options{background:var(--chat-icon-bg-dropdown-message);border-radius:50%;position:absolute;top:7px;right:7px}.vac-message-actions-wrapper .vac-message-options svg{height:17px;width:17px;padding:5px;margin:-5px}.vac-message-actions-wrapper .vac-message-emojis{position:absolute;top:6px;right:30px}.vac-message-actions-wrapper .vac-menu-options{right:15px}.vac-message-actions-wrapper .vac-menu-left{right:-118px}@media only screen and (max-width: 768px){.vac-message-actions-wrapper .vac-options-container{right:3px}.vac-message-actions-wrapper .vac-menu-left{right:-50px}}.vac-message-files-container .vac-file-wrapper{position:relative;width:fit-content}.vac-message-files-container .vac-file-wrapper .vac-file-container{height:60px;width:60px;margin:3px 0 5px;cursor:pointer;transition:all .6s}.vac-message-files-container .vac-file-wrapper .vac-file-container:hover{opacity:.85}.vac-message-files-container .vac-file-wrapper .vac-file-container svg{height:30px;width:30px}.vac-message-files-container .vac-file-wrapper .vac-file-container.vac-file-container-progress{background-color:#0000004d}.vac-message-file-container{position:relative;z-index:0}.vac-message-file-container .vac-message-image-container{cursor:pointer}.vac-message-file-container .vac-image-buttons{position:absolute;width:100%;height:100%;border-radius:4px;background:linear-gradient(to bottom,rgba(0,0,0,0) 55%,rgba(0,0,0,.02) 60%,rgba(0,0,0,.05) 65%,rgba(0,0,0,.1) 70%,rgba(0,0,0,.2) 75%,rgba(0,0,0,.3) 80%,rgba(0,0,0,.5) 85%,rgba(0,0,0,.6) 90%,rgba(0,0,0,.7) 95%,rgba(0,0,0,.8) 100%)}.vac-message-file-container .vac-image-buttons svg{height:26px;width:26px}.vac-message-file-container .vac-image-buttons .vac-button-view,.vac-message-file-container .vac-image-buttons .vac-button-download{position:absolute;bottom:6px;left:7px}.vac-message-file-container .vac-image-buttons :first-child{left:40px}.vac-message-file-container .vac-image-buttons .vac-button-view{max-width:18px;bottom:8px}.vac-message-file-container .vac-video-container{width:350px;max-width:100%;margin:4px auto 5px;cursor:pointer}.vac-message-file-container .vac-video-container video{width:100%;height:100%;border-radius:4px}.vac-button-reaction{display:inline-flex;align-items:center;border:var(--chat-message-border-style-reaction);outline:none;background:var(--chat-message-bg-color-reaction);border-radius:4px;margin:4px 2px 0;transition:.3s;padding:0 5px;font-size:18px;line-height:23px}.vac-button-reaction span{font-size:11px;font-weight:500;min-width:7px;color:var(--chat-message-color-reaction-counter)}.vac-button-reaction:hover{border:var(--chat-message-border-style-reaction-hover);background:var(--chat-message-bg-color-reaction-hover);cursor:pointer}.vac-button-reaction.vac-reaction-me{border:var(--chat-message-border-style-reaction-me);background:var(--chat-message-bg-color-reaction-me)}.vac-button-reaction.vac-reaction-me span{color:var(--chat-message-color-reaction-counter-me)}.vac-button-reaction.vac-reaction-me:hover{border:var(--chat-message-border-style-reaction-hover-me);background:var(--chat-message-bg-color-reaction-hover-me)}.vac-reply-message{background:var(--chat-message-bg-color-reply);border-radius:4px;margin:-1px -5px 8px;padding:8px 10px}.vac-reply-message .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-message .vac-image-reply-container{width:70px}.vac-reply-message .vac-image-reply-container .vac-message-image-reply{height:70px;width:70px;margin:4px auto 3px}.vac-reply-message .vac-video-reply-container{width:200px;max-width:100%}.vac-reply-message .vac-video-reply-container video{width:100%;height:100%;border-radius:4px}.vac-reply-message .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content)}.vac-reply-message .vac-file-container{height:60px;width:60px}.vac-emoji-wrapper{position:relative;display:flex}.vac-emoji-wrapper .vac-emoji-reaction svg{height:19px;width:19px}.vac-emoji-wrapper .vac-emoji-picker{position:absolute;z-index:9999;bottom:32px;right:10px;width:300px;padding-top:4px;overflow:scroll;box-sizing:border-box;border-radius:.5rem;background:var(--chat-emoji-bg-color);box-shadow:0 1px 2px -2px #0000001a,0 1px 2px -1px #0000001a,0 1px 2px 1px #0000001a;scrollbar-width:none}.vac-emoji-wrapper .vac-emoji-picker::-webkit-scrollbar{display:none}.vac-emoji-wrapper .vac-emoji-picker.vac-picker-reaction{position:fixed;top:initial;right:initial}.vac-emoji-wrapper .vac-emoji-picker emoji-picker{height:100%;width:100%;--emoji-size: 1.2rem;--background: var(--chat-emoji-bg-color);--emoji-padding: .4rem;--border-color: var(--chat-sidemenu-border-color-search);--button-hover-background: var(--chat-sidemenu-bg-color-hover);--button-active-background: var(--chat-sidemenu-bg-color-hover)}.vac-format-message-wrapper .vac-format-container{display:inline}.vac-format-message-wrapper .vac-icon-deleted{height:14px;width:14px;vertical-align:middle;margin:-2px 2px 0 0;fill:var(--chat-message-color-deleted)}.vac-format-message-wrapper .vac-icon-deleted.vac-icon-deleted-room{margin:-3px 1px 0 0;fill:var(--chat-room-color-message)}.vac-format-message-wrapper .vac-image-link-container{background-color:var(--chat-message-bg-color-media);padding:8px;margin:2px auto;border-radius:4px}.vac-format-message-wrapper .vac-image-link{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:contain;background-position:center center!important;background-repeat:no-repeat!important;height:150px;width:150px;max-width:100%;border-radius:4px;margin:0 auto}.vac-format-message-wrapper .vac-image-link-message{max-width:166px;font-size:12px}.vac-loader-wrapper.vac-container-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-loader-wrapper.vac-container-top{padding:21px}.vac-loader-wrapper.vac-container-top #vac-circle{height:20px;width:20px}.vac-loader-wrapper #vac-circle{margin:auto;height:28px;width:28px;border:3px rgba(0,0,0,.25) solid;border-top:3px var(--chat-color-spinner) solid;border-right:3px var(--chat-color-spinner) solid;border-bottom:3px var(--chat-color-spinner) solid;border-radius:50%;-webkit-animation:vac-spin 1s infinite linear;animation:vac-spin 1s infinite linear}@media only screen and (max-width: 768px){.vac-loader-wrapper #vac-circle{height:24px;width:24px}.vac-loader-wrapper.vac-container-top{padding:18px}.vac-loader-wrapper.vac-container-top #vac-circle{height:16px;width:16px}}@-webkit-keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}#vac-icon-search{fill:var(--chat-icon-color-search)}#vac-icon-add{fill:var(--chat-icon-color-add)}#vac-icon-toggle{fill:var(--chat-icon-color-toggle)}#vac-icon-menu{fill:var(--chat-icon-color-menu)}#vac-icon-close{fill:var(--chat-icon-color-close)}#vac-icon-close-image{fill:var(--chat-icon-color-close-image)}#vac-icon-file{fill:var(--chat-icon-color-file)}#vac-icon-paperclip{fill:var(--chat-icon-color-paperclip)}#vac-icon-close-outline{fill:var(--chat-icon-color-close-outline)}#vac-icon-close-outline-preview{fill:var(--chat-icon-color-close-preview)}#vac-icon-send{fill:var(--chat-icon-color-send)}#vac-icon-send-disabled{fill:var(--chat-icon-color-send-disabled)}#vac-icon-emoji{fill:var(--chat-icon-color-emoji)}#vac-icon-emoji-reaction{fill:var(--chat-icon-color-emoji-reaction)}#vac-icon-document{fill:var(--chat-icon-color-document)}#vac-icon-pencil{fill:var(--chat-icon-color-pencil)}#vac-icon-checkmark,#vac-icon-double-checkmark{fill:var(--chat-icon-color-checkmark)}#vac-icon-checkmark-seen,#vac-icon-double-checkmark-seen{fill:var(--chat-icon-color-checkmark-seen)}#vac-icon-eye{fill:var(--chat-icon-color-eye)}#vac-icon-dropdown-message{fill:var(--chat-icon-color-dropdown-message)}#vac-icon-dropdown-room{fill:var(--chat-icon-color-dropdown-room)}#vac-icon-dropdown-scroll{fill:var(--chat-icon-color-dropdown-scroll)}#vac-icon-audio-play{fill:var(--chat-icon-color-audio-play)}#vac-icon-audio-pause{fill:var(--chat-icon-color-audio-pause)}.vac-progress-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-progress-wrapper circle{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.vac-progress-wrapper .vac-progress-content{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;margin-top:-2px;background-color:#000000b3;border-radius:50%}.vac-progress-wrapper .vac-progress-content .vac-progress-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-weight:700;color:#fff}.vac-progress-wrapper .vac-progress-content .vac-progress-text .vac-progress-pourcent{font-size:9px;font-weight:400}\n';const fP={name:"ChatContainer",components:{RoomsList:LS,Room:JB,MediaPreview:aP},props:{height:{type:String,default:"600px"},theme:{type:String,default:"light"},styles:{type:[Object,String],default:()=>({})},responsiveBreakpoint:{type:Number,default:900},singleRoom:{type:[Boolean,String],default:!1},roomsListOpened:{type:[Boolean,String],default:!0},textMessages:{type:[Object,String],default:()=>({})},currentUserId:{type:String,default:""},rooms:{type:[Array,String],default:()=>[]},roomsOrder:{type:String,default:"desc"},loadingRooms:{type:[Boolean,String],default:!1},roomsLoaded:{type:[Boolean,String],default:!1},roomId:{type:String,default:null},loadFirstRoom:{type:[Boolean,String],default:!0},messages:{type:[Array,String],default:()=>[]},messagesLoaded:{type:[Boolean,String],default:!1},roomActions:{type:[Array,String],default:()=>[]},menuActions:{type:[Array,String],default:()=>[]},messageActions:{type:[Array,String],default:()=>[{name:"replyMessage",title:"Reply"},{name:"editMessage",title:"Edit Message",onlyMe:!0},{name:"deleteMessage",title:"Delete Message",onlyMe:!0},{name:"selectMessages",title:"Select"}]},messageSelectionActions:{type:[Array,String],default:()=>[]},autoScroll:{type:[Object,String],default:()=>({send:{new:!0,newAfterScrollUp:!0},receive:{new:!0,newAfterScrollUp:!1}})},customSearchRoomEnabled:{type:[Boolean,String],default:!1},showSearch:{type:[Boolean,String],default:!0},showAddRoom:{type:[Boolean,String],default:!0},showSendIcon:{type:[Boolean,String],default:!0},showFiles:{type:[Boolean,String],default:!0},showAudio:{type:[Boolean,String],default:!0},audioBitRate:{type:Number,default:128},audioSampleRate:{type:Number,default:44100},showEmojis:{type:[Boolean,String],default:!0},showReactionEmojis:{type:[Boolean,String],default:!0},showNewMessagesDivider:{type:[Boolean,String],default:!0},showFooter:{type:[Boolean,String],default:!0},textFormatting:{type:[Object,String],default:()=>({disabled:!1})},linkOptions:{type:[Object,String],default:()=>({disabled:!1,target:"_blank",rel:null})},roomInfoEnabled:{type:[Boolean,String],default:!1},textareaActionEnabled:{type:[Boolean,String],default:!1},textareaAutoFocus:{type:[Boolean,String],default:!0},userTagsEnabled:{type:[Boolean,String],default:!0},emojisSuggestionEnabled:{type:[Boolean,String],default:!0},roomMessage:{type:String,default:""},scrollDistance:{type:Number,default:60},acceptedFiles:{type:String,default:"*"},captureFiles:{type:String,default:""},multipleFiles:{type:[Boolean,String],default:!0},templatesText:{type:[Array,String],default:()=>[]},mediaPreviewEnabled:{type:[Boolean,String],default:!0},usernameOptions:{type:[Object,String],default:()=>({minUsers:3,currentUser:!1})},emojiDataSource:{type:String,default:void 0}},emits:["toggle-rooms-list","room-info","fetch-messages","send-message","edit-message","delete-message","open-file","open-user-tag","open-failed-message","menu-action-handler","message-action-handler","send-message-reaction","typing-message","textarea-action-handler","fetch-more-rooms","add-room","search-room","room-action-handler","message-selection-action-handler"],data(){return{slots:[],room:{},loadingMoreRooms:!1,showRoomsList:!0,isMobile:!1,showMediaPreview:!1,previewFile:{}}},computed:{t(){return{...lP,...this.textMessagesCasted}},cssVars(){const e=cP[this.theme],t={};return Object.keys(e).map((n=>{t[n]={...e[n],...this.stylesCasted[n]||{}}})),uP(t)},orderedRooms(){return this.roomsCasted.slice().sort(((e,t)=>{const n=e.index||0,o=t.index||0;return"asc"===this.roomsOrder?n<o?-1:o<n?1:0:n>o?-1:o>n?1:0}))},singleRoomCasted(){return this.castBoolean(this.singleRoom)},roomsListOpenedCasted(){return this.castBoolean(this.roomsListOpened)},loadingRoomsCasted(){return this.castBoolean(this.loadingRooms)},roomsLoadedCasted(){return this.castBoolean(this.roomsLoaded)},loadFirstRoomCasted(){return this.castBoolean(this.loadFirstRoom)},messagesLoadedCasted(){return this.castBoolean(this.messagesLoaded)},multipleFilesCasted(){return this.castBoolean(this.multipleFiles)},showSearchCasted(){return this.castBoolean(this.showSearch)},showAddRoomCasted(){return this.castBoolean(this.showAddRoom)},showSendIconCasted(){return this.castBoolean(this.showSendIcon)},showFilesCasted(){return this.castBoolean(this.showFiles)},showAudioCasted(){return this.castBoolean(this.showAudio)},showEmojisCasted(){return this.castBoolean(this.showEmojis)},showReactionEmojisCasted(){return this.castBoolean(this.showReactionEmojis)},showNewMessagesDividerCasted(){return this.castBoolean(this.showNewMessagesDivider)},showFooterCasted(){return this.castBoolean(this.showFooter)},roomInfoEnabledCasted(){return this.castBoolean(this.roomInfoEnabled)},textareaActionEnabledCasted(){return this.castBoolean(this.textareaActionEnabled)},textareaAutoFocusCasted(){return this.castBoolean(this.textareaAutoFocus)},userTagsEnabledCasted(){return this.castBoolean(this.userTagsEnabled)},emojisSuggestionEnabledCasted(){return this.castBoolean(this.emojisSuggestionEnabled)},mediaPreviewEnabledCasted(){return this.castBoolean(this.mediaPreviewEnabled)},roomsCasted(){return this.castArray(this.rooms)},messagesCasted(){return this.castArray(this.messages)},roomActionsCasted(){return this.castArray(this.roomActions)},menuActionsCasted(){return this.castArray(this.menuActions)},messageActionsCasted(){return this.castArray(this.messageActions)},messageSelectionActionsCasted(){return this.castArray(this.messageSelectionActions)},templatesTextCasted(){return this.castArray(this.templatesText)},stylesCasted(){return this.castObject(this.styles)},textMessagesCasted(){return this.castObject(this.textMessages)},autoScrollCasted(){return this.castObject(this.autoScroll)},textFormattingCasted(){return this.castObject(this.textFormatting)},linkOptionsCasted(){return this.castObject(this.linkOptions)},usernameOptionsCasted(){return this.castObject(this.usernameOptions)}},watch:{roomsCasted:{immediate:!0,deep:!0,handler(e,t){if(e[0]&&e.find((e=>e.roomId===this.room.roomId))||(this.showRoomsList=!0),!this.loadingMoreRooms&&this.loadFirstRoomCasted&&e[0]&&(!t||e.length!==t.length))if(this.roomId){const t=e.find((e=>e.roomId===this.roomId))||{};this.fetchRoom({room:t})}else!this.isMobile||this.singleRoomCasted?this.fetchRoom({room:this.orderedRooms[0]}):this.showRoomsList=!0}},loadingRoomsCasted(e){e&&(this.room={})},roomId:{immediate:!0,handler(e,t){if(e&&!this.loadingRoomsCasted&&this.roomsCasted.length){const t=this.roomsCasted.find((t=>t.roomId===e));this.fetchRoom({room:t})}else t&&!e&&(this.room={})}},room(e){e&&0!==Object.entries(e).length&&(EB(e),e.users.forEach((e=>{TB(e)})))},roomsListOpenedCasted:{immediate:!0,handler(e){this.showRoomsList=e}}},created(){this.updateResponsive(),window.addEventListener("resize",(e=>{e.isTrusted&&this.updateResponsive()}))},updated(){const e=document.querySelectorAll("[slot]");this.slots.length!==e.length&&(this.slots=e)},methods:{castBoolean(e){return"true"===e||!0===e},castArray(e){return e?Array.isArray(e)?e:JSON.parse(e):[]},castObject(e){return e?"object"===typeof e?e:JSON.parse(e):{}},updateResponsive(){this.isMobile=window.innerWidth<Number(this.responsiveBreakpoint)},toggleRoomsList(){this.showRoomsList=!this.showRoomsList,this.isMobile&&(this.room={}),this.$emit("toggle-rooms-list",{opened:this.showRoomsList})},fetchRoom({room:e}){this.room=e,this.fetchMessages({reset:!0}),this.isMobile&&(this.showRoomsList=!1)},fetchMoreRooms(){this.$emit("fetch-more-rooms")},roomInfo(){this.$emit("room-info",this.room)},addRoom(){this.$emit("add-room")},searchRoom(e){this.$emit("search-room",{value:e,roomId:this.room.roomId})},fetchMessages(e){this.$emit("fetch-messages",{room:this.room,options:e})},sendMessage(e){this.$emit("send-message",{...e,roomId:this.room.roomId})},editMessage(e){this.$emit("edit-message",{...e,roomId:this.room.roomId})},deleteMessage(e){this.$emit("delete-message",{message:e,roomId:this.room.roomId})},openFile({message:e,file:t}){this.mediaPreviewEnabledCasted&&"preview"===t.action?(this.previewFile=t.file,this.showMediaPreview=!0):this.$emit("open-file",{message:e,file:t})},openUserTag({user:e}){this.$emit("open-user-tag",{user:e})},openFailedMessage({message:e}){this.$emit("open-failed-message",{message:e,roomId:this.room.roomId})},menuActionHandler(e){this.$emit("menu-action-handler",{action:e,roomId:this.room.roomId})},roomActionHandler({action:e,roomId:t}){this.$emit("room-action-handler",{action:e,roomId:t})},messageActionHandler(e){this.$emit("message-action-handler",{...e,roomId:this.room.roomId})},messageSelectionActionHandler(e){this.$emit("message-selection-action-handler",{...e,roomId:this.room.roomId})},sendMessageReaction(e){this.$emit("send-message-reaction",{...e,roomId:this.room.roomId})},typingMessage(e){this.$emit("typing-message",{message:e,roomId:this.room.roomId})},textareaActionHandler(e){this.$emit("textarea-action-handler",{message:e,roomId:this.room.roomId})}}},pP={class:"vac-chat-container"};function hP(e,t,n,o,r,s){const i=vm("rooms-list"),a=vm("room"),l=vm("media-preview");return kg(),Ag("div",{class:"vac-card-window",style:Zf([{height:n.height},s.cssVars])},[Lg("div",pP,[s.singleRoomCasted?Ug("",!0):(kg(),Rg(i,{key:0,"current-user-id":n.currentUserId,rooms:s.orderedRooms,"loading-rooms":s.loadingRoomsCasted,"rooms-loaded":s.roomsLoadedCasted,room:r.room,"room-actions":s.roomActionsCasted,"custom-search-room-enabled":n.customSearchRoomEnabled,"text-messages":s.t,"show-search":s.showSearchCasted,"show-add-room":s.showAddRoomCasted,"show-rooms-list":r.showRoomsList&&s.roomsListOpenedCasted,"text-formatting":s.textFormattingCasted,"link-options":s.linkOptionsCasted,"is-mobile":r.isMobile,"scroll-distance":n.scrollDistance,onFetchRoom:s.fetchRoom,onFetchMoreRooms:s.fetchMoreRooms,onLoadingMoreRooms:t[0]||(t[0]=e=>r.loadingMoreRooms=e),onAddRoom:s.addRoom,onSearchRoom:s.searchRoom,onRoomActionHandler:s.roomActionHandler},Sm({_:2},[km(r.slots,(t=>({name:t.slot,fn:xh((n=>[Em(e.$slots,t.slot,np(Fg(n)))]))})))]),1032,["current-user-id","rooms","loading-rooms","rooms-loaded","room","room-actions","custom-search-room-enabled","text-messages","show-search","show-add-room","show-rooms-list","text-formatting","link-options","is-mobile","scroll-distance","onFetchRoom","onFetchMoreRooms","onAddRoom","onSearchRoom","onRoomActionHandler"])),jg(a,{"current-user-id":n.currentUserId,rooms:s.roomsCasted,"room-id":r.room.roomId||"","load-first-room":s.loadFirstRoomCasted,messages:s.messagesCasted,"room-message":n.roomMessage,"messages-loaded":s.messagesLoadedCasted,"menu-actions":s.menuActionsCasted,"message-actions":s.messageActionsCasted,"message-selection-actions":s.messageSelectionActionsCasted,"auto-scroll":s.autoScrollCasted,"show-send-icon":s.showSendIconCasted,"show-files":s.showFilesCasted,"show-audio":s.showAudioCasted,"audio-bit-rate":n.audioBitRate,"audio-sample-rate":n.audioSampleRate,"show-emojis":s.showEmojisCasted,"show-reaction-emojis":s.showReactionEmojisCasted,"show-new-messages-divider":s.showNewMessagesDividerCasted,"show-footer":s.showFooterCasted,"text-messages":s.t,"single-room":s.singleRoomCasted,"show-rooms-list":r.showRoomsList&&s.roomsListOpenedCasted,"text-formatting":s.textFormattingCasted,"link-options":s.linkOptionsCasted,"is-mobile":r.isMobile,"loading-rooms":s.loadingRoomsCasted,"room-info-enabled":s.roomInfoEnabledCasted,"textarea-action-enabled":s.textareaActionEnabledCasted,"textarea-auto-focus":s.textareaAutoFocusCasted,"user-tags-enabled":s.userTagsEnabledCasted,"emojis-suggestion-enabled":s.emojisSuggestionEnabledCasted,"scroll-distance":n.scrollDistance,"accepted-files":n.acceptedFiles,"capture-files":n.captureFiles,"multiple-files":s.multipleFilesCasted,"templates-text":s.templatesTextCasted,"username-options":s.usernameOptionsCasted,"emoji-data-source":n.emojiDataSource,onToggleRoomsList:s.toggleRoomsList,onRoomInfo:s.roomInfo,onFetchMessages:s.fetchMessages,onSendMessage:s.sendMessage,onEditMessage:s.editMessage,onDeleteMessage:s.deleteMessage,onOpenFile:s.openFile,onOpenUserTag:s.openUserTag,onOpenFailedMessage:s.openFailedMessage,onMenuActionHandler:s.menuActionHandler,onMessageActionHandler:s.messageActionHandler,onMessageSelectionActionHandler:s.messageSelectionActionHandler,onSendMessageReaction:s.sendMessageReaction,onTypingMessage:s.typingMessage,onTextareaActionHandler:s.textareaActionHandler},Sm({_:2},[km(r.slots,(t=>({name:t.slot,fn:xh((n=>[Em(e.$slots,t.slot,np(Fg(n)))]))})))]),1032,["current-user-id","rooms","room-id","load-first-room","messages","room-message","messages-loaded","menu-actions","message-actions","message-selection-actions","auto-scroll","show-send-icon","show-files","show-audio","audio-bit-rate","audio-sample-rate","show-emojis","show-reaction-emojis","show-new-messages-divider","show-footer","text-messages","single-room","show-rooms-list","text-formatting","link-options","is-mobile","loading-rooms","room-info-enabled","textarea-action-enabled","textarea-auto-focus","user-tags-enabled","emojis-suggestion-enabled","scroll-distance","accepted-files","capture-files","multiple-files","templates-text","username-options","emoji-data-source","onToggleRoomsList","onRoomInfo","onFetchMessages","onSendMessage","onEditMessage","onDeleteMessage","onOpenFile","onOpenUserTag","onOpenFailedMessage","onMenuActionHandler","onMessageActionHandler","onMessageSelectionActionHandler","onSendMessageReaction","onTypingMessage","onTextareaActionHandler"])]),jg(m_,{name:"vac-fade-preview",appear:""},{default:xh((()=>[r.showMediaPreview?(kg(),Rg(l,{key:0,file:r.previewFile,onCloseMediaPreview:t[1]||(t[1]=e=>r.showMediaPreview=!1)},Sm({_:2},[km(r.slots,(t=>({name:t.slot,fn:xh((n=>[Em(e.$slots,t.slot,np(Fg(n)))]))})))]),1032,["file"])):Ug("",!0)])),_:3})],4)}var mP=Z_(fP,[["render",hP],["styles",[dP]]]);const gP=u_(mP),vP="vue-advanced-chat";function _P(){customElements.get(vP)||customElements.define(vP,gP)}_P();var bP=br({data(){return{socket:null,rooms:[{roomId:"global",roomName:"",avatar:"",users:[]}],messagesLoaded:!1,messages:[],currentUserId:null}},mounted(){let e="";const t=document.getElementById("room-info");t&&(e=t.textContent);let n=null;if(!e)throw"No room info provided";n=JSON.parse(e),this.rooms=[{roomId:n.room_name,roomName:n.room_title,avatar:"",users:[{_id:"1",username:"Fake user 1",avatar:"assets/imgs/doe.png",status:{state:"online",lastChanged:"today, 14:30"}},{_id:"2",username:"Fake user 2",avatar:"assets/imgs/snow.png",status:{state:"online",lastChanged:"14 July, 20:00"}},{_id:"3",username:"Fake user 3",avatar:"assets/imgs/snow.png",status:{state:"online",lastChanged:"14 July, 20:00"}}]}],this.connect(n.room_name),this.currentUserId=n.user_id},methods:{connect(e){let t="wss";"https:"!=window.location.protocol&&(t="ws"),this.socket=new WebSocket(t+"://"+window.location.host+"/ws/chat/"+e+"/"),this.fetchMessages(),this.socket.onclose=()=>{console.log("Chat socket closed")}},async fetchMessages(){this.socket.onmessage=e=>{const t=JSON.parse(e.data),n=t.type;if("initial"==n&&this.messagesLoaded)return;const o=t.messages;this.messages=[...this.messages,...o],"initial"==n&&(this.messagesLoaded=!0)}},sendMessage({content:e,replyMessage:t}){this.socket.send(JSON.stringify({message:e,replyTo:t?t._id:null}))}},computed:{showAudio(){}}}),yP=n(8152);const xP=(0,yP.c)(bP,[["render",Wu]]);var wP=xP;const kP=e=>(co("data-v-4610efbd"),e=e(),uo(),e),SP={class:"bell"},EP=kP((()=>$a("img",{src:"/static/teleforma/images/bell.svg",alt:"Notifications",title:"Notifications",class:"bell-image"},null,-1))),TP={key:0,class:"bell-count"},MP={key:0,class:"notifications-list"};function AP(e,t,n,o,r,s){const i=So("notification-message");return Ra(),La("div",{id:"notifications",onFocus:t[0]||(t[0]=(...t)=>e.open&&e.open(...t)),onFocusout:t[1]||(t[1]=(...t)=>e.close&&e.close(...t)),tabindex:"0"},[$a("div",SP,[EP,e.numberOfUnread>0?(Ra(),La("span",TP,oe(e.numberOfUnread),1)):Ka("",!0)]),e.opened?(Ra(),La("div",MP,[$a("ul",null,[(Ra(!0),La(ka,null,ss(e.messages,(e=>(Ra(),ja(i,{key:e._id,id:e._id,content:e.content,url:e.url,viewed:e.viewed,"creation-date":e.created},null,8,["id","content","url","viewed","creation-date"])))),128))])])):Ka("",!0)],32)}const RP={class:"date"};function CP(e,t,n,o,r,s){return Ra(),La("li",{onClick:t[0]||(t[0]=t=>e.onClick()),onMouseup:t[1]||(t[1]=Mu((t=>e.onMiddleClick()),["middle"]))},[$a("span",{class:W({unviewed:!e.viewed,text:!0})},oe(e.content),3),$a("span",RP,oe(e.relativeCreationDate),1)],32)}function OP(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function IP(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function BP(e){IP(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"===typeof e||"[object Number]"===t?new Date(e):("string"!==typeof e&&"[object String]"!==t||"undefined"===typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function PP(e){IP(1,arguments);var t=BP(e);return t.setHours(0,0,0,0),t}var LP=864e5;function jP(e,t){IP(2,arguments);var n=PP(e),o=PP(t),r=n.getTime()-OP(n),s=o.getTime()-OP(o);return Math.round((r-s)/LP)}function NP(e){return IP(1,arguments),e instanceof Date||"object"===typeof e&&"[object Date]"===Object.prototype.toString.call(e)}function FP(e){if(IP(1,arguments),!NP(e)&&"number"!==typeof e)return!1;var t=BP(e);return!isNaN(Number(t))}var DP={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},HP=function(e,t,n){var o,r=DP[e];return o="string"===typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),null!==n&&void 0!==n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+o:o+" ago":o},UP=HP;function VP(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,o=e.formats[n]||e.formats[e.defaultWidth];return o}}var $P={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},zP={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},qP={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},YP={date:VP({formats:$P,defaultWidth:"full"}),time:VP({formats:zP,defaultWidth:"full"}),dateTime:VP({formats:qP,defaultWidth:"full"})},GP=YP,XP={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},WP=function(e,t,n,o){return XP[e]},KP=WP;function ZP(e){return function(t,n){var o,r=n||{},s=r.context?String(r.context):"standalone";if("formatting"===s&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,a=r.width?String(r.width):i;o=e.formattingValues[a]||e.formattingValues[i]}else{var l=e.defaultWidth,c=r.width?String(r.width):e.defaultWidth;o=e.values[c]||e.values[l]}var u=e.argumentCallback?e.argumentCallback(t):t;return o[u]}}var QP={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},JP={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},eL={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},tL={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},nL={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},oL={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},rL=function(e,t){var n=Number(e),o=n%100;if(o>20||o<10)switch(o%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},sL={ordinalNumber:rL,era:ZP({values:QP,defaultWidth:"wide"}),quarter:ZP({values:JP,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ZP({values:eL,defaultWidth:"wide"}),day:ZP({values:tL,defaultWidth:"wide"}),dayPeriod:ZP({values:nL,defaultWidth:"wide",formattingValues:oL,defaultFormattingWidth:"wide"})},iL=sL;function aL(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.width,r=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],s=t.match(r);if(!s)return null;var i,a=s[0],l=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(l)?cL(l,(function(e){return e.test(a)})):lL(l,(function(e){return e.test(a)}));i=e.valueCallback?e.valueCallback(c):c,i=n.valueCallback?n.valueCallback(i):i;var u=t.slice(a.length);return{value:i,rest:u}}}function lL(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function cL(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n}function uL(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.match(e.matchPattern);if(!o)return null;var r=o[0],s=t.match(e.parsePattern);if(!s)return null;var i=e.valueCallback?e.valueCallback(s[0]):s[0];i=n.valueCallback?n.valueCallback(i):i;var a=t.slice(r.length);return{value:i,rest:a}}}var dL=/^(\d+)(th|st|nd|rd)?/i,fL=/\d+/i,pL={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},hL={any:[/^b/i,/^(a|c)/i]},mL={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},gL={any:[/1/i,/2/i,/3/i,/4/i]},vL={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},_L={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},bL={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},yL={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},xL={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},wL={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},kL={ordinalNumber:uL({matchPattern:dL,parsePattern:fL,valueCallback:function(e){return parseInt(e,10)}}),era:aL({matchPatterns:pL,defaultMatchWidth:"wide",parsePatterns:hL,defaultParseWidth:"any"}),quarter:aL({matchPatterns:mL,defaultMatchWidth:"wide",parsePatterns:gL,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:aL({matchPatterns:vL,defaultMatchWidth:"wide",parsePatterns:_L,defaultParseWidth:"any"}),day:aL({matchPatterns:bL,defaultMatchWidth:"wide",parsePatterns:yL,defaultParseWidth:"any"}),dayPeriod:aL({matchPatterns:xL,defaultMatchWidth:"any",parsePatterns:wL,defaultParseWidth:"any"})},SL=kL,EL={code:"en-US",formatDistance:UP,formatLong:GP,formatRelative:KP,localize:iL,match:SL,options:{weekStartsOn:0,firstWeekContainsDate:1}},TL=EL;function ML(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function AL(e,t){IP(2,arguments);var n=BP(e).getTime(),o=ML(t);return new Date(n+o)}function RL(e,t){IP(2,arguments);var n=ML(t);return AL(e,-n)}var CL=864e5;function OL(e){IP(1,arguments);var t=BP(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var o=t.getTime(),r=n-o;return Math.floor(r/CL)+1}function IL(e){IP(1,arguments);var t=1,n=BP(e),o=n.getUTCDay(),r=(o<t?7:0)+o-t;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function BL(e){IP(1,arguments);var t=BP(e),n=t.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(n+1,0,4),o.setUTCHours(0,0,0,0);var r=IL(o),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var i=IL(s);return t.getTime()>=r.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}function PL(e){IP(1,arguments);var t=BL(e),n=new Date(0);n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0);var o=IL(n);return o}var LL=6048e5;function jL(e){IP(1,arguments);var t=BP(e),n=IL(t).getTime()-PL(t).getTime();return Math.round(n/LL)+1}function NL(e,t){IP(1,arguments);var n=t||{},o=n.locale,r=o&&o.options&&o.options.weekStartsOn,s=null==r?0:ML(r),i=null==n.weekStartsOn?s:ML(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var a=BP(e),l=a.getUTCDay(),c=(l<i?7:0)+l-i;return a.setUTCDate(a.getUTCDate()-c),a.setUTCHours(0,0,0,0),a}function FL(e,t){IP(1,arguments);var n=BP(e),o=n.getUTCFullYear(),r=t||{},s=r.locale,i=s&&s.options&&s.options.firstWeekContainsDate,a=null==i?1:ML(i),l=null==r.firstWeekContainsDate?a:ML(r.firstWeekContainsDate);if(!(l>=1&&l<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var c=new Date(0);c.setUTCFullYear(o+1,0,l),c.setUTCHours(0,0,0,0);var u=NL(c,t),d=new Date(0);d.setUTCFullYear(o,0,l),d.setUTCHours(0,0,0,0);var f=NL(d,t);return n.getTime()>=u.getTime()?o+1:n.getTime()>=f.getTime()?o:o-1}function DL(e,t){IP(1,arguments);var n=t||{},o=n.locale,r=o&&o.options&&o.options.firstWeekContainsDate,s=null==r?1:ML(r),i=null==n.firstWeekContainsDate?s:ML(n.firstWeekContainsDate),a=FL(e,t),l=new Date(0);l.setUTCFullYear(a,0,i),l.setUTCHours(0,0,0,0);var c=NL(l,t);return c}var HL=6048e5;function UL(e,t){IP(1,arguments);var n=BP(e),o=NL(n,t).getTime()-DL(n,t).getTime();return Math.round(o/HL)+1}function VL(e,t){var n=e<0?"-":"",o=Math.abs(e).toString();while(o.length<t)o="0"+o;return n+o}var $L={y:function(e,t){var n=e.getUTCFullYear(),o=n>0?n:1-n;return VL("yy"===t?o%100:o,t.length)},M:function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):VL(n+1,2)},d:function(e,t){return VL(e.getUTCDate(),t.length)},a:function(e,t){var n=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return"am"===n?"a.m.":"p.m."}},h:function(e,t){return VL(e.getUTCHours()%12||12,t.length)},H:function(e,t){return VL(e.getUTCHours(),t.length)},m:function(e,t){return VL(e.getUTCMinutes(),t.length)},s:function(e,t){return VL(e.getUTCSeconds(),t.length)},S:function(e,t){var n=t.length,o=e.getUTCMilliseconds(),r=Math.floor(o*Math.pow(10,n-3));return VL(r,t.length)}},zL=$L,qL={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},YL={G:function(e,t,n){var o=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(o,{width:"abbreviated"});case"GGGGG":return n.era(o,{width:"narrow"});case"GGGG":default:return n.era(o,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var o=e.getUTCFullYear(),r=o>0?o:1-o;return n.ordinalNumber(r,{unit:"year"})}return zL.y(e,t)},Y:function(e,t,n,o){var r=FL(e,o),s=r>0?r:1-r;if("YY"===t){var i=s%100;return VL(i,2)}return"Yo"===t?n.ordinalNumber(s,{unit:"year"}):VL(s,t.length)},R:function(e,t){var n=BL(e);return VL(n,t.length)},u:function(e,t){var n=e.getUTCFullYear();return VL(n,t.length)},Q:function(e,t,n){var o=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return VL(o,2);case"Qo":return n.ordinalNumber(o,{unit:"quarter"});case"QQQ":return n.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(o,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,n){var o=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return VL(o,2);case"qo":return n.ordinalNumber(o,{unit:"quarter"});case"qqq":return n.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(o,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,n){var o=e.getUTCMonth();switch(t){case"M":case"MM":return zL.M(e,t);case"Mo":return n.ordinalNumber(o+1,{unit:"month"});case"MMM":return n.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(o,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,n){var o=e.getUTCMonth();switch(t){case"L":return String(o+1);case"LL":return VL(o+1,2);case"Lo":return n.ordinalNumber(o+1,{unit:"month"});case"LLL":return n.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(o,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,n,o){var r=UL(e,o);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):VL(r,t.length)},I:function(e,t,n){var o=jL(e);return"Io"===t?n.ordinalNumber(o,{unit:"week"}):VL(o,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):zL.d(e,t)},D:function(e,t,n){var o=OL(e);return"Do"===t?n.ordinalNumber(o,{unit:"dayOfYear"}):VL(o,t.length)},E:function(e,t,n){var o=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(o,{width:"short",context:"formatting"});case"EEEE":default:return n.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,n,o){var r=e.getUTCDay(),s=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(s);case"ee":return VL(s,2);case"eo":return n.ordinalNumber(s,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});case"eeee":default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,o){var r=e.getUTCDay(),s=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(s);case"cc":return VL(s,t.length);case"co":return n.ordinalNumber(s,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});case"cccc":default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){var o=e.getUTCDay(),r=0===o?7:o;switch(t){case"i":return String(r);case"ii":return VL(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(o,{width:"short",context:"formatting"});case"iiii":default:return n.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,n){var o=e.getUTCHours(),r=o/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var o,r=e.getUTCHours();switch(o=12===r?qL.noon:0===r?qL.midnight:r/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(e,t,n){var o,r=e.getUTCHours();switch(o=r>=17?qL.evening:r>=12?qL.afternoon:r>=4?qL.morning:qL.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var o=e.getUTCHours()%12;return 0===o&&(o=12),n.ordinalNumber(o,{unit:"hour"})}return zL.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):zL.H(e,t)},K:function(e,t,n){var o=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(o,{unit:"hour"}):VL(o,t.length)},k:function(e,t,n){var o=e.getUTCHours();return 0===o&&(o=24),"ko"===t?n.ordinalNumber(o,{unit:"hour"}):VL(o,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):zL.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):zL.s(e,t)},S:function(e,t){return zL.S(e,t)},X:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();if(0===s)return"Z";switch(t){case"X":return XL(s);case"XXXX":case"XX":return WL(s);case"XXXXX":case"XXX":default:return WL(s,":")}},x:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();switch(t){case"x":return XL(s);case"xxxx":case"xx":return WL(s);case"xxxxx":case"xxx":default:return WL(s,":")}},O:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+GL(s,":");case"OOOO":default:return"GMT"+WL(s,":")}},z:function(e,t,n,o){var r=o._originalDate||e,s=r.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+GL(s,":");case"zzzz":default:return"GMT"+WL(s,":")}},t:function(e,t,n,o){var r=o._originalDate||e,s=Math.floor(r.getTime()/1e3);return VL(s,t.length)},T:function(e,t,n,o){var r=o._originalDate||e,s=r.getTime();return VL(s,t.length)}};function GL(e,t){var n=e>0?"-":"+",o=Math.abs(e),r=Math.floor(o/60),s=o%60;if(0===s)return n+String(r);var i=t||"";return n+String(r)+i+VL(s,2)}function XL(e,t){if(e%60===0){var n=e>0?"-":"+";return n+VL(Math.abs(e)/60,2)}return WL(e,t)}function WL(e,t){var n=t||"",o=e>0?"-":"+",r=Math.abs(e),s=VL(Math.floor(r/60),2),i=VL(r%60,2);return o+s+n+i}var KL=YL;function ZL(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}}function QL(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}}function JL(e,t){var n,o=e.match(/(P+)(p+)?/)||[],r=o[1],s=o[2];if(!s)return ZL(e,t);switch(r){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;case"PPPP":default:n=t.dateTime({width:"full"});break}return n.replace("{{date}}",ZL(r,t)).replace("{{time}}",QL(s,t))}var ej={p:QL,P:JL},tj=ej,nj=["D","DD"],oj=["YY","YYYY"];function rj(e){return-1!==nj.indexOf(e)}function sj(e){return-1!==oj.indexOf(e)}function ij(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://git.io/fxCyr"))}var aj=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,lj=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,cj=/^'([^]*?)'?$/,uj=/''/g,dj=/[a-zA-Z]/;function fj(e,t,n){IP(2,arguments);var o=String(t),r=n||{},s=r.locale||TL,i=s.options&&s.options.firstWeekContainsDate,a=null==i?1:ML(i),l=null==r.firstWeekContainsDate?a:ML(r.firstWeekContainsDate);if(!(l>=1&&l<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var c=s.options&&s.options.weekStartsOn,u=null==c?0:ML(c),d=null==r.weekStartsOn?u:ML(r.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");var f=BP(e);if(!FP(f))throw new RangeError("Invalid time value");var p=OP(f),h=RL(f,p),m={firstWeekContainsDate:l,weekStartsOn:d,locale:s,_originalDate:f},g=o.match(lj).map((function(e){var t=e[0];if("p"===t||"P"===t){var n=tj[t];return n(e,s.formatLong,m)}return e})).join("").match(aj).map((function(n){if("''"===n)return"'";var o=n[0];if("'"===o)return pj(n);var i=KL[o];if(i)return!r.useAdditionalWeekYearTokens&&sj(n)&&ij(n,t,e),!r.useAdditionalDayOfYearTokens&&rj(n)&&ij(n,t,e),i(h,n,s.localize,m);if(o.match(dj))throw new RangeError("Format string contains an unescaped latin alphabet character `"+o+"`");return n})).join("");return g}function pj(e){return e.match(cj)[1].replace(uj,"'")}function hj(e,t,n){IP(2,arguments);var o=BP(e),r=BP(t),s=n||{},i=s.locale,a=void 0===i?TL:i,l=s.weekStartsOn,c=void 0===l?0:l;if(!a.localize)throw new RangeError("locale must contain localize property");if(!a.formatLong)throw new RangeError("locale must contain formatLong property");if(!a.formatRelative)throw new RangeError("locale must contain formatRelative property");var u,d=jP(o,r);if(isNaN(d))throw new RangeError("Invalid time value");u=d<-6?"other":d<-1?"lastWeek":d<0?"yesterday":d<1?"today":d<2?"tomorrow":d<7?"nextWeek":"other";var f=RL(o,OP(o)),p=RL(r,OP(r)),h=a.formatRelative(u,f,p,{locale:a,weekStartsOn:c});return fj(o,h,{locale:a,weekStartsOn:c})}var mj={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}},gj=function(e,t,n){var o,r=mj[e];return o="string"===typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),null!==n&&void 0!==n&&n.addSuffix?n.comparison&&n.comparison>0?"dans "+o:"il y a "+o:o},vj=gj,_j={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},bj={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},yj={full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},xj={date:VP({formats:_j,defaultWidth:"full"}),time:VP({formats:bj,defaultWidth:"full"}),dateTime:VP({formats:yj,defaultWidth:"full"})},wj=xj,kj={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},Sj=function(e,t,n,o){return kj[e]},Ej=Sj,Tj={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},Mj={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},Aj={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},Rj={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},Cj={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},Oj=function(e,t){var n=Number(e),o=null===t||void 0===t?void 0:t.unit;if(0===n)return"0";var r,s=["year","week","hour","minute","second"];return r=1===n?o&&s.includes(o)?"ère":"er":"ème",n+r},Ij={ordinalNumber:Oj,era:ZP({values:Tj,defaultWidth:"wide"}),quarter:ZP({values:Mj,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ZP({values:Aj,defaultWidth:"wide"}),day:ZP({values:Rj,defaultWidth:"wide"}),dayPeriod:ZP({values:Cj,defaultWidth:"wide"})},Bj=Ij,Pj=/^(\d+)(ième|ère|ème|er|e)?/i,Lj=/\d+/i,jj={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},Nj={any:[/^av/i,/^ap/i]},Fj={narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},Dj={any:[/1/i,/2/i,/3/i,/4/i]},Hj={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},Uj={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},Vj={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},$j={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},zj={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},qj={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},Yj={ordinalNumber:uL({matchPattern:Pj,parsePattern:Lj,valueCallback:function(e){return parseInt(e)}}),era:aL({matchPatterns:jj,defaultMatchWidth:"wide",parsePatterns:Nj,defaultParseWidth:"any"}),quarter:aL({matchPatterns:Fj,defaultMatchWidth:"wide",parsePatterns:Dj,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:aL({matchPatterns:Hj,defaultMatchWidth:"wide",parsePatterns:Uj,defaultParseWidth:"any"}),day:aL({matchPatterns:Vj,defaultMatchWidth:"wide",parsePatterns:$j,defaultParseWidth:"any"}),dayPeriod:aL({matchPatterns:zj,defaultMatchWidth:"any",parsePatterns:qj,defaultParseWidth:"any"})},Gj=Yj,Xj={code:"fr",formatDistance:vj,formatLong:wj,formatRelative:Ej,localize:Bj,match:Gj,options:{weekStartsOn:1,firstWeekContainsDate:4}},Wj=Xj,Kj=n(9899),Zj=n.n(Kj),Qj=br({props:{id:Number,content:String,url:String,viewed:Boolean,creationDate:String},methods:{async setAsViewed(){!1===this.viewed&&await Zj().post("/notification",{id:this.id,viewed:!0})},async onClick(){await this.setAsViewed(),this.url&&(window.location.href=this.url)},async onMiddleClick(){await this.setAsViewed(),this.url&&window.open(this.url,"_blank")}},computed:{relativeCreationDate(){return hj(new Date(this.creationDate),new Date,{locale:Wj})}}});const Jj=(0,yP.c)(Qj,[["render",CP],["__scopeId","data-v-fa1f8db4"]]);var eN=Jj,tN=br({data(){return{socket:null,messagesLoaded:!1,messages:[],currentUserId:null,opened:!1}},components:{NotificationMessage:eN},created(){const e=document.getElementById("user_id");e&&(this.currentUserId=parseInt(e.getAttribute("value"),10),this.connect())},methods:{connect(){let e="wss";"https:"!=window.location.protocol&&(e="ws"),this.socket=new WebSocket(e+"://"+window.location.host+"/ws/notification/"+this.currentUserId+"/"),this.fetchMessages(),this.socket.onclose=()=>{console.log("Chat socket closed")}},async fetchMessages(){this.socket.onmessage=e=>{const t=JSON.parse(e.data),n=t.type;if("initial"===n&&this.messagesLoaded)return;const o=t.messages;let r=null;"new"===n&&1===o.length&&(r=this.messages.findIndex((e=>e._id===o[0]._id))),this.messages=null!==r&&-1!==r?[...this.messages.slice(0,r),o[0],...this.messages.slice(r+1)]:[...o,...this.messages],"initial"===n&&(this.messagesLoaded=!0)}},open(){this.opened=!0},close(){this.opened=!1}},computed:{numberOfUnread(){return this.messages.filter((e=>!e.viewed)).length}}});const nN=(0,yP.c)(tN,[["render",AP],["__scopeId","data-v-4610efbd"]]);var oN,rN=nN;n(3248);function sN(e){return sN="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sN(e)}function iN(e,t){if("object"!=sN(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=sN(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function aN(e){var t=iN(e,"string");return"symbol"==sN(t)?t:String(t)}function lN(e,t,n){return t=aN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}(function(e){e["UNSTARTED"]="UNSTARTED",e["ENDED"]="ENDED",e["PLAYING"]="PLAYING",e["PAUSE"]="PAUSE",e["BUFFERING"]="BUFFERING",e["READY"]="READY",e["LOADING"]="LOADING",e["LOADED"]="LOADED"})(oN||(oN={}));const cN=!0,uN={debug:(...e)=>{cN&&console.debug(...e)},error:(...e)=>{console.error(...e)}};class dN{constructor(e,t){lN(this,"videoId",void 0),lN(this,"videoPlayerConfig",void 0),lN(this,"videojs",void 0),lN(this,"player",void 0),lN(this,"controls",void 0),lN(this,"main",void 0),lN(this,"sound",void 0),lN(this,"playBackRate",void 0),lN(this,"canWait",void 0),lN(this,"videoPlayerArea",void 0),lN(this,"videoState",void 0),lN(this,"_startSeconds",void 0),lN(this,"loop",void 0),lN(this,"isPlaying",void 0),this.videoId=Math.random().toString(36).substring(2,15),this.player=e,this.videoPlayerConfig=t,this.main=this.videoPlayerConfig.main??!1,this.sound=this.videoPlayerConfig.sound??!1,this.playBackRate=this.videoPlayerConfig.playBackRate??!1,this.canWait=!0,this.controls=this.videoPlayerConfig.controls??e.options.controls??!0,this.loop=e.options.loop??!1,this._startSeconds=parseFloat(String(this.videoPlayerConfig.startSeconds??0)),this.videoPlayerArea=null,this.videoState=oN.LOADING,this.isPlaying=!1,this.mount()}mount(){if(this.render(),!this.videoElement)return uN.debug("video element not found");setTimeout((()=>{this.setupVideoElement({controls:this.controls,main:this.main})}),1),window.addEventListener("unhandledrejection",(e=>{("AbortError"===e.reason?.name||e.reason?.message.includes("The play() request was interrupted"))&&(console.warn("❌❌❌❌❌❌❌❌The play() request was interrupted❌❌❌❌❌❌❌❌❌❌"),e.preventDefault(),e.stopPropagation())}));let e=0;document.addEventListener("fullscreenchange",(()=>{const t=document.querySelector("video");document.fullscreenElement?e=window.scrollY:(t&&(t.style.height="100%",t.style.width="100%"),setTimeout((()=>{window.scrollTo({top:e,behavior:"smooth"})}),200))})),this.videojs.on("ratechange",(()=>{const e=this.videojs.playbackRate();console.log(`Playback rate changed to: ${e}`),this.player.videoPlayers.forEach((t=>{t.videojs&&t.videojs.playbackRate()!==e&&(t.videojs.playbackRate(e),console.log(`Updated video ${t.videoId} to speed ${e}`))}))})),this.videojs.on("loadeddata",this.onReady.bind(this)),this.videojs.on("timeupdate",this.onTimeUpdate.bind(this)),this.videojs.on("seeking",this.onSeeking.bind(this)),this.videojs.on("ended",this.onStateChange.bind(this,oN.ENDED)),this.videojs.on("play",(()=>{this.syncTime(),this.isPlaying||this.player.state===oN.BUFFERING||this.onStateChange(oN.PLAYING)})),this.videojs.on("pause",(()=>{this.isPlaying&&this.onStateChange(oN.PAUSE)})),this.videojs.on("canplay",(()=>{this.syncTime(),this.player.state!==oN.PAUSE&&([oN.LOADING,oN.LOADED].includes(this.player.state)||this.onStateChange(oN.READY),this.canWait=!1,setTimeout((()=>{this.canWait=!0}),1e3))})),this.videojs.on("waiting",(()=>{this.canWait&&4!==this.videoElement.readyState&&(console.log("BUFFERING...",this.videoElement.readyState),[oN.LOADING,oN.LOADED].includes(this.player.state)||this.isPlaying||this.onStateChange(oN.BUFFERING))}))}syncTime(){const e=this.player.videoPlayers.find((e=>e.main)),t=this.videojs.playbackRate(),n=2===t?.25:1.5===t?.2:.1,o=()=>{if(this.main)this.player.videoPlayers.forEach((e=>{if(!e.main&&e.videojs){const t=e.videojs.currentTime(),o=this.videojs.currentTime();Math.abs(o-t)>n&&(e.videojs.currentTime(o),console.log(`🔄 Synced video ${e.videoId} to ${o}s (Threshold: ${n})`))}}));else if(e&&e.videojs){const t=e.videojs.currentTime(),o=this.videojs.currentTime();Math.abs(t-o)>n&&(this.videojs.currentTime(t),console.log(`🔄 Synced video ${this.videoId} to ${t}s (Threshold: ${n})`))}};requestAnimationFrame(o)}get videoElement(){return document.querySelector(`#video_player_${this.videoId} video`)}onReady(){uN.debug(this.videoId,"::[onReady]"),this.timeTo(0),this.player.onReady()}onSeeking(){uN.debug(this.videoId,"::[onSeeking]"),this.main&&requestAnimationFrame((()=>{this.syncTime()}))}onTimeUpdate(){this.main&&requestAnimationFrame((()=>{this.syncTime()}))}onStateChange(e){uN.debug(this.videoId,"::[onStateChange]",e),this.videoState=e;const t=[oN.BUFFERING,oN.READY,oN.PLAYING,oN.PAUSE,oN.ENDED,oN.UNSTARTED];(e!==oN.PLAYING||(this.isPlaying=!0,this.main))&&(e!==oN.PAUSE||(this.isPlaying=!1,this.main))&&(e===oN.BUFFERING&&(this.isPlaying=!1),t.includes(e)&&this.player.changeState(e,this))}render(){if(this.videoPlayerArea=document.querySelector(this.videoPlayerConfig.id),!this.videoPlayerArea)return uN.debug("id not found: ",this.videoPlayerConfig.id);this.videoPlayerArea.innerHTML=`\n        <video \n            id="video_player_${this.videoId}"\n            class="video-js vjs-theme-fantasy"\n            controls\n            preload="auto"\n            data-setup='{"playbackRates": [1, 1.25, 1.5, 2]}'\n            style="width:100%;height:100%;"\n        >\n          <source src="${this.videoPlayerConfig.initialSrc}" type="video/mp4" />\n          <p class="vjs-no-js">\n            To view this video please enable JavaScript, and consider upgrading to a\n            web browser that\n            <a href="https://videojs.com/html5-video-support/" target="_blank"\n              >supports HTML5 video</a\n            >\n          </p>\n        </video>\n    `,this.videojs=window.videojs(`video_player_${this.videoId}`,{userActions:{doubleClick:!1},controlBar:{volumePanel:this.sound,fullscreenToggle:!1,playbackRateMenuButton:this.playBackRate}}),this.videojs.controls(!0),this.videojs.muted(!this.sound),this._createFullscreenButton()}setupVideoElement(e){void 0!==e.controls&&this.setControls(e.controls),this.setMain(e.main)}_swap(e){if(!this.videoElement||!e.videoElement)return;const t=()=>{window.document.fullscreenElement&&window.innerHeight>window.innerWidth||window.document.fullscreenElement?(this.videoElement.style.height="100%",e.videoElement.style.height="100vh"):(this.videoElement.style.height="100%",e.videoElement.style.height="100%")};requestAnimationFrame(t);const n=this.videoElement.parentElement,o=e.videoElement.parentElement,r=n.parentNode,s=o.parentNode;if(!r||!s)throw new Error("Parent node not found");const i=n.nextSibling===o?n:n.nextSibling;s.insertBefore(n,o),r.insertBefore(o,i);const a=this.controls,l=this.main;this.setupVideoElement({controls:e.controls,main:e.main}),e.setupVideoElement({controls:a,main:l})}async play(){if(!this.videoElement)return;if(this.videoState===oN.PLAYING||this.videoState===oN.BUFFERING)return;const e=this.videoElement.currentTime>0&&!this.videoElement.paused&&!this.videoElement.ended&&this.videoElement.readyState>this.videoElement.HAVE_CURRENT_DATA;e?console.log("already playing"):await this.videoElement.play().then((()=>{console.log("Playback started!")})).catch((e=>{console.warn("Playback failed:",e)}))}pause(){if(this.videoElement&&this.videoState!==oN.PAUSE&&this.isPlaying)try{this.videoElement.pause()}catch(e){console.log(e)}}stop(){if(this.videoElement)try{this.videoElement.pause(),this.timeTo(this.getDuration()-.5)}catch(e){console.log(e)}}setControls(e){this.videoElement&&(this.videojs.controls(e),this.controls=e)}setMain(e){this.main=e}timeTo(e){if(this.videoElement){if(e=parseFloat(e.toString()),e+=this._startSeconds,e>=this.getDuration())return this.videoElement.currentTime=this.getDuration()-.05,uN.debug("timeTo: time is greater than duration"),void this.pause();uN.debug("set time to: ",e),this.videoElement.currentTime=e}}getDuration(){return this.videoElement?.duration||0}getPlayLength(){return this.getDuration()-this._startSeconds}getCurrentTime(){return this.videoElement?.currentTime||0}getPlayedTime(){const e=this.getCurrentTime()-this._startSeconds;return Math.max(e,0)}isEnded(){const e=Math.abs(this.getCurrentTime()-this.getDuration());return e<.1}_createFullscreenButton(){const e=this.videojs?.controlBar.addChild("button",{clickHandler:function(){const e=window.document,t=document.querySelector("video"),n=document.getElementById("fullscreen-part");t&&n&&(e.fullscreenElement?document.exitFullscreen().then((()=>{t.style.height="100%",t.style.width="100%"})):n.requestFullscreen().then((()=>{t.style.height="100vh",t.style.width="100%"})))}});e.controlText("Fullscreen"),this.videojs?.controlBar.el().appendChild(e.el());const t=e.el();t.innerHTML='<span aria-hidden="true" class="vjs-icon-placeholder"></span><span class="vjs-control-text" aria-live="polite">Fullscreen</span>',t.classList.add("vjs-fullscreen-control")}}var fN=dN;const pN={[oN.LOADING]:[oN.LOADED],[oN.LOADED]:[oN.PLAYING],[oN.PLAYING]:[oN.PAUSE,oN.ENDED,oN.BUFFERING],[oN.PAUSE]:[oN.PLAYING,oN.ENDED],[oN.ENDED]:[oN.PLAYING],[oN.BUFFERING]:[oN.READY,oN.PAUSE,oN.PLAYING],[oN.READY]:[oN.PLAYING],[oN.UNSTARTED]:[]},hN=(e,t)=>{const n=pN[e];return!!n&&n.includes(t)};class mN{constructor(e){lN(this,"options",void 0),lN(this,"$container",void 0),lN(this,"videoPlayers",[]),lN(this,"state",void 0),lN(this,"readyCount",void 0),lN(this,"currentTime",void 0),this.options={controls:e.controls??!0,loop:e.loop??!1,area:e.area||"",videoPlayers:e.videoPlayers||[],template:'<div id="sync_video_player_container"></div>'},this.state=oN.LOADING,this.readyCount=0,this.$container=null,this.videoPlayers=[],this.currentTime=0}getDebugInfo(){return{state:this.state,currentTime:this.currentTime,videoPlayers:this.videoPlayers.map((e=>({id:e.videoId,state:e.videoState,currentTime:e.getCurrentTime(),duration:e.getDuration,isMain:e.main,isPlaying:e.isPlaying})))}}mount(){this.render(),this.addVideoPlayers(this.options.videoPlayers)}render(){const{template:e,area:t}=this.options;if(!t)return;const n=document.querySelector(t);if(!n)return uN.error("area not found: ",t);n.innerHTML=e||"",this.$container=document.querySelector("#sync_video_player_container")}async changeState(e,t){const n=this.videoPlayers.find((e=>e.main));if(e===oN.BUFFERING)return n&&n===t?this.pause():void 0;if(e===oN.PLAYING)return this.state!==oN.BUFFERING?await this.play():void 0;if(e===oN.PAUSE){if(t.isEnded())return;return this.pause(!0)}if(e===oN.ENDED){if(n&&n!==t)return;await this.moveStateTo(oN.ENDED,(()=>{if(this.options.loop)return this.timeTo(0)}))}if(e===oN.READY){const e=this.videoPlayers.every((e=>[oN.READY,oN.PLAYING,oN.PAUSE].includes(e.videoState)));if(e)return await this.play()}return e===oN.UNSTARTED&&this.state===oN.ENDED&&this.options.loop?(console.log("changeState - UNSTARTED - call :  this.play()"),await this.play()):void 0}async moveStateTo(e,t,n){if(e!==this.state)if(hN(this.state,e)){const n=this.state;this.state=e,t&&await t(this.state,n),uN.debug("state changed to: ",e)}else n&&await n(this.state,e),uN.error("invalid state change: ",this.state,e)}async onReady(){this.readyCount++,this.readyCount===this.videoPlayers.length&&await this.moveStateTo(oN.LOADED)}onTimeUpdate(e,t){const n=Math.abs(this.currentTime-t);n>=.2&&this.timeTo(t),this.currentTime=t,this.fixVideoStates()}fixVideoStates(){const e=this.videoPlayers.find((e=>e.main));e&&this.videoPlayers.forEach((async t=>{t===e||t.isEnded()||(e.isPlaying&&!t.isPlaying?await t.play():!e.isPlaying&&t.isPlaying&&await t.pause())}))}addVideoPlayers(e){e&&e.forEach((e=>{this.addVideoPlayer(e)}))}addVideoPlayer(e){const t=new fN(this,e);t.videoElement&&this.videoPlayers.push(t)}async play(){await this.moveStateTo(oN.PLAYING,(async()=>{await Promise.all(this.videoPlayers.map((async e=>{this.currentTime<e.getPlayLength()&&await e.play()})))}))}pause(e){this.moveStateTo(oN.PAUSE,(()=>{this.videoPlayers.forEach((e=>{e.pause()}))}))}async stop(){await this.moveStateTo(oN.PAUSE,(async()=>{await Promise.all(this.videoPlayers.map((async e=>{await e.stop()})))}))}async timeTo(e){this.currentTime=e,this.videoPlayers.forEach((async t=>{await t.timeTo(e)}))}swapVideo(e,t){if(e===t)return;this.videoPlayers[e]._swap(this.videoPlayers[t]);const n=this.videoPlayers[e];this.videoPlayers[e]=this.videoPlayers[t],this.videoPlayers[t]=n}}var gN=mN;const vN={class:"container",id:"fullscreen-part"},_N={id:"main-video"},bN={id:"thumbnails-videos"},yN=["id","onClick","onTouchend"],xN={class:"controls"},wN={class:"time"};var kN=br({__name:"VideoComponent",setup(e){const t=window.multivideos;console.log(t);const n=new gN({controls:!1,loop:!1,videoPlayers:t||[]}),o=Vt(Array.from({length:t.length},((e,t)=>`video-${t}`))),r=Vt({});async function s(){await n.play()}async function i(){await n.pause()}function a(){const e=`video-${Math.random().toString(36).substring(2,9)}`;o.value.push(e),kn((()=>{n.addVideoPlayer({id:`#${e}`,initialSrc:"https://static.videezy.com/system/resources/previews/000/004/294/original/18_20Dragon_20Coaster_20Part_202.mp4"})}))}function l(){document.getElementById("multivideo").requestFullscreen()}async function c(e){n.swapVideo(0,e)}async function u(e){const t=e.target.value;await n.timeTo(parseFloat(t))}return jr((()=>{n.mount(),setInterval((()=>{r.value=n.getDebugInfo()}),50)})),(e,t)=>(Ra(),La("div",null,[$a("div",null,[$a("div",vN,[$a("div",_N,[(Ra(),La("div",{class:"box",id:"video-0",key:0,onClick:t[0]||(t[0]=e=>c(0)),onTouchend:t[1]||(t[1]=e=>c(0))},null,32))]),$a("div",bN,[(Ra(!0),La(ka,null,ss(o.value.slice(1),((e,t)=>(Ra(),La("div",{class:"box",id:e,key:t+1,onClick:Mu((e=>c(t+1)),["prevent"]),onTouchend:Mu((e=>c(t+1)),["prevent"])},null,40,yN)))),128))])])]),$a("div",xN,[Xa(" MAIN STATE = "+oe(r.value.state)+" ",1),$a("ul",null,[(Ra(!0),La(ka,null,ss(r.value.videoPlayers,(e=>(Ra(),La("li",{key:e.id},oe(e.id)+" - "+oe(e.state),1)))),128))]),$a("button",{onClick:a},"Add video"),$a("button",{onClick:s},"Play"),$a("button",{onClick:i},"Pause"),$a("button",{onClick:l},"fullscreen"),$a("div",wN,[$a("input",{type:"range",min:"0",max:"100",value:"0",class:"slider",id:"myRange",onInput:u},null,32)])])]))}});const SN=kN;var EN=SN;Zj().defaults.xsrfHeaderName="X-CSRFTOKEN",Zj().defaults.xsrfCookieName="csrftoken",Zj().defaults.withCredentials=!0,document.getElementById("chat")&&Nu(wP).mount("#chat"),document.getElementById("notifications")&&Nu(rN).mount("#notifications"),document.getElementById("multivideo")&&Nu(EN).mount("#multivideo")}()})();
 //# sourceMappingURL=app.js.map
\ No newline at end of file
index 718c24b9730bf0b483c91bcdbe7cc741a5921152..3b69ce2287b1f5a1e796b50566f9f1ea7f94a9a4 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"app.js","mappings":"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Pa,WAAYxB,GACZyB,KAAM1B,GACN2B,OAAQtC,GACRuC,YAAaxC,GACbyC,SAAUxD,GACVyD,WAAYjD,GACZkD,UAAWpD,GACXqD,YAAajD,GACbkD,QAASxD,GACTyD,UAAWhD,GACXX,aACA4D,YAAahD,GACbiD,OAAQf,IAENgB,GAAWhlI,GAAOikI,OAClBgB,GAASjlI,GAAOqkI,KAChBa,GAAWllI,GAAOskI,OAClBa,GAAcnlI,GAAO0kI,UACzB,SAASU,KACP,IAAIC,EAAW,EACb,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,oBACA,mBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,iBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,mBACA,oBACA,oBACA,oBACA,iBACA,mBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,kBACA,mBACA,kBACA,mBACA,oBACA,iBACA,kBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,iBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,mBACA,mBACA,iBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,kBACA,mBACA,kBACA,WAAcJ,GAAOnC,MAAQ,GAAM,QACnC,WAAcmC,GAAOnC,MAAQ,GAAM,QACnC,WAAamC,GAAOnC,MAAQ,GAAM,QAClC,WAAamC,GAAOnC,MAAQ,GAAM,QAClC,UAAYmC,GAAOnC,MAAQ,GAAM,QACjC,UAAYmC,GAAOnC,MAAQ,GAAM,QACjC,UAAYmC,GAAOnC,MAAQ,GAAM,QACjC,SAAWmC,GAAOnC,MAAQ,GAAM,QAChC,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBAEEwC,EAAK,GACLC,EAAK,GACLC,EAAM,CACR,CACE,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBAEH,CACE,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBACD,EACA,EACA,EACA,EACA,EACA,GACC,sBACA,sBACA,sBAEH,CACE,kBACA,iBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,mBACC,mBACA,kBACD,kBACA,IACC,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACD,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,mBAEF,CACE,EACA,EACA,EACA,EACA,EACA,EACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBAGDC,EAAWD,EAAIE,GAAQC,YACvBC,EAAKJ,EAAIE,GAAQC,YACjBE,EAAKL,EAAIE,GAAQC,YACjBG,EAAKN,EAAIE,GAAQC,YACjBtuB,EAAQ,CACV,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,IAEF,SAAS0uB,EAAeC,EAAIC,EAAOj+H,GAGjC,IAFA,IA6DYu+C,EAAG3iD,EA2BTsiI,EAxFFC,EAAK,GACLC,EAAKH,EAAQ,IAAM,GAAK,IACnB1iI,GAAK,GAAIA,EAAI,EAAGA,IAAK,CAC5B,IAAI8iE,EAAGluD,EAAG6vB,EACVq+B,EAAIg/D,EAASc,GAAM,IACnBhuH,EAAI6tH,EAAGI,GAAM,K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AAK1qI,EAClB6pI,EAAGG,EAAKI,GAAME,EAAKrqI,EACnB4pI,EAAGG,EAAKE,GAAMI,EAAKrqI,EACnBygI,GAAMqJ,EACNC,GAAMD,CACR,OAASC,EAAK7yI,GACdgoD,EAAKF,EACLA,EAAKE,EAAKwqF,EAAOM,EAAM,GAAKnqF,EAAK6pF,EAAOM,EAAM,GAC9CnqF,EAAKX,EAAKwqF,EAAOM,EAAM,GAAKnqF,EAAK6pF,EAAOM,EAAM,EAChD,CACAA,GAAO,CACT,OAASF,EAAKrgI,EAChB,CACA,IAAIohI,EAAS,CACX,EACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,KAEFz1I,KAAK01I,UAAY,SAAS/K,EAAKgL,EAAQC,EAAKrwI,EAAQswI,GAClD,IAAK,IAAIjrI,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIwJ,EAAIi0H,GAAQsL,UAAY,EACxB3xF,EAAI,MAAQ,KAAWp3C,EAAI,GAC3B0iC,EAAI+6F,GAAQsL,UAAY,EAAI,EAChC,EAAG,CACD,IAAIuB,EAAID,EAAIG,EAAID,EAAInsE,EAChB9iE,EAAqB,IAAjBuvI,EAAOnoG,GAAK,GACpB4nG,EAAKb,EAASnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,GAC5CgnB,EAAIqrE,EAAS,IAAMnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACrDizF,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKf,EAASnuI,EAAI,IAAMX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,IACrDgnB,EAAIqrE,EAAS,GAAKnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACpDmzF,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV50D,GAAK,EACLuhI,EAAO/qI,GAAGwJ,EAAI,GAAK8gI,EAAKE,EACxBO,EAAO/qI,GAAGwJ,EAAI,GAAK8gI,EAAKE,EACxBO,EAAO/qI,GAAGwJ,EAAI,GAAK6gI,EAAKE,EACxBQ,EAAO/qI,GAAGwJ,EAAI,GAAK6gI,EAAKE,EACxBD,EAAKb,EAASnuI,EAAI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,GACpDgnB,EAAIqrE,EAAS,IAAMnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACrDizF,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKf,EAASnuI,EAAI,IAAMX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,IACrDgnB,EAAIqrE,EAAS,GAAKnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACpDmzF,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV2sE,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKuB,EAAKE,EAChDO,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKuB,EAAKE,EAChDO,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKsB,EAAKE,EAChDQ,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKsB,EAAKE,CAClD,SAAW7nG,GAAK,GAChBinG,EAAIoB,EAAO/qI,GAAIwJ,EAAGi0H,GAAQsL,UAAY,EACxC,CACF,EACA3zI,KAAK81I,SAAW,SAASnL,EAAK9E,EAAG+P,EAAKrwI,EAAQswI,GAC5C,IAAIE,EAAK1N,GAAQwH,QAAU,EAAI,EAC3Bz7H,EAAIi0H,GAAQwH,QAAU,EAC1B,EAAG,CACD,IAAIqF,EAAID,EAAIG,EAAID,EAAInsE,EAChB9iE,EAAiB,IAAbuvI,EAAOM,GACfb,EAAKd,EAAQluI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,GACvC8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChD+uI,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKhB,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KACjD8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChDivI,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV50D,GAAK,EACLyxH,EAAEzxH,EAAI,GAAK8gI,EAAKE,EAChBvP,EAAEzxH,EAAI,GAAK8gI,EAAKE,EAChBvP,EAAEzxH,EAAI,GAAK6gI,EAAKE,EAChBtP,EAAEzxH,EAAI,GAAK6gI,EAAKE,EAChBD,EAAKd,EAAQluI,EAAI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI,GAC/C8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChD+uI,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKhB,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KACjD8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChDivI,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV68D,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKqF,EAAKE,EACtCvP,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKqF,EAAKE,EACtCvP,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKoF,EAAKE,EACtCtP,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKoF,EAAKE,CACxC,SAAWY,GAAM,GACjBxB,EAAI1O,EAAGzxH,EAAGi0H,GAAQwH,QAAU,EAC9B,EACA7vI,KAAKg2I,SAAW,SAASrL,GACvB,IAAK,IAAIzkI,EAAI,EAAGA,EAAImiI,GAAQwH,QAAS3pI,IACnCkuI,EAAQluI,GAAK,IAAO,GAAM8K,KAAKilI,IAAI,EAAIjlI,KAAKklI,IAAMhwI,EAAI,IAAOmiI,GAAQwH,SAAW,IAAO7+H,KAAKilI,IAAI,EAAIjlI,KAAKklI,IAAMhwI,EAAI,IAAOmiI,GAAQwH,SAEpI,IAAS3pI,EAAI,EAAGA,EAAImiI,GAAQsL,UAAY,EAAGztI,IACzCmuI,EAASnuI,GAAK,IAAO,EAAI8K,KAAKilI,IAAI,EAAIjlI,KAAKklI,IAAMhwI,EAAI,IAAOmiI,GAAQsL,WAExE,CACF,CACA,IAAIwC,GAAYxzI,GAAOkkI,QACnBuP,GAAUzzI,GAAOmkI,MACjBuP,GAAe1zI,GAAOokI,WACtBuP,GAAS3zI,GAAOqkI,KAChBuP,GAAW5zI,GAAOskI,OAClBuP,GAAc7zI,GAAO0kI,UACrBoP,GAAgB9zI,GAAO2kI,YACvBoP,GAAY/zI,GAAO4kI,QACnBoP,GAAWh0I,GAAO+kI,OACtB,SAASkP,KACP,IAAIC,EAAM,IAAI1C,GACV2C,EAAQ,kBACRC,EAAS,EACTC,EAAU,GACVC,EAAW,EACXC,EAAY,GACZC,EAAU,IACVC,EAAW,EAAI,WAAmB/O,GAAQwH,QAAU,GACpDwH,EAA2B,IAC3BC,EAAkB,GAClBC,EAAkB,GAClBC,EAAkB,GAClBC,EAAW,IACXC,EAAW,GACXC,EAAc,YAClB,SAASC,EAAwBxjI,GAC/B,OAAOA,CACT,CACA,SAASyjI,EAAuBxF,EAAQ1H,GAEtC,IADA,IAAImN,EAAiB,EACZ5xI,EAAI,EAAGA,EAAImiI,GAAQwH,QAAU,IAAK3pI,EACzC4xI,GAAkBzF,EAAOnsI,GAAKykI,EAAI+D,IAAIqJ,MAAM7xI,GAG9C,OADA4xI,GAAkBV,EACXU,CACT,CACA,SAASE,EAAazI,EAAK0I,EAAWC,EAAaC,EAASC,EAAYC,EAASC,EAAYC,EAAQ3C,EAAKrwI,EAAQswI,GAChH,IAAIlL,EAAM4E,EAAIE,eACd,GAAImG,EAAM,EACRiB,EAAIf,SAASnL,EAAKwN,EAAQC,GAAaxC,EAAKrwI,EAAQswI,GACpDgB,EAAInB,UAAU/K,EAAK0N,EAAQC,GAAa1C,EAAKrwI,EAAQswI,QAChD,GAAW,GAAPD,EAAU,CACnB,IAAK,IAAItoG,EAAI+6F,GAAQwH,QAAU,EAAGviG,GAAK,IAAKA,EAAG,CAC7C,IAAI9iC,EAAI2tI,EAAQC,EAAa,GAAG9qG,GAC5BxjB,EAAIquH,EAAQC,EAAa,GAAG9qG,GAChC6qG,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GACtD0S,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EACxD,CACA,IAAK,IAAI76H,EAAI,EAAGA,GAAK,IAAKA,EACxB,IAAS0iC,EAAI+6F,GAAQsL,UAAY,EAAGrmG,GAAK,IAAKA,EAAG,CAC3C9iC,EAAI6tI,EAAQC,EAAa,GAAG1tI,GAAG0iC,GAC/BxjB,EAAIuuH,EAAQC,EAAa,GAAG1tI,GAAG0iC,GACnC+qG,EAAQC,EAAa,GAAG1tI,GAAG0iC,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GACzD4S,EAAQC,EAAa,GAAG1tI,GAAG0iC,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EAC3D,CAEJ,CACAwS,EAAU,GAAKL,EAAwBO,EAAQC,EAAa,GAAG,IAC/DH,EAAU,IAAMA,EAAU,GAC1B,IAAS3qG,EAAI+6F,GAAQwH,QAAU,EAAI,EAAGviG,GAAK,IAAKA,EAAG,CACjD,IAAIkrG,EAAKL,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACnDmrG,EAAKN,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACvD2qG,EAAU5P,GAAQwH,QAAU,EAAIviG,GAAKsqG,EACb,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CACA,IAAS7tI,EAAI,EAAGA,GAAK,IAAKA,EAAG,CAC3BstI,EAAYttI,GAAG,GAAKytI,EAAQC,EAAa,GAAG1tI,GAAG,GAC/CstI,EAAYttI,GAAG,IAAMstI,EAAYttI,GAAG,GACpC,IAAS0iC,EAAI+6F,GAAQsL,UAAY,EAAI,EAAGrmG,GAAK,IAAKA,EAAG,CAC/CkrG,EAAKH,EAAQC,EAAa,GAAG1tI,GAAGy9H,GAAQsL,UAAY,EAAIrmG,GACxDmrG,EAAKJ,EAAQC,EAAa,GAAG1tI,GAAGy9H,GAAQsL,UAAY,EAAIrmG,GAC5D4qG,EAAYttI,GAAGy9H,GAAQsL,UAAY,EAAIrmG,GAAKsqG,EACpB,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CACF,CAEE,IAAIC,EAAc,EAClB,IAASprG,EAAI,GAAIA,EAAI+6F,GAAQqL,SAAUpmG,IACrCorG,GAAeT,EAAU3qG,GAG7B,GAFEq9F,EAAI+F,SAASkF,GAAO8C,EAElBnJ,EAAI0C,SAAU,CAChB,IAAS3kG,EAAI,EAAGA,EAAI+6F,GAAQqL,SAAUpmG,IACpCq9F,EAAIuH,MAAMG,OAAOkG,GAAQ3C,GAAKtoG,GAAKq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAC9Dq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAAK2qG,EAAU3qG,GAE5Cq9F,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOjL,EAAIiG,GAAGgF,EACrC,CAC4B,GAAxBrG,EAAIqJ,kBAAyBhD,EAAM,IACrCjL,EAAIiE,YAAY2J,GAAQ3C,GAAOjL,EAAIkO,iBAAiBjD,GACpDjL,EAAIkO,iBAAiBjD,GAAOiC,EAAuBI,EAAWtN,GAElE,CACA,IAGImO,EACAC,EACAC,EALAC,EAAU,EACVC,EAAU,GACVC,EAAS,GAITC,EAAM,CACR,EACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEF,SAASC,IACPP,EAAY9nI,KAAKsoI,IAAI,IAAKL,EAAU,GAAK,IACzCF,EAAY/nI,KAAKsoI,IAAI,IAAKJ,EAAU,GAAK,IACzCF,EAAWhoI,KAAKsoI,IAAI,GAAIH,EAAS,GACnC,CACA,IAAII,EAAS,CACX,OAAS,OACT,QAAU,QACV,aACA,aACA,aACA,aACA,QAAU,QACV,MAAQ,MACR,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,aACA,aACA,QAAU,QACV,QAAU,QACV,aACA,aACA,QAAU,QACV,aACA,QAAU,QACV,OAAS,OACT,aACA,aACA,GAEEC,EAAS,CACX,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,OAAS,OACT,aACA,QAAU,QACV,aACA,GAEEC,EAAS,CACX,aACA,QAAU,QACV,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,aACA,cAEF,SAASC,EAASC,EAAIC,EAAIC,EAAIjvI,EAAG+/H,EAAKmP,GACpC,IAAI1tC,EACJ,GAAIwtC,EAAKD,EAAI,CACX,KAAIC,EAAKD,EAAKZ,GAGZ,OAAOY,EAAKC,EAFZxtC,EAAQwtC,EAAKD,CAGjB,KAAO,CACL,GAAIA,GAAMC,EAAKb,EACb,OAAOY,EAAKC,EACdxtC,EAAQutC,EAAKC,CACf,CAEA,GADAD,GAAMC,EACFhvI,EAAI,GAAK,EAAO,CAClB,GAAIwhG,GAAS0sC,EACX,OAAOa,EAET,IAAIzzI,EAAI,EAAIowI,GAAO1Q,aAAax5B,EAAO,IACvC,OAAOutC,EAAKH,EAAOtzI,EACrB,CACA,IAQQyH,EAAGmc,EARP5jB,EAAI,EAAIowI,GAAO1Q,aAAax5B,EAAO,IAMvC,OAJEwtC,EADgB,GAAdE,EACGnP,EAAI+D,IAAIqL,KAAKF,GAAMlP,EAAI+D,IAAInnD,OAE3BojD,EAAI+D,IAAIsL,KAAKH,GAAMlP,EAAI+D,IAAInnD,OAE9BoyD,EAAKX,EAAWY,EACdD,EAAKC,GAEPjsI,EAAI,EACAzH,GAAK,KACPyH,EAAI8rI,EAAOvzI,IACb4jB,EAAIwsH,GAAO1Q,aAAa+T,EAAKC,EAAI,GAAK,IAC/BD,IAAOJ,EAAOrzI,GAAKyH,GAAKmc,EAAInc,IAEjCzH,EAAI,GACCyzI,EACFA,EAAKF,EAAOvzI,GAEdyzI,EAAKJ,EAAOrzI,EACrB,CACA,IAAI+zI,EAAU,CACZ,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,OAAS,OACT,aACA,QAAU,QACV,aACA,GAEF,SAASC,EAAgBP,EAAIC,EAAIhvI,GAC/B,IAAIwhG,EAOJ,GANIutC,EAAK,IACPA,EAAK,GAEHC,EAAK,IACPA,EAAK,GAEHD,GAAM,EACR,OAAOC,EAET,GAAIA,GAAM,EACR,OAAOD,EAOT,GAJEvtC,EADEwtC,EAAKD,EACCC,EAAKD,EAELA,EAAKC,EAEXhvI,IAAM,GAAKA,GAAK,EAAG,CACrB,GAAIwhG,GAAS0sC,EACX,OAAOa,EAAKC,EAEZ,IAAI1zI,EAAI,EAAIowI,GAAO1Q,aAAax5B,EAAO,IACvC,OAAQutC,EAAKC,GAAMK,EAAQ/zI,EAE/B,CACA,OAAIkmG,EAAQ2sC,EACHY,EAAKC,GAEVD,EAAKC,IACPD,EAAKC,GAEAD,EACT,CACA,SAASQ,EAA0B5K,EAAKnjC,GACtC,IAAIu+B,EAAM4E,EAAIE,eACd,GAAI9E,EAAIM,aAAe,EAAG,CACxB,IAAK,IAAImP,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IAAM,CAC3C,IAAI5vI,EAAImgI,EAAIkC,IAAI,GAAGriI,EAAE4vI,GACjBtwH,EAAI6gH,EAAIkC,IAAI,GAAGriI,EAAE4vI,GACrBzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAOtwH,EAAIsiF,EACxBu+B,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAO5vI,EAAI4hG,CAC1B,CACA,IAASguC,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACrC7vI,EAAImgI,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACrBvwH,EAAI6gH,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACzB1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAAWvwH,EAAIsiF,EAChCu+B,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAAW7vI,EAAI4hG,CAClC,CAEJ,CACF,CACA,SAASkuC,EAAO3P,GACd,IAAK,IAAIyP,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IACrC,KAAIzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAM,KAAOzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAOzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAM,KAAOzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAzF,CAGA,IAAIG,EAAM5P,EAAI6P,MAAMJ,GAAMzP,EAAImC,GAAG,GAAGtiI,EAAE4vI,GAClCK,EAAOzpI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKppI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKG,IACjEA,EAAM5P,EAAI6P,MAAMJ,GAAMzP,EAAImC,GAAG,GAAGtiI,EAAE4vI,GAClC,IAAIM,EAAQ1pI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKppI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKG,IAClE5P,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMK,EACnB9P,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMM,CANnB,CAQF,IAASN,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAC/B,KAAI1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAU,KAAO1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAAW1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAU,KAAO1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAArH,CAGIE,EAAM5P,EAAIgQ,MAAMP,GAAMzP,EAAImC,GAAG,GAAGhyH,EAAEs/H,GAAIC,GACtCI,EAAOzpI,KAAKuF,IACdo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACjBrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASE,IAErCA,EAAM5P,EAAIgQ,MAAMP,GAAMzP,EAAImC,GAAG,GAAGhyH,EAAEs/H,GAAIC,GAClCK,EAAQ1pI,KAAKuF,IACfo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACjBrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASE,IAErC5P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUI,EAC3B9P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUK,CAZ3B,CAeN,CACA,SAASE,EAASjQ,EAAKkQ,EAAOC,GAC5B,IAAIC,EAASF,EACTG,EAAWhqI,KAAKsoI,IAAI,GAAIwB,GAC5BD,GAAS,EACTE,GAAU,EACV,IAAK,IAAIX,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IAAM,CAS3C,GAPAa,EAAMtQ,EAAI+D,IAAIsL,KAAKrP,EAAIuQ,KAAKd,IAAOY,EACnCG,EAAQnqI,KAAKwF,IACXxF,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,GAC3BjqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,IAE7BG,EAAOpqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,GAClCI,EAAOrqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,GAC9BE,EAAQN,EAAQO,EAAOC,EAAM,CAC/B,IAAI1tI,EAAIwtI,EAAQJ,GAAUK,EAAOC,GACjCD,GAAQztI,EACR0tI,GAAQ1tI,CACV,CACAg9H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMppI,KAAKwF,IAAI4kI,EAAMzQ,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAC/CzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMppI,KAAKwF,IAAI6kI,EAAM1Q,EAAIkC,IAAI,GAAGriI,EAAE4vI,GACjD,CACAY,GAAY3S,GAAQsL,UAAYtL,GAAQwH,QACxC,IAASuK,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAAIc,EAAOC,EAAMC,EAAMJ,EAQvB,GAPAA,EAAMtQ,EAAI+D,IAAIqL,KAAKpP,EAAI2Q,KAAKlB,IAAOY,EACnCG,EAAQnqI,KAAKwF,IACXxF,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,GACnCjqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,IAErCG,EAAOpqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,GAC1CI,EAAOrqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,GACtCE,EAAQN,EAAQO,EAAOC,EAAM,CAC3B1tI,EAAIwtI,EAAQN,GAASO,EAAOC,GAChCD,GAAQztI,EACR0tI,GAAQ1tI,CACV,CACAg9H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASe,GAC9DzQ,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASgB,EAChE,CAEJ,CACA,SAASE,EAA6B5Q,EAAK6Q,EAAIC,EAAK7F,EAAKyE,GACvD,IAAID,EAAIxvI,EACJ8wI,EAAM,EACNC,EAAO,EACX,IAAKvB,EAAKxvI,EAAI,EAAGwvI,EAAK/R,GAAQqE,UAAW9hI,IAAKwvI,EAAI,CAChD,IAAIwB,EAAUjR,EAAIkR,KAAKzB,GACnB0B,EAAUnR,EAAImR,QACdC,EAAQH,EAAUE,EAAUF,EAAUE,EAC1C,MAAOlxI,EAAImxI,EACTpF,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GACnB8wI,GAAOF,EAAG5wI,GACV+wI,GAAQF,EAAI7wI,GACZA,IAIF,GAFA+/H,EAAImC,GAAG8I,GAAK96H,EAAEs/H,GAAIC,GAAUqB,EAC5B/Q,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAUsB,EACzB/wI,GAAKkxI,EAAS,GACd1B,EACF,KACF,CACAzD,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GAEjB,IAAIoxI,EAASrR,EAAIsR,IAAIC,YAAY9B,GAC7B+B,EAAS,EAAIH,EACjBN,EAAMM,EAASR,EAAG5wI,GAClB+wI,EAAOK,EAASP,EAAI7wI,GACpB+/H,EAAImC,GAAG8I,GAAK96H,EAAEs/H,GAAIC,IAAWqB,EAC7B/Q,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,IAAWsB,EAC9BD,EAAMS,EAASX,EAAG5wI,GAClB+wI,EAAOQ,EAASV,EAAI7wI,EAExB,CACA,KAAOwvI,EAAK/R,GAAQqE,UAAW0N,EAC7BzP,EAAImC,GAAG8I,GAAK96H,EAAEs/H,GAAIC,GAAU,EAC5B1P,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAU,CAEjC,CACA,SAAS+B,EAA6BzR,EAAK6Q,EAAIC,EAAK7F,GAClD,IAAIwE,EAAIxvI,EACJ8wI,EAAM,EACNC,EAAO,EACX,IAAKvB,EAAKxvI,EAAI,EAAGwvI,EAAK/R,GAAQoE,UAAW7hI,IAAKwvI,EAAI,CAChD,IAAIiC,EAAU1R,EAAI2R,KAAKlC,GACnBmC,EAAU5R,EAAI4R,QACdR,EAAQM,EAAUE,EAAUF,EAAUE,EAC1C,MAAO3xI,EAAImxI,EACTpF,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GACnB8wI,GAAOF,EAAG5wI,GACV+wI,GAAQF,EAAI7wI,GACZA,IAIF,GAFA+/H,EAAImC,GAAG8I,GAAKprI,EAAE4vI,GAAMsB,EACpB/Q,EAAIkC,IAAI+I,GAAKprI,EAAE4vI,GAAMuB,EACjB/wI,GAAK2xI,EAAS,GACdnC,EACF,KACF,CACAzD,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GAEjB,IAAIoxI,EAASrR,EAAIsR,IAAIO,YAAYpC,GAC7B+B,EAAS,EAAIH,EACjBN,EAAMM,EAASR,EAAG5wI,GAClB+wI,EAAOK,EAASP,EAAI7wI,GACpB+/H,EAAImC,GAAG8I,GAAKprI,EAAE4vI,IAAOsB,EACrB/Q,EAAIkC,IAAI+I,GAAKprI,EAAE4vI,IAAOuB,EACtBD,EAAMS,EAASX,EAAG5wI,GAClB+wI,EAAOQ,EAASV,EAAI7wI,EAExB,CACA,KAAOwvI,EAAK/R,GAAQoE,UAAW2N,EAC7BzP,EAAImC,GAAG8I,GAAKprI,EAAE4vI,GAAM,EACpBzP,EAAIkC,IAAI+I,GAAKprI,EAAE4vI,GAAM,CAEzB,CACA,SAASqC,EAAkBlN,EAAK2I,EAAasD,EAAIC,EAAK7F,EAAKyE,GACzD,IACI/sG,EAAG1iC,EADH+/H,EAAM4E,EAAIE,eAEd,IAAK7kI,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAImR,UAAWlxI,EAAG,CAGpC,IAFA,IAAI8xI,EAAM,EACNroI,EAAIs2H,EAAIgS,WAAW/xI,GACd1E,EAAI,EAAGA,EAAImO,IAAKnO,IAAKonC,EAAG,CAC/B,IAAI7gC,EAAKyrI,EAAYmC,GAAQ/sG,GAC7BovG,GAAOjwI,CACT,CACA+uI,EAAG5wI,GAAK8xI,CACV,CAEA,IADA/F,GAAS/rI,GAAK+/H,EAAImR,SACbxuG,EAAI1iC,EAAI,EAAGA,EAAI+/H,EAAImR,QAASlxI,IAAK,CACpC,IAAIivI,EAAKlP,EAAIiS,QAAQhyI,GAAG,GACpBiyI,EAAMlS,EAAImS,MAAMxvG,KAAOkuG,EAAG3B,KAC5BA,EACF,MAAOA,GAAMlP,EAAIiS,QAAQhyI,GAAG,GAC1BiyI,GAAOlS,EAAImS,MAAMxvG,GAAKkuG,EAAG3B,KACvBvsG,IACAusG,EAGF,IAAIzlI,EAAI6iI,EAAWtM,EAAIoS,MAAMnH,GAAKhrI,GAGpC,GAFE6wI,EAAI7wI,GAAKoG,KAAKwF,IAAIqmI,EAAKzoI,GAErBu2H,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQC,WAAY,CAChDl0H,EAAI8iI,EAAYvM,EAAIsS,MAAMrH,GAAKhrI,GAAnC,IACIi7H,EAAI4V,EAAI7wI,GACZ6wI,EAAI7wI,GAAKoG,KAAKwF,IAAIpC,EAAGyxH,EACvB,CACA8E,EAAIsS,MAAMrH,GAAKhrI,GAAK+/H,EAAIoS,MAAMnH,GAAKhrI,GACnC+/H,EAAIoS,MAAMnH,GAAKhrI,GAAKiyI,EACpBlG,GAAS8E,EAAI7wI,IAAM,EACrB,CACA,KAAOA,GAAKy9H,GAAQgL,SAAUzoI,EAC5B4wI,EAAG5wI,GAAK,EACR6wI,EAAI7wI,GAAK,CAEb,CACA,SAASsyI,EAAe3N,EAAK4N,EAAcC,EAAa/L,GACtD,IAAI1G,EAAM4E,EAAIE,eACVF,EAAI8N,cAAgBhH,GAAatQ,qBAA4C,GAAnBoX,EAAa,IAA8B,GAAnBA,EAAa,KACjGA,EAAa,GAAKA,EAAa,GAAK,GAEtC,IAAK,IAAIvH,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IACxCvE,EAAUuE,GAAOvN,GAAQqJ,UACrBnC,EAAI8N,cAAgBhH,GAAarQ,wBACnCmX,EAAavH,GAAO,GAElBrG,EAAI8N,cAAgBhH,GAAapQ,qBACnCkX,EAAavH,GAAO,GAEG,GAArBuH,EAAavH,IACfe,GAAShM,EAAIqS,cAAcpH,IAAQvN,GAAQwL,YACvClJ,EAAIqS,cAAcpH,IAAQvN,GAAQC,aACpC+I,EAAUuE,GAAOvN,GAAQyL,aAG3BzC,EAAUuE,GAAOvN,GAAQC,WACrBqC,EAAIqS,cAAcpH,IAAQvN,GAAQqJ,YACpC/G,EAAIqS,cAAcpH,GAAOvN,GAAQwL,YAE/BlJ,EAAIqS,cAAcpH,IAAQvN,GAAQyL,YACpCnJ,EAAIqS,cAAcpH,GAAOvN,GAAQC,aAGrC8U,EAAYxH,GAAOjL,EAAIqS,cAAcpH,GACrCjL,EAAIqS,cAAcpH,GAAOvE,EAAUuE,EAEvC,CACA,SAAS0H,EAAUlpI,EAAGyxH,EAAG/7G,GACvB,OAAIA,GAAK,EACA1V,EAEL0V,GAAK,EACA+7G,EACLA,EAAI,EACC70H,KAAKsoI,IAAIllI,EAAIyxH,EAAG/7G,GAAK+7G,EAEvB,CACT,CACA,IAAI0X,EAAY,CACd,KACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAEF,SAASC,EAASC,EAAIC,GAEpB,IADA,IAAIC,EAAO,OACFvD,EAAK,EAAGA,EAAK/R,GAAQqE,QAAU,EAAG0N,IACzC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAAIxN,EAAM4Q,EAAG5Q,IAAI/xH,EAAEs/H,GAAIC,GACvB,GAAIxN,EAAM,EAAG,CACX,IAAIz4H,EAAIy4H,EAAM6Q,EACV5Q,EAAK2Q,EAAG3Q,GAAGhyH,EAAEs/H,GAAIC,GACjBvN,EAAK14H,IAELupI,GADE7Q,EAAS,KAAJ14H,EACCmpI,EAAUnD,IAAO,GAAKtD,GAEtByG,EAAUnD,GAAM9D,GAAO5Q,WAAWoH,EAAK14H,GAGrD,CACF,CAEF,OAAOupI,CACT,CACA,IAAIC,EAAY,CACd,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAEF,SAASC,EAASJ,EAAIC,GAEpB,IADA,IAAII,EAAO,SACF1D,EAAK,EAAGA,EAAK/R,GAAQoE,QAAU,EAAG2N,IAAM,CAC/C,IAAIvN,EAAM4Q,EAAG5Q,IAAIriI,EAAE4vI,GACnB,GAAIvN,EAAM,EAAG,CACX,IAAIz4H,EAAIy4H,EAAM6Q,EACV5Q,EAAK2Q,EAAG3Q,GAAGtiI,EAAE4vI,GACbtN,EAAK14H,IAEL0pI,GADEhR,EAAS,KAAJ14H,EACCwpI,EAAUxD,IAAO,GAAKtD,GAEtB8G,EAAUxD,GAAM9D,GAAO5Q,WAAWoH,EAAK14H,GAGrD,CACF,CACA,OAAO0pI,CACT,CACA,SAASC,EAAYpT,EAAKsN,EAAWuD,EAAIjlI,EAAKynI,GAC5C,IAAIpzI,EAAG0iC,EACP,IAAK1iC,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAI4R,UAAW3xI,EAAG,CACpC,IAEI1E,EAFAw2I,EAAM,EACN3qH,EAAI,EAER,IAAK7rB,EAAI,EAAGA,EAAIykI,EAAIsT,WAAWrzI,KAAM1E,IAAKonC,EAAG,CAC3C,IAAI7gC,EAAKwrI,EAAU3qG,GACnBovG,GAAOjwI,EACHslB,EAAItlB,IACNslB,EAAItlB,EACR,CACA+uI,EAAG5wI,GAAK8xI,EACRnmI,EAAI3L,GAAKmnB,EACTisH,EAAIpzI,GAAK8xI,EAAM/R,EAAIuT,YAAYtzI,GAC/B+rI,GAAShM,EAAIuT,YAAYtzI,IAAM,GAC/B+rI,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAASpgI,EAAI3L,IAAM,GACnB+rI,GAASqH,EAAIpzI,IAAM,EACrB,CACF,CACA,SAASuzI,EAAkBxT,EAAKp0H,EAAKynI,EAAKI,GACxC,IAAIC,EAAiBjF,EAAI93I,OAAS,EAC9BsJ,EAAI,EACJD,EAAIqzI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GACzB,GAAID,EAAI,EAAG,CACT,IAAIonB,EAAIxb,EAAI3L,GACRmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GAAShM,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,IACzE,IAAIo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB,IAAKA,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAU,EAAG3xI,IAE/B,GADAD,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GAC9BD,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACNmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GACEhM,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,EAAI,GAE1ED,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,IAC7Fo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAKlB,GAFA+rI,GAAS/rI,GAAK+/H,EAAI4R,QAAU,GAC5B5xI,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GACjBD,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACV+rI,GAAShM,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK,IACrEo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB+rI,GAAS/rI,GAAK+/H,EAAI4R,QAAU,EAC9B,CACA,IAAI/J,EAAU,EACZ,aACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,aACA,SA6RF,SAAS8L,EAAqB/O,EAAKhqI,EAAQswI,EAAQD,EAAK2C,EAAQN,EAAWE,EAASC,GAClF,IAAIzN,EAAM4E,EAAIE,eACd,GAAImG,EAAM,EACRiB,EAAIf,SAASnL,EAAKwN,EAAQC,GAAaxC,EAAKrwI,EAAQswI,QAC/C,GAAW,GAAPD,EACT,IAAK,IAAItoG,EAAI+6F,GAAQwH,QAAU,EAAGviG,GAAK,IAAKA,EAAG,CAC7C,IAAI9iC,EAAI2tI,EAAQC,EAAa,GAAG9qG,GAC5BxjB,EAAIquH,EAAQC,EAAa,GAAG9qG,GAChC6qG,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GACtD0S,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EACxD,CAEFwS,EAAU,GAAKL,EAAwBO,EAAQC,EAAa,GAAG,IAC/DH,EAAU,IAAMA,EAAU,GAC1B,IAAS3qG,EAAI+6F,GAAQwH,QAAU,EAAI,EAAGviG,GAAK,IAAKA,EAAG,CACjD,IAAIkrG,EAAKL,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACnDmrG,EAAKN,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACvD2qG,EAAU5P,GAAQwH,QAAU,EAAIviG,GAAKsqG,EACb,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CAEE,IAAIC,EAAc,EAClB,IAASprG,EAAI,GAAIA,EAAI+6F,GAAQqL,SAAUpmG,IACrCorG,GAAeT,EAAU3qG,GAG7B,GAFEq9F,EAAI+F,SAASkF,GAAO8C,EAElBnJ,EAAI0C,SAAU,CAChB,IAAS3kG,EAAI,EAAGA,EAAI+6F,GAAQqL,SAAUpmG,IACpCq9F,EAAIuH,MAAMG,OAAOkG,GAAQ3C,GAAKtoG,GAAKq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAC9Dq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAAK2qG,EAAU3qG,GAE5Cq9F,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOjL,EAAIiG,GAAGgF,EACrC,CACF,CACA,SAAS2I,EAAqBhP,EAAKhqI,EAAQswI,EAAQD,EAAKyE,EAAQnC,EAAaG,EAASC,GACpF,IAAI3N,EAAM4E,EAAIE,eAId,GAHc,GAAV4K,GAAezE,EAAM,GACvBiB,EAAInB,UAAU/K,EAAK0N,EAAQC,GAAa1C,EAAKrwI,EAAQswI,GAE5C,GAAPD,EACF,IAAK,IAAItoG,EAAI+6F,GAAQsL,UAAY,EAAGrmG,GAAK,IAAKA,EAAG,CAC/C,IAAI9iC,EAAI6tI,EAAQC,EAAa,GAAG+B,GAAQ/sG,GACpCxjB,EAAIuuH,EAAQC,EAAa,GAAG+B,GAAQ/sG,GACxC+qG,EAAQC,EAAa,GAAG+B,GAAQ/sG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GAC9D4S,EAAQC,EAAa,GAAG+B,GAAQ/sG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EAChE,CAEFyS,EAAYmC,GAAQ,GAAKhC,EAAQC,EAAa,GAAG+B,GAAQ,GACzDnC,EAAYmC,GAAQ,IAAMnC,EAAYmC,GAAQ,GAC9C,IAAS/sG,EAAI+6F,GAAQsL,UAAY,EAAI,EAAGrmG,GAAK,IAAKA,EAAG,CACnD,IAAIkrG,EAAKH,EAAQC,EAAa,GAAG+B,GAAQhS,GAAQsL,UAAY,EAAIrmG,GAC7DmrG,EAAKJ,EAAQC,EAAa,GAAG+B,GAAQhS,GAAQsL,UAAY,EAAIrmG,GACjE4qG,EAAYmC,GAAQhS,GAAQsL,UAAY,EAAIrmG,GAAKsqG,EACzB,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CACF,CACA,SAAS+F,EAAwCjP,EAAKgJ,EAAQ3C,EAAKqC,GACjE,IAAItN,EAAM4E,EAAIE,eACc,GAAxBF,EAAIqJ,kBAAyBhD,EAAM,IACrCjL,EAAIiE,YAAY2J,GAAQ3C,GAAOjL,EAAIkO,iBAAiBjD,GACpDjL,EAAIkO,iBAAiBjD,GAAOiC,EAAuBI,EAAWtN,GAElE,CA3VA3qI,KAAKwxI,iBAAmB,SAASjC,EAAKhqI,EAAQswI,EAAQ0C,EAAQkG,EAAeC,EAAkBC,EAAgBC,EAAmBvM,EAAQ+K,GACxI,IAQIyB,EAAQjJ,EACRhrI,EAAG1E,EAAGonC,EAAG0U,EACTo4F,EAAIC,EAEJyE,EA0OEjE,EAtPFlQ,EAAM4E,EAAIE,eACVsP,EAAUtI,GAAc,CAAC,EAAGpO,GAAQwH,UACpCmP,EAAUvI,GAAc,CAAC,EAAG,EAAGpO,GAAQsL,YACvCsL,EAAOzI,GAAYnO,GAAQgL,OAAS,GACpC6L,EAAO1I,GAAYnO,GAAQgL,OAAS,GACpCoI,EAAMjF,GAAYnO,GAAQgL,OAAS,GACnChC,EAAYqF,GAAU,GACtByG,EAAezG,GAAU,GAIzByI,EAAa1I,GAAc,CAAC,EAAG,MAE/B2I,EAAa1I,GAAUrO,GAAQgL,OAAS,GACxCgM,EAAa3I,GAAUrO,GAAQgL,OAAS,GAW5C,IAVAkD,GAASx2G,KAAKs/G,EAAY,GAC1BR,EAASlU,EAAIM,aACTsE,EAAIv5H,MAAQ+2H,GAASG,eACvB2R,EAAS,GAETC,EADEvP,EAAI+B,KAAO6E,GAAU9P,QACC,GAAfsE,EAAI2U,QAAe,EAAI3U,EAAI4U,SAAW5U,EAAI2U,QAAU,GACpD/P,EAAI+B,KAAO6E,GAAU5P,QAAUgJ,EAAI+B,KAAO6E,GAAU1P,UAAY8I,EAAI+B,KAAO6E,GAAU7P,OACrF,GAEA,EACNsP,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IAAO,CAC3C,IAAI4J,EAAUj6I,EAAOqwI,GACjB6J,GAAY5J,EAAS,IAAM,IAAM6B,EAAW,IAChD,IAAKxxI,EAAI,EAAGA,EAAI,IAAKA,IAAK,CACxB,IAAIw5I,GAAMC,GAGV,IAFAD,GAAOF,EAAQC,GAAYv5I,EAAI,IAC/By5I,GAAO,EACFryG,EAAI,EAAGA,GAAKoqG,EAAW,GAAK,EAAI,EAAGpqG,GAAK,EAC3CoyG,IAAQlN,EAAQllG,IAAMkyG,EAAQC,GAAYv5I,EAAIonC,GAAKkyG,EAAQC,GAAYv5I,EAAIwxI,EAAWpqG,IACtFqyG,IAAQnN,EAAQllG,EAAI,IAAMkyG,EAAQC,GAAYv5I,EAAIonC,EAAI,GAAKkyG,EAAQC,GAAYv5I,EAAIwxI,EAAWpqG,EAAI,IAEpG6xG,EAAWvJ,GAAK1vI,GAAKw5I,GAAOC,EAC9B,CACAlB,EAAclG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,IAC5C6I,EAAclG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,IAC1CiJ,EAAS,IACXH,EAAiBnG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,EAAM,IACrD8I,EAAiBnG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,EAAM,IAE3D,CACA,IAAKA,EAAM,EAAGA,EAAMiJ,EAAQjJ,IAAO,CACjC,IAAIuC,GACAE,GAKAuH,GAJAC,GAAcrJ,GAAY,IAC1BsJ,GAAW,CAAC,EAAG,EAAG,EAAG,GACrBC,GAAmBvJ,GAAY,IAC/BwJ,GAAkB,EAElBzpI,GAAMigI,GAAYnO,GAAQgL,QAC1B2K,GAAMxH,GAAYnO,GAAQgL,QAC1B4M,GAAa,CAAC,EAAG,EAAG,EAAG,GACvBhI,GAAYzB,GAAYnO,GAAQqL,UAChCwE,GAAczB,GAAc,CAAC,EAAGpO,GAAQuL,aAG5C,IAFA+C,GAAShM,EAAImR,SAAWzT,GAAQgL,QAChCsD,GAAShM,EAAI4R,SAAWlU,GAAQgL,QAC3BntI,EAAI,EAAGA,EAAI,EAAGA,IACjB25I,GAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GACrDywI,GAAShM,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAAK,GAClD65I,GAAiB75I,GAAK25I,GAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAC3E45I,GAAS,IAAMD,GAAY35I,GAE7B,GAAW,GAAP0vI,EACF,IAAK1vI,EAAI,EAAGA,EAAI,IAAKA,IAAK,CACxB,IAAIsE,GAAGsf,GACPtf,GAAI20I,EAAW,GAAGj5I,GAClB4jB,GAAIq1H,EAAW,GAAGj5I,GAClBi5I,EAAW,GAAGj5I,GAAKsE,GAAIsf,GACvBq1H,EAAW,GAAGj5I,GAAKsE,GAAIsf,EACzB,CAGA,IAAIq2H,GAAKhB,EAAiB,EAANvJ,GAChBwK,GAAQ,EACZ,IAAKl6I,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGtB,IAFA,IAAIm6I,GAAMD,GAAQ,GACdr0E,GAAK,EACFq0E,GAAQC,GAAKD,KACdr0E,GAAK/6D,KAAK01G,IAAIy5B,GAAGC,OACnBr0E,GAAK/6D,KAAK01G,IAAIy5B,GAAGC,MAErBzV,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,GAAK25I,GAAY35I,EAAI,GAAK6lE,GAC1D+zE,GAAS,EAAI55I,EAAI,IAAM6lE,GACnBA,GAAK8zE,GAAY35I,EAAI,EAAI,IAC3BywI,GAASkJ,GAAY35I,EAAI,EAAI,GAAK,GAClC6lE,IAAU8zE,GAAY35I,EAAI,EAAI,IAE9B6lE,GADS8zE,GAAY35I,EAAI,EAAI,GAAU,GAAL6lE,GAC7B8zE,GAAY35I,EAAI,EAAI,IAAW,GAAL6lE,IAE1B,EACPg0E,GAAiB75I,EAAI,GAAK6lE,EAC5B,CAEF,GAAIwjE,EAAI0C,SAAU,CAChB,IAAI79H,GAAI2rI,GAAiB,GACzB,IAAK75I,EAAI,EAAGA,EAAI,GAAIA,IACdkO,GAAI2rI,GAAiB75I,KACvBkO,GAAI2rI,GAAiB75I,IAEzBykI,EAAIuH,MAAME,IAAImG,GAAQ3C,GAAOjL,EAAIuH,MAAMoO,SAAS1K,GAChDjL,EAAIuH,MAAMoO,SAAS1K,GAAOxhI,EAC5B,CAEA,IADAwrI,GAAyB,GAAPhK,EAAWjL,EAAI2H,MAAMiO,aAAe5V,EAAI2H,MAAMkO,WAC3Dt6I,EAAI,EAAGA,EAAI,GAAIA,IACO,GAArB+5I,GAAW/5I,EAAI,IAAW65I,GAAiB75I,GAAK05I,KAClDK,GAAW/5I,EAAI,GAAKA,EAAI,EAAI,GAGhC,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAIkmG,GACA0zC,GAAS55I,EAAI,GAAK45I,GAAS55I,IAC7BywI,GAASmJ,GAAS55I,GAAK,GACvBkmG,GAAQ0zC,GAAS55I,EAAI,GAAK45I,GAAS55I,KAEnCywI,GAASmJ,GAAS55I,EAAI,GAAK,GAC3BkmG,GAAQ0zC,GAAS55I,GAAK45I,GAAS55I,EAAI,IAEjCkmG,GAAQ,MACV6zC,GAAW/5I,GAAK,EACP,GAALA,IACF+5I,GAAW,GAAK,GAEtB,CAsCA,IArCqB,GAAjBA,GAAW,IAAyC,GAA9BtV,EAAI2H,MAAMmO,YAAY7K,KAC9CqK,GAAW,GAAK,GAEgB,GAA9BtV,EAAI2H,MAAMmO,YAAY7K,IAAaqK,GAAW,GAAKA,GAAW,GAAKA,GAAW,GAAKA,GAAW,IAAM,IACtGD,GAAkB,EACG,GAAjBC,GAAW,IAA4B,GAAjBA,GAAW,KACnCA,GAAW,GAAK,GACG,GAAjBA,GAAW,IAA4B,GAAjBA,GAAW,KACnCA,GAAW,GAAK,GACG,GAAjBA,GAAW,IAA4B,GAAjBA,GAAW,KACnCA,GAAW,GAAK,IAEhBrK,EAAM,EACRuH,EAAavH,GAAOoK,GAEG,GAAnBA,KACF7C,EAAa,GAAKA,EAAa,GAAK,GAGxC9K,EAAOuD,GAAOjL,EAAI+F,SAASkF,GAC3ByC,GAAU2G,EACV7G,GAAU4G,EACV/G,EACEzI,EACA0I,GACAC,GACAC,GACM,EAANvC,EACAyC,GACM,EAANzC,EACA2C,EACA3C,EACArwI,EACAswI,GAEFkI,EAAYpT,EAAKsN,GAAWgH,EAAM1oI,GAAKynI,IACvCG,EAAkBxT,EAAKp0H,GAAKynI,GAAKoB,GAC5B/E,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACrC,IAAIqB,GAAKC,GAGT,IAFAc,EAAkBlN,EAAK2I,GAAagH,EAAMzD,EAAK7F,EAAKyE,GACpDkB,EAA6B5Q,EAAKuU,EAAMzD,EAAK7F,EAAKyE,GAC7CD,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IAAM,CAGvC,GAFAuB,GAAOhR,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAC1BsB,IAAQrE,EACJ2I,GAAW5F,IAAW,GAA+B,GAA1B4F,GAAW5F,EAAS,GAAS,CAC1D,IAAIhpC,GAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,GAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,IACnBsqC,GACApE,EAAkBuH,GAEpBnD,GAAO3qI,KAAKwF,IAAImlI,GAAM5vE,GACxB,CACA,GAA0B,GAAtBk0E,GAAW5F,GAAc,CACvBhpC,GAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,GAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,IACnBsqC,GACAnE,EAAkBsH,GAEpBnD,GAAO3qI,KAAKwF,IAAImlI,GAAM5vE,GACxB,MAAO,GAAc,GAAVsuE,GAAyC,GAA1B4F,GAAW5F,EAAS,IAAqB,GAAVA,GAA6C,GAA9B1P,EAAI2H,MAAMmO,YAAY7K,GAAW,CACnGvkC,GAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,GAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,IACnBsqC,GACAnE,EAAkBsH,GAEpBnD,GAAO3qI,KAAKwF,IAAImlI,GAAM5vE,GACxB,CACA2vE,GAAMmE,GAAqB,EAATxF,EAAa,GAAKwF,GAAqB,EAATxF,EAAa,GAAKwF,GAAqB,EAATxF,EAAa,GACzD,EAA9BwF,GAAqB,EAATxF,EAAa,GAASqB,KACpCC,IAAQ,GAC0B,EAA9BkE,GAAqB,EAATxF,EAAa,GAASqB,KACpCC,IAAQ,KAEZhR,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAUsB,EAC/B,CACF,CAIE,IAHFhR,EAAI2H,MAAMmO,YAAY7K,GAAOqK,GAAW,GACxCj+F,EAAI,EAEGp3C,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAAK,CAChC,IAAIivI,GAAKlP,EAAI+V,MAAM91I,GAAG,GAClB+1I,GAAM1B,EAAKpF,IAAMT,EAAIgG,EAAWvF,KAChCgD,GAAMlS,EAAIiW,MAAM5+F,KAAO2+F,GAC3B,QAAS9G,IAAMlP,EAAI+V,MAAM91I,GAAG,GAC1B+1I,GAAM1B,EAAKpF,IAAMT,EAAIgG,EAAWvF,KAChCgD,GAAMnD,EAASmD,GAAKlS,EAAIiW,MAAM5+F,KAAO2+F,GAAK9G,GAAIA,GAAKjvI,EAAG+/H,EAAK,GAE7DkS,IAAO,iBACHlS,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQC,WACxCmT,EAAI7wI,GAAKiyI,GAETpB,EAAI7wI,GAAK0yI,EACPtsI,KAAKwF,IACHqmI,GACA7rI,KAAKwF,IAAIugI,EAASpM,EAAIkW,KAAKjL,GAAKhrI,GAAIosI,EAAUrM,EAAImW,KAAKlL,GAAKhrI,KAE9DiyI,GACAiC,GAGJnU,EAAImW,KAAKlL,GAAKhrI,GAAK+/H,EAAIkW,KAAKjL,GAAKhrI,GACjC+/H,EAAIkW,KAAKjL,GAAKhrI,GAAKiyI,EACrB,CAEF,KAAOjyI,GAAKy9H,GAAQgL,SAAUzoI,EAC5Bq0I,EAAKr0I,GAAK,EACV6wI,EAAI7wI,GAAK,EAEXwxI,EAA6BzR,EAAKsU,EAAMxD,EAAK7F,EAC/C,EACIrG,EAAIv5H,MAAQ+2H,GAASE,QAAUsC,EAAIv5H,MAAQ+2H,GAASG,cAClDqC,EAAIwR,aAAe,GACrB5G,EAA0B5K,EAAKA,EAAIwR,cAGnCxR,EAAIv5H,MAAQ+2H,GAASG,gBAEvBoN,EAAO3P,GACPkQ,EAAQtL,EAAIsL,MACR7pI,KAAK01G,IAAIm0B,GAAS,GACpBD,EAASjQ,EAAKkQ,EAAOtL,EAAIyR,SAAWrW,EAAI+D,IAAInnD,SAIhD,IADA21D,EAAe3N,EAAK4N,EAAcC,EAAa/L,GAC1CuE,EAAM,EAAGA,EAAMiJ,EAAQjJ,IAAO,CACjC,IAAIqL,GAEA1uI,GACAkrI,GAFAyD,GAAS,EAGTtL,EAAM,GACRqL,GAAMrC,EACNsC,IAAU,EACV3uI,GAAO81H,GAAQqJ,UACX0L,EAAY,IAAM/U,GAAQC,YAAc8U,EAAY,IAAM/U,GAAQC,aACpE/1H,GAAO81H,GAAQC,YAEjBmV,GAAKiB,EAAiBnG,GAAQ3C,EAAM,KAEpCqL,GAAMtC,EACNuC,GAAS,EACT3uI,GAAO6qI,EAAYxH,GACnB6H,GAAKgB,EAAclG,GAAQ3C,IAEzBrjI,IAAQ81H,GAAQC,WAClB2Y,GAAIC,GAAStL,GAAO4H,EAASC,GAAI9S,EAAI+S,eAErCuD,GAAIC,GAAStL,GAAOiI,EAASJ,GAAI9S,EAAI+S,eACnCnO,EAAI0C,WACNtH,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOqL,GAAIC,GAAStL,GAC7C,CACA,OAAO,CACT,EAkEA,IAAIuL,EAAW,EACb,aACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,aACA,SAEF,SAASC,EAAwB7R,EAAKhqI,EAAQswI,EAAQ0C,EAAQkG,EAAeC,EAAkBrM,EAAQgP,EAAkBpB,EAAY9C,GAKnI,IAJA,IAAIgC,EAAa1I,GAAc,CAAC,EAAG,MAC/B9L,EAAM4E,EAAIE,eACV6R,EAAY3W,EAAIM,aAChBsW,EAAYhS,EAAIv5H,MAAQ+2H,GAASG,aAAe,EAAIoU,EAC/C1L,EAAM,EAAGA,EAAM0L,EAAW1L,IAAO,CACxC4L,OAASj8I,EAAOqwI,GAEhB,IADA,IAAI6J,EAAY5J,EAAS,IAAM,IAAM6B,EAAW,IACvCxxI,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5B,IAAIw5I,EAAMC,EACVD,EAAO8B,OAAO/B,EAAYv5I,EAAI,IAC9By5I,EAAO,EACP,IAAK,IAAIryG,EAAI,EAAGA,GAAKoqG,EAAW,GAAK,EAAI,EAAGpqG,GAAK,EAC/CoyG,GAAQyB,EAAS7zG,IAAMk0G,OAAO/B,EAAYv5I,EAAIonC,GAAKk0G,OAAO/B,EAAYv5I,EAAIwxI,EAAWpqG,IACrFqyG,GAAQwB,EAAS7zG,EAAI,IAAMk0G,OAAO/B,EAAYv5I,EAAIonC,EAAI,GAAKk0G,OAAO/B,EAAYv5I,EAAIwxI,EAAWpqG,EAAI,IAEnG6xG,EAAWvJ,GAAK1vI,GAAKw5I,EAAOC,CAC9B,CACAlB,EAAclG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,IAC5C6I,EAAclG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,IAC1C2L,EAAY,IACd7C,EAAiBnG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,EAAM,IACrD8I,EAAiBnG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,EAAM,IAE3D,CACA,IAASA,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACxC,IAAImK,EAAmBvJ,GAAY,IAC/BqJ,EAAcrJ,GAAY,IAC1BsJ,EAAW,CAAC,EAAG,EAAG,EAAG,GACrBK,EAAKhB,EAAiB,EAANvJ,GAChBwK,EAAQ,EACRR,EAAyB,GAAPhK,EAAWjL,EAAI2H,MAAMiO,aAAe5V,EAAI2H,MAAMkO,WAChER,EAAkB,EACtB,GAAW,GAAPpK,EACF,IAAS1vI,EAAI,EAAGonC,EAAI,IAAKA,EAAI,IAAKpnC,IAAKonC,EAAG,CACxC,IAAI9iC,EAAI20I,EAAW,GAAGj5I,GAClB4jB,EAAIq1H,EAAW,GAAGj5I,GACtBi5I,EAAW,GAAGj5I,GAAKsE,EAAIsf,EACvBq1H,EAAW,GAAGj5I,GAAKsE,EAAIsf,CACzB,CAEF,IAAS5jB,EAAI,EAAGA,EAAI,EAAGA,IACrB25I,EAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GACrDywI,GAAShM,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAAK,GAClD65I,EAAiB75I,GAAK25I,EAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAC3E45I,EAAS,IAAMD,EAAY35I,GAE7B,IAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAG1B,IAFA,IAAIm6I,EAAMD,EAAQ,GACdr0E,EAAK,EACFq0E,EAAQC,EAAKD,IACdr0E,EAAK/6D,KAAK01G,IAAIy5B,EAAGC,MACnBr0E,EAAK/6D,KAAK01G,IAAIy5B,EAAGC,KAErBzV,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,GAAK25I,EAAY35I,EAAI,GAAK6lE,EAC1D+zE,EAAS,EAAI55I,EAAI,IAAM6lE,EACnBA,EAAK8zE,EAAY35I,EAAI,EAAI,IAC3BywI,GAASkJ,EAAY35I,EAAI,EAAI,GAAK,GAClC6lE,GAAU8zE,EAAY35I,EAAI,EAAI,IAE9B6lE,EADS8zE,EAAY35I,EAAI,EAAI,GAAU,GAAL6lE,EAC7B8zE,EAAY35I,EAAI,EAAI,IAAW,GAAL6lE,GAE1B,EAEPg0E,EAAiB75I,EAAI,GAAK6lE,CAC5B,CACA,IAAS7lE,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAIw1I,EAAMmE,EAAgB,EAAJ35I,EAAQ,GAAK25I,EAAgB,EAAJ35I,EAAQ,GAAK25I,EAAgB,EAAJ35I,EAAQ,GAC5Eu7I,EAAS,EACgB,EAAzB5B,EAAgB,EAAJ35I,EAAQ,GAASw1I,IAC/B+F,GAAU,GACmB,EAAzB5B,EAAgB,EAAJ35I,EAAQ,GAASw1I,IAC/B+F,GAAU,KAGdJ,EAAiBzL,GAAK1vI,GAAKu7I,CAC7B,CACA,GAAIlS,EAAI0C,SAAU,CAChB,IAAI79H,EAAI2rI,EAAiB,GACzB,IAAS75I,EAAI,EAAGA,EAAI,GAAIA,IAClBkO,EAAI2rI,EAAiB75I,KACvBkO,EAAI2rI,EAAiB75I,IAGzBykI,EAAIuH,MAAME,IAAImG,GAAQ3C,GAAOjL,EAAIuH,MAAMoO,SAAS1K,GAChDjL,EAAIuH,MAAMoO,SAAS1K,GAAOxhI,CAC5B,CACA,IAASlO,EAAI,EAAGA,EAAI,GAAIA,IACQ,GAA1B+5I,EAAWrK,GAAK1vI,EAAI,IAAW65I,EAAiB75I,GAAK05I,IACvDK,EAAWrK,GAAK1vI,EAAI,GAAKA,EAAI,EAAI,GAGrC,IAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIgjD,EAAI42F,EAAS55I,EAAI,GACjBK,EAAIu5I,EAAS55I,GACb6rB,EAAI/gB,KAAKuF,IAAI2yC,EAAG3iD,GAChBwrB,EAAI,KACFm3B,EAAI,IAAM3iD,GAAKA,EAAI,IAAM2iD,IAClB,GAALhjD,GAAU+5I,EAAWrK,GAAK,IAAMqK,EAAWrK,GAAK1vI,KAClD+5I,EAAWrK,GAAK,GAAK,GAEvBqK,EAAWrK,GAAK1vI,GAAK,EAG3B,CACI+5I,EAAWrK,GAAK,IAAMjL,EAAI2H,MAAMmO,YAAY7K,KAC9CqK,EAAWrK,GAAK,GAAK,GAEW,GAA9BjL,EAAI2H,MAAMmO,YAAY7K,IAAaqK,EAAWrK,GAAK,GAAKqK,EAAWrK,GAAK,GAAKqK,EAAWrK,GAAK,GAAKqK,EAAWrK,GAAK,IAAM,IAC1HoK,EAAkB,EACQ,GAAtBC,EAAWrK,GAAK,IAAiC,GAAtBqK,EAAWrK,GAAK,KAC7CqK,EAAWrK,GAAK,GAAK,GAEG,GAAtBqK,EAAWrK,GAAK,IAAiC,GAAtBqK,EAAWrK,GAAK,KAC7CqK,EAAWrK,GAAK,GAAK,GAEG,GAAtBqK,EAAWrK,GAAK,IAAiC,GAAtBqK,EAAWrK,GAAK,KAC7CqK,EAAWrK,GAAK,GAAK,IAGrBA,EAAM,EACRuH,EAAavH,GAAOoK,EAEG,GAAnBA,IACF7C,EAAa,GAAKA,EAAa,GAAK,GAGxC9K,EAAOuD,GAAOjL,EAAI+F,SAASkF,EAC7B,CACF,CACA,SAAS8L,EAAsB/W,EAAKiL,EAAKyE,GACvC,GAAc,GAAVA,EACF,IAAK,IAAIzvI,EAAI,EAAGA,EAAI+/H,EAAImR,QAASlxI,IAC/B+/H,EAAIsS,MAAMrH,GAAKhrI,GAAK+/H,EAAIoS,MAAMnH,GAAKhrI,GACnC+/H,EAAIoS,MAAMnH,GAAKhrI,GAAK,CAG1B,CACA,SAAS+2I,EAAsBhX,EAAKiL,GAClC,IAAK,IAAIhrI,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAC/B+/H,EAAImW,KAAKlL,GAAKhrI,GAAK+/H,EAAIkW,KAAKjL,GAAKhrI,GACjC+/H,EAAIkW,KAAKjL,GAAKhrI,GAAK,CAEvB,CACA,SAASg3I,GAAyBjX,EAAKp0H,EAAKynI,EAAKI,GAC/C,IAAIC,EAAiBjF,EAAI93I,OAAS,EAC9BsJ,EAAI,EACJD,EAAIqzI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GACzB,GAAID,EAAI,EAAG,CACT,IAAIonB,EAAIxb,EAAI3L,GACRmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GAAShM,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,IACzE,IAAIo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB,IAAKA,EAAI,EAAGA,EAAI+/H,EAAImR,QAAU,EAAGlxI,IAG/B,GAFAD,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GAClC+rI,GAAS/rI,EAAI,EAAI+/H,EAAImR,SACjBnxI,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACNmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GACEhM,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,EAAI,GAE1ED,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,IAC7Fo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAKlB,GAFA+rI,GAAS/rI,GAAK+/H,EAAImR,QAAU,GAC5BnxI,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GACjBD,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACV+rI,GAAShM,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK,IACrEo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB+rI,GAAS/rI,GAAK+/H,EAAImR,QAAU,EAC9B,CACA,SAAS+F,GAAyBtS,EAAK2I,EAAasD,EAAIC,EAAK7F,EAAKyE,GAChE,IAGIn0I,EAAGonC,EAAG1iC,EAHN+/H,EAAM4E,EAAIE,eACVl5H,EAAM,IAAIurI,MAAMzZ,GAAQgL,QACxB2K,EAAMxH,GAAYnO,GAAQgL,QAE1BgM,EAAa,IAAI0C,IAAI1Z,GAAQgL,QACjC,IAAKzoI,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAImR,UAAWlxI,EAAG,CACpC,IAAI8xI,EAAM,EACN3qH,EAAI,EACJ1d,EAAIs2H,EAAIgS,WAAW/xI,GACvB,IAAK1E,EAAI,EAAGA,EAAImO,IAAKnO,IAAKonC,EAAG,CAC3B,IAAI7gC,EAAKyrI,EAAYmC,GAAQ/sG,GAC7BovG,GAAOjwI,EACHslB,EAAItlB,IACNslB,EAAItlB,EACR,CACA+uI,EAAG5wI,GAAK8xI,EACRnmI,EAAI3L,GAAKmnB,EACTisH,EAAIpzI,GAAK8xI,EAAMroI,EACfsiI,GAASqH,EAAIpzI,IAAM,EACrB,CAEA,IADA+rI,GAAS/rI,GAAK+/H,EAAImR,SACXlxI,EAAIy9H,GAAQgL,SAAUzoI,EAC3B2L,EAAI3L,GAAK,EACTozI,EAAIpzI,GAAK,EAGX,IADAg3I,GAAyBjX,EAAKp0H,EAAKynI,EAAKqB,GACnC/xG,EAAI1iC,EAAI,EAAGA,EAAI+/H,EAAImR,QAASlxI,IAAK,CACpC,IAEIo3I,EAAIC,EACJ7tI,EAAGyoI,EAAKqF,EAHRrI,EAAKlP,EAAIiS,QAAQhyI,GAAG,GACpB6U,EAAOkrH,EAAIiS,QAAQhyI,GAAG,GAG1Bo3I,EAAK3C,EAAWxF,GAChBoI,EAAO,EACPpF,EAAMlS,EAAImS,MAAMxvG,GAAKkuG,EAAG3B,GAAMT,EAAIiG,EAAWxF,MAC3CvsG,IACAusG,EACF,MAAOA,GAAMp6H,EACXuiI,GAAM3C,EAAWxF,GACjBoI,GAAQ,EACR7tI,EAAIu2H,EAAImS,MAAMxvG,GAAKkuG,EAAG3B,GAAMT,EAAIiG,EAAWxF,IAC3CgD,EAAM3C,EAAgB2C,EAAKzoI,EAAGylI,EAAKjvI,KACjC0iC,IACAusG,EAEJmI,GAAM,EAAI,EAAIA,IAAO,EAAIC,GACzBC,EAAqB,GAAV9I,EAAI4I,GACfnF,GAAOqF,EACPzG,EAAI7wI,GAAKiyI,EACTlS,EAAIsS,MAAMrH,GAAKhrI,GAAK+/H,EAAIoS,MAAMnH,GAAKhrI,GACnC+/H,EAAIoS,MAAMnH,GAAKhrI,GAAKiyI,EAElBzoI,EAAImC,EAAI3L,GACRwJ,GAAKu2H,EAAIwX,SAASv3I,GAClBwJ,GAAK8tI,EACDzG,EAAI7wI,GAAKwJ,IACXqnI,EAAI7wI,GAAKwJ,GAGTu2H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEZjC,EAAI7wI,GAAK4wI,EAAG5wI,KACd6wI,EAAI7wI,GAAK4wI,EAAG5wI,IAEV+/H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEhB/G,GAAS8E,EAAI7wI,IAAM,EACrB,CACA,KAAOA,EAAIy9H,GAAQgL,SAAUzoI,EAC3B4wI,EAAG5wI,GAAK,EACR6wI,EAAI7wI,GAAK,CAEb,CACA,SAASw3I,GAAyBzX,EAAKsN,EAAWgH,EAAMxD,EAAK7F,GAC3D,IAGIhrI,EAHA2L,EAAMigI,GAAYnO,GAAQgL,QAC1B2K,EAAMxH,GAAYnO,GAAQgL,QAC1B+L,EAAa1I,GAAUrO,GAAQgL,OAAS,GAE5C0K,EAAYpT,EAAKsN,EAAWgH,EAAM1oI,EAAKynI,GACvCG,EAAkBxT,EAAKp0H,EAAKynI,EAAKoB,GACjC,IAAIp9F,EAAI,EACR,IAAKp3C,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAAK,CAChC,IAAIwJ,EAAGyoI,EAAKqF,EAAUv3G,EAClBkvG,EAAKlP,EAAI+V,MAAM91I,GAAG,GAClB6U,EAAOkrH,EAAI+V,MAAM91I,GAAG,GACpBo3I,EAAK,EACLC,EAAO,EACXD,EAAK5C,EAAWvF,GAChBoI,GAAQ,EACRpF,EAAMlS,EAAIiW,MAAM5+F,GAAKi9F,EAAKpF,GAAMT,EAAIgG,EAAWvF,MAC7C73F,IACA63F,EACF,MAAOA,GAAMp6H,EACXuiI,GAAM5C,EAAWvF,GACjBoI,GAAQ,EACR7tI,EAAIu2H,EAAIiW,MAAM5+F,GAAKi9F,EAAKpF,GAAMT,EAAIgG,EAAWvF,IAC7ClvG,EAAIuvG,EAAgB2C,EAAKzoI,EAAGylI,EAAKjvI,GACjCiyI,EAAMlyG,IACJqX,IACA63F,EAKJ,GAHAmI,GAAM,EAAI,EAAIA,IAAO,EAAIC,GACzBC,EAAqB,GAAV9I,EAAI4I,GACfnF,GAAOqF,EACHvX,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQC,WAAY,CACpD,IAAI+Z,EAAYtL,EAASpM,EAAIkW,KAAKjL,GAAKhrI,GAErC6wI,EAAI7wI,GADFy3I,EAAY,EACLrxI,KAAKwF,IAAIqmI,EAAKwF,GAEdrxI,KAAKwF,IAAIqmI,EAAKoC,EAAKr0I,GAAK4sI,EAErC,KAAO,CACL,IAAI8K,EAActL,EAAUrM,EAAImW,KAAKlL,GAAKhrI,GACtC23I,EAAcxL,EAASpM,EAAIkW,KAAKjL,GAAKhrI,GAErC03I,GAAe,IACjBA,EAAczF,GAEZ0F,GAAe,IACjBA,EAAc1F,GAGdwF,EADE1X,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQqJ,UAC5B1gI,KAAKwF,IAAI+rI,EAAaD,GAEtBC,EAEd9G,EAAI7wI,GAAKoG,KAAKwF,IAAIqmI,EAAKwF,EACzB,CACA1X,EAAImW,KAAKlL,GAAKhrI,GAAK+/H,EAAIkW,KAAKjL,GAAKhrI,GACjC+/H,EAAIkW,KAAKjL,GAAKhrI,GAAKiyI,EAEjBzoI,EAAImC,EAAI3L,GACRwJ,GAAKu2H,EAAI6X,SAAS53I,GAClBwJ,GAAK8tI,EACDzG,EAAI7wI,GAAKwJ,IACXqnI,EAAI7wI,GAAKwJ,GAGTu2H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEZjC,EAAI7wI,GAAKq0I,EAAKr0I,KAChB6wI,EAAI7wI,GAAKq0I,EAAKr0I,IAEZ+/H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEhB/G,GAAS8E,EAAI7wI,IAAM,EACrB,CACA,KAAOA,EAAIy9H,GAAQgL,SAAUzoI,EAC3Bq0I,EAAKr0I,GAAK,EACV6wI,EAAI7wI,GAAK,CAEb,CACA,SAAS63I,GAA0BlT,EAAK4N,GACtC,IAAIxS,EAAM4E,EAAIE,eACVF,EAAI8N,cAAgBhH,GAAatQ,qBAA4C,GAAnBoX,EAAa,IAA8B,GAAnBA,EAAa,KACjGA,EAAa,GAAKA,EAAa,GAAK,GAEtC,IAAK,IAAIvH,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IACpCrG,EAAI8N,cAAgBhH,GAAarQ,wBACnCmX,EAAavH,GAAO,GAElBrG,EAAI8N,cAAgBhH,GAAapQ,qBACnCkX,EAAavH,GAAO,EAG1B,CACA,SAAS8M,GAAwBnT,EAAK4N,EAAcC,GAElD,IADA,IAAIzS,EAAM4E,EAAIE,eACLmG,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IAAO,CAC/C,IAAIvE,EAAYhJ,GAAQqJ,UACC,GAArByL,EAAavH,IACfe,GAAShM,EAAIqS,cAAcpH,IAAQvN,GAAQwL,YACvClJ,EAAIqS,cAAcpH,IAAQvN,GAAQC,aACpC+I,EAAYhJ,GAAQyL,aAGtBzC,EAAYhJ,GAAQC,WAChBqC,EAAIqS,cAAcpH,IAAQvN,GAAQqJ,YACpC/G,EAAIqS,cAAcpH,GAAOvN,GAAQwL,YAE/BlJ,EAAIqS,cAAcpH,IAAQvN,GAAQyL,YACpCnJ,EAAIqS,cAAcpH,GAAOvN,GAAQC,aAGrC8U,EAAYxH,GAAOjL,EAAIqS,cAAcpH,GACrCjL,EAAIqS,cAAcpH,GAAOvE,CAC3B,CACF,CACA,SAASsR,GAA6BnH,EAAIC,EAAKmH,EAAQC,EAAQ/H,EAAWD,EAAOxmI,GAI/E,IAHA,IAEIqmI,EAAOD,EAFPM,EAAiB,EAARF,EACTG,EAAWH,EAAQ,EAAI7pI,KAAKsoI,IAAI,GAAIwB,GAAa,EAE5ClwI,EAAI,EAAGA,EAAIyJ,IAAKzJ,EAAG,CAC1B,IAAIk4I,EAAMtH,EAAG,GAAG5wI,GACZm4I,EAAMvH,EAAG,GAAG5wI,GACZo4I,EAAOvH,EAAI,GAAG7wI,GACdq4I,EAAOxH,EAAI,GAAG7wI,GACdwwI,EAAOK,EAAI,GAAG7wI,GACdywI,EAAOI,EAAI,GAAG7wI,GAClB,GAAIo4I,GAAQ,KAAOC,GAAQA,GAAQ,KAAOD,EAAM,CAC9C,IAAIE,EAAQN,EAAOh4I,GAAKm4I,EACpBpI,EAAQiI,EAAOh4I,GAAKk4I,EACxBrI,EAAOzpI,KAAKuF,IAAI6kI,EAAMpqI,KAAKwF,IAAI6kI,EAAM6H,IACrCxI,EAAQ1pI,KAAKuF,IAAI8kI,EAAMrqI,KAAKwF,IAAI4kI,EAAMT,GACxC,MACEF,EAAOW,EACPV,EAAQW,EAEV,GAAIR,EAAQ,EAAG,CACb,IAAIM,EAAOgI,EACPlI,EAAM4H,EAAOj4I,GAAKowI,EAKtB,GAJAG,EAAQnqI,KAAKwF,IAAIxF,KAAKuF,IAAIysI,EAAM/H,GAAMjqI,KAAKuF,IAAI0sI,EAAMhI,IACrDG,EAAOpqI,KAAKuF,IAAIkkI,EAAMQ,GACtBI,EAAOrqI,KAAKuF,IAAImkI,EAAOO,GACvBkI,EAAQ/H,EAAOC,EACX8H,EAAQ,GAAKhI,EAAQJ,EAASoI,EAAO,CACvC,IAAIx1I,EAAIwtI,EAAQJ,EAASoI,EACzB/H,GAAQztI,EACR0tI,GAAQ1tI,CACV,CACA8sI,EAAOzpI,KAAKwF,IAAI4kI,EAAMX,GACtBC,EAAQ1pI,KAAKwF,IAAI6kI,EAAMX,EACzB,CACID,EAAOqI,IACTrI,EAAOqI,GAELpI,EAAQqI,IACVrI,EAAQqI,GAEVtH,EAAI,GAAG7wI,GAAK6vI,EACZgB,EAAI,GAAG7wI,GAAK8vI,CACd,CACF,CAyMA,SAAS0I,GAAUC,EAAMC,GACvB,IACIC,EADAC,EAAQH,EAOZ,OAJEE,EADEC,GAAS,EACM,IAARA,EAEDA,EAAQF,EAEdC,IAAU,GACL,EAEFvyI,KAAKyyI,IAAIF,EAAQ5L,EAC1B,CACA,SAAS+L,GAAeJ,GACtB,IAAIK,EAAQ,EACRC,EAAQ,EAENxvI,EAAI,EAGR,IAAKA,EAAI,EAAGgvI,GAAUhvI,EAAGkvI,GAAY,MAAOlvI,GAAK,GAEjD5J,EAAI4J,EACJohD,EAAK,EACL,MAAOxkD,KAAK01G,IAAIlxD,EAAKhrD,GAAK,MACxB4J,GAAKohD,EAAKhrD,GAAK,EACX44I,GAAUhvI,EAAGkvI,GAAY,EAC3B9tF,EAAKphD,EAEL5J,EAAI4J,EAGRuvI,EAAQn5I,EAGR,IACIA,EACAgrD,EAFAphD,EAAI,EAGR,IAAKA,EAAI,EAAGgvI,GAAUhvI,EAAGkvI,GAAY,MAAOlvI,GAAK,GAEjD5J,EAAI,EACJgrD,EAAKphD,EACL,MAAOpD,KAAK01G,IAAIlxD,EAAKhrD,GAAK,MACxB4J,GAAKohD,EAAKhrD,GAAK,EACX44I,GAAUhvI,EAAGkvI,GAAY,EAC3B94I,EAAI4J,EAEJohD,EAAKphD,EAGTwvI,EAAQpuF,EAGR,IAEItvD,EAFA29I,EAAM,EACN9xH,EAAI,IAER,IAAK7rB,EAAI,EAAGA,GAAK6rB,IAAK7rB,EAAG,CACnBkO,EAAIuvI,EAAQz9I,GAAK09I,EAAQD,GAAS5xH,EAAtC,IACI8zG,EAAIud,GAAUhvI,EAAGkvI,GACrBO,GAAOhe,CACT,CAEE,IAAIie,GAAQ/xH,EAAI,IAAM8xH,GAAOD,EAAQD,IACrC,OAAOG,CAGb,CACA,SAASC,GAAQV,GACf,IAAIG,EAAOpvI,EAAGmvI,EAAOS,EAarB,OAZAR,EAAQH,EAENG,GADEA,GAAS,EACF,EAEA,IACPA,GAAS,IAAOA,GAAS,KAC3BQ,EAAOR,EAAQ,GACfpvI,EAAI,GAAK4vI,EAAOA,EAAO,EAAIA,IAE3B5vI,EAAI,EACNovI,GAAS,KACTD,EAAQ,UAAY,IAAMC,EAAQ,KAAOxyI,KAAKizI,KAAK,EAAIT,EAAQA,GAC3DD,IAAU,GACL,GACTC,EAAQxyI,KAAKyyI,KAAKrvI,EAAImvI,GAAS5L,GAC/B6L,GAAS,SACFA,EACT,CACA,SAASU,GAAUC,GAIjB,OAHIA,EAAO,IACTA,EAAO,GACTA,GAAc,KACP,GAAKnzI,KAAKozI,KAAK,IAAOD,GAAQ,IAAMnzI,KAAKozI,KAAKD,EAAOA,EAAO,MACrE,CACA,SAASE,GAAaC,EAAUC,EAAI/6F,EAAIg7F,EAAMC,EAAYlK,EAAKmK,EAAMC,EAAOC,EAASC,EAAUC,EAAWC,GACxG,IAGI7+I,EAHA8+I,EAAQxO,GAAYnO,GAAQgL,OAAS,GACrC4R,EAAmBN,GAASI,EAAQ,GAAK,KAAU,KACnDG,EAAYxO,GAAUrO,GAAQqL,UAElCiR,GAASC,EACT,IAAIt3G,EAAI,EACJ63G,EAAK,EACT,IAAKj/I,EAAI,EAAGA,EAAImiI,GAAQgL,OAAQntI,IAAK,CACnC,IACIk/I,EAGJ,IAFAC,EAAQnB,GAAUS,EAAQr3G,GAC1B03G,EAAM9+I,GAAKy+I,EAAQr3G,EACd83G,EAAK93G,EAAG42G,GAAUS,EAAQS,GAAMC,EAAQlO,GAAWiO,GAAMR,EAAU,EAAGQ,KAE3Ed,EAASp+I,GAAKk/I,EAAK93G,EACnB63G,EAAKj/I,EAAI,EACT,MAAOonC,EAAI83G,EACTF,EAAU53G,KAAOpnC,EAEnB,GAAIonC,EAAIs3G,EAAU,EAAG,CACnBt3G,EAAIs3G,EAAU,IACZ1+I,EACF,KACF,CACF,CACA8+I,EAAM9+I,GAAKy+I,EAAQr3G,EACnB,IAAK,IAAIg4G,EAAM,EAAGA,EAAMP,EAAOO,IAAO,CACpC,IAAIC,EAAI/yF,EAAI3kC,EAAOC,EACf3S,EACJ0S,EAAQg3H,EAASS,GACjBx3H,EAAM+2H,EAASS,EAAM,GACrBC,EAAK,EAAIv0I,KAAKkD,MAAM,GAAM4wI,GAAaj3H,EAAQ,KAC3C03H,EAAK,IACPA,EAAK,GACP/yF,EAAK,EAAIxhD,KAAKkD,MAAM,GAAM4wI,GAAah3H,EAAM,KACzC0kC,EAAKoyF,EAAU,IACjBpyF,EAAKoyF,EAAU,GACjBp7F,EAAG87F,IAAQJ,EAAUK,GAAML,EAAU1yF,IAAO,EAC5C+xF,EAAGe,GAAOJ,EAAU1yF,GACpB,IAAIgzF,EAAQP,EAAmBn3H,EAC/B42H,EAAKY,IAAQE,EAAQR,EAAMT,EAAGe,MAAUN,EAAMT,EAAGe,GAAO,GAAKN,EAAMT,EAAGe,KAClEZ,EAAKY,GAAO,EACdZ,EAAKY,GAAO,EAERZ,EAAKY,GAAO,IACdZ,EAAKY,GAAO,GAGhBnqI,EAAM+oI,GAAUS,EAAQE,EAASS,GAAOR,GACxC3pI,EAAMnK,KAAKwF,IAAI2E,EAAK,MAAQ,KAC5Bo/H,EAAI+K,GAAOt0I,KAAKsoI,IAAI,GAAI,MAAQ,EAAItoI,KAAKilI,IAAIjlI,KAAKklI,GAAK/6H,IAAQ,IACjE,CACAmyB,EAAI,EACJ,IAAK,IAAI0U,EAAI,EAAGA,EAAImjG,EAAInjG,IAAK,CAC3B,IACIqjG,EAAOI,EADPz8E,EAAIs7E,EAAStiG,GAEjBqjG,EAAQnB,GAAUS,EAAQr3G,GAC1Bm4G,EAAQvB,GAAUS,GAASr3G,EAAI07B,EAAI,IACnCw7E,EAAKxiG,GAAK,IAAOqjG,EAAQI,GACzBJ,EAAQnB,GAAUS,GAASr3G,EAAI,KAC/Bm4G,EAAQvB,GAAUS,GAASr3G,EAAI07B,EAAI,KACnCy7E,EAAWziG,GAAKyjG,EAAQJ,EACxB/3G,GAAK07B,CACP,CACA,OAAOm8E,CACT,CACA,SAASO,GAAehF,EAAOiF,EAAOnB,EAAMC,EAAYX,EAAM8B,GAC5D,IACIt4G,EADAu4G,EAAKpP,GAAc,CAACpO,GAAQgL,OAAQhL,GAAQgL,SAE5CyS,EAAmB,EACvB,GAAIF,EACF,IAAK,IAAI1/I,EAAI,EAAGA,EAAIy/I,EAAOz/I,IACzB,IAAKonC,EAAI,EAAGA,EAAIq4G,EAAOr4G,IAAK,CAC1B,IAAI/mC,EAAIw9I,GAAQS,EAAKt+I,GAAKs+I,EAAKl3G,IAAMm3G,EAAWn3G,GAChDu4G,EAAG3/I,GAAGonC,GAAK/mC,EAAIu9I,EAAK59I,EACtB,MAGF,IAAKonC,EAAI,EAAGA,EAAIq4G,EAAOr4G,IACrB,KAAIg2G,EAAW,GAAKtyI,KAAKwF,IAAI,GAAKguI,EAAKl3G,GAAI,IACvCy4G,EAAYrC,GAAeJ,GAC/B,IAASp9I,EAAI,EAAGA,EAAIy/I,EAAOz/I,IAAK,CAC1BK,EAAIw/I,EAAY3C,GAAUoB,EAAKt+I,GAAKs+I,EAAKl3G,GAAIg2G,GAAYmB,EAAWn3G,GACxEu4G,EAAG3/I,GAAGonC,GAAK/mC,EAAIu9I,EAAK59I,EACtB,CAL8C,CAQlD,IAASA,EAAI,EAAGA,EAAIy/I,EAAOz/I,IAAK,CAC9B,IAAKonC,EAAI,EAAGA,EAAIq4G,EAAOr4G,IACrB,GAAIu4G,EAAG3/I,GAAGonC,GAAK,EACb,MAGJ,IADAozG,EAAMx6I,GAAG,GAAKonC,EACTA,EAAIq4G,EAAQ,EAAGr4G,EAAI,EAAGA,IACzB,GAAIu4G,EAAG3/I,GAAGonC,GAAK,EACb,MAEJozG,EAAMx6I,GAAG,GAAKonC,EACdw4G,GAAoBpF,EAAMx6I,GAAG,GAAKw6I,EAAMx6I,GAAG,GAAK,CAClD,CACA,IAAI6lE,EAAKyqE,GAAYsP,GACjB9jG,EAAI,EACR,IAAS97C,EAAI,EAAGA,EAAIy/I,EAAOz/I,IACzB,IAAKonC,EAAIozG,EAAMx6I,GAAG,GAAIonC,GAAKozG,EAAMx6I,GAAG,GAAIonC,IACtCy+B,EAAG/pB,KAAO6jG,EAAG3/I,GAAGonC,GAEpB,OAAOy+B,CACT,CACA,SAASi6E,GAAcr4I,GACrB,IAAIwN,EAAM+oI,GAAUv2I,GAEpB,OADAwN,EAAMnK,KAAKwF,IAAI2E,EAAK,MAAQ,KACrBnK,KAAKsoI,IAAI,GAAI,MAAQ,EAAItoI,KAAKilI,IAAIjlI,KAAKklI,GAAK/6H,IAAQ,IAC7D,CAkPA,SAAS8qI,GAAct4I,EAAGhN,GACpBgN,GAAK,KACPA,EAAI,MACNA,GAAK,IACLA,EAAIqD,KAAKuF,IAAI,GAAK5I,GAClB,IAAIstI,EAAM,KAAOjqI,KAAKsoI,IAAI3rI,GAAI,IAAO,IAAMqD,KAAKyyI,KAAK,GAAMzyI,KAAKsoI,IAAI3rI,EAAI,IAAK,IAAM,EAAIqD,KAAKyyI,KAAK,IAAOzyI,KAAKsoI,IAAI3rI,EAAI,IAAK,IAA6B,MAAtB,GAAM,IAAOhN,GAAgBqQ,KAAKsoI,IAAI3rI,EAAG,GAC1K,OAAOstI,CACT,CA/oBAj7I,KAAKuxI,kBAAoB,SAAShC,EAAKhqI,EAAQswI,EAAQ0C,EAAQkG,EAAeC,EAAkBC,EAAgBC,EAAmBvM,EAAQ+K,GACzI,IACIjF,EACAE,EAFA1N,EAAM4E,EAAIE,eAGVwI,EAAYzB,GAAYnO,GAAQqL,UAChCwE,EAAczB,GAAc,CAAC,EAAGpO,GAAQuL,aACxCmL,EAAUtI,GAAc,CAAC,EAAGpO,GAAQwH,UACpCmP,EAAUvI,GAAc,CAAC,EAAG,EAAGpO,GAAQsL,YACvC6H,EAAK/E,GAAc,CAAC,EAAGpO,GAAQgL,SAC/BoI,EAAMhF,GAAc,CAAC,EAAGpO,GAAQgL,SAChCgO,EAAmB5K,GAAc,CAAC,EAAG,IACrCqI,EAAS,GACTmB,EAAa,CACf,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAER9C,EAAezG,GAAU,GACzB6K,EAAYhS,EAAIv5H,MAAQ+2H,GAASG,aAAe,EAAIvC,EAAIM,aAC5DmW,EACE7R,EACAhqI,EACAswI,EACA0C,EACAkG,EACAC,EACArM,EACAgP,EACApB,EACA9C,GAEFsF,GAA0BlT,EAAK4N,GAE7B,IAAK,IAAIvH,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACxC,IAAIsQ,EAAa,EAANtQ,EACXuC,EAAU4G,EACVT,EACE/O,EACAhqI,EACAswI,EACAD,EACA2C,EACAN,EACAE,EACA+N,GAEF1H,EAAwCjP,EAAKgJ,EAAQ3C,EAAKqC,GAChC,GAAtBkF,EAAa+I,GACf9D,GAAyBzX,EAAKsN,EAAWuD,EAAG5F,GAAM6F,EAAI7F,GAAMA,GAE5D+L,EAAsBhX,EAAKiL,EAE/B,CACIuH,EAAa,GAAKA,EAAa,IAAM,GACnC5N,EAAIv5H,MAAQ+2H,GAASG,cACvByV,GACEnH,EACAC,EACA9Q,EAAIwb,SACJxb,EAAI+D,IAAIsL,KACRzK,EAAIyR,SAAWrW,EAAI+D,IAAInnD,OACvBgoD,EAAIsL,MACJlQ,EAAI4R,SAIV,IAAS3G,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACpCsQ,EAAa,EAANtQ,EACe,GAAtBuH,EAAa+I,IACf9J,EAA6BzR,EAAK6Q,EAAG5F,GAAM6F,EAAI7F,GAAMA,EAEzD,CAGA,IAAK,IAAIyE,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAASzE,EAAM,EAAGA,EAAM2L,IAAa3L,EAAK,CACpCsQ,EAAa,EAANtQ,EACe,GAAtBuH,EAAa+I,GACfxE,EAAsB/W,EAAKiL,EAAKyE,IAEhChC,EAAU2G,EACVT,EACEhP,EACAhqI,EACAswI,EACAD,EACAyE,EACAnC,EACAG,EACA6N,GAEFrE,GACEtS,EACA2I,EACAsD,EAAG5F,GACH6F,EAAI7F,GACJA,EACAyE,GAGN,CACI8C,EAAa,GAAKA,EAAa,IAAM,GACnC5N,EAAIv5H,MAAQ+2H,GAASG,cACvByV,GACEnH,EACAC,EACA9Q,EAAIyb,SACJzb,EAAI+D,IAAIqL,KACRxK,EAAIyR,SAAWrW,EAAI+D,IAAInnD,OACvBgoD,EAAIsL,MACJlQ,EAAImR,SAIV,IAASlG,EAAM,EAAGA,EAAM2L,IAAa3L,EAAK,CACpCsQ,EAAa,EAANtQ,EACe,GAAtBuH,EAAa+I,IACf3K,EAA6B5Q,EAAK6Q,EAAG5F,GAAM6F,EAAI7F,GAAMA,EAAKyE,EAE9D,CACF,CACA,IAASzE,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACpCsQ,EAAa,EAANtQ,EACX,GAA0B,GAAtBuH,EAAa+I,GAGjB,IAAK,IAAI9L,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IAAM,CAC3C,IAAIiM,EAAW7P,GAAY,GAC3B,IAAS6D,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAAIsB,EAAOhR,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAE9B,GADAsB,GAAQrE,EACJ2I,EAAWrK,GAAKyE,IAAW,GAAoC,GAA/B4F,EAAWrK,GAAKyE,EAAS,GAAS,CACpE,IAAIhpC,EAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,EAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,GACnBsqC,EACApE,EAAkBuH,GAEpBnD,EAAO3qI,KAAKwF,IAAImlI,EAAM5vE,EACxB,MAAO,GAA+B,GAA3Bk0E,EAAWrK,GAAKyE,GAAc,CACnChpC,EAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,EAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,GACnBsqC,EACAnE,EAAkBsH,GAEpBnD,EAAO3qI,KAAKwF,IAAImlI,EAAM5vE,EACxB,MAAO,GAAc,GAAVsuE,GAA8C,GAA/B4F,EAAWrK,GAAKyE,EAAS,IAAqB,GAAVA,GAA6C,GAA9B1P,EAAI2H,MAAMmO,YAAY7K,GAAW,CACxGvkC,EAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,EAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,GACnBsqC,EACAnE,EAAkBsH,GAEpBnD,EAAO3qI,KAAKwF,IAAImlI,EAAM5vE,EACxB,CACA4vE,GAAQ0F,EAAiBzL,GAAKyE,GAC9BgM,EAAShM,GAAUsB,CACrB,CACA,IAAStB,EAAS,EAAGA,EAAS,EAAGA,IAC/B1P,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAUgM,EAAShM,EAE1C,CACF,CAEF,IAASzE,EAAM,EAAGA,EAAM2L,EAAW3L,IACjCjL,EAAI2H,MAAMmO,YAAY7K,GAAOqK,EAAWrK,GAAK,GAE/C8M,GAAwBnT,EAAK4N,EAAcC,GAC3C,IAASxH,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACxC,IAAIqL,EACAC,EACA3uI,EACAkrI,EACA7H,EAAM,GACRqL,EAAMrC,EACNsC,GAAU,EACV3uI,EAAO81H,GAAQqJ,UACX0L,EAAY,IAAM/U,GAAQC,YAAc8U,EAAY,IAAM/U,GAAQC,aACpE/1H,EAAO81H,GAAQC,YAEjBmV,EAAKiB,EAAiBnG,GAAQ3C,EAAM,KAEpCqL,EAAMtC,EACNuC,EAAS,EACT3uI,EAAO6qI,EAAYxH,GACnB6H,EAAKgB,EAAclG,GAAQ3C,IAEzBrjI,GAAQ81H,GAAQC,WAClB2Y,EAAIC,EAAStL,GAAO4H,EAASC,EAAI9S,EAAI+S,eAErCuD,EAAIC,EAAStL,GAAOiI,EAASJ,EAAI9S,EAAI+S,eAEnCnO,EAAI0C,WACNtH,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOqL,EAAIC,EAAStL,GAE7C,CACA,OAAO,CACT,EAgNA51I,KAAKsmJ,cAAgB,SAAS/W,GAC5B,IACIrpI,EADAykI,EAAM4E,EAAIE,eAEV8W,GAAW,EACXC,EAAQ,GACRC,EAAQ,GACRC,EAAU,EACVC,EAAU,EACVC,GAAW,KACXC,GAAW,IACXrC,EAAOhO,GAAYnO,GAAQgL,QAC3BoR,EAAajO,GAAYnO,GAAQgL,QACjCyQ,EAAOtN,GAAYnO,GAAQgL,QAC3BsR,EAAQpV,EAAI0B,eAChB,OAAQ1B,EAAIuX,eACV,QACA,KAAK,EACHP,GAAW,EACX,MACF,KAAK,EACHA,IAAahX,EAAI+B,KAAO6E,GAAU1P,UAAY8I,EAAI+B,KAAO6E,GAAU7P,QACnE,MACF,KAAK,EACHigB,GAAW,EACX,MACF,KAAK,EACHC,EAAQ,EACRE,GAAW,KACXC,GAAW,MACXC,GAAW,KACXC,GAAW,KACX,MAIJ,IAFAlc,EAAIoc,kBAAoB,IACxBpc,EAAIqS,cAAc,GAAKrS,EAAIqS,cAAc,GAAK3U,GAAQqJ,UACjDxrI,EAAI,EAAGA,EAAI,IAAKA,EAAG,CACtB,IAAK,IAAIonC,EAAI,EAAGA,EAAI+6F,GAAQgL,SAAU/lG,EACpCq9F,EAAIkW,KAAK36I,GAAGonC,GAAK,KACjBq9F,EAAImW,KAAK56I,GAAGonC,GAAK,KACjBq9F,EAAIoS,MAAM72I,GAAGonC,GAAKq9F,EAAIsS,MAAM/2I,GAAGonC,GAAK,EAEtC,IAAK,IAAI8sG,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IACrCzP,EAAImC,GAAG5mI,GAAGsE,EAAE4vI,GAAM,KAClBzP,EAAIkC,IAAI3mI,GAAGsE,EAAE4vI,GAAM,KAErB,IAAS9sG,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAS8sG,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrCzP,EAAImC,GAAG5mI,GAAG4U,EAAEs/H,GAAI9sG,GAAK,KACrBq9F,EAAIkC,IAAI3mI,GAAG4U,EAAEs/H,GAAI9sG,GAAK,KAExBq9F,EAAI2H,MAAMmO,YAAYv6I,GAAK,CAC7B,CACA,IAASonC,EAAI,EAAGA,EAAI,EAAGA,IACrBq9F,EAAI2H,MAAM4N,iBAAiBh6I,GAAGonC,GAAK,EACvC,CAiBA,IAhBAq9F,EAAIkO,iBAAiB,GAAKlO,EAAIkO,iBAAiB,GAAK,EACpDlO,EAAI4R,QAAU8H,GACZ1Z,EAAIsT,WACJtT,EAAI2R,KACJ3R,EAAIuQ,KACJsJ,EACAC,EACA9Z,EAAI6P,MACJ7P,EAAIsR,IAAIO,YACRmI,EACAtc,GAAQwH,QACRlF,EAAIqc,cAAcx8I,EAClB69H,GAAQwH,QAAU,KAClBxH,GAAQoE,SAEVkK,GAAShM,EAAI4R,QAAUlU,GAAQgL,QAC1BntI,EAAI,EAAGA,EAAIykI,EAAI4R,QAASr2I,IAAK,CAChC,IAAI+gJ,EAAMP,EACNlC,EAAKt+I,IAAMsgJ,IACbS,EAAMN,GAAWnC,EAAKt+I,GAAKsgJ,IAAUC,EAAQD,GAASE,GAAWD,EAAQjC,EAAKt+I,KAAOugJ,EAAQD,IAE/F1C,EAAK59I,GAAK8K,KAAKsoI,IAAI,GAAI2N,EAAM,IACzBtc,EAAIsT,WAAW/3I,GAAK,EACtBykI,EAAIuT,YAAYh4I,GAAK,EAAIykI,EAAIsT,WAAW/3I,GAExCykI,EAAIuT,YAAYh4I,GAAK,CAEzB,CACAykI,EAAIiW,MAAQ8E,GACV/a,EAAI+V,MACJ/V,EAAI4R,QACJiI,EACAC,EACAX,EACAyC,GAEF,IAqFM1L,EArFFvtG,EAAI,EACR,IAAKpnC,EAAI,EAAGA,EAAIykI,EAAI4R,QAASr2I,IAAK,CAEhCkO,EAAIgiI,GAAQhQ,UACZ,IAAK,IAAIpkF,EAAI,EAAGA,EAAI2oF,EAAIsT,WAAW/3I,GAAI87C,IAAK1U,IAAK,CAC/C,IAAI62G,EAAOQ,EAAQr3G,GAAK,IAAM+6F,GAAQwH,SAEtCpX,EAAQz4H,KAAKknJ,WAAkB,IAAP/C,EAAY5U,GAAO,GAC3C9W,EAAQznH,KAAKsoI,IAAI,GAAI,GAAM7gB,GAC3BA,GAASkS,EAAIsT,WAAW/3I,GACpBkO,EAAIqkH,IACNrkH,EAAIqkH,EACR,CACAkS,EAAI+D,IAAIsL,KAAK9zI,GAAKkO,EAClBA,EAAoB,GAAVowI,EAAKt+I,GAAU,GAApB,GACDkO,EAAI,IACNA,EAAI,KAEFA,GAAK,KACPA,GAAK,IAEPA,GAAK,EACLu2H,EAAI6X,SAASt8I,GAAK8K,KAAKsoI,IAAI,GAAIllI,EAAI,IAAMu2H,EAAIsT,WAAW/3I,EAC1D,CAiBA,IAhBAykI,EAAImR,QAAUuI,GACZ1Z,EAAIgS,WACJhS,EAAIkR,KACJlR,EAAI2Q,KACJkJ,EACAC,EACA9Z,EAAIgQ,MACJhQ,EAAIsR,IAAIC,YACRyI,EACAtc,GAAQsL,UACRhJ,EAAIqc,cAAclsI,EAClButH,GAAQsL,UAAY,IACpBtL,GAAQqE,SAEViK,GAAShM,EAAImR,QAAUzT,GAAQgL,QAC/B/lG,EAAI,EACCpnC,EAAI,EAAGA,EAAIykI,EAAImR,QAAS51I,IAAK,CAChC,IAAIkO,EACA6yI,EAAML,EACNpC,EAAKt+I,IAAMsgJ,IACbS,EAAMJ,GAAWrC,EAAKt+I,GAAKsgJ,IAAUC,EAAQD,GAASI,GAAWH,EAAQjC,EAAKt+I,KAAOugJ,EAAQD,IAE/F1C,EAAK59I,GAAK8K,KAAKsoI,IAAI,GAAI2N,EAAM,IAC7B7yI,EAAIgiI,GAAQhQ,UACZ,IAASpkF,EAAI,EAAGA,EAAI2oF,EAAIgS,WAAWz2I,GAAI87C,IAAK1U,IAAK,CAC/C,IACImrF,EADA0rB,EAAOQ,EAAQr3G,GAAK,IAAM+6F,GAAQsL,WAEtClb,EAAQz4H,KAAKknJ,WAAkB,IAAP/C,EAAY5U,GAAO,GAC3C9W,EAAQznH,KAAKsoI,IAAI,GAAI,GAAM7gB,GAC3BA,GAASkS,EAAIgS,WAAWz2I,GACpBkO,EAAIqkH,IACNrkH,EAAIqkH,EACR,CACAkS,EAAI+D,IAAIqL,KAAK7zI,GAAKkO,EAClBA,EAAmB,EAAVowI,EAAKt+I,GAAS,GAAlB,EACDs+I,EAAKt+I,GAAK,KACZkO,GAAK,EAAsB,IAAlBpD,KAAKo0H,IAAI,EAAIhxH,IAEpBowI,EAAKt+I,GAAK,KACZkO,GAAK,EAAsB,IAAlBpD,KAAKo0H,IAAI,EAAIhxH,IAEpBA,GAAK,KACPA,GAAK,IAEPA,GAAK,EACLu2H,EAAIwX,SAASj8I,GAAK8K,KAAKsoI,IAAI,GAAIllI,EAAI,IAAMu2H,EAAIgS,WAAWz2I,EAC1D,CACAykI,EAAImS,MAAQ4I,GACV/a,EAAIiS,QACJjS,EAAImR,QACJ0I,EACAC,EACAX,EACAyC,GAEFlN,IACAxC,EAAIb,SAASrL,GACbA,EAAIwc,MAAQn2I,KAAKyyI,KACd,EAAI3M,GAASO,EAA2BsN,EAAQ,MAIjD9J,EAAQpD,EACuB,IAAN,EAApBlI,EAAI6X,iBACPvM,EAAQ,GACN7pI,KAAK01G,IAAI6oB,EAAIsL,OAAS,IACxBA,EAAQtL,EAAIsL,OACdtL,EAAIsL,MAAQA,EACZ,IAAK,IAAIjwI,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAC3B+/H,EAAI+V,MAAM91I,GAAG,GAAK+/H,EAAI4R,QAAU,IAClC5R,EAAI+V,MAAM91I,GAAG,GAAK+/H,EAAI4R,QAAU,GAGtC,IAAI8K,EAAiB,IAAM1c,EAAIQ,QAAUwZ,EAMzC,GALAha,EAAI+D,IAAIyY,MAAQn2I,KAAKsoI,IAAI,IAAI,IAAW+N,GACxC1c,EAAI+D,IAAInnD,OAAS,IACjBojD,EAAI+D,IAAII,YAAc,EACtB6H,GAAShM,EAAI2R,KAAKjU,GAAQoE,QAAU,IAAM9B,EAAI4R,SAC9C5F,GAAShM,EAAIkR,KAAKxT,GAAQqE,QAAU,IAAM/B,EAAImR,UAC1B,GAAhBvM,EAAI+X,QAAe,CACrB,IACIC,EAAWhY,EAAI0B,eAAiB5I,GAAQwH,QACxC2X,EAAc,EAElB,IADArD,EAAO,EACFj+I,EAAI,EAAGA,EAAImiI,GAAQwH,QAAU,IAAK3pI,EACrCi+I,GAAQoD,EACR5c,EAAI+D,IAAIqJ,MAAM7xI,GAAK,EAAI8K,KAAKsoI,IAAI,GAAIt5I,KAAKknJ,WAAW/C,EAAM5U,GAAO,IACjEiY,GAAe7c,EAAI+D,IAAIqJ,MAAM7xI,GAG/B,IADAshJ,EAAc,EAAIA,EACbthJ,EAAImiI,GAAQwH,QAAU,IAAK3pI,GAAK,GACnCykI,EAAI+D,IAAIqJ,MAAM7xI,IAAMshJ,CAExB,CAEE,IAAS58I,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAImR,UAAWlxI,EACrC,IAAK1E,EAAI,EAAGA,EAAIykI,EAAIgS,WAAW/xI,KAAM1E,IACjConC,EAGN,IAAS1iC,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAI4R,UAAW3xI,EACrC,IAAK1E,EAAI,EAAGA,EAAIykI,EAAIsT,WAAWrzI,KAAM1E,IACjConC,EAKR,IADAA,EAAI,EACCpnC,EAAI,EAAGA,EAAIykI,EAAI4R,QAASr2I,IAAK,CAC5Bi+I,EAAOQ,GAASr3G,EAAIq9F,EAAIsT,WAAW/3I,GAAK,IAAM,EAAImiI,GAAQwH,SAC9DlF,EAAIwb,SAASjgJ,GAAK8/I,GAAc7B,GAChC72G,GAAKq9F,EAAIsT,WAAW/3I,EACtB,CACA,KAAOA,EAAImiI,GAAQgL,SAAUntI,EAC3BykI,EAAIwb,SAASjgJ,GAAK,EAGpB,IADAonC,EAAI,EACCpnC,EAAI,EAAGA,EAAIykI,EAAImR,QAAS51I,IAAK,CAC5Bi+I,EAAOQ,GAASr3G,EAAIq9F,EAAIgS,WAAWz2I,GAAK,IAAM,EAAImiI,GAAQsL,WAC9DhJ,EAAIyb,SAASlgJ,GAAK8/I,GAAc7B,GAChC72G,GAAKq9F,EAAIgS,WAAWz2I,EACtB,CACA,KAAOA,EAAImiI,GAAQgL,SAAUntI,EAC3BykI,EAAIyb,SAASlgJ,GAAK,EAEpB,OAAO,CACT,EASAlG,KAAKknJ,WAAa,SAASv5I,EAAG4hI,GAC5B,IAAI0L,EACJ,OAAQ1L,EAAI+X,SACV,KAAK,EACHrM,EAAMgL,GAAct4I,EAAG,GACvB,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,GAAI,GACxB,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,EAAG,GACvB,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,EAAG,GAAK,EAC5B,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,EAAG4hI,EAAIkY,UAC3B,MACF,QACExM,EAAMgL,GAAct4I,EAAG,GACvB,MAEJ,OAAOstI,CACT,CACF,CACA,SAASyM,KACP1nJ,KAAK2nJ,SAAW,EAChB3nJ,KAAK4nJ,YAAc,EACnB5nJ,KAAK6nJ,aAAe,EACpB7nJ,KAAK8nJ,cAAgB,EACrB9nJ,KAAKixI,eAAiB,EACtBjxI,KAAK4pH,MAAQ,EACb5pH,KAAK+nJ,WAAa,EAClB/nJ,KAAKgoJ,YAAc,EACnBhoJ,KAAKiyI,UAAW,EAChBjyI,KAAK4yI,cAAe,EACpB5yI,KAAKioJ,aAAc,EACnBjoJ,KAAKkoJ,QAAU,EACfloJ,KAAKgW,KAAO+2H,GAASE,OACrBjtI,KAAK4xI,UAAW,EAChB5xI,KAAKmoJ,aAAc,EACnBnoJ,KAAKooJ,gBAAiB,EACtBpoJ,KAAKqoJ,mBAAoB,EACzBroJ,KAAKsoJ,wBAAyB,EAC9BtoJ,KAAKuoJ,MAAQ,EACbvoJ,KAAKwoJ,kBAAoB,EACzBxoJ,KAAKiW,UAAY,EACjBjW,KAAKyoJ,SAAW,EAChBzoJ,KAAK0yE,UAAY,EACjB1yE,KAAKs2E,SAAW,EAChBt2E,KAAK0oJ,iBAAmB,EACxB1oJ,KAAK2oJ,YAAa,EAClB3oJ,KAAK4oJ,mBAAoB,EACzB5oJ,KAAK6oJ,WAAa,EAClB7oJ,KAAK8oJ,iBAAmB,EACxB9oJ,KAAK+oJ,eAAgB,EACrB/oJ,KAAK8mJ,cAAgB,EACrB9mJ,KAAKonJ,cAAgB,EACrBpnJ,KAAKgpJ,OAAS,EACdhpJ,KAAKsxI,IAAM,KACXtxI,KAAKipJ,WAAa,EAClBjpJ,KAAKkpJ,MAAQ,EACblpJ,KAAKmpJ,sBAAwB,EAC7BnpJ,KAAKopJ,qBAAuB,EAC5BppJ,KAAKqpJ,qBAAuB,EAC5BrpJ,KAAKspJ,aAAe,EACpBtpJ,KAAKupJ,YAAc,EACnBvpJ,KAAKwpJ,aAAe,EACpBxpJ,KAAKypJ,aAAe,EACpBzpJ,KAAK0pJ,cAAgB,EACrB1pJ,KAAK2pJ,cAAgB,EACrB3pJ,KAAK4pJ,oBAAsB,EAC3B5pJ,KAAK6pJ,SAAU,EACf7pJ,KAAK8pJ,UAAW,EAChB9pJ,KAAK+pJ,OAAQ,EACb/pJ,KAAKsnJ,QAAU,EACftnJ,KAAKynJ,SAAW,EAChBznJ,KAAKghJ,SAAW,EAChBhhJ,KAAKgqJ,WAAa,EAClBhqJ,KAAK44I,iBAAmB,EACxB54I,KAAKiqJ,kBAAoB,EACzBjqJ,KAAKq9I,aAAe,KACpBr9I,KAAKkqJ,aAAc,EACnBlqJ,KAAK+gJ,aAAe,EACpB/gJ,KAAK66I,MAAQ,EACb76I,KAAKmqJ,MAAO,EACZnqJ,KAAKoqJ,aAAe,EACpBpqJ,KAAK6O,QAAU,EACf7O,KAAKqqJ,cAAgB,EACrBrqJ,KAAKsqJ,gBAAkB,EACvBtqJ,KAAK8vI,UAAY,EACjB9vI,KAAKuqJ,SAAW,EAChBvqJ,KAAKwqJ,mBAAqB,EAC1BxqJ,KAAKyvI,eAAiB,IACxB,CACA,IAAIgb,GAAW,CAAC,EAChBA,GAASC,OAA2B,EAAlBriB,GAAQqE,QAC1B,IAAIie,GAAchoJ,GAAO0kI,UACrBujB,GAAYjoJ,GAAO4kI,QACvB,SAASsjB,KACP7qJ,KAAK6oI,GAAK8hB,GAAY,KACtB3qJ,KAAK8qJ,OAASF,GAAU,KACxB5qJ,KAAK+qJ,SAAWH,GAAUH,GAASC,QACnC1qJ,KAAKgrJ,UAAY,EACjBhrJ,KAAKirJ,eAAiB,EACtBjrJ,KAAKkrJ,WAAa,EAClBlrJ,KAAKmrJ,OAAS,EACdnrJ,KAAKorJ,YAAc,EACnBprJ,KAAKqrJ,kBAAoB,EACzBrrJ,KAAK6rI,WAAa,EAClB7rI,KAAKgsI,iBAAmB,EACxBhsI,KAAKsrJ,aAAeV,GAAU,GAC9B5qJ,KAAKurJ,cAAgBX,GAAU,GAC/B5qJ,KAAKwrJ,cAAgB,EACrBxrJ,KAAKyrJ,cAAgB,EACrBzrJ,KAAK0rJ,QAAU,EACf1rJ,KAAK2rJ,eAAiB,EACtB3rJ,KAAK4rJ,mBAAqB,EAC1B5rJ,KAAK6rJ,aAAe,EACpB7rJ,KAAK8rJ,SAAW,EAChB9rJ,KAAK+rJ,SAAW,EAChB/rJ,KAAKgsJ,SAAW,EAChBhsJ,KAAKisJ,OAAS,EACdjsJ,KAAKksJ,OAAS,EACdlsJ,KAAKmsJ,UAAY,EACjBnsJ,KAAK+wE,MAAQ65E,GAAUH,GAASC,QAChC1qJ,KAAKgJ,OAAS4hJ,GAAUH,GAASC,QACjC1qJ,KAAKosJ,WAAa,EAClBpsJ,KAAKqsJ,oBAAsB,KAC3BrsJ,KAAKssJ,KAAO1B,GAAU,GACtB5qJ,KAAKusJ,kBAAoB,EACzB,IAAI9hF,EAAQzqE,KACZ,SAASwsJ,EAAUtxC,GACjB,OAAO,IAAI8oB,WAAW9oB,EACxB,CACA,SAASuxC,EAAYvxC,GACnB,OAAO,IAAIgpB,aAAahpB,EAC1B,CACAl7G,KAAKsZ,OAAS,SAASozI,GACrBjiF,EAAMo+D,GAAK4jB,EAAYC,EAAM7jB,IAC7Bp+D,EAAMqgF,OAAS0B,EAAUE,EAAM5B,QAC/BrgF,EAAMsgF,SAAWyB,EAAUE,EAAM3B,UACjCtgF,EAAMugF,UAAY0B,EAAM1B,UACxBvgF,EAAMwgF,eAAiByB,EAAMzB,eAC7BxgF,EAAMygF,WAAawB,EAAMxB,WACzBzgF,EAAM0gF,OAASuB,EAAMvB,OACrB1gF,EAAM2gF,YAAcsB,EAAMtB,YAC1B3gF,EAAM4gF,kBAAoBqB,EAAMrB,kBAChC5gF,EAAMohE,WAAa6gB,EAAM7gB,WACzBphE,EAAMuhE,iBAAmB0gB,EAAM1gB,iBAC/BvhE,EAAM6gF,aAAekB,EAAUE,EAAMpB,cACrC7gF,EAAM8gF,cAAgBiB,EAAUE,EAAMnB,eACtC9gF,EAAM+gF,cAAgBkB,EAAMlB,cAC5B/gF,EAAMghF,cAAgBiB,EAAMjB,cAC5BhhF,EAAMihF,QAAUgB,EAAMhB,QACtBjhF,EAAMkhF,eAAiBe,EAAMf,eAC7BlhF,EAAMmhF,mBAAqBc,EAAMd,mBACjCnhF,EAAMohF,aAAea,EAAMb,aAC3BphF,EAAMqhF,SAAWY,EAAMZ,SACvBrhF,EAAMshF,SAAWW,EAAMX,SACvBthF,EAAMuhF,SAAWU,EAAMV,SACvBvhF,EAAMwhF,OAASS,EAAMT,OACrBxhF,EAAMyhF,OAASQ,EAAMR,OACrBzhF,EAAM0hF,UAAYO,EAAMP,UACxB1hF,EAAMsG,MAAQy7E,EAAUE,EAAM37E,OAC9BtG,EAAMzhE,OAASwjJ,EAAUE,EAAM1jJ,QAC/ByhE,EAAM2hF,WAAaM,EAAMN,WACzB3hF,EAAM4hF,oBAAsBK,EAAML,oBAAoBroJ,MAAM,GAC5DymE,EAAM6hF,KAAOE,EAAUE,EAAMJ,MAC7B7hF,EAAM8hF,kBAAoBG,EAAMH,iBAClC,CACF,CACA,IAAII,GAAYhqJ,GAAO4kI,QACvB,SAASqlB,KACP5sJ,KAAKurI,GAAK,CACR,CAAC,KAAM,MACP,CAAC,KAAM,OAETvrI,KAAK6sJ,gBAAkB,EACvB7sJ,KAAK8sJ,aAAe,EACpB9sJ,KAAK+sJ,cAAgB,EACrB/sJ,KAAKgtJ,eAAiB,EACtBhtJ,KAAKitJ,MAAQ,CAACN,GAAU,GAAIA,GAAU,IACtC,IAAK,IAAIzhB,EAAK,EAAGA,EAAK,EAAGA,IACvB,IAAK,IAAIF,EAAK,EAAGA,EAAK,EAAGA,IACvBhrI,KAAKurI,GAAGL,GAAIF,GAAM,IAAI6f,EAG5B,CACA,IAAIqC,GAAWvqJ,GAAOikI,OAClBumB,GAAYxqJ,GAAO4kI,QACvB,SAAS6lB,GAASC,EAAMC,EAAMC,EAAOC,GACnCxtJ,KAAKwK,EAAI2iJ,GAAU,EAAI9kB,GAAQoE,SAC/BzsI,KAAK8a,EAAIqyI,GAAU,EAAI9kB,GAAQqE,SAC/B1sI,KAAKytJ,OAASN,GAAU,EAAI9kB,GAAQmL,QACpCxzI,KAAK0tJ,OAASP,GAAU,EAAI9kB,GAAQoL,QACpC,IAAIjpI,EAAIxK,KAAKwK,EACTsQ,EAAI9a,KAAK8a,EACW,GAApB/Z,UAAUO,SACZtB,KAAKqtJ,KAAOtsJ,UAAU,GACtBf,KAAKstJ,KAAOvsJ,UAAU,GACtBf,KAAKutJ,MAAQxsJ,UAAU,GACvBf,KAAKwtJ,MAAQzsJ,UAAU,GACvBmsJ,GAAS9gB,UACPpsI,KAAKqtJ,KACL,EACA7iJ,EACA,EACAwG,KAAKwF,IAAIxW,KAAKqtJ,KAAK/rJ,OAAQtB,KAAKwK,EAAElJ,SAEpC4rJ,GAAS9gB,UACPpsI,KAAKstJ,KACL,EACAxyI,EACA,EACA9J,KAAKwF,IAAIxW,KAAKstJ,KAAKhsJ,OAAQtB,KAAK8a,EAAExZ,SAEpC4rJ,GAAS9gB,UACPpsI,KAAKutJ,MACL,EACAvtJ,KAAKytJ,OACL,EACAz8I,KAAKwF,IAAIxW,KAAKutJ,MAAMjsJ,OAAQtB,KAAKytJ,OAAOnsJ,SAE1C4rJ,GAAS9gB,UACPpsI,KAAKwtJ,MACL,EACAxtJ,KAAK0tJ,OACL,EACA18I,KAAKwF,IAAIxW,KAAKwtJ,MAAMlsJ,OAAQtB,KAAK0tJ,OAAOpsJ,SAG9C,CACA,IAAIqsJ,GAAchrJ,GAAO0kI,UACrBumB,GAAgBjrJ,GAAO2kI,YACvBumB,GAAYlrJ,GAAO4kI,QACvB,SAASumB,KACP9tJ,KAAKkgJ,iBAAmB0N,GAAc,CAAC,EAAG,IAC1C5tJ,KAAKygJ,YAAcoN,GAAU,GAC7B7tJ,KAAKuyI,SAAWob,GAAY,IAC5B3tJ,KAAK+tJ,SAAWJ,GAAYtlB,GAAQoE,SACpCzsI,KAAKguJ,UAAYL,GAAYtlB,GAAQqE,SACrC1sI,KAAKwgJ,WAAa,EAClBxgJ,KAAKugJ,aAAe,CACtB,CACA,SAAS0N,KACPjuJ,KAAK6jJ,IAAM,EACX7jJ,KAAK4uB,KAAO,EACZ5uB,KAAKkuJ,KAAO,EACZluJ,KAAK8+H,IAAM,EACX9+H,KAAKie,KAAO,EACZje,KAAKmuJ,IAAM,KACXnuJ,KAAKouJ,cAAgB,EACrBpuJ,KAAKquJ,cAAgB,EACrBruJ,KAAKsuJ,eAAiB,CACxB,CACA,IAAIC,GAAa5rJ,GAAOwkI,SACpBC,GAAazkI,GAAOykI,WACpBonB,GAAc7rJ,GAAO0kI,UACrBonB,GAAgB9rJ,GAAO2kI,YACvBonB,GAAY/rJ,GAAO4kI,QACnBonB,GAAchsJ,GAAO6kI,UAMzB,SAASonB,KACP,IAAIC,EAAiB,GAgDrB,SAASC,IACP9uJ,KAAK+uJ,aAAe,EACpB/uJ,KAAKspE,IAAM,EACXtpE,KAAKk9E,IAAMqxE,GAAWM,EACxB,CAnDA7uJ,KAAKgvJ,SAAW,EAChBhvJ,KAAKsvI,uBAAyB,EAC9BtvI,KAAKivJ,oBAAsB,EAC3BjvJ,KAAKkvJ,0BAA4B,EACjClvJ,KAAKmvJ,MAAQV,GAAc,CAAC,EAAGG,GAAoBQ,SACnDpvJ,KAAKmrI,QAAU,EACfnrI,KAAKqvJ,YAAc,EACnBrvJ,KAAKirI,aAAe,EACpBjrI,KAAKsvJ,eAAiB,EACtBtvJ,KAAKuvJ,qBAAuB,EAC5BvvJ,KAAK4vI,QAAU,EACf5vI,KAAKwvJ,gBAAkB,EACvBxvJ,KAAKyvJ,gBAAkB,EACvBzvJ,KAAKivI,cAAgB,EACrBjvI,KAAK0vJ,iBAAmB,EACxB1vJ,KAAKkvI,SAAW,EAChBlvI,KAAK2vJ,SAAW,EAChB3vJ,KAAK4vJ,SAAW,EAChB5vJ,KAAK6vJ,UAAY,EACjB7vJ,KAAK8vJ,UAAY,EACjB9vJ,KAAK+vJ,cAAgB,EACrB/vJ,KAAKgwJ,kBAAoB,EACzBhwJ,KAAKiwJ,gBAAkB,EACvBjwJ,KAAKkxI,SAAW,EAChBlxI,KAAKkwJ,mBAAqB,EAC1BlwJ,KAAKurJ,cAAgB,EACrBvrJ,KAAKmwJ,iBAAmB,EACxBnwJ,KAAKowJ,gBAAkB,EACvBpwJ,KAAKsrI,QAAU,IAAIshB,GACnB5sJ,KAAKmyI,SAAWqc,GAAY,GAC5BxuJ,KAAK8wI,QAAU,EACf9wI,KAAKgxI,SAAW,EAChBhxI,KAAK+wI,SAAW,EAChB/wI,KAAKqwJ,SAAW,KAChBrwJ,KAAKswJ,UAAY,EACjBtwJ,KAAKuwJ,SAAW7B,GAAU,GAC1B1uJ,KAAKwwJ,YAAc9B,GAAU,GAC7B1uJ,KAAK09I,cAAgB,EACrB19I,KAAKywJ,OAAS/B,GAAU,KACxB1uJ,KAAK0wJ,WAAahC,GAAUjE,GAASC,QACrC1qJ,KAAK2wJ,aAAc,EACnB3wJ,KAAK4wJ,UAAY,IAAI3qJ,MAAM,GAC3BjG,KAAK6wJ,UAAY,IAAI5qJ,MAAM,EAAI2oJ,GAAoBkC,IAAM,GACzD9wJ,KAAK+wJ,MAAQ3pB,GAAW,GACxBpnI,KAAKgxJ,aAAe,EACpBhxJ,KAAK2rI,UAAY8iB,GAAc,CAAC,EAAG,EAAG,GAAIpmB,GAAQ+K,UAClDpzI,KAAKisI,WAAauiB,GAAY,IAM9BxuJ,KAAKixJ,OAAS,IAAIhrJ,MAAM2oJ,GAAoBsC,gBAC5ClxJ,KAAKmxJ,MAAQ,EACbnxJ,KAAKoxJ,MAAQ,EACbpxJ,KAAKqxJ,eAAiB,EACtBrxJ,KAAKu/I,SAAW,EAChBv/I,KAAKs/I,QAAU,EACft/I,KAAKgnJ,cAAgB,IAAIoG,GACzBptJ,KAAKwiJ,SAAWgM,GAAYnmB,GAAQgL,QACpCrzI,KAAKmiJ,SAAWqM,GAAYnmB,GAAQgL,QACpCrzI,KAAK6gJ,KAAO4N,GAAc,CAAC,EAAGpmB,GAAQgL,SACtCrzI,KAAK8gJ,KAAO2N,GAAc,CAAC,EAAGpmB,GAAQgL,SACtCrzI,KAAK+8I,MAAQ0R,GAAc,CAAC,EAAGpmB,GAAQgL,SACvCrzI,KAAKi9I,MAAQwR,GAAc,CAAC,EAAGpmB,GAAQgL,SACvCrzI,KAAK88I,MAAQ,KACb98I,KAAK4gJ,MAAQ,KACb5gJ,KAAKmnJ,MAAQ,EACbnnJ,KAAK6sI,IAAM,IAAI5mI,MAAM,GACrBjG,KAAK8sI,GAAK,IAAI7mI,MAAM,GACpBjG,KAAK0wI,SAAW8d,GAAY,GAC5BxuJ,KAAK4uI,YAAc6f,GAAc,CAAC,EAAG,IACrCzuJ,KAAK64I,iBAAmB2V,GAAY,GACpCxuJ,KAAKw6I,MAAQgU,GAAYnmB,GAAQoE,SACjCzsI,KAAK26I,MAAQ6T,GAAYnmB,GAAQqE,SACjC1sI,KAAKk7I,KAAOwT,GAAUrmB,GAAQoE,SAC9BzsI,KAAKs8I,KAAOoS,GAAUrmB,GAAQoE,SAC9BzsI,KAAKs7I,KAAOoT,GAAUrmB,GAAQqE,SAC9B1sI,KAAK67I,KAAO6S,GAAUrmB,GAAQqE,SAC9B1sI,KAAKu8I,QAAU,EACfv8I,KAAK87I,QAAU,EACf97I,KAAK0gJ,MAAQiO,GAAY,CAACtmB,GAAQgL,OAAQ,IAC1CrzI,KAAK48I,QAAU+R,GAAY,CAACtmB,GAAQgL,OAAQ,IAC5CrzI,KAAK28I,WAAa+R,GAAUrmB,GAAQgL,QACpCrzI,KAAKi+I,WAAayQ,GAAUrmB,GAAQgL,QACpCrzI,KAAKk+I,YAAcsQ,GAAYnmB,GAAQgL,QACvCrzI,KAAKmmJ,SAAWqI,GAAYnmB,GAAQgL,QACpCrzI,KAAKomJ,SAAWoI,GAAYnmB,GAAQgL,QACpCrzI,KAAKsxJ,gBAAkB,EACvBtxJ,KAAKuxJ,gBAAkB,EACvBvxJ,KAAK4wI,GAAK4d,GAAY,GACtBxuJ,KAAKwxJ,eAAiB,EACtBxxJ,KAAKyxJ,eAAiB,EACtBzxJ,KAAK+mJ,kBAAoB,EACzB/mJ,KAAKg9I,cAAgB0R,GAAU,GAC/B1uJ,KAAKsyI,MAAQ,IAAIwb,GACjB9tJ,KAAK0xJ,eAAiB,IAAIzD,GAC1BjuJ,KAAK0uI,IAAM,KACX1uI,KAAKi8I,IAAM,KACXj8I,KAAK2xJ,YAAc,EACnB3xJ,KAAK4xJ,cAAgB,EACrB5xJ,KAAKqoJ,mBAAoB,EACzBroJ,KAAKooJ,gBAAiB,EACtBpoJ,KAAK6xJ,gBAAiB,EACtB7xJ,KAAK8xJ,WAAa,EAClB9xJ,KAAK+xJ,UAAY,EACjB/xJ,KAAKgyJ,eAAiB,EACtBhyJ,KAAKiyJ,OAAS,KACdjyJ,KAAKkyJ,iBAAmB,EACxBlyJ,KAAKmyJ,YAAc,EACnBnyJ,KAAKmvI,wBAA0Bwf,GAAY,CAAC,GAAI,IAChD3uJ,KAAKqvI,uBAAyBsf,GAAY,CAAC,GAAI,IAC/C3uJ,KAAKkyI,MAAQ,KACblyI,KAAKoyJ,IAAM,KACXpyJ,KAAKqyJ,mBAAqB,EAC1BryJ,KAAKsyJ,YAAc,KACnBtyJ,KAAKuyJ,YAAc,KACnBvyJ,KAAKyyI,eAAiB,KACtB,IAAK,IAAIvsI,EAAI,EAAGA,EAAIlG,KAAK8sI,GAAGxrI,OAAQ4E,IAClClG,KAAK8sI,GAAG5mI,GAAK,IAAIsmI,GAEnB,IAAStmI,EAAI,EAAGA,EAAIlG,KAAK6sI,IAAIvrI,OAAQ4E,IACnClG,KAAK6sI,IAAI3mI,GAAK,IAAIsmI,GAEpB,IAAStmI,EAAI,EAAGA,EAAIlG,KAAKixJ,OAAO3vJ,OAAQ4E,IACtClG,KAAKixJ,OAAO/qJ,GAAK,IAAI4oJ,CAEzB,CAtIAF,GAAoBQ,OAAS,KAAW/mB,GAAQ2K,SAAW3K,GAAQ6K,UACnE0b,GAAoBsC,eAAiB,IACrCtC,GAAoB4D,qBAAuB,KAC3C5D,GAAoB6D,qBAAuB,KAC3C7D,GAAoBkC,IAAM,IAmI1B,IAAI4B,GAAc/vJ,GAAO0kI,UACzB,SAASqH,KACP1uI,KAAK2uI,UAAY,EACjB3uI,KAAK6uI,eAAiB,EACtB7uI,KAAKunF,OAAS,EACdvnF,KAAK8uI,YAAc,EACnB9uI,KAAKmnJ,MAAQ,EACbnnJ,KAAKkU,MAAQ,EACblU,KAAKwK,EAAIkoJ,GAAYrqB,GAAQoE,SAC7BzsI,KAAK8a,EAAI43I,GAAYrqB,GAAQqE,SAC7B1sI,KAAKytJ,OAASiF,GAAYrqB,GAAQmL,QAClCxzI,KAAK0tJ,OAASgF,GAAYrqB,GAAQoL,QAClCzzI,KAAKg6I,KAAO0Y,GAAYrqB,GAAQgL,QAChCrzI,KAAK+5I,KAAO2Y,GAAYrqB,GAAQgL,QAChCrzI,KAAK+3I,MAAQ2a,GAAYrqB,GAAQwH,QAAU,EAC7C,CACA,IAAI8iB,GAAWhwJ,GAAOikI,OAClBgsB,GAAWjwJ,GAAOskI,OActB,SAAS4rB,KACP,IAAIC,EAAW,MACXC,EAAiB,IACjBC,EAA4BH,GAAeG,0BAC3CC,EAA8BJ,GAAeI,4BAC7CC,EAAS,CACX,CACE,eACC,kBACA,gBACD,kBACC,iBACA,mBACA,eACD,mBACC,iBACA,kBACD,gBACA,iBACC,iBACA,iBACD,gBACA,iBACA,iBACC,gBACD,gBACA,gBACA,iBAEF,CACE,gBACC,kBACA,gBACD,kBACC,iBACA,kBACA,gBACD,iBACC,iBACA,iBACD,gBACA,kBACC,iBACA,iBACD,gBACA,kBACC,iBACA,gBACD,gBACA,iBACC,iBAEH,CACE,iBACC,kBACA,gBACD,kBACC,iBACA,iBACD,gBACA,kBACC,iBACA,iBACD,gBACA,iBACA,iBACC,gBACD,gBACA,iBACC,iBACA,gBACD,gBACA,gBACC,iBAEH,CACE,iBACC,kBACA,gBACD,iBACC,iBACA,eACD,iBACC,gBACA,iBACA,iBACA,gBACD,iBACC,iBACA,gBACD,gBACA,iBACC,cACD,gBACA,gBACA,iBACC,iBAEH,CACE,iBACC,kBACA,eACD,iBACC,gBACD,gBACA,iBACC,iBACA,gBACD,iBACC,gBACA,iBACA,gBACA,gBACD,gBACA,gBACA,iBACC,iBACA,eACD,iBACC,gBAEH,CACE,gBACC,iBACA,gBACD,iBACC,iBACA,eACA,gBACD,gBACA,iBACC,iBACA,gBACD,gBACA,gBACA,gBACA,gBACA,iBACC,gBACD,iBACC,gBACD,gBACA,iBAEF,CACE,iBACC,kBACA,gBACD,gBACA,gBACC,gBACD,gBACA,iBACC,gBACD,gBACA,gBACC,iBACA,gBACD,eACA,iBACC,gBACD,gBACA,iBACC,eACD,iBACC,iBAEH,CACE,iBACC,iBACA,iBACA,iBACA,iBACA,gBACD,gBACA,eACA,gBACA,gBACA,iBACC,iBACA,iBACA,gBACD,iBACC,gBACD,gBACA,iBACC,gBACD,iBACC,iBAEH,CACE,iBACC,gBACA,iBACA,iBACA,iBACA,gBACD,iBACC,iBACA,gBACD,gBACA,gBACA,iBACC,iBACA,iBACA,iBACA,iBACA,aACD,gBACA,eACA,gBACC,kBAGDC,EAAW,CACb,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,eACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,iBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,kBAGJ,SAASC,EAAW59I,EAAO69I,EAAUC,EAAQC,EAAWC,EAAUC,GAChE,MAAqB,GAAdD,IACLF,EAAOC,GAAa,MAAQ/9I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,IAAMH,EAAOC,EAAY,GAAKE,EA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,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEFA,KAAgB,CACd,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,IAEFA,MAAiB,CACf,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GAEFA,IAAe,CAAC,EAAG,EAAG,EAAG,GACzBA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxCA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxCA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAC9DA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7DA,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,IAEFA,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,OAAkB,CAChB,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEFA,GAASh3D,GAAK,CACZ,IAAI22D,GAAY,EAAG,EAAG,KAAM,MAC5B,IAAIA,GAAY,EAAG,EAAGK,GAASC,KAAMD,GAASE,KAC9C,IAAIP,GAAY,EAAG,EAAGK,GAASG,KAAMH,GAASI,KAC9C,IAAIT,GAAY,EAAG,EAAGK,GAASK,KAAML,GAASM,KAC9C,IAAIX,GAAY,EAAG,EAAG,KAAM,MAC5B,IAAIA,GAAY,EAAG,EAAGK,GAASO,KAAMP,GAASQ,KAC9C,IAAIb,GAAY,EAAG,EAAGK,GAASS,KAAMT,GAASU,KAC9C,IAAIf,GAAY,EAAG,EAAGK,GAASW,KAAMX,GAASY,KAC9C,IAAIjB,GAAY,EAAG,EAAGK,GAASa,KAAMb,GAASc,KAC9C,IAAInB,GAAY,EAAG,EAAGK,GAASe,KAAMf,GAASgB,KAC9C,IAAIrB,GAAY,EAAG,EAAGK,GAASiB,MAAOjB,GAASkB,MAC/C,IAAIvB,GAAY,EAAG,EAAGK,GAASmB,MAAOnB,GAASoB,MAC/C,IAAIzB,GAAY,EAAG,EAAGK,GAASqB,MAAOrB,GAASsB,MAC/C,IAAI3B,GAAY,GAAI,EAAGK,GAASuB,MAAOvB,GAASwB,MAChD,IAAI7B,GAAY,EAAG,EAAG,KAAMK,GAASyB,QACrC,IAAI9B,GAAY,GAAI,EAAGK,GAAS0B,MAAO1B,GAAS2B,MAChD,IAAIhC,GAAY,EAAG,EAAGK,GAAS4B,MAAO5B,GAAS6B,MAC/C,IAAIlC,GAAY,EAAG,EAAGK,GAAS4B,MAAO5B,GAAS6B,MAC/C,IAAIlC,GAAY,EAAG,EAAGK,GAAS4B,MAAO5B,GAAS6B,MAC/C,IAAIlC,GAAY,EAAG,GAAIK,GAAS4B,MAAO5B,GAAS6B,MAChD,IAAIlC,GAAY,EAAG,GAAIK,GAAS4B,MAAO5B,GAAS6B,MAChD,IAAIlC,GAAY,EAAG,IAAKK,GAAS4B,MAAO5B,GAAS6B,MACjD,IAAIlC,GAAY,GAAI,KAAMK,GAAS4B,MAAO5B,GAAS6B,MACnD,IAAIlC,GAAY,GAAI,KAAMK,GAAS4B,MAAO5B,GAAS6B,MACnD,IAAIlC,GAAY,EAAG,GAAIK,GAAS8B,MAAO9B,GAAS+B,MAChD,IAAIpC,GAAY,EAAG,GAAIK,GAAS8B,MAAO9B,GAAS+B,MAChD,IAAIpC,GAAY,EAAG,GAAIK,GAAS8B,MAAO9B,GAAS+B,MAChD,IAAIpC,GAAY,EAAG,IAAKK,GAAS8B,MAAO9B,GAAS+B,MACjD,IAAIpC,GAAY,EAAG,IAAKK,GAAS8B,MAAO9B,GAAS+B,MACjD,IAAIpC,GAAY,EAAG,IAAKK,GAAS8B,MAAO9B,GAAS+B,MACjD,IAAIpC,GAAY,GAAI,KAAMK,GAAS8B,MAAO9B,GAAS+B,MACnD,IAAIpC,GAAY,GAAI,KAAMK,GAAS8B,MAAO9B,GAAS+B,MACnD,IAAIpC,GAAY,EAAG,EAAGK,GAASgC,MAAOhC,GAASiC,MAC/C,IAAItC,GAAY,EAAG,EAAGK,GAASkC,MAAOlC,GAASmC,OAEjDnC,GAASoC,SAAW,CAClB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFpC,GAASqC,QAAU,CACjB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFrC,GAASsC,QAAU,CACjB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFtC,GAASuC,cAAgB,CACvB,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KACC,GAEH,CACE,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,KACC,GAEH,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE9DvC,GAASwC,iBAAmB,CAC1B,CAAC,MAAO,KAAM,MAAO,GACrB,CAAC,MAAO,KAAM,MAAO,GACrB,CAAC,MAAO,KAAM,KAAM,IAEtBxC,GAASyC,WAAa,CAAC,EAAG,EAAG,GAAI,GAAI,IACrC,IAAIC,GAAYt5J,GAAOkkI,QACnBC,GAAQnkI,GAAOmkI,MACfo1B,GAASv5J,GAAOqkI,KAChBm1B,GAAcx5J,GAAO0kI,UACrB+0B,GAAYz5J,GAAO4kI,QACnB80B,GAAW15J,GAAO+kI,OAKtB,SAAS40B,KACP,IAAIC,EAAM,KACNnE,EAAK,KACLtqB,EAAM,KAMV,SAAS0uB,EAAMpoJ,GACb,OAAOqoJ,EAAMroJ,EAAIkoJ,GAAYI,OAC/B,CAPA18J,KAAKiuI,WAAa,SAAS0uB,EAAKC,EAAKzuB,GACnCouB,EAAMI,EACNvE,EAAKwE,EACL9uB,EAAMK,CACR,EAIAnuI,KAAK68J,OAAS,SAASzoJ,GACrB,OAAO0oJ,EAAO1oJ,EAChB,EACA,IAAI2oJ,EAAc,qBACdC,EAAYV,GAAYU,UACxBC,EAAeD,EAAY,EAC3BE,EAAQZ,GAAYY,MACpBR,EAASJ,GAAYI,OACrBS,EAAa,IACjBn9J,KAAKo9J,gBAAkB,CACrB,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAEZ,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,GAAI,GACX,CAAC,EAAG,EAAG,GAAI,IAEb,CACE,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,GAAI,GAAI,EAAG,IAEd,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,GAAI,GAAI,GACb,CAAC,EAAG,GAAI,GAAI,IAEd,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,EAAG,EAAG,GACX,CAAC,EAAG,GAAI,EAAG,IAEb,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,EAAG,GAAI,EAAG,KAGf,IAAIC,EAAS,CACX,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFr9J,KAAKq9J,OAASA,EACdr9J,KAAKs9J,YAAc,CACjB,IAAIlQ,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KACpD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KACpD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAGvB,IAAIqP,EAAQN,GAAYe,EAAQR,EAAS,GACrCI,EAASX,GAAYe,GACrBK,EAAQpB,GAAYc,GACpBO,EAAQrB,GAAYc,GAExB,SAASQ,EAAQluB,EAAK5hI,GACpB,IAAIstI,EAAMnN,EAAIoZ,WAAWv5I,EAAG4hI,GAG5B,OAFA0L,GAAOkiB,EACPliB,EAAMjqI,KAAKsoI,IAAI,GAAI2B,EAAM,GAAK1L,EAAIyR,UAC3B/F,CACT,CACA,SAASyiB,EAAYnuB,GAOnB,IANA,IAAIouB,EAAQpuB,EAAIE,eAAef,IAAIlkI,EAC/BozJ,EAAaruB,EAAIE,eAAef,IAAI+e,OACpCoQ,EAAQtuB,EAAIE,eAAef,IAAI5zH,EAC/BgjJ,EAAavuB,EAAIE,eAAef,IAAIgf,OACpC/iB,EAAM4E,EAAIE,eACVsuB,EAAYxuB,EAAI0B,eACXqU,EAAM,EAAGA,EAAMjd,GAAQoE,QAAS6Y,IAAO,CAC9C,IAAIz3H,EAAQ88G,EAAIqc,cAAcx8I,EAAE86I,GAC5Bx3H,EAAM68G,EAAIqc,cAAcx8I,EAAE86I,EAAM,GACpCqY,EAAMrY,GAAOxe,GAAMV,UACnB,IAAK,IAAIlgI,EAAI2nB,EAAO3nB,EAAI4nB,EAAK5nB,IAAK,CAChC,IAAIi+I,EAAOj+I,EAAI63J,EAAY,KACvBC,EAAQP,EAAQluB,EAAK4U,GACzBwZ,EAAMrY,GAAOt0I,KAAKwF,IAAImnJ,EAAMrY,GAAM0Y,EACpC,CACF,CACA,IAAS1Y,EAAM,EAAGA,EAAMjd,GAAQmL,OAAQ8R,IAAO,CACzCz3H,EAAQ88G,EAAIqc,cAAcyG,OAAOnI,GACjCx3H,EAAM68G,EAAIqc,cAAcyG,OAAOnI,EAAM,GACzCsY,EAAWtY,GAAOxe,GAAMV,UACxB,IAASlgI,EAAI2nB,EAAO3nB,EAAI4nB,EAAK5nB,IAAK,CAC5Bi+I,EAAOj+I,EAAI63J,EAAY,KACvBC,EAAQP,EAAQluB,EAAK4U,GACzByZ,EAAWtY,GAAOt0I,KAAKwF,IAAIonJ,EAAWtY,GAAM0Y,EAC9C,CACF,CACA,IAAS1Y,EAAM,EAAGA,EAAMjd,GAAQqE,QAAS4Y,IAAO,CAC1Cz3H,EAAQ88G,EAAIqc,cAAclsI,EAAEwqI,GAC5Bx3H,EAAM68G,EAAIqc,cAAclsI,EAAEwqI,EAAM,GACpCuY,EAAMvY,GAAOxe,GAAMV,UACnB,IAASlgI,EAAI2nB,EAAO3nB,EAAI4nB,EAAK5nB,IAAK,CAC5Bi+I,EAAOj+I,EAAI63J,EAAY,IACvBC,EAAQP,EAAQluB,EAAK4U,GACzB0Z,EAAMvY,GAAOt0I,KAAKwF,IAAIqnJ,EAAMvY,GAAM0Y,EACpC,CACAH,EAAMvY,IAAQ3a,EAAIqc,cAAclsI,EAAEwqI,EAAM,GAAK3a,EAAIqc,cAAclsI,EAAEwqI,EACnE,CACA,IAASA,EAAM,EAAGA,EAAMjd,GAAQoL,OAAQ6R,IAAO,CACzCz3H,EAAQ88G,EAAIqc,cAAc0G,OAAOpI,GACjCx3H,EAAM68G,EAAIqc,cAAc0G,OAAOpI,EAAM,GACzCwY,EAAWxY,GAAOxe,GAAMV,UACxB,IAASlgI,EAAI2nB,EAAO3nB,EAAI4nB,EAAK5nB,IAAK,CAC5Bi+I,EAAOj+I,EAAI63J,EAAY,IACvBC,EAAQP,EAAQluB,EAAK4U,GACzB2Z,EAAWxY,GAAOt0I,KAAKwF,IAAIsnJ,EAAWxY,GAAM0Y,EAC9C,CACAF,EAAWxY,IAAQ3a,EAAIqc,cAAclsI,EAAE,IAAM6vH,EAAIqc,cAAclsI,EAAE,GACnE,CACA,GAAIy0H,EAAIwa,MAAO,CACb,IAASzE,EAAM,EAAGA,EAAMjd,GAAQoE,QAAS6Y,IACvCqY,EAAMrY,GAAO,MAEf,IAASA,EAAM,EAAGA,EAAMjd,GAAQmL,OAAQ8R,IACtCsY,EAAWtY,GAAO,MAEpB,IAASA,EAAM,EAAGA,EAAMjd,GAAQqE,QAAS4Y,IACvCuY,EAAMvY,GAAO,MAEf,IAASA,EAAM,EAAGA,EAAMjd,GAAQoL,OAAQ6R,IACtCwY,EAAWxY,GAAO,KAEtB,CACA3a,EAAI+D,IAAIx6H,MAAQ,GAAKlD,KAAK20H,MAAM83B,EAAQluB,GAAM,GAChD,CAoTA,SAAS0uB,EAAU3wH,GACjBttC,KAAK8a,EAAIwyB,CACX,CA7XAttC,KAAKw9J,MAAQA,EAwEbx9J,KAAKk+J,eAAiB,SAAS3uB,GAC7B,IAEIrpI,EAFAykI,EAAM4E,EAAIE,eACVnE,EAAUX,EAAIW,QAElB,GAA+B,GAA3BX,EAAIskB,oBAA0B,CAKhC,IAJAtkB,EAAIskB,oBAAsB,EAC1B3jB,EAAQuhB,gBAAkB,EAC1B6Q,EAAYnuB,GACZguB,EAAM,GAAK,EACNr3J,EAAI,EAAGA,EAAI+2J,EAAc/2J,IAC5Bq3J,EAAMr3J,GAAK8K,KAAKsoI,IAAIpzI,EAAG,EAAI,GAC7B,IAAKA,EAAI,EAAGA,EAAI+2J,EAAe,EAAG/2J,IAChCs3J,EAAMt3J,GAAKA,EAAI,EAAI8K,KAAKsoI,IAAI,IAAOikB,EAAMr3J,GAAKq3J,EAAMr3J,EAAI,IAAK,KAG/D,IADAs3J,EAAMt3J,GAAK,GACNA,EAAI,EAAGA,EAAIg3J,EAAOh3J,IACrB42J,EAAO52J,GAAK8K,KAAKsoI,IAAI,GAAgB,OAAZpzI,EAAI,MAC/B,IAAKA,EAAI,EAAGA,GAAKg3J,EAAQR,EAAQx2J,IAC/Bu2J,EAAMv2J,GAAK8K,KAAKsoI,IAAI,EAAwB,KAApBpzI,EAAI,IAAMw2J,IAIlC,IAAIyB,EAAMC,EAAMC,EAAQC,EAiBxB,IAnBF/B,EAAIgC,aAAa5zB,GAGfzkI,EAAIqpI,EAAI6X,eAAiB,EAAI,GACzBlhJ,GAAK,KACPA,GAAK,IACPi4J,EAAOntJ,KAAKsoI,IAAI,GAAIpzI,EAAI,EAAI,IAC5BA,EAAIqpI,EAAI6X,eAAiB,EAAI,GACzBlhJ,GAAK,KACPA,GAAK,IACPk4J,EAAOptJ,KAAKsoI,IAAI,GAAIpzI,EAAI,EAAI,IAC5BA,EAAIqpI,EAAI6X,eAAiB,GAAK,GAC1BlhJ,GAAK,KACPA,GAAK,IACPm4J,EAASrtJ,KAAKsoI,IAAI,GAAIpzI,EAAI,EAAI,IAC9BA,EAAIqpI,EAAI6X,eAAiB,GAAK,GAC1BlhJ,GAAK,KACPA,GAAK,IACPo4J,EAAQD,EAASrtJ,KAAKsoI,IAAI,GAAIpzI,EAAI,EAAI,IACjCA,EAAI,EAAGA,EAAImiI,GAAQoE,QAASvmI,IAAK,CAGlCyH,EADEzH,GAAK,EACHi4J,EACGj4J,GAAK,GACRk4J,EACGl4J,GAAK,GACRm4J,EAEAC,EACN3zB,EAAI2H,MAAMyb,SAAS7nJ,GAAKyH,CAC1B,CACA,IAAKzH,EAAI,EAAGA,EAAImiI,GAAQqE,QAASxmI,IAAK,CACpC,IAAIyH,EAEFA,EADEzH,GAAK,EACHi4J,EACGj4J,GAAK,GACRk4J,EACGl4J,GAAK,GACRm4J,EAEAC,EACN3zB,EAAI2H,MAAM0b,UAAU9nJ,GAAKyH,CAC3B,CAEJ,CACF,EACA3N,KAAKs4J,MAAQ,SAAS/oB,EAAKqB,EAAIqnB,EAAWC,EAAWhtB,EAAIszB,GACvD,IAEIjH,EAEAvsB,EAJAL,EAAM4E,EAAIE,eACVgvB,EAAQ,EAERC,EAAWtC,GAAU,GAErBjE,EAAK,IAAId,GAAWoH,GACpBE,EAAavG,EAAGwG,YAAYrvB,EAAK2oB,EAAWC,EAAIqG,GACpDC,EAAQtG,EAAGZ,KACX,IAAIO,EAAW2G,EAAQE,EAIvB,IAHI7G,EAAWlJ,GAAoB6D,uBACjCqF,EAAWlJ,GAAoB6D,sBAE5B8E,EAAO,EAAGvsB,EAAK,EAAGA,EAAKL,EAAIM,eAAgBD,EAC9CitB,EAAUjtB,GAAMh6H,KAAKwF,IACnBo4I,GAAoB4D,qBACpBiM,EAAQ9zB,EAAIM,cAEdyzB,EAAS1zB,GAAM,EAAIitB,EAAUjtB,GAAM4F,EAAG1F,GAAIF,GAAM,IAAMitB,EAAUjtB,GAC5D0zB,EAAS1zB,GAAkB,EAAZktB,EAAgB,IACjCwG,EAAS1zB,GAAkB,EAAZktB,EAAgB,GAC7BwG,EAAS1zB,GAAM,IACjB0zB,EAAS1zB,GAAM,GACb0zB,EAAS1zB,GAAMitB,EAAUjtB,GAAM4jB,GAAoB4D,uBACrDkM,EAAS1zB,GAAMh6H,KAAKuF,IAClB,EACAq4I,GAAoB4D,qBAAuByF,EAAUjtB,KAGzDusB,GAAQmH,EAAS1zB,GAEnB,GAAIusB,EAAOoH,EACT,IAAK3zB,EAAK,EAAGA,EAAKL,EAAIM,eAAgBD,EACpC0zB,EAAS1zB,GAAM2zB,EAAaD,EAAS1zB,GAAMusB,EAG/C,IAAKvsB,EAAK,EAAGA,EAAKL,EAAIM,eAAgBD,EACpCitB,EAAUjtB,IAAO0zB,EAAS1zB,GAC1B2zB,GAAcD,EAAS1zB,GAEzB,IAAKusB,EAAO,EAAGvsB,EAAK,EAAGA,EAAKL,EAAIM,eAAgBD,EAC9CusB,GAAQU,EAAUjtB,GAEpB,GAAIusB,EAAO3I,GAAoB6D,qBAAsB,CAEnD,IAAKznB,EAAK,EAAGA,EAAKL,EAAIM,eAAgBD,EACpCitB,EAAUjtB,IAAO4jB,GAAoB6D,qBACrCwF,EAAUjtB,IAAOusB,EACVU,EAAUjtB,EAErB,CACA,OAAO8sB,CACT,EACA93J,KAAKw4J,YAAc,SAASP,EAAWtnB,EAAeunB,EAAWJ,GAC/DuE,GACEpE,EAAU,GAAKA,EAAU,IAAMrJ,GAAoB6D,sBAErD,IAAIoM,EAAM,KAAQ,GAAMluB,GAAiB,GACrCkuB,EAAM,IACRA,EAAM,GACJA,EAAM,KACRA,EAAM,IACR,IAAIC,EAAY,EAAU,GAAND,GAAa5G,EAAU,GAAKA,EAAU,IACtD6G,EAAYlQ,GAAoB4D,qBAAuByF,EAAU,KACnE6G,EAAYlQ,GAAoB4D,qBAAuByF,EAAU,IAE/D6G,EAAY,IACdA,EAAY,GACV7G,EAAU,IAAM,MACdA,EAAU,GAAK6G,EAAY,KACzB7G,EAAU,GAAKC,IACjBD,EAAU,IAAM6G,GAClB7G,EAAU,IAAM6G,IAEhB7G,EAAU,IAAMA,EAAU,GAAK,IAC/BA,EAAU,GAAK,MAGnB6G,EAAY7G,EAAU,GAAKA,EAAU,GACjC6G,EAAYhH,IACdG,EAAU,GAAKH,EAAWG,EAAU,GAAK6G,EACzC7G,EAAU,GAAKH,EAAWG,EAAU,GAAK6G,GAE3CzC,GAASpE,EAAU,IAAMrJ,GAAoB4D,sBAC7C6J,GAASpE,EAAU,IAAMrJ,GAAoB4D,sBAC7C6J,GACEpE,EAAU,GAAKA,EAAU,IAAMrJ,GAAoB6D,qBAEvD,EACAzyJ,KAAK++J,UAAY,SAASp0J,EAAGyJ,EAAG4qJ,GAC9B,IAAIrmJ,EAAI,YACJozD,EAAK,YACL7iB,EAAIgzG,GAAOt2B,aAAaxxH,EAAG,IAC3B7N,EAAIoE,EAAIA,EACRq+D,EAAI,EAQR,OAPA9f,GAAK81G,EACDz4J,EAAI,QACNyiE,EAAI,EAAIkzF,GAAOt2B,aAAar/H,EAAG,GAAKoS,IAClCqwD,EAAI,IACNA,EAAI,GACN9f,GAAK8f,EACL9f,GAAK81G,EAAWrmJ,EAAIozD,EACb/6D,KAAKsoI,IAAI,GAAI,GAAMpwF,EAC5B,EACAlpD,KAAK84J,UAAY,SAASvpB,EAAKnjC,EAAOqlC,EAAUwtB,GAC9C,IAEIC,EAFAC,EAAW,EACXx0B,EAAM4E,EAAIE,eAEVniG,EAAI,EACJ8xH,EAAW,EACXC,EAAO10B,EAAI+D,IACX7F,EAAK4I,EAAS5I,GACdy2B,EAAmB/vB,EAAI+B,KAAO2qB,GAAUx1B,SAAW,EAAI,EACvDiX,EAAgB/S,EAAI+S,cAIxB,IAHInO,EAAI+B,KAAO2qB,GAAUx1B,UAAY8I,EAAI+B,KAAO2qB,GAAU31B,SACxDoX,EAAgB,GAEbwhB,EAAO,EAAGA,EAAOztB,EAASua,SAAUkT,IAAQ,CAK7CK,EADEhwB,EAAI+B,KAAO2qB,GAAU11B,QAAUgJ,EAAI+B,KAAO2qB,GAAUx1B,SAC/Cs4B,UAAUM,EAAK93E,OAAQ83E,EAAK70J,EAAE00J,GAAOG,EAAKnrJ,OAE1CmrJ,EAAK93E,OAAS83E,EAAK70J,EAAE00J,GAC9BnuF,EAAQ0gE,EAAS1gE,MAAMmuF,GACvBM,EAAMD,EAAOxuF,EACb0uF,EAAM1C,EACNvyJ,EAAIumE,GAAS,EACb2uF,EAAM,EACN,EAAG,CAEDC,EAAK92B,EAAGv7F,GAAKu7F,EAAGv7F,GAChBoyH,GAAOC,EACPF,GAAOE,EAAKH,EAAMG,EAAKH,EACvBlyH,IACAsyH,EAAK/2B,EAAGv7F,GAAKu7F,EAAGv7F,GAChBoyH,GAAOE,EACPH,GAAOG,EAAKJ,EAAMI,EAAKJ,EACvBlyH,GACF,SAAW9iC,EAAI,GAGf,GAFIk1J,EAAMH,GACRH,IACEF,GAAQ72B,GAAQiL,QAAS,CAC3B,IAAIl/H,EAAImrJ,EAAO50B,EAAI2H,MAAMyb,SAASmR,GAC9BO,EAAMrrJ,IACRqrJ,EAAMrrJ,EAEV,CAIA,GAHwB,GAApBkrJ,IACFC,EAAOE,IAEJlwB,EAAIsa,QAAS,CAChB,IAAI7rJ,EAAIouG,EAAM0gC,GAAGtiI,EAAE00J,GACnB,GAAIlhK,EAAI,EAENoW,EAAIsrJ,EAAMtzD,EAAMygC,IAAIriI,EAAE00J,GAAQxhB,EAAgB1/I,EACtB,GAApBshK,IACFlrJ,GAAKu2H,EAAI2H,MAAMyb,SAASmR,IACtBK,EAAOnrJ,IACTmrJ,EAAOnrJ,EAEb,CAEE6qJ,EAAME,KADgB,GAApBG,EACkBC,EAEAA,EAAO50B,EAAI2H,MAAMyb,SAASmR,EAClD,CACA,IAAIW,EAAc,IAClB,GAAIpuB,EAAS5F,YAAcxD,GAAQC,WAAY,CAC7C,IAAItmF,EAAI,IACR,MAAc,GAAPA,KAAY89G,GAAYC,GAAGl3B,EAAG7mF,GAAI,GACvC69G,EAAc79G,CAElB,CACAyvF,EAAS8a,kBAAoBsT,EAC7B,IAAK,IAAIva,EAAM7T,EAASsa,SAAUmT,EAAOztB,EAASya,OAAQ5G,IAAO4Z,GAAQ,EAAG,CAC1E,IAAInuF,EAAOnmE,EACPo1J,EAMJ,IAJEA,EADEzwB,EAAI+B,KAAO2qB,GAAU11B,QAAUgJ,EAAI+B,KAAO2qB,GAAUx1B,SAC7Cs4B,UAAUM,EAAK93E,OAAQ83E,EAAKvkJ,EAAEwqI,GAAM+Z,EAAKnrJ,OAEzCmrJ,EAAK93E,OAAS83E,EAAKvkJ,EAAEwqI,GAChCv0E,EAAQ0gE,EAAS1gE,MAAMmuF,GAClBt0J,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IACI20J,EACAC,EAAKC,EAFLC,EAAM,EAGNl1J,EAAIumE,GAAS,EACjByuF,EAAMQ,EAASjvF,EACf0uF,EAAM1C,EACN,EAAG,CACD,IAAI4C,EAAIC,EACRD,EAAK92B,EAAGv7F,GAAKu7F,EAAGv7F,GAChBoyH,GAAOC,EACPF,GAAOE,EAAKH,EAAMG,EAAKH,EACvBlyH,IACAsyH,EAAK/2B,EAAGv7F,GAAKu7F,EAAGv7F,GAChBoyH,GAAOE,EACPH,GAAOG,EAAKJ,EAAMI,EAAKJ,EACvBlyH,GACF,SAAW9iC,EAAI,GAGf,GAFIk1J,EAAMM,GACRZ,IACE9Z,GAAOjd,GAAQkL,QAAS,CACtBn/H,EAAI4rJ,EAASr1B,EAAI2H,MAAM0b,UAAU1I,GACjCma,EAAMrrJ,IACRqrJ,EAAMrrJ,EAEV,CAKA,GAHEmrJ,EADsB,GAApBD,EACKG,EAEAO,GACJzwB,EAAIsa,UAAYta,EAAIua,SAAU,CAC7B9rJ,EAAIouG,EAAM0gC,GAAGhyH,EAAEwqI,GAAK16I,GACxB,GAAI5M,EAAI,EAENoW,EAAIsrJ,EAAMtzD,EAAMygC,IAAI/xH,EAAEwqI,GAAK16I,GAAK8yI,EAAgB1/I,EACxB,GAApBshK,IACFlrJ,GAAKu2H,EAAI2H,MAAM0b,UAAU1I,IACvBia,EAAOnrJ,IACTmrJ,EAAOnrJ,EAEb,CAEE6qJ,EAAME,KADgB,GAApBG,EACkBC,EAEAA,EAAO50B,EAAI2H,MAAM0b,UAAU1I,EACnD,CACI/V,EAAI2a,cACF+U,EAAME,EAAW,GAAKF,EAAME,EAAW,EAAI,KAC7CF,EAAME,EAAW,EAAI,KAAOF,EAAME,EAAW,GAAKF,EAAME,EAAW,EAAI,IAAMx0B,EAAIwc,OAE/E8X,EAAME,EAAW,EAAI,GAAKF,EAAME,EAAW,EAAI,KACjDF,EAAME,EAAW,EAAI,KAAOF,EAAME,EAAW,EAAI,GAAKF,EAAME,EAAW,EAAI,IAAMx0B,EAAIwc,OAG3F,CACA,OAAOiY,CACT,EAIAp/J,KAAKigK,gBAAkB,SAASxuB,EAAUyuB,EAAW11J,EAAG21J,GACtD,IAAIC,EAAQ,EACR9yH,EAAI4yH,EAAUplJ,EACdulJ,EAAK5uB,EAASqZ,OAClB,GAAIx9G,EAAImkG,EAAS0Z,OACf,MAAc,GAAP3gJ,IAAU,CAEfw5I,EAAOvS,EAAS5I,GAAGv7F,GACnBA,IACA8yH,GAASpc,EAAOA,EAChBA,EAAOvS,EAAS5I,GAAGv7F,GACnBA,IACA8yH,GAASpc,EAAOA,CAClB,MACK,GAAI12G,EAAImkG,EAASyZ,WAAY,CAClC,IAAIoV,EAAOnE,GAAY,GACvBmE,EAAK,GAAK,EACVA,EAAK,GAAKH,EACV,MAAc,GAAP31J,IAAU,CAEfw5I,EAAOhzI,KAAK01G,IAAI+qB,EAAS5I,GAAGv7F,IAAMgzH,EAAKD,EAAG/yH,IAC1CA,IACA8yH,GAASpc,EAAOA,EAChBA,EAAOhzI,KAAK01G,IAAI+qB,EAAS5I,GAAGv7F,IAAMgzH,EAAKD,EAAG/yH,IAC1CA,IACA8yH,GAASpc,EAAOA,CAClB,CACF,MACE,MAAc,GAAPx5I,IAAU,CACf,IAAIw5I,EACJA,EAAOhzI,KAAK01G,IAAI+qB,EAAS5I,GAAGv7F,IAAMiwH,EAAM8C,EAAG/yH,IAAM6yH,EACjD7yH,IACA8yH,GAASpc,EAAOA,EAChBA,EAAOhzI,KAAK01G,IAAI+qB,EAAS5I,GAAGv7F,IAAMiwH,EAAM8C,EAAG/yH,IAAM6yH,EACjD7yH,IACA8yH,GAASpc,EAAOA,CAClB,CAGF,OADAkc,EAAUplJ,EAAIwyB,EACP8yH,CACT,EACApgK,KAAKugK,WAAa,SAAS9uB,EAAUsmB,EAASyI,EAASxkJ,EAAKykJ,GAC1D,IAEInb,EACA96I,EAHAk2J,EAAa,EACbC,EAAa,EAGbC,EAAO,EACPC,EAAgB,EAChBC,EAAe,EACfC,GAAa,GACbzzH,EAAI,EACJy9G,EAAWtZ,EAASsZ,SACpBiW,EAAc,EAElB,IADAhlJ,EAAIilJ,SAAW,EACV3b,EAAM,EAAGA,EAAM7T,EAASya,OAAQ5G,IAAO,CAC1C,IAoCM9oI,EApCF1B,EAAI22H,EAAS2Z,aAAeL,EAASiW,MAAsC,GAApBvvB,EAASia,QAAe2R,EAAO/X,GAAO,IAAM7T,EAASka,eAAiB,GAAoD,EAA/Cla,EAAS8Z,cAAc9Z,EAASzoI,OAAOs8I,IACzK8a,EAAQ,EACZ,GAAkB,MAAdK,GAAsBA,EAAWN,KAAK7a,IAAQxqI,EAChDslJ,EAAQK,EAAWL,MAAM9a,GACzBh4G,GAAKmkG,EAAS1gE,MAAMu0E,GACpBkb,EAAQE,KAAgBN,EAAQrI,EAAQ4I,KACxCP,EAAQK,EAAWS,UAAU5b,OACxB,CACL,IAGM6b,EAHFhB,EAAO3D,EAAM1hJ,GAEjB,GADAtQ,EAAIinI,EAAS1gE,MAAMu0E,IAAQ,EACvBh4G,EAAImkG,EAAS1gE,MAAMu0E,GAAO7T,EAAS8a,kBAErC4U,EAAc1vB,EAAS8a,kBAAoBj/G,EAAI,EAE7C9iC,EADE22J,EAAc,EACZA,GAAe,EAEf,EAER,IAAIC,EAAK,IAAInD,EAAU3wH,GACvB8yH,EAAQpgK,KAAKigK,gBAAgBxuB,EAAU2vB,EAAI52J,EAAG21J,GAC9C7yH,EAAI8zH,EAAGtmJ,EACW,MAAd2lJ,IACFA,EAAWN,KAAK7a,GAAOxqI,EACvB2lJ,EAAWL,MAAM9a,GAAO8a,GAE1BA,EAAQI,EAAQE,KAAgBN,EAAQrI,EAAQ4I,KAChDP,EAAQlE,GAAOx2B,WAAW10H,KAAKuF,IAAI6pJ,EAAO,QACxB,MAAdK,IACFA,EAAWS,UAAU5b,GAAO8a,EAEhC,CAKA,GAJkB,MAAdK,IACFA,EAAWrV,YAAc3Z,EAAS2Z,aAEpC0V,GAAgBV,EACZA,EAAQ,EAEV5jJ,EAAMxL,KAAKuF,IAAI,EAAY,GAAR6pJ,EAAa,GAAK,GACrCpkJ,EAAIilJ,UAAYzkJ,EAAMA,EACtBokJ,IACAC,GAAiBT,EAEnBW,EAAY/vJ,KAAKuF,IAAIwqJ,EAAWX,EAClC,CAKA,OAJApkJ,EAAIqlJ,WAAaT,EACjB5kJ,EAAIslJ,UAAYR,EAChB9kJ,EAAIulJ,WAAaV,EACjB7kJ,EAAI+kJ,UAAYA,EACTH,CACT,EACA5gK,KAAKwhK,UAAY,SAASjyB,EAAKkC,EAAUrlC,EAAO8+B,EAAIF,GAClD,IACIsa,EAAKmc,EACLj3J,EACAk1J,EAAKgC,EAHL/2B,EAAM4E,EAAIE,eAIVkyB,EAAqC,GAA3BlwB,EAASka,eAAsB,GAAM,EAC/CZ,EAAWtZ,EAASsZ,SACpBgN,EAAUoE,GAAYyF,OAAOlX,QAC7BmX,EAAO1F,GAAYyF,OAAOlX,QAC1B0V,EAAQ,IAAI0B,gBAChBhJ,UAAUvpB,EAAKnjC,EAAOqlC,EAAUsmB,GAChCwI,WAAW9uB,EAAUsmB,EAAS8J,EAAMzB,EAAO,MAC3C,IAAI9yH,EAAI,EAKR,IAJAm0H,EAAOhwB,EAASqa,SACZra,EAAS5F,YAAcxD,GAAQC,YAA2C,GAA7BmJ,EAASzF,mBACxDy1B,EAAO,IAEJnc,EAAM,EAAGA,EAAMmc,EAAMnc,IAAO,CAC/B,IAAIz3H,EAAQ88G,EAAIqc,cAAcx8I,EAAE86I,GAC5Bx3H,EAAM68G,EAAIqc,cAAcx8I,EAAE86I,EAAM,GAChCyc,EAAKj0I,EAAMD,EACf,IAAK6xI,EAAM,EAAGpyH,EAAIxf,EAAKwf,IACrBoyH,GAAOjuB,EAAS5I,GAAGv7F,GAAKmkG,EAAS5I,GAAGv7F,GACtCoyH,GAAOqC,EACPL,EAAM,KACN/2B,EAAIuH,MAAMpF,GAAG5B,GAAIF,GAAIsa,GAAOoc,EAAMhC,EAClC/0B,EAAIuH,MAAM2vB,KAAK32B,GAAIF,GAAIsa,GAAOoc,EAAM3J,EAAQzS,GAAOuc,EAAKvc,GAAOyc,EAC3D31D,EAAM0gC,GAAGtiI,EAAE86I,GAAO,IAAM/V,EAAIsa,QAC9B6V,GAAYtzD,EAAM0gC,GAAGtiI,EAAE86I,GAEvBoa,EAAM,EACR/0B,EAAIuH,MAAMuJ,IAAIvQ,GAAIF,GAAIsa,GAAOoc,EAAM1wJ,KAAKuF,IAAImpJ,EAAMtzD,EAAMygC,IAAIriI,EAAE86I,GAAM3a,EAAI+D,IAAIlkI,EAAE86I,IAC9E3a,EAAIuH,MAAM8vB,QAAQ92B,GAAIF,GAAIsa,GAAO,EACT,GAApB7T,EAASia,SAAgBpG,GAAO,KAClC3a,EAAIuH,MAAM8vB,QAAQ92B,GAAIF,GAAIsa,IAAQqc,EAAUtE,EAAO/X,IAEjDA,EAAMjd,GAAQiL,UAChB+oB,GAAStR,EAASzF,IAAQ,GAC1B3a,EAAIuH,MAAM8vB,QAAQ92B,GAAIF,GAAIsa,IAAQqc,EAAU5W,EAASzF,GAEzD,CACA,GAAI7T,EAAS5F,YAAcxD,GAAQC,WAEjC,IADAm5B,EAAOnc,EACFA,EAAM7T,EAASsa,SAAUzG,EAAMjd,GAAQqE,QAAS4Y,IACnD,CAAIz3H,EAAQ88G,EAAIqc,cAAclsI,EAAEwqI,GAC5Bx3H,EAAM68G,EAAIqc,cAAclsI,EAAEwqI,EAAM,GAChCyc,EAAKj0I,EAAMD,EACf,IAHA,IAGS3nB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAKw5J,EAAM,EAAGl1J,EAAIqjB,EAAOrjB,EAAIsjB,EAAKtjB,IAChCk1J,GAAOjuB,EAAS5I,GAAGv7F,GAAKmkG,EAAS5I,GAAGv7F,GACpCA,IAEFoyH,EAAM1uJ,KAAKuF,IAAImpJ,EAAMqC,EAAI,OACzBL,EAAM,KACN/2B,EAAIuH,MAAM+vB,KAAK/2B,GAAIF,GAAI,EAAIsa,EAAMp/I,GAAKw7J,EAAMhC,EAC5C/0B,EAAIuH,MAAMgwB,OAAOh3B,GAAIF,GAAI,EAAIsa,EAAMp/I,GAAKw7J,EAAM3J,EAAQ0J,GAAQI,EAAKJ,GAAQM,EACvE31D,EAAM0gC,GAAGhyH,EAAEwqI,GAAKp/I,GAAK,EACvBw5J,GAAYtzD,EAAM0gC,GAAGhyH,EAAEwqI,GAAKp/I,GAE5Bw5J,EAAM,GACJnwB,EAAIsa,SAAWta,EAAIua,YACrB4V,EAAM,GACR/0B,EAAIuH,MAAMiwB,MAAMj3B,GAAIF,GAAI,EAAIsa,EAAMp/I,GAAKw7J,EAAM1wJ,KAAKuF,IAAImpJ,EAAMtzD,EAAMygC,IAAI/xH,EAAEwqI,GAAKp/I,GAAIykI,EAAI+D,IAAI5zH,EAAEwqI,IAC3F3a,EAAIuH,MAAMkwB,UAAUl3B,GAAIF,GAAI,EAAIsa,EAAMp/I,IAAM,EAAIurI,EAAS8Z,cAAcrlJ,GACnEo/I,EAAMjd,GAAQkL,UAChB5I,EAAIuH,MAAMkwB,UAAUl3B,GAAIF,GAAI,EAAIsa,EAAMp/I,IAAMy7J,EAAU5W,EAAS0W,IAEjEA,GACF,CAxBoC,CA2BxC92B,EAAIuH,MAAMmwB,QAAQn3B,GAAIF,GAAMyG,EAAS2Z,YACrCzgB,EAAIuH,MAAMowB,aAAap3B,GAAIF,GAAMyG,EAASwZ,eAAiBxZ,EAASoa,aACpElhB,EAAIuH,MAAMqwB,WAAWr3B,GAAIF,GAAMyG,EAASoa,aACxClhB,EAAIuH,MAAM0uB,KAAK11B,GAAIF,GAAMo1B,EAAMiB,WAC/B12B,EAAIuH,MAAM6uB,UAAU71B,GAAIF,GAAwB,GAAlBo1B,EAAMW,UACpCp2B,EAAIuH,MAAMqvB,WAAWr2B,GAAIF,GAAyB,GAAnBo1B,EAAMmB,WACrC52B,EAAIuH,MAAMovB,UAAUp2B,GAAIF,GAAwB,GAAlBo1B,EAAMkB,UACpC32B,EAAIuH,MAAM+uB,SAAS/1B,GAAIF,GAAMo1B,EAAMa,QACrC,CACF,CA18BA3E,GAAYY,MAAQ,IACpBZ,GAAYI,OAAS,IACrBJ,GAAYkG,WAAa,IACzBlG,GAAYU,UAAY,KAw8BxB,IAAIyF,GAAW9/J,GAAOikI,OAClB87B,GAAW//J,GAAOskI,OAClB07B,GAAYhgK,GAAO4kI,QACnBq7B,GAAWjgK,GAAO+kI,OACtB,SAASm7B,KACP,IAAI70B,EAAQ,KAMZ,SAAS80B,EAAKl4J,GACZ5K,KAAKu3J,KAAO,EAAI3sJ,CAClB,CAPA5K,KAAKguI,MAAQ,KACbhuI,KAAKiuI,WAAa,SAASG,GACzBpuI,KAAKguI,MAAQI,EACbJ,EAAQI,CACV,EAIA,IAAI20B,EAAc,CAChB,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,IAEN,SAASC,EAAwBx4J,EAAGy4J,EAAOp6B,EAAIq6B,EAAO7C,EAAI8C,GACxD,IAAIC,EAAc,MAAeH,EACjCz4J,IAAS,EACT,MAAc,GAAPA,IACL61J,EAAG8C,KAAWC,EAAcv6B,EAAGq6B,KAAW,EAAI,EAC9C7C,EAAG8C,KAAWC,EAAcv6B,EAAGq6B,KAAW,EAAI,CAElD,CACA,SAASG,EAAqB74J,EAAGy4J,EAAOp6B,EAAIq6B,EAAO7C,EAAI8C,GACrD34J,IAAS,EACT,IAAI84J,EAAY94J,EAAI,EACpBA,IAAS,EACT,MAAc,GAAPA,IAAU,CACf,IAAI+4J,EAAI56B,EAAII,EAAIy6B,EACZC,EAAKC,EAAKC,EAAKC,EACnBL,EAAK16B,EAAGq6B,KAAWD,EACnBt6B,EAAKE,EAAGq6B,KAAWD,EACnBQ,EAAM,EAAIF,EACVx6B,EAAKF,EAAGq6B,KAAWD,EACnBS,EAAM,EAAI/6B,EACV66B,EAAK36B,EAAGq6B,KAAWD,EACnBU,EAAM,EAAI56B,EACVw6B,GAAMv1B,EAAMwvB,MAAMiG,GAClBG,EAAM,EAAIJ,EACV76B,GAAMqF,EAAMwvB,MAAMkG,GAClBrD,EAAG8C,KAAW,EAAII,EAClBx6B,GAAMiF,EAAMwvB,MAAMmG,GAClBtD,EAAG8C,KAAW,EAAIx6B,EAClB66B,GAAMx1B,EAAMwvB,MAAMoG,GAClBvD,EAAG8C,KAAW,EAAIp6B,EAClBs3B,EAAG8C,KAAW,EAAIK,CACpB,CACiB,GAAbF,IAGFC,EAAK16B,EAAGq6B,KAAWD,EACnBt6B,EAAKE,EAAGq6B,KAAWD,EACnBQ,EAAM,EAAIF,EACVG,EAAM,EAAI/6B,EACV46B,GAAMv1B,EAAMwvB,MAAMiG,GAClB96B,GAAMqF,EAAMwvB,MAAMkG,GAClBrD,EAAG8C,KAAW,EAAII,EAClBlD,EAAG8C,KAAW,EAAIx6B,EAEtB,CACA,SAASk7B,EAAeC,EAAIC,EAAId,EAAOe,EAASC,GAC9C,IAAI3e,EACA2G,EAEAiY,EADA52H,EAAI,EAEJ62H,EAAa,EACbC,EAAe,EACfC,EAAQ,EACRC,EAAQP,EACRQ,EAAW,EACXC,EAAYF,EACZG,EAAe,EACfC,EAASZ,EACTa,EAAY,EAMhB,IALAT,EAA6B,MAAbD,GAAqBD,EAAQ5Y,aAAe6Y,EAAU7Y,YAEpEa,EADE+X,EAAQn4B,YAAcxD,GAAQC,WACvB,GAEA,GACNgd,EAAM,EAAGA,GAAO2G,EAAQ3G,IAAO,CAClC,IAAI6a,GAAQ,EAKZ,IAJI+D,GAAiBF,EAAQn4B,YAAcxD,GAAQqJ,aACjDyuB,EAAO6D,EAAQ5Y,aAAe4Y,EAAQjZ,SAASzF,IAA2B,GAAnB0e,EAAQtY,QAAe1d,EAAMqvB,OAAO/X,GAAO,IAAM0e,EAAQrY,eAAiB,GAAkD,EAA7CqY,EAAQzY,cAAcyY,EAAQh7J,OAAOs8I,KAE7Ksd,GAASoB,EAAQjzF,MAAMu0E,IAAQ,GAC3B4e,GAAiBD,EAAU9D,KAAK7a,IAAQ6a,EACxB,GAAdgE,IACFd,EACEc,EACAlB,EACAyB,EACAC,EACAH,EACAC,GAEFN,EAAa,GAEK,GAAhBC,IACFpB,EACEoB,EACAnB,EACAyB,EACAC,EACAH,EACAC,GAEFL,EAAe,OAEZ,CACL,IAEMjD,EAFF32J,EAAIw5J,EAAQjzF,MAAMu0E,GACtB,GAAIh4G,EAAI02H,EAAQjzF,MAAMu0E,GAAO0e,EAAQzX,kBAEnC4U,EAAc6C,EAAQzX,kBAAoBj/G,EAAI,EAC9Co1H,GAAS3iI,KAAKgkI,EAAIC,EAAQzX,kBAAmB,IAAK,GAClD/hJ,EAAI22J,EACA32J,EAAI,IACNA,EAAI,GAEN86I,EAAM2G,EAAS,EA2CjB,GAzCkB,GAAdkY,GAAmC,GAAhBC,IACrBI,EAAYF,EACZG,EAAeF,EACfG,EAASZ,EACTa,EAAYN,GAEG,MAAbJ,GAAqBA,EAAUW,WAAa,GAAKtf,GAAO2e,EAAUW,YAAcX,EAAU9D,KAAK7a,GAAO,GAAK6a,GAAQ8D,EAAU9D,KAAK7a,IAClH,GAAd6e,IACFd,EACEc,EACAlB,EACAyB,EACAC,EACAH,EACAC,GAEFN,EAAa,EACbK,EAAYF,EACZG,EAAeF,EACfG,EAASZ,EACTa,EAAYN,GAEdD,GAAgB55J,IAEI,GAAhB45J,IACFpB,EACEoB,EACAnB,EACAyB,EACAC,EACAH,EACAC,GAEFL,EAAe,EACfI,EAAYF,EACZG,EAAeF,EACfG,EAASZ,EACTa,EAAYN,GAEdF,GAAc35J,GAEZA,GAAK,EAAG,CACU,GAAhB45J,IACFpB,EACEoB,EACAnB,EACAyB,EACAC,EACAH,EACAC,GAEFL,EAAe,GAEC,GAAdD,IACFd,EACEc,EACAlB,EACAyB,EACAC,EACAH,EACAC,GAEFN,EAAa,GAEf,KACF,CACF,CACI7e,GAAO2G,IACTsY,GAAYP,EAAQjzF,MAAMu0E,GAC1B+e,GAASL,EAAQjzF,MAAMu0E,GACvBh4G,GAAK02H,EAAQjzF,MAAMu0E,GAEvB,CACkB,GAAd6e,IACFd,EACEc,EACAlB,EACAyB,EACAC,EACAH,EACAC,GAEFN,EAAa,GAEK,GAAhBC,IACFpB,EACEoB,EACAnB,EACAyB,EACAC,EACAH,EACAC,GAEFL,EAAe,EAEnB,CACA,SAASS,EAAOxE,EAAI8C,EAAO2B,GACzB,IAAIC,EAAO,EACPC,EAAO,EACX,EAAG,CACD,IAAIr8B,EAAK03B,EAAG8C,KACRp6B,EAAKs3B,EAAG8C,KACR4B,EAAOp8B,IACTo8B,EAAOp8B,GACLq8B,EAAOj8B,IACTi8B,EAAOj8B,EACX,OAASo6B,EAAQ2B,GAGjB,OAFIC,EAAOC,IACTD,EAAOC,GACFD,CACT,CACA,SAASE,EAAc5E,EAAI8C,EAAOr1I,EAAKwiG,EAAIG,EAAI31G,GAC7C,IAEI6kI,EAFAulB,EAAiC,MAAvB3L,GAASh3D,GAAG+tB,GAAI8oC,KAAeG,GAASh3D,GAAGkuB,GAAI2oC,KACzDvV,EAAM,EAEV,EAAG,CACD,IAAIzvI,EAAIisJ,EAAG8C,KACPt9B,EAAIw6B,EAAG8C,KACF,GAAL/uJ,IACEA,EAAI,KACNA,EAAI,GACJyvI,GAAOqhB,GAET9wJ,GAAK,IAEE,GAALyxH,IACEA,EAAI,KACNA,EAAI,GACJge,GAAOqhB,GAET9wJ,GAAKyxH,GAEPge,GAAO0V,GAASoC,SAASvnJ,EAC3B,OAAS+uJ,EAAQr1I,GAQjB,OAPA6xH,EAAa,MAANkE,EACPA,IAAQ,GACJA,EAAMlE,IACRkE,EAAMlE,EACNrvB,EAAKG,GAEP31G,EAAEy8I,MAAQ1T,EACHvzB,CACT,CACA,SAAS60C,EAAgB9E,EAAI8C,EAAOr1I,EAAKhT,GACvC,IAAI4kI,EAAO,EACP0lB,EAAQ7L,GAASh3D,GAAG,GAAG+2D,KAC3B,EAAG,CACD,IAAIllJ,EAAoB,EAAhBisJ,EAAG8C,EAAQ,GAAS9C,EAAG8C,EAAQ,GACvCA,GAAS,EACTzjB,GAAQ0lB,EAAMhxJ,EAChB,OAAS+uJ,EAAQr1I,GAEjB,OADAhT,EAAEy8I,MAAQ7X,EACH,CACT,CACA,SAAS2lB,EAAsBhF,EAAI8C,EAAOr1I,EAAKwiG,EAAIx1G,GACjD,IACI6kI,EAEA2Z,EAHAzV,EAAM,EAENuV,EAAOG,GAASh3D,GAAG+tB,GAAI8oC,KAGzBE,EADQ,GAANhpC,EACKipC,GAASqC,QAETrC,GAASsC,QAClB,EAAG,CACD,IAAIznJ,EAAIisJ,EAAG8C,EAAQ,GAAK/J,EAAOiH,EAAG8C,EAAQ,GAC1CA,GAAS,EACTtf,GAAOyV,EAAKllJ,EACd,OAAS+uJ,EAAQr1I,GAQjB,OAPA6xH,EAAa,MAANkE,EACPA,IAAQ,GACJA,EAAMlE,IACRkE,EAAMlE,EACNrvB,KAEFx1G,EAAEy8I,MAAQ1T,EACHvzB,CACT,CACA,SAASg1C,EAAsBjF,EAAI8C,EAAOr1I,EAAKwiG,EAAIx1G,GACjD,IAAI4kI,EAAO,EACPC,EAAO,EACP4lB,EAAO,EACPnM,EAAOG,GAASh3D,GAAG+tB,GAAI8oC,KACvBgM,EAAQ7L,GAASh3D,GAAG+tB,GAAIgpC,KACxBkM,EAAQjM,GAASh3D,GAAG+tB,EAAK,GAAGgpC,KAC5BmM,EAAQlM,GAASh3D,GAAG+tB,EAAK,GAAGgpC,KAChC,EAAG,CACD,IAAIllJ,EAAIisJ,EAAG8C,EAAQ,GAAK/J,EAAOiH,EAAG8C,EAAQ,GAC1CA,GAAS,EACTzjB,GAAQ0lB,EAAMhxJ,GACdurI,GAAQ6lB,EAAMpxJ,GACdmxJ,GAAQE,EAAMrxJ,EAChB,OAAS+uJ,EAAQr1I,GACjB,IAAI6c,EAAI2lF,EAUR,OATIovB,EAAOC,IACTD,EAAOC,EACPh1G,KAEE+0G,EAAO6lB,IACT7lB,EAAO6lB,EACP56H,EAAI2lF,EAAK,GAEXx1G,EAAEy8I,MAAQ7X,EACH/0G,CACT,CACA,IAAI+6H,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACxE,SAASC,EAAatF,EAAI8C,EAAO2B,EAAQhqJ,GACvC,IAAIvE,EAAMsuJ,EAAOxE,EAAI8C,EAAO2B,GAC5B,OAAQvuJ,GACN,KAAK,EACH,OAAOA,EACT,KAAK,EACH,OAAO4uJ,EAAgB9E,EAAI8C,EAAO2B,EAAQhqJ,GAC5C,KAAK,EACL,KAAK,EACH,OAAOuqJ,EACLhF,EACA8C,EACA2B,EACAY,EAAcnvJ,EAAM,GACpBuE,GAEJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAOwqJ,EACLjF,EACA8C,EACA2B,EACAY,EAAcnvJ,EAAM,GACpBuE,GAEJ,QACE,GAAIvE,EAAM+lJ,GAAYU,UAEpB,OADAliJ,EAAEy8I,KAAO+E,GAAYkG,YACb,EAGV,IAAIoD,EAMAC,EALJ,IAFAtvJ,GAAO,GAEFqvJ,EAAU,GAAIA,EAAU,GAAIA,IAC/B,GAAIrM,GAASh3D,GAAGqjE,GAASvM,QAAU9iJ,EACjC,MAIJ,IAAKsvJ,EAASD,EAAU,EAAGC,EAAS,GAAIA,IACtC,GAAItM,GAASh3D,GAAGsjE,GAAQxM,QAAU9iJ,EAChC,MAGJ,OAAO0uJ,EAAc5E,EAAI8C,EAAO2B,EAAQe,EAAQD,EAAS9qJ,GAE/D,CA2GA,SAASgrJ,EAAmBn7B,EAAK8G,EAAU4uB,EAAI0F,EAAUC,EAASC,EAAQC,GAExE,IADA,IAAIC,EAAO10B,EAASyZ,WACXkb,EAAK,EAAGA,GAAM,GAAQA,IAC7BL,EAASK,GAAM9J,GAAYkG,WAE7B,IAAS4D,EAAK,EAAGA,EAAK,GAAIA,IAAM,CAC9B,IAAIC,EAAK17B,EAAIqc,cAAcx8I,EAAE47J,EAAK,GAClC,GAAIC,GAAMF,EACR,MACF,IAAIG,EAAS,EACTC,EAAK,IAAIzD,EAAKwD,GACdE,EAAMb,EAAatF,EAAI,EAAGgG,EAAIE,GAClCD,EAASC,EAAGhP,KACZ,IAAK,IAAIkP,EAAK,EAAGA,EAAK,EAAGA,IAAM,CAC7B,IAAIC,EAAK/7B,EAAIqc,cAAcx8I,EAAE47J,EAAKK,EAAK,GACvC,GAAIC,GAAMP,EACR,MACF,IAAI5O,EAAO+O,EACXC,EAAK,IAAIzD,EAAKvL,GACd,IAAIoP,EAAMhB,EAAatF,EAAIgG,EAAIK,EAAIH,GACnChP,EAAOgP,EAAGhP,KACNwO,EAASK,EAAKK,GAAMlP,IACtBwO,EAASK,EAAKK,GAAMlP,EACpByO,EAAQI,EAAKK,GAAML,EACnBH,EAAOG,EAAKK,GAAMD,EAClBN,EAAOE,EAAKK,GAAME,EAEtB,CACF,CACF,CACA,SAASC,EAAkBj8B,EAAKk8B,EAAWx7B,EAAIg1B,EAAI0F,EAAUC,EAASC,EAAQC,GAE5E,IADA,IAAIC,EAAOU,EAAU3b,WACZ4b,EAAK,EAAGA,EAAKz+B,GAAQoE,QAAU,EAAGq6B,IAAM,CAC/C,IAAIJ,EAAK/7B,EAAIqc,cAAcx8I,EAAEs8J,GAC7B,GAAIJ,GAAMP,EACR,MACF,IAAI5O,EAAOwO,EAASe,EAAK,GAAKD,EAAUza,WACxC,GAAI/gB,EAAG4f,gBAAkBsM,EACvB,MACF,IAAIgP,EAAK,IAAIzD,EAAKvL,GACdwP,EAAMpB,EAAatF,EAAIqG,EAAIP,EAAMI,GACrChP,EAAOgP,EAAGhP,KACNlsB,EAAG4f,gBAAkBsM,IAEzBlsB,EAAG/xH,OAAOutJ,GACVx7B,EAAG4f,eAAiBsM,EACpBlsB,EAAGmgB,cAAgBwa,EAAQc,EAAK,GAChCz7B,EAAGogB,cAAgBqb,EAAK,EAAId,EAAQc,EAAK,GACzCz7B,EAAGigB,aAAa,GAAK2a,EAAOa,EAAK,GACjCz7B,EAAGigB,aAAa,GAAK4a,EAAOY,EAAK,GACjCz7B,EAAGigB,aAAa,GAAKyb,EACvB,CACF,CA9JA/mK,KAAKgnK,mBAAqB,SAASr8B,EAAKU,EAAIo1B,GAC1C,IAAIJ,EAAKh1B,EAAGyf,OACR5kJ,EAAI8K,KAAKwF,IAAI,IAAK60H,EAAGkhB,kBAAoB,GAAK,GAAK,GAGvD,IAFkB,MAAdkU,IACFA,EAAWmE,WAAa,GACnB1+J,EAAI,EAAGA,GAAK,EACjB,GAA+B,IAA1Bm6J,EAAGn6J,EAAI,GAAKm6J,EAAGn6J,EAAI,IACtB,MACJmlI,EAAG8f,OAASjlJ,EAGZ,IAFA,IAAImgK,EAAK,EACLK,EAAK,EACFxgK,EAAI,EAAGA,GAAK,EAAG,CACpB,IAAI6lE,EACJ,IAAuD,YAAjDs0F,EAAGn6J,EAAI,GAAKm6J,EAAGn6J,EAAI,GAAKm6J,EAAGn6J,EAAI,GAAKm6J,EAAGn6J,EAAI,KAAoB,EACnE,MAEF6lE,EAAqD,GAAjB,GAAjB,EAAZs0F,EAAGn6J,EAAI,GAASm6J,EAAGn6J,EAAI,IAAUm6J,EAAGn6J,EAAI,IAAUm6J,EAAGn6J,EAAI,GAChEmgK,GAAM9M,GAASiC,KAAKzvF,GACpB26F,GAAMnN,GAASmC,KAAK3vF,EACtB,CACA,IAAIwrF,EAAO8O,EAQX,GAPAh7B,EAAGugB,mBAAqB,EACpBya,EAAKK,IACPnP,EAAOmP,EACPr7B,EAAGugB,mBAAqB,GAE1BvgB,EAAG+gB,WAAamL,EAChBlsB,EAAG6f,WAAahlJ,EACP,GAALA,EACF,OAAOqxJ,EACT,GAAIlsB,EAAGQ,YAAcxD,GAAQC,WAC3B+9B,EAAK,EAAI17B,EAAIqc,cAAclsI,EAAE,GACzBurJ,EAAKh7B,EAAG6f,aACVmb,EAAKh7B,EAAG6f,YACVwb,EAAKr7B,EAAG6f,gBACH,GAAI7f,EAAGQ,YAAcxD,GAAQqJ,WAKlC,GAJA20B,EAAKh7B,EAAGmgB,cAAgB7gB,EAAI8lB,OAAOvqJ,EAAI,GACvCwgK,EAAKr7B,EAAGogB,cAAgB9gB,EAAI8lB,OAAOvqJ,EAAI,GACvCwgK,EAAK/7B,EAAIqc,cAAcx8I,EAAE67J,EAAKK,EAAK,GACnCL,EAAK17B,EAAIqc,cAAcx8I,EAAE67J,EAAK,GAC1BK,EAAKxgK,EAAG,CACV,IAAIqgK,EAAK,IAAIzD,EAAKvL,GAClBlsB,EAAGigB,aAAa,GAAKqa,EAAatF,EAAIqG,EAAIxgK,EAAGqgK,GAC7ChP,EAAOgP,EAAGhP,IACZ,OAEAlsB,EAAGmgB,cAAgB,EACnBngB,EAAGogB,cAAgBpjB,GAAQoE,QAAU,EAAI,EAAI,EAC7C45B,EAAK17B,EAAIqc,cAAcx8I,EAAE,GACzBk8J,EAAKxgK,EACDmgK,EAAKK,IACPL,EAAKK,GAKT,GAFAL,EAAKr1J,KAAKwF,IAAI6vJ,EAAIngK,GAClBwgK,EAAK11J,KAAKwF,IAAIkwJ,EAAIxgK,GACdmgK,EAAK,EAAG,CACNE,EAAK,IAAIzD,EAAKvL,GAClBlsB,EAAGigB,aAAa,GAAKqa,EAAatF,EAAI,EAAGgG,EAAIE,GAC7ChP,EAAOgP,EAAGhP,IACZ,CACA,GAAI8O,EAAKK,EAAI,CACPH,EAAK,IAAIzD,EAAKvL,GAClBlsB,EAAGigB,aAAa,GAAKqa,EAAatF,EAAIgG,EAAIK,EAAIH,GAC9ChP,EAAOgP,EAAGhP,IACZ,CAMA,GAL4B,GAAxB5sB,EAAIwlB,mBACN9kB,EAAG4f,eAAiBsM,EACpB0P,oBAAoBt8B,EAAKU,GACzBksB,EAAOlsB,EAAG4f,gBAEM,MAAdwV,GACEp1B,EAAGQ,YAAcxD,GAAQqJ,UAAW,CACtC,IAAI4T,EAAM,EACV,MAAO3a,EAAIqc,cAAcx8I,EAAE86I,GAAOja,EAAG6f,WACnC5F,IAEFmb,EAAWmE,WAAatf,CAC1B,CAEF,OAAOiS,CACT,EACAv3J,KAAKknK,WAAa,SAASv8B,EAAK9B,EAAIwC,EAAIo1B,GACtC,IAAIJ,EAAKh1B,EAAGyf,OACR9hF,EAAIszF,GAAYU,UAAYhvB,EAAM6uB,OAAOxxB,EAAG+f,aAChD,GAAI/f,EAAG2f,UAAYhiF,EACjB,OAAOszF,GAAYkG,WAErB,GADAqB,EAAeh7B,EAAIw3B,EAAIryB,EAAM6uB,OAAOxxB,EAAG+f,aAAc/f,EAAIo1B,GACxB,IAAN,EAAtB91B,EAAIslB,iBAIP,IAHA,IAAI3iH,EAAI,EACJ65H,EAAO97B,EAAG+f,YAAc/f,EAAGsgB,eAC3Byb,EAAW,iBAAoBp5B,EAAM6uB,OAAOsK,GACvC7hB,EAAM,EAAGA,EAAMja,EAAG4gB,OAAQ3G,IAAO,CACxC,IAIMtjG,EAJF+uB,EAAQs6D,EAAGt6D,MAAMu0E,GACrB,GAA2B,GAAvB3a,EAAI+lB,WAAWpL,GACjBh4G,GAAKyjC,OAGL,IAAK/uB,EAAI1U,EAAGA,GAAKyjC,EAAO/uB,EAAI1U,IAAK0U,EAC/Bq+G,EAAGr+G,GAAK6mF,EAAG7mF,IAAMolH,EAAW/G,EAAGr+G,GAAK,CAG1C,CAEF,OAAOhiD,KAAKgnK,mBAAmBr8B,EAAKU,EAAIo1B,EAC1C,EAsDAzgK,KAAKinK,oBAAsB,SAASt8B,EAAKU,GACvC,IAAIw7B,EAAY,IAAIhc,GAChBwV,EAAKh1B,EAAGyf,OACRib,EAAWpD,GAAU,IACrBqD,EAAUrD,GAAU,IACpBsD,EAAStD,GAAU,IACnBuD,EAASvD,GAAU,IACvB,GAAIt3B,EAAGQ,YAAcxD,GAAQC,YAA6B,GAAfqC,EAAIQ,QAA/C,CAEA07B,EAAUvtJ,OAAO+xH,GACbA,EAAGQ,YAAcxD,GAAQqJ,YAC3Bo0B,EAAmBn7B,EAAKU,EAAIg1B,EAAI0F,EAAUC,EAASC,EAAQC,GAC3DU,EACEj8B,EACAk8B,EACAx7B,EACAg1B,EACA0F,EACAC,EACAC,EACAC,IAGJ,IAAIhgK,EAAI2gK,EAAU3b,WAClB,KAAS,GAALhlJ,IAAWm6J,EAAGn6J,EAAI,GAAKm6J,EAAGn6J,EAAI,IAAM,KAExCA,EAAImlI,EAAG8f,OAAS,IACZjlJ,EAAI,MAAR,CAEA2gK,EAAUvtJ,OAAO+xH,GACjBw7B,EAAU1b,OAASjlJ,EAGnB,IAFA,IAAImgK,EAAK,EACLK,EAAK,EACFxgK,EAAI2gK,EAAU3b,WAAYhlJ,GAAK,EAAG,CACvC,IAAI6lE,EAAqD,GAAjB,GAAjB,EAAZs0F,EAAGn6J,EAAI,GAASm6J,EAAGn6J,EAAI,IAAUm6J,EAAGn6J,EAAI,IAAUm6J,EAAGn6J,EAAI,GACpEmgK,GAAM9M,GAASiC,KAAKzvF,GACpB26F,GAAMnN,GAASmC,KAAK3vF,EACtB,CAQA,GAPA86F,EAAU3b,WAAahlJ,EACvB2gK,EAAUjb,mBAAqB,EAC3Bya,EAAKK,IACPL,EAAKK,EACLG,EAAUjb,mBAAqB,GAEjCib,EAAUza,WAAaia,EACnBQ,EAAUh7B,YAAcxD,GAAQqJ,UAClCk1B,EACEj8B,EACAk8B,EACAx7B,EACAg1B,EACA0F,EACAC,EACAC,EACAC,OAEG,CAML,GALAW,EAAU5b,eAAiBob,EAC3BA,EAAK17B,EAAIqc,cAAcx8I,EAAE,GACrB67J,EAAKngK,IACPmgK,EAAKngK,GAEHmgK,EAAK,EAAG,CACV,IAAIE,EAAK,IAAIzD,EAAK+D,EAAU5b,gBAC5B4b,EAAUvb,aAAa,GAAKqa,EAAatF,EAAI,EAAGgG,EAAIE,GACpDM,EAAU5b,eAAiBsb,EAAGhP,IAChC,CACA,GAAIrxJ,EAAImgK,EAAI,CACNE,EAAK,IAAIzD,EAAK+D,EAAU5b,gBAC5B4b,EAAUvb,aAAa,GAAKqa,EAAatF,EAAIgG,EAAIngK,EAAGqgK,GACpDM,EAAU5b,eAAiBsb,EAAGhP,IAChC,CACIlsB,EAAG4f,eAAiB4b,EAAU5b,gBAChC5f,EAAG/xH,OAAOutJ,EACd,CA9CQ,CApBA,CAmEV,EACA,IAAIQ,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IACzDC,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxDC,EAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1DC,EAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG9D,SAASC,EAAWz8B,EAAIM,GAItB,IAHA,IAAIga,EACAja,EAAKC,EAAQC,GAAG,GAAGP,GACnBqK,EAAK/J,EAAQC,GAAG,GAAGP,GACd9kI,EAAI,EAAGA,EAAIqzJ,GAASyC,WAAW16J,OAAS,EAAG4E,IAAK,CACvD,IAAKo/I,EAAMiU,GAASyC,WAAW91J,GAAIo/I,EAAMiU,GAASyC,WAAW91J,EAAI,GAAIo/I,IACnE,GAAIjQ,EAAG0V,SAASzF,IAAQja,EAAG0f,SAASzF,IAAQja,EAAG0f,SAASzF,IAAQ,EAC9D,MAEJ,GAAIA,GAAOiU,GAASyC,WAAW91J,EAAI,GAAI,CACrC,IAAKo/I,EAAMiU,GAASyC,WAAW91J,GAAIo/I,EAAMiU,GAASyC,WAAW91J,EAAI,GAAIo/I,IACnEja,EAAG0f,SAASzF,IAAQ,EAEtBha,EAAQ2hB,MAAMjiB,GAAI9kI,GAAK,CACzB,CACF,CACA,IAAIukD,EAAK,EACLb,EAAK,EACT,IAAK07F,EAAM,EAAGA,EAAM,GAAIA,KACG,GAArBja,EAAG0f,SAASzF,KAEhB17F,IACIa,EAAK4gF,EAAG0f,SAASzF,KACnB76F,EAAK4gF,EAAG0f,SAASzF,KAIrB,IAFA,IAAI56F,EAAK,EACLZ,EAAK,EACFw7F,EAAMjd,GAAQiL,QAASgS,KACH,GAArBja,EAAG0f,SAASzF,KAEhBx7F,IACIY,EAAK2gF,EAAG0f,SAASzF,KACnB56F,EAAK2gF,EAAG0f,SAASzF,KAErB,IAASp/I,EAAI,EAAGA,EAAI,GAAIA,IACtB,GAAIukD,EAAK48G,EAAQnhK,IAAMwkD,EAAK48G,EAAQphK,GAAI,CACtC,IAAIxF,EAAI6mK,EAAUrhK,GAAK0jD,EAAK49G,EAAUthK,GAAK4jD,EACvCuhF,EAAGwgB,aAAenrJ,IACpB2qI,EAAGwgB,aAAenrJ,EAClB2qI,EAAGggB,kBAAoBnlJ,EAE3B,CAEJ,CA+DA,SAASwhK,EAA8B3c,EAAU12I,GAC/C,IAAK,IAAInO,EAAI,EAAGA,EAAImO,IAAKnO,EACvB,GAAI6kJ,EAAS7kJ,GAAK,EAChB,OAAO,EAEX,OAAO,CACT,CAlHA28J,GAAS0E,UAAYA,EACrB1E,GAAS2E,UAAYA,EA6CrBxnK,KAAK2nK,oBAAsB,SAASh9B,EAAKO,EAAIF,EAAIM,GAC/C,IACIga,EAAKp/I,EAAGonC,EAAG9iC,EADX6gI,EAAKC,EAAQC,GAAGL,GAAIF,GAEpB48B,EAAS,EAEb,IADAt6H,EAAI,EACCg4G,EAAM,EAAGA,EAAMja,EAAG4gB,OAAQ3G,IAAO,CACpC,IAAIv0E,EAAQs6D,EAAGt6D,MAAMu0E,GAErB,IADAh4G,GAAKyjC,EACAvmE,GAAKumE,EAAOvmE,EAAI,EAAGA,IACtB,GAAwB,GAApB6gI,EAAGyf,OAAOtgJ,EAAI8iC,GAChB,MAEK,GAAL9iC,IACF6gI,EAAG0f,SAASzF,GAAOsiB,GAAU,EACjC,CACA,GAAyB,GAArBv8B,EAAGsgB,gBAAqC,GAAdtgB,EAAGqgB,QAAc,CAC7C,IAAI5wI,EAAI,EACR,IAAKwqI,EAAM,EAAGA,EAAMja,EAAG4gB,OAAQ3G,IACzBja,EAAG0f,SAASzF,GAAO,IACrBxqI,GAAKuwH,EAAG0f,SAASzF,IAErB,GAAe,IAAN,EAAJxqI,IAAoB,GAALA,EAAQ,CAC1B,IAAKwqI,EAAM,EAAGA,EAAMja,EAAG4gB,OAAQ3G,IACzBja,EAAG0f,SAASzF,GAAO,IACrBja,EAAG0f,SAASzF,KAAS,GAEzBja,EAAGsgB,eAAiBic,EAAS,CAC/B,CACF,CACA,GAAkB,GAAdv8B,EAAGqgB,SAAgBrgB,EAAGQ,YAAcxD,GAAQC,YAA6B,GAAfqC,EAAIQ,QAAc,CAC9E,IAAKma,EAAM,GAAIA,EAAMjd,GAAQiL,QAASgS,IACpC,GAAIja,EAAG0f,SAASzF,GAAOtX,EAAMqvB,OAAO/X,KAA6B,GAArBja,EAAG0f,SAASzF,GACtD,MAGJ,GAAIA,GAAOjd,GAAQiL,QAAS,CAC1B,IAAKgS,EAAM,GAAIA,EAAMjd,GAAQiL,QAASgS,IAChCja,EAAG0f,SAASzF,GAAO,IACrBja,EAAG0f,SAASzF,IAAQtX,EAAMqvB,OAAO/X,IAErCja,EAAGqgB,QAAUkc,EAAS,CACxB,CACF,CACA,IAAK1hK,EAAI,EAAGA,EAAI,EAAGA,IACjBolI,EAAQ2hB,MAAMjiB,GAAI9kI,GAAK,EAKzB,IAJmB,GAAfykI,EAAIQ,SAAsB,GAAND,GAAWI,EAAQC,GAAG,GAAGP,GAAIa,YAAcxD,GAAQC,YAAcgD,EAAQC,GAAG,GAAGP,GAAIa,YAAcxD,GAAQC,aAC/Hm/B,EAAWz8B,EAAIM,GACfs8B,EAAS,GAENtiB,EAAM,EAAGA,EAAMja,EAAG4gB,OAAQ3G,KACJ,GAArBja,EAAG0f,SAASzF,KACdja,EAAG0f,SAASzF,GAAO,GAGT,GAAVsiB,IACiB,GAAfj9B,EAAIQ,QACNnrI,KAAK6nK,eAAex8B,GAEpBrrI,KAAK8nK,mBAAmBn9B,EAAKU,GAGnC,EAQA,IAAI08B,EAAc,CAChB,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,KAEEC,EAAc,CAChB,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,KAEEC,EAAa,CACf,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFjoK,KAAK6nK,eAAiB,SAASp2B,GAC7B,IAAIzvF,EACAsjG,EAGAlM,EAFA8uB,EAAY,EACZC,EAAY,EAEZpd,EAAWtZ,EAASsZ,SAExB,GADA6X,GAAS8E,EAA8B3c,EAAUtZ,EAASwa,SACtDxa,EAAS5F,YAAcxD,GAAQC,WACjC8Q,EAAM2uB,EAC2B,GAA7Bt2B,EAASzF,mBACXoN,EAAM4uB,QAGR,GADA5uB,EAAM6uB,EACkB,GAApBx2B,EAASia,QAAc,CACzB,IAAKpG,EAAM,GAAIA,EAAMjd,GAAQiL,QAASgS,IACpC,GAAIyF,EAASzF,GAAOtX,EAAMqvB,OAAO/X,GAC/B,MAEJ,GAAIA,GAAOjd,GAAQiL,QAEjB,IADA7B,EAASia,QAAU,EACdpG,EAAM,GAAIA,EAAMjd,GAAQiL,QAASgS,IACpCyF,EAASzF,IAAQtX,EAAMqvB,OAAO/X,EAGpC,CAEF,IAAKA,EAAM,EAAGA,EAAM7T,EAAS0a,UAAW7G,IAClC4iB,EAAYnd,EAASzF,KACvB4iB,EAAYnd,EAASzF,IAEzB,KAAOA,EAAM7T,EAASwa,OAAQ3G,IACxB6iB,EAAYpd,EAASzF,KACvB6iB,EAAYpd,EAASzF,IAGzB,IADA7T,EAASoa,aAAeyQ,GAAYkG,WAC/BxgH,EAAI,EAAGA,EAAI,GAAIA,IACdkmH,EAAYb,EAAQrlH,IAAMmmH,EAAYb,EAAQtlH,IAAMyvF,EAASoa,aAAezS,EAAIp3F,KAClFyvF,EAASoa,aAAezS,EAAIp3F,GAC5ByvF,EAAS4Z,kBAAoBrpG,GAGjC,OAAOyvF,EAASoa,cAAgByQ,GAAYkG,UAC9C,EACA,IAAI4F,EAAqB,CACvB,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,GAAI,GAAI,GACb,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAEZpoK,KAAK8nK,mBAAqB,SAASn9B,EAAK8G,GACtC,IAAI42B,EAAcC,EAAcpjB,EAAWqjB,EAAQn0B,EAC/CwsB,EACA16J,EAAGo/I,EACHkjB,EAAW7F,GAAU,GACrB5X,EAAWtZ,EAASsZ,SAKxB,IAHEsd,EADsB,GAApB52B,EAASia,QACI,EAEA,EACZxlJ,EAAI,EAAGA,EAAI,EAAGA,IACjBsiK,EAAStiK,GAAK,EAChB,GAAIurI,EAAS5F,YAAcxD,GAAQC,WAAY,CAC7CggC,EAAe,EACf,IAAIG,EAAkBz6B,EAAMovB,gBAAgBiL,GAAcC,GAC1D,IAAKhjB,EAAM,EAAGJ,EAAY,EAAGA,EAAY,EAAGA,IAE1C,IADAqjB,EAASE,EAAgBvjB,GAAa,EACjCh/I,EAAI,EAAGA,EAAIqiK,EAAQriK,IAAKo/I,IAC3B,IAAKlR,EAAU,EAAGA,EAAU,EAAGA,IACzB2W,EAAe,EAANzF,EAAUlR,GAAWo0B,EAAStjB,KACzCsjB,EAAStjB,GAAa6F,EAAe,EAANzF,EAAUlR,GAKnD,KAAO,CACLk0B,EAAe,EACXG,EAAkBz6B,EAAMovB,gBAAgBiL,GAAcC,GAC1D,IAAKhjB,EAAM,EAAGJ,EAAY,EAAGA,EAAY,EAAGA,IAE1C,IADAqjB,EAASE,EAAgBvjB,GACpBh/I,EAAI,EAAGA,EAAIqiK,EAAQriK,IAAKo/I,IACvByF,EAASzF,GAAOkjB,EAAStjB,KAC3BsjB,EAAStjB,GAAa6F,EAASzF,GAIvC,CACA,IAAKsb,GAAO,EAAO1b,EAAY,EAAGA,EAAY,EAAGA,IAC3CsjB,EAAStjB,GAAakjB,EAAmBC,GAAcnjB,KACzD0b,GAAO,GAGX,IAAKA,EAAM,CACT,IAAI8H,EAAOC,EAAOC,EAAOC,EAEzB,IADAp3B,EAAS4a,oBAAsBre,EAAMovB,gBAAgBiL,GAAcC,GAC9DpjB,EAAY,EAAGA,EAAY,EAAGA,IACjCzT,EAAS6a,KAAKpH,GAAa4jB,EAAQN,EAAStjB,IAM9C,OAJAwjB,EAAQj3B,EAAS6a,KAAK,GACtBqc,EAAQl3B,EAAS6a,KAAK,GACtBsc,EAAQn3B,EAAS6a,KAAK,GACtBuc,EAAQp3B,EAAS6a,KAAK,GACd+b,GACN,KAAK,EACH52B,EAAS4Z,mBAA6B,EAARqd,EAAYC,GAAS,IAAMC,GAAS,GAAKC,EACvE,MACF,KAAK,EACHp3B,EAAS4Z,kBAAoB,KAAe,EAARqd,EAAYC,GAAS,GAAKC,EAC9D,MACF,KAAK,EACHn3B,EAAS4Z,kBAAoB,IAAc,EAARqd,EAAYC,EAC/C,MACF,QACElG,GAASv2I,IAAIm5G,OAAO,0CACpB,MAEN,CACA,IAAKu7B,EAGH,IAFAgC,GAAyC,MAAhCnxB,EAAS4a,qBAClB5a,EAASoa,aAAe,EACnB3G,EAAY,EAAGA,EAAY,EAAGA,IACjCzT,EAASoa,cAAgBpa,EAAS6a,KAAKpH,GAAazT,EAAS4a,oBAAoBnH,GAGrF,OAAO0b,CACT,EACA,IAAIkI,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5D9oK,KAAKu+J,aAAe,SAAS5zB,GAC3B,IAAK,IAAIzkI,EAAI,EAAGA,GAAK,IAAKA,GAAK,EAAG,CAChC,IACI6iK,EADAC,EAAW,EAEf,MAAOr+B,EAAIqc,cAAcx8I,IAAIw+J,GAAY9iK,GAEzC6iK,EAAWhG,EAAYiG,GAAU,GACjC,MAAOr+B,EAAIqc,cAAcx8I,EAAEu+J,EAAW,GAAK7iK,EACzC6iK,IACEA,EAAW,IACbA,EAAWhG,EAAYiG,GAAU,IAEnCr+B,EAAI8lB,OAAOvqJ,EAAI,GAAK6iK,EACpBA,EAAWhG,EAAYiG,GAAU,GACjC,MAAOr+B,EAAIqc,cAAcx8I,EAAEu+J,EAAWp+B,EAAI8lB,OAAOvqJ,EAAI,GAAK,GAAKA,EAC7D6iK,IAEEA,EAAW,IACbA,EAAWhG,EAAYiG,GAAU,IAEnCr+B,EAAI8lB,OAAOvqJ,EAAI,GAAK6iK,CACtB,CACF,CACF,CACA,IAAIE,GAAWtmK,GAAOikI,OAClBsiC,GAAWvmK,GAAOskI,OAClBkiC,GAAaxmK,GAAOwkI,SACpBG,GAAc3kI,GAAO2kI,YACrB8hC,GAAYzmK,GAAO4kI,QACnB8hC,GAAW1mK,GAAO+kI,OAOtB,SAASo4B,KACP,IAAIr1F,EAAQzqE,KACRspK,EAAmB,MACnBC,EAAK,KACLC,EAAM,KACNC,EAAM,KACN17B,EAAM,KACV/tI,KAAKiuI,WAAa,SAASy7B,EAAKC,EAAMC,EAAMv7B,GAC1Ck7B,EAAKG,EACLF,EAAMG,EACNF,EAAMG,EACN77B,EAAMM,CACR,EACA,IAAInxD,EAAM,KACN2sF,EAAS,EACTC,EAAa,EACbC,EAAY,EAWhB,SAASC,EAAer/B,GACtBs+B,GAAS78B,UACPzB,EAAIsmB,OAAOtmB,EAAIymB,OAAOl0E,IACtB,EACAA,EACA4sF,EACAn/B,EAAIqmB,cAEN8Y,GAAcn/B,EAAIqmB,aAClB6Y,GAA6B,EAAnBl/B,EAAIqmB,aACdrmB,EAAIymB,MAAQzmB,EAAIymB,MAAQ,EAAIxC,GAAoBsC,eAAiB,CACnE,CACA,SAAS+Y,EAASt/B,EAAKhtI,EAAK2vC,GAC1B,MAAOA,EAAI,EAAG,CACZ,IAAI0U,EACa,GAAb+nH,IACFA,EAAY,EACZD,IACAT,GAAS1+B,EAAIsmB,OAAOtmB,EAAIymB,OAAOrC,cAAgB8a,GAC3Cl/B,EAAIsmB,OAAOtmB,EAAIymB,OAAOrC,cAAgB8a,GACxCG,EAAer/B,GAEjBztD,EAAI4sF,GAAc,GAEpB9nH,EAAIhxC,KAAKwF,IAAI82B,EAAGy8H,GAChBz8H,GAAK0U,EACL+nH,GAAa/nH,EACbk7B,EAAI4sF,IAAensK,GAAO2vC,GAAKy8H,EAC/BF,GAAU7nH,CACZ,CACF,CACA,SAASkoH,EAAkBv/B,EAAKhtI,EAAK2vC,GACnC,MAAOA,EAAI,EAAG,CACZ,IAAI0U,EACa,GAAb+nH,IACFA,EAAY,EACZD,IACA5sF,EAAI4sF,GAAc,GAEpB9nH,EAAIhxC,KAAKwF,IAAI82B,EAAGy8H,GAChBz8H,GAAK0U,EACL+nH,GAAa/nH,EACbk7B,EAAI4sF,IAAensK,GAAO2vC,GAAKy8H,EAC/BF,GAAU7nH,CACZ,CACF,CACA,SAASmoH,EAAqB56B,EAAK66B,GACjC,IACIlkK,EADAykI,EAAM4E,EAAIE,eAkBd,GAhBI26B,GAAiB,IACnBH,EAASt/B,EAAK,GAAI,GAClBy/B,GAAiB,GAEfA,GAAiB,IACnBH,EAASt/B,EAAK,GAAI,GAClBy/B,GAAiB,GAEfA,GAAiB,IACnBH,EAASt/B,EAAK,GAAI,GAClBy/B,GAAiB,GAEfA,GAAiB,IACnBH,EAASt/B,EAAK,GAAI,GAClBy/B,GAAiB,GAEfA,GAAiB,GAAI,CACvB,IAAIjwD,EAAWsvD,EAAIY,sBACnB,GAAID,GAAiB,GACnB,IAAKlkK,EAAI,EAAGA,EAAIi0G,EAAS74G,QAAU8oK,GAAiB,IAAKlkK,EACvDkkK,GAAiB,EACjBH,EAASt/B,EAAKxwB,EAASpxG,OAAO7C,GAAI,EAGxC,CACA,KAAOkkK,GAAiB,EAAGA,GAAiB,EAC1CH,EAASt/B,EAAKA,EAAI0mB,eAAgB,GAClC1mB,EAAI0mB,gBAAmB9hB,EAAIqZ,kBAAwB,EAAJ,CAEnD,CACA,SAAS0hB,EAAY3/B,EAAKhtI,EAAK2vC,GAC7B,IAAIg8B,EAAMqhE,EAAIsmB,OAAOtmB,EAAIwmB,OAAO7nF,IAChC,MAAOh8B,EAAI,EAAG,CACZ,IAAI0U,EAAIhxC,KAAKwF,IAAI82B,EAAG,GAAW,EAANg8B,IACzBh8B,GAAK0U,EACL2oF,EAAIsmB,OAAOtmB,EAAIwmB,OAAOj0E,IAAI5T,GAAO,IAAM3rE,GAAO2vC,GAAK,GAAW,EAANg8B,GAAWtnB,EACnEsnB,GAAOtnB,CACT,CACA2oF,EAAIsmB,OAAOtmB,EAAIwmB,OAAO7nF,IAAMA,CAC9B,CACA,SAASihG,EAAW5pK,EAAO6pK,GACzB7pK,IAAU,EACV,IAAK,IAAIuF,EAAI,EAAGA,EAAI,EAAGA,IACrBvF,IAAU,EACV6pK,IAAQ,EACuB,IAAV,OAAfA,EAAM7pK,MACV6pK,GAAOlB,GAEX,OAAOkB,CACT,CAWA,SAASC,EAAgBl7B,EAAKm7B,GAC5B,IACIp/B,EACAJ,EAAIF,EAFJL,EAAM4E,EAAIE,eAyBd,GAtBAnE,EAAUX,EAAIW,QACdX,EAAIsmB,OAAOtmB,EAAIwmB,OAAO7nF,IAAM,EAC5B4/F,GAASnpI,KAAK4qG,EAAIsmB,OAAOtmB,EAAIwmB,OAAOj0E,IAAK,EAAGytD,EAAIqmB,aAAc,GAC1DzhB,EAAI0B,eAAiB,KACvBq5B,EAAY3/B,EAAK,KAAM,IAEvB2/B,EAAY3/B,EAAK,KAAM,IACzB2/B,EAAY3/B,EAAK4E,EAAI1gI,QAAS,GAC9By7J,EAAY3/B,EAAK,EAAO,GACxB2/B,EAAY3/B,EAAM4E,EAAImZ,iBAAuB,EAAJ,EAAO,GAChD4hB,EAAY3/B,EAAKA,EAAIsE,cAAe,GACpCq7B,EAAY3/B,EAAKA,EAAI+kB,iBAAkB,GACvC4a,EAAY3/B,EAAKA,EAAImG,QAAS,GAC9Bw5B,EAAY3/B,EAAK4E,EAAI78D,UAAW,GAChC43F,EAAY3/B,EAAK4E,EAAIv5H,KAAKwvH,UAAW,GACrC8kC,EAAY3/B,EAAKA,EAAIuE,SAAU,GAC/Bo7B,EAAY3/B,EAAK4E,EAAIt5H,UAAW,GAChCq0J,EAAY3/B,EAAK4E,EAAIkZ,SAAU,GAC/B6hB,EAAY3/B,EAAK4E,EAAIj5D,SAAU,GAC3Bi5D,EAAImZ,kBACN4hB,EAAY3/B,EAAK,EAAG,IAEH,GAAf4E,EAAI1gI,QAAc,CAOpB,IANAw6J,GAAS/9B,EAAQuhB,iBAAmB,GACpCyd,EAAY3/B,EAAKW,EAAQuhB,gBAAiB,GAClB,GAApBliB,EAAIM,aACNq/B,EAAY3/B,EAAKW,EAAQwhB,aAAc,GAEvCwd,EAAY3/B,EAAKW,EAAQwhB,aAAc,GACpC9hB,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAAM,CACxC,IAAII,EACJ,IAAKA,EAAO,EAAGA,EAAO,EAAGA,IACvBk/B,EAAY3/B,EAAKW,EAAQ2hB,MAAMjiB,GAAII,GAAO,EAE9C,CACA,IAAKF,EAAK,EAAGA,EAAK,EAAGA,IACnB,IAAKF,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAAM,CACxC,IAAIK,EAAKC,EAAQC,GAAGL,GAAIF,GACxBs/B,EAAY3/B,EAAKU,EAAG4f,eAAiB5f,EAAGwgB,aAAc,IACtDye,EAAY3/B,EAAKU,EAAG6f,WAAa,EAAG,GACpCof,EAAY3/B,EAAKU,EAAG+f,YAAa,GACjCkf,EAAY3/B,EAAKU,EAAGggB,kBAAmB,GACnChgB,EAAGQ,YAAcxD,GAAQqJ,WAC3B44B,EAAY3/B,EAAK,EAAG,GACpB2/B,EAAY3/B,EAAKU,EAAGQ,WAAY,GAChCy+B,EAAY3/B,EAAKU,EAAGW,iBAAkB,GACZ,IAAtBX,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACX,IAAtBjgB,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACrCgf,EAAY3/B,EAAKU,EAAGkgB,cAAc,GAAI,GACtC+e,EAAY3/B,EAAKU,EAAGkgB,cAAc,GAAI,GACtC+e,EAAY3/B,EAAKU,EAAGkgB,cAAc,GAAI,KAEtC+e,EAAY3/B,EAAK,EAAG,GACM,IAAtBU,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACX,IAAtBjgB,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACX,IAAtBjgB,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACrC+d,GAASh+B,EAAGmgB,eAAiB,GAAKngB,EAAGmgB,cAAgB,IACrD6d,GAASh+B,EAAGogB,eAAiB,GAAKpgB,EAAGogB,cAAgB,GACrD6e,EAAY3/B,EAAKU,EAAGmgB,cAAe,GACnC8e,EAAY3/B,EAAKU,EAAGogB,cAAe,IAErC6e,EAAY3/B,EAAKU,EAAGqgB,QAAS,GAC7B4e,EAAY3/B,EAAKU,EAAGsgB,eAAgB,GACpC2e,EAAY3/B,EAAKU,EAAGugB,mBAAoB,EAC1C,CAEJ,MAKE,IAJAyd,GAAS/9B,EAAQuhB,iBAAmB,GACpCyd,EAAY3/B,EAAKW,EAAQuhB,gBAAiB,GAC1Cyd,EAAY3/B,EAAKW,EAAQwhB,aAAcniB,EAAIM,cAC3CC,EAAK,EACAF,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAAM,CACpCK,EAAKC,EAAQC,GAAGL,GAAIF,GACxBs/B,EAAY3/B,EAAKU,EAAG4f,eAAiB5f,EAAGwgB,aAAc,IACtDye,EAAY3/B,EAAKU,EAAG6f,WAAa,EAAG,GACpCof,EAAY3/B,EAAKU,EAAG+f,YAAa,GACjCkf,EAAY3/B,EAAKU,EAAGggB,kBAAmB,GACnChgB,EAAGQ,YAAcxD,GAAQqJ,WAC3B44B,EAAY3/B,EAAK,EAAG,GACpB2/B,EAAY3/B,EAAKU,EAAGQ,WAAY,GAChCy+B,EAAY3/B,EAAKU,EAAGW,iBAAkB,GACZ,IAAtBX,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACX,IAAtBjgB,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACrCgf,EAAY3/B,EAAKU,EAAGkgB,cAAc,GAAI,GACtC+e,EAAY3/B,EAAKU,EAAGkgB,cAAc,GAAI,GACtC+e,EAAY3/B,EAAKU,EAAGkgB,cAAc,GAAI,KAEtC+e,EAAY3/B,EAAK,EAAG,GACM,IAAtBU,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACX,IAAtBjgB,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACX,IAAtBjgB,EAAGigB,aAAa,KAClBjgB,EAAGigB,aAAa,GAAK,IACvBgf,EAAY3/B,EAAKU,EAAGigB,aAAa,GAAI,GACrC+d,GAASh+B,EAAGmgB,eAAiB,GAAKngB,EAAGmgB,cAAgB,IACrD6d,GAASh+B,EAAGogB,eAAiB,GAAKpgB,EAAGogB,cAAgB,GACrD6e,EAAY3/B,EAAKU,EAAGmgB,cAAe,GACnC8e,EAAY3/B,EAAKU,EAAGogB,cAAe,IAErC6e,EAAY3/B,EAAKU,EAAGsgB,eAAgB,GACpC2e,EAAY3/B,EAAKU,EAAGugB,mBAAoB,EAC1C,CAEErc,EAAImZ,kBACNiiB,gBAAgBhgC,EAAKA,EAAIsmB,OAAOtmB,EAAIwmB,OAAOj0E,KAG3C,IAAI0tF,EAAMjgC,EAAIwmB,MACdkY,GAAS1+B,EAAIsmB,OAAO2Z,GAAKthG,KAA0B,EAAnBqhE,EAAIqmB,cACpCrmB,EAAIwmB,MAAQyZ,EAAM,EAAIhc,GAAoBsC,eAAiB,EAC3DvmB,EAAIsmB,OAAOtmB,EAAIwmB,OAAOpC,aAAepkB,EAAIsmB,OAAO2Z,GAAK7b,aAAe2b,EAChE//B,EAAIwmB,OAASxmB,EAAIymB,OACnB6X,GAAS/8I,IAAIi5G,QAAQ,oDAG3B,CACA,SAAS0lC,EAAqBlgC,EAAKU,GACjC,IACInlI,EADAsvD,EAAK+jG,GAASh3D,GAAG8oC,EAAGugB,mBAAqB,IAEzC2L,EAAO,EACP8I,EAAKh1B,EAAG6f,WACRriB,EAAKwC,EAAG6f,WAEZ,IADAme,GAASh+B,EAAGugB,mBAAqB,GAC5B1lJ,GAAKmlI,EAAG8f,OAAS9f,EAAG6f,YAAc,EAAGhlJ,EAAI,IAAKA,EAAG,CACpD,IAEIK,EAFAukK,EAAW,EACX/+F,EAAK,EAETxlE,EAAI8kI,EAAGyf,OAAOuV,EAAK,GACV,GAAL95J,IACFwlE,GAAM,EACFs/D,EAAGxC,GAAGA,EAAK,GAAK,GAClBiiC,KAEJvkK,EAAI8kI,EAAGyf,OAAOuV,EAAK,GACV,GAAL95J,IACFwlE,GAAM,EACN++F,GAAY,EACRz/B,EAAGxC,GAAGA,EAAK,GAAK,GAClBiiC,KAEJvkK,EAAI8kI,EAAGyf,OAAOuV,EAAK,GACV,GAAL95J,IACFwlE,GAAM,EACN++F,GAAY,EACRz/B,EAAGxC,GAAGA,EAAK,GAAK,GAClBiiC,KAEJvkK,EAAI8kI,EAAGyf,OAAOuV,EAAK,GACV,GAAL95J,IACFwlE,IACA++F,GAAY,EACRz/B,EAAGxC,GAAGA,EAAK,GAAK,GAClBiiC,KAEJzK,GAAM,EACNx3B,GAAM,EACNohC,EAASt/B,EAAKmgC,EAAWt1G,EAAGmnC,MAAM5wB,GAAKvW,EAAG8jG,KAAKvtF,IAC/CwrF,GAAQ/hG,EAAG8jG,KAAKvtF,EAClB,CACA,OAAOwrF,CACT,CACA,SAASwT,EAAYpgC,EAAKqgC,EAAYn9I,EAAOC,EAAKu9G,GAChD,IAAI71E,EAAK+jG,GAASh3D,GAAGyoE,GACjBzT,EAAO,EACX,GAAkB,GAAdyT,EACF,OAAOzT,EACT,IAAK,IAAIrxJ,EAAI2nB,EAAO3nB,EAAI4nB,EAAK5nB,GAAK,EAAG,CACnC,IAAI+kK,EAAQ,EACRC,EAAQ,EACRhG,EAAU1vG,EAAG4jG,KACbA,EAAO5jG,EAAG4jG,KACV+R,EAAM,EACNxiC,EAAK0C,EAAGyf,OAAO5kJ,GACf6iI,EAAKsC,EAAGyf,OAAO5kJ,EAAI,GAMvB,GALU,GAANyiI,IACE0C,EAAGxC,GAAG3iI,GAAK,GACbilK,IACFF,KAEED,EAAa,GAAI,CACnB,GAAIriC,EAAK,GAAI,CACX,IAAIyiC,EAAaziC,EAAK,GACtB0gC,GAAS+B,GAAc51G,EAAG6jG,QAC1B8R,GAAOC,GAAc,EACrBF,EAAQhG,EACRv8B,EAAK,EACP,CACA,GAAII,EAAK,GAAI,CACX,IAAIsiC,EAAatiC,EAAK,GACtBsgC,GAASgC,GAAc71G,EAAG6jG,QAC1B8R,IAAQjG,EACRiG,GAAOE,EACPH,GAAShG,EACTn8B,EAAK,EACP,CACAqwB,EAAO,EACT,CACU,GAANrwB,IACFoiC,IAAQ,EACJ9/B,EAAGxC,GAAG3iI,EAAI,GAAK,GACjBilK,IACFF,KAEFtiC,EAAKA,EAAKywB,EAAOrwB,EACjBmiC,GAASD,EACTA,GAASz1G,EAAG8jG,KAAK3wB,GACjBshC,EAASt/B,EAAKn1E,EAAGmnC,MAAMgsC,GAAKsiC,GAC5BhB,EAASt/B,EAAKwgC,EAAKD,GACnB3T,GAAQ0T,EAAQC,CAClB,CACA,OAAO3T,CACT,CACA,SAAS+T,EAAqB3gC,EAAKU,GACjC,IAAIkgC,EAAe,EAAI5gC,EAAIqc,cAAclsI,EAAE,GACvCywJ,EAAelgC,EAAG6f,aACpBqgB,EAAelgC,EAAG6f,YACpB,IAAIqM,EAAOwT,EAAYpgC,EAAKU,EAAGigB,aAAa,GAAI,EAAGigB,EAAclgC,GAQjE,OAPAksB,GAAQwT,EACNpgC,EACAU,EAAGigB,aAAa,GAChBigB,EACAlgC,EAAG6f,WACH7f,GAEKksB,CACT,CACA,SAASiU,EAAoB7gC,EAAKU,GAChC,IAAIogC,EAAWlU,EACXgU,EAAcG,EAClBD,EAAYpgC,EAAG6f,WACf,IAAIhlJ,EAAImlI,EAAGmgB,cAAgB,EAa3B,OAZA6d,GAASnjK,EAAIykI,EAAIqc,cAAcx8I,EAAElJ,QACjCiqK,EAAe5gC,EAAIqc,cAAcx8I,EAAEtE,GACnCA,GAAKmlI,EAAGogB,cAAgB,EACxB4d,GAASnjK,EAAIykI,EAAIqc,cAAcx8I,EAAElJ,QACjCoqK,EAAe/gC,EAAIqc,cAAcx8I,EAAEtE,GAC/BqlK,EAAeE,IACjBF,EAAeE,GACbC,EAAeD,IACjBC,EAAeD,GACjBlU,EAAOwT,EAAYpgC,EAAKU,EAAGigB,aAAa,GAAI,EAAGigB,EAAclgC,GAC7DksB,GAAQwT,EAAYpgC,EAAKU,EAAGigB,aAAa,GAAIigB,EAAcG,EAAcrgC,GACzEksB,GAAQwT,EAAYpgC,EAAKU,EAAGigB,aAAa,GAAIogB,EAAcD,EAAWpgC,GAC/DksB,CACT,CACA,SAASoU,EAAcp8B,GACrB,IAAIrE,EACAF,EACAsa,EACAsmB,EACAC,EAAW,EACXlhC,EAAM4E,EAAIE,eACVnE,EAAUX,EAAIW,QAClB,GAAmB,GAAfiE,EAAI1gI,QACN,IAAKq8H,EAAK,EAAGA,EAAK,EAAGA,IACnB,IAAKF,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAAM,CACxC,IAAIK,EAAKC,EAAQC,GAAGL,GAAIF,GACpB09B,EAAQ7F,GAAS0E,UAAUl8B,EAAGggB,mBAC9Bsd,EAAQ9F,GAAS2E,UAAUn8B,EAAGggB,mBAElC,IADAugB,EAAY,EACPtmB,EAAM,EAAGA,EAAMja,EAAG8gB,UAAW7G,KACP,GAArBja,EAAG0f,SAASzF,KAEhB2kB,EAASt/B,EAAKU,EAAG0f,SAASzF,GAAMojB,GAChCkD,GAAalD,GAEf,KAAOpjB,EAAMja,EAAG4gB,OAAQ3G,KACG,GAArBja,EAAG0f,SAASzF,KAEhB2kB,EAASt/B,EAAKU,EAAG0f,SAASzF,GAAMqjB,GAChCiD,GAAajD,GAEfU,GAASuC,GAAavgC,EAAGwgB,cACrBxgB,EAAGQ,YAAcxD,GAAQC,WAC3BsjC,GAAaN,EAAqB3gC,EAAKU,GAEvCugC,GAAaJ,EAAoB7gC,EAAKU,GAExCugC,GAAaf,EAAqBlgC,EAAKU,GACvCg+B,GAASuC,GAAavgC,EAAG4f,eAAiB5f,EAAGwgB,cAC7CggB,GAAYD,CACd,MAIF,IADA1gC,EAAK,EACAF,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAAM,CACpCK,EAAKC,EAAQC,GAAGL,GAAIF,GAAxB,IACI9kI,EACA4lK,EACAC,EAAa,EAKjB,GAJA1C,GAAmC,MAA1Bh+B,EAAGghB,qBACZuf,EAAY,EACZtmB,EAAM,EACNwmB,EAAgB,EACZzgC,EAAGQ,YAAcxD,GAAQC,WAAY,CACvC,KAAOwjC,EAAgB,EAAGA,IAAiB,CACzC,IAAIE,EAAO3gC,EAAGghB,oBAAoByf,GAAiB,EAC/Cxf,EAAOjhB,EAAGihB,KAAKwf,GACnB,IAAK5lK,EAAI,EAAGA,EAAI8lK,EAAM9lK,IAAKo/I,IACzB2kB,EAASt/B,EAAK35H,KAAKuF,IAAI80H,EAAG0f,SAAe,EAANzF,EAAU,GAAI,GAAIgH,GACrD2d,EAASt/B,EAAK35H,KAAKuF,IAAI80H,EAAG0f,SAAe,EAANzF,EAAU,GAAI,GAAIgH,GACrD2d,EAASt/B,EAAK35H,KAAKuF,IAAI80H,EAAG0f,SAAe,EAANzF,EAAU,GAAI,GAAIgH,GACrDyf,GAAc,EAAIzf,CAEtB,CACAsf,GAAaN,EAAqB3gC,EAAKU,EACzC,KAAO,CACL,KAAOygC,EAAgB,EAAGA,IAAiB,CACrCE,EAAO3gC,EAAGghB,oBAAoByf,GAC9Bxf,EAAOjhB,EAAGihB,KAAKwf,GACnB,IAAK5lK,EAAI,EAAGA,EAAI8lK,EAAM9lK,IAAKo/I,IACzB2kB,EAASt/B,EAAK35H,KAAKuF,IAAI80H,EAAG0f,SAASzF,GAAM,GAAIgH,GAC7Cyf,GAAczf,CAElB,CACAsf,GAAaJ,EAAoB7gC,EAAKU,EACxC,CACAugC,GAAaf,EAAqBlgC,EAAKU,GACvCg+B,GAASuC,GAAavgC,EAAG4f,gBACzBoe,GAAS0C,GAAc1gC,EAAGwgB,cAC1BggB,GAAYE,EAAaH,CAC3B,CAEF,OAAOC,CACT,CACA,SAASI,IACPjsK,KAAKksK,MAAQ,CACf,CACA,SAASC,EAAkB58B,EAAK68B,GAC9B,IACIC,EAAWC,EACX5B,EACA6B,EAAUC,EAHV7hC,EAAM4E,EAAIE,eA4Bd,OAxBA+8B,EAAY7hC,EAAIymB,MAChBmb,EAAW5hC,EAAIwmB,MAAQ,GACN,GAAbob,IACFA,EAAW3d,GAAoBsC,eAAiB,GAClDmb,EAAY1hC,EAAIsmB,OAAOsb,GAAUxd,aAAe8a,EAChDuC,EAAmBF,MAAQG,EACvBA,GAAa,IACfC,EAAoB,EAAIC,EAAWC,EAC/BD,EAAWC,IACbF,EAAoB,EAAIC,EAAWC,EAAY5d,GAAoBsC,gBAErEmb,GAAiC,EAApBC,EAAwB3hC,EAAIqmB,cAE3C0Z,EAAejgG,EAAMgiG,aAAal9B,GAClC88B,GAAa3B,EACb0B,EAAmBF,OAASxB,EACxB0B,EAAmBF,MAAQ,GAAK,EAClCE,EAAmBF,MAAQ,EAAIE,EAAmBF,MAAQ,EAE1DE,EAAmBF,MAAQE,EAAmBF,MAAQ,EACxDE,EAAmBF,OAASpC,EAAa,EACrCuC,EAAY,GACdpD,GAAS/8I,IAAIi5G,QAAQ,wCAEhBknC,CACT,CAlfArsK,KAAKysK,aAAe,SAASl9B,GAC3B,IACIm9B,EADA/hC,EAAM4E,EAAIE,eAGZi9B,EADuB,GAArB/hC,EAAIsE,cACKsqB,GAASuC,cAAcvsB,EAAI1gI,SAAS87H,EAAIsE,eAExCM,EAAIgZ,MACjB,IAAI1nC,EAAQ,EAAwB,MAAnB0uB,EAAI1gI,QAAU,GAAY69J,EAAWn9B,EAAI0B,eAAiBtG,EAAImG,QAC/E,OAAO,EAAIjwB,CACb,EAoGA7gH,KAAK2qK,gBAAkB,SAAShgC,EAAKsmB,GACnC,IAAIuZ,EAAM,MACVA,EAAMD,EAAuB,IAAZtZ,EAAO,GAAUuZ,GAClCA,EAAMD,EAAuB,IAAZtZ,EAAO,GAAUuZ,GAClC,IAAK,IAAItkK,EAAI,EAAGA,EAAIykI,EAAIqmB,aAAc9qJ,IACpCskK,EAAMD,EAAuB,IAAZtZ,EAAO/qJ,GAAUskK,GAEpCvZ,EAAO,GAAK0b,KAAKnC,GAAO,GACxBvZ,EAAO,GAAK0b,KAAW,IAANnC,EACnB,EA6XAxqK,KAAK4sK,gBAAkB,SAASr9B,GAC9B,IACIjE,EACA+gC,EAFA1hC,EAAM4E,EAAIE,eAGV88B,EAAW5hC,EAAIwmB,MAAQ,EAI3B,IAHiB,GAAbob,IACFA,EAAW3d,GAAoBsC,eAAiB,GAClD5lB,EAAUX,EAAIW,WACT+gC,EAAYF,EAAkB58B,EAAK,IAAI08B,IAAiB,GAA7D,CAMA,GAJA9B,EAAqB56B,EAAK88B,GAC1BhD,GAAS1+B,EAAIsmB,OAAOsb,GAAUxd,aAAe/uJ,KAAKysK,aAAal9B,IAAQs6B,GACvEl/B,EAAI4U,SAAW,EACfjU,EAAQuhB,gBAAkB,EACtBliB,EAAIyd,eAAgB,CACtB,IAAI2J,EAAYwX,EAAG5S,aAAahsB,EAAIsnB,QACpCoX,GAASwD,IAAI9a,EAAW+a,aAAa7X,0BACrCtqB,EAAIonB,UAA+C,EAAnC/gJ,KAAKkD,MAAkB,GAAZ69I,EAAiB,GAC9C,CACIpnB,EAAIknB,iBACNlnB,EAAIunB,iBAA6E,EAA1DlhJ,KAAKiD,KAA0C,GAArCjD,KAAK20H,MAAMgF,EAAImnB,WAAa,OAAc,IACvEnnB,EAAIunB,iBAAmB,IACrB6N,GAAGxwB,EAAI3lB,MAAO,IAAMm2C,GAAGxwB,EAAI3lB,MAAO,IACpC+gB,EAAIwnB,YAAcnhJ,KAAKkD,MAAM,MAAQy2H,EAAImnB,WAAa,KAAO,IAK/DnnB,EAAIwnB,aAAe,EAnBf,CAsBV,EACAnyJ,KAAK+sK,eAAiB,SAASx9B,EAAK5xI,EAAK0W,GACvC,IACInO,EADAykI,EAAM4E,EAAIE,eAEd,MAAOp7H,KAAM,EAEX,IADA61J,EAAkBv/B,EAAKhtI,EAAK,GACvBuI,EAAI,EAAGA,EAAI0oJ,GAAoBsC,iBAAkBhrJ,EACpDykI,EAAIsmB,OAAO/qJ,GAAG6oJ,cAAgB,CAGpC,EACA/uJ,KAAK0yI,iBAAmB,SAASnD,GAC/B,IACIjE,EADAX,EAAM4E,EAAIE,eAEdnE,EAAUX,EAAIW,QACd,IAAIo/B,EAAe1qK,KAAKysK,aAAal9B,GACrC46B,EAAqB56B,EAAKjE,EAAQyhB,eAClC0d,EAAgBl7B,EAAKm7B,GACrB,IAAInT,EAAO,EAAI5sB,EAAIqmB,aA+BnB,GA9BAuG,GAAQoU,EAAcp8B,GACtB46B,EAAqB56B,EAAKjE,EAAQ0hB,gBAClCuK,GAAQjsB,EAAQ0hB,eAChB1hB,EAAQuhB,kBAAoB6d,EAAenT,GAAQ,EAC/C4U,EAAkB58B,EAAK,IAAI08B,IAAiBthC,EAAI4U,UAClD0pB,GAAS/8I,IAAIi5G,QAAQ,wDAEO,EAA1BmG,EAAQuhB,iBAAuBliB,EAAI4U,WACrC0pB,GAAS/8I,IAAIm5G,OACX,iSACA,EAAIiG,EAAQuhB,gBACZliB,EAAI4U,SACJjU,EAAQ0hB,eACR1hB,EAAQyhB,cACR,EAAIpiB,EAAIqmB,aACRuG,EAAOjsB,EAAQ0hB,eAAiB,EAAIriB,EAAIqmB,aACxCuG,EACAA,EAAO,EACPmT,GAEFzB,GAAS/8I,IAAIi5G,QACX,2DAEF8jC,GAAS/8I,IAAIi5G,QACX,8EAEF8jC,GAAS/8I,IAAIi5G,QAAQ,oCACrB8jC,GAAS/8I,IAAIi5G,QAAQ,sCACrBwF,EAAI4U,SAAqC,EAA1BjU,EAAQuhB,iBAErBgd,EAAS,IAAK,CAChB,IAAI3jK,EACJ,IAAKA,EAAI,EAAGA,EAAI0oJ,GAAoBsC,iBAAkBhrJ,EACpDykI,EAAIsmB,OAAO/qJ,GAAG6oJ,cAAgB8a,EAEhCA,EAAS,CACX,CACA,OAAO,CACT,EACA7pK,KAAK2yI,YAAc,SAAShI,EAAKplI,EAAQynK,EAAW5uF,EAAO6uF,GACzD,IAAIC,EAAUpD,EAAa,EAC3B,GAAIoD,GAAW,EACb,OAAO,EACT,GAAa,GAAT9uF,GAAc8uF,EAAU9uF,EAC1B,OAAQ,EAKV,GAHA6qF,GAAS78B,UAAUlvD,EAAK,EAAG33E,EAAQynK,EAAWE,GAC9CpD,GAAc,EACdC,EAAY,EACG,GAAXkD,EAAc,CAChB,IAAIzC,EAAMpB,GAAU,GAOpB,GANAoB,EAAI,GAAK7/B,EAAI2lB,UACbviB,EAAIo/B,eAAe3C,EAAKjlK,EAAQynK,EAAWE,GAC3CviC,EAAI2lB,UAAYka,EAAI,GAChB0C,EAAU,IACZviC,EAAI+mB,eAAerD,eAAiB6e,GAElCviC,EAAI0d,kBAAmB,CACzB,IAGIniJ,EAHAknK,EAAU9lC,GAAY,CAAC,EAAG,OAC1B+lC,EAASH,EACTI,GAAe,EAEnB,MAAsB,GAAfA,EAaL,GAZAA,EAAc9D,EAAI+D,sBAChB5iC,EAAIynB,IACJ7sJ,EACAynK,EACAK,EACAD,EAAQ,GACRA,EAAQ,IAEVC,EAAS,GACW,GAAhBC,IACFA,EAAc,GAEZA,EAAc,EAAG,CACnB,GAAI3iC,EAAIknB,eAAgB,CACtB,IAAK3rJ,EAAI,EAAGA,EAAIonK,EAAapnK,IACvBknK,EAAQ,GAAGlnK,GAAKykI,EAAImnB,WACtBnnB,EAAImnB,WAAasb,EAAQ,GAAGlnK,IAClBknK,EAAQ,GAAGlnK,GAAKykI,EAAImnB,aAC9BnnB,EAAImnB,YAAcsb,EAAQ,GAAGlnK,IAGjC,GAAIykI,EAAIM,aAAe,EACrB,IAAK/kI,EAAI,EAAGA,EAAIonK,EAAapnK,IACvBknK,EAAQ,GAAGlnK,GAAKykI,EAAImnB,WACtBnnB,EAAImnB,WAAasb,EAAQ,GAAGlnK,IAClBknK,EAAQ,GAAGlnK,GAAKykI,EAAImnB,aAC9BnnB,EAAImnB,YAAcsb,EAAQ,GAAGlnK,GAIrC,CACA,GAAIykI,EAAIyd,gBACFmhB,EAAG3T,eACLjrB,EAAIsnB,OACJmb,EAAQ,GACR,EACAA,EAAQ,GACR,EACAE,EACA3iC,EAAIM,eACD6hC,aAAarW,oBAChB,OAAQ,CAGd,CAEJ,CACF,CACA,OAAOyW,CACT,EACAltK,KAAKwtK,kBAAoB,SAAS7iC,GAChCztD,EAAMisF,GAAWsE,GAAOC,mBACxB/iC,EAAIwmB,MAAQxmB,EAAIymB,MAAQ,EACxBzmB,EAAIsmB,OAAOtmB,EAAIwmB,OAAOpC,aAAe,EACrC+a,GAAc,EACdC,EAAY,EACZF,EAAS,CACX,CACF,CArrBA/J,GAAYC,GAAK,SAASp1J,EAAGC,GAC3B,OAAOoG,KAAK01G,IAAI/7G,GAAKqG,KAAK01G,IAAI97G,GAAKoG,KAAK01G,IAAI/7G,EAAIC,IAAoB,KAAdoG,KAAK01G,IAAI/7G,GAAYqG,KAAK01G,IAAI/7G,EAAIC,IAAoB,KAAdoG,KAAK01G,IAAI97G,EACzG,EACAk1J,GAAY+M,IAAM,SAASliK,EAAGC,GAC5B,OAAQk1J,GAAYC,GAAGp1J,EAAGC,EAC5B,EAirBA,IAAI+iK,GAAWhrK,GAAOikI,OAClBgnC,GAAYjrK,GAAOkkI,QACnBgnC,GAAelrK,GAAOokI,WACtB+mC,GAAcnrK,GAAO0kI,UACrBG,GAAY7kI,GAAO6kI,UACnBC,GAAc9kI,GAAO8kI,YACrBsmC,GAAWprK,GAAO+kI,OACtB,SAAS+lC,KACP,IAAIhjG,EAAQzqE,KACRguK,EAAmB,OACvBP,GAAOQ,GAAK,IACZR,GAAOS,GAAK,IACZT,GAAOU,GAAK,IACZV,GAAOW,GAAK,IACZX,GAAOY,GAAK,IACZZ,GAAOa,GAAK,IACZb,GAAOc,GAAK,IACZd,GAAOe,GAAK,IACZf,GAAOgB,GAAK,IACZhB,GAAOiB,GAAK,IACZjB,GAAOkB,MAAQ,IACflB,GAAOmB,SAAW,KAClBnB,GAAOoB,QAAU,KACjBpB,GAAOqB,OAAS,KAChBrB,GAAOsB,cAAgB,KACvBtB,GAAOuB,aAAe,KACtBvB,GAAOwB,OAAS,KAChBxB,GAAOyB,YAAc,KACrB,IAEI3F,EACAjnE,EACAv2B,EACAiiE,EACAmhC,EANAzB,EAAoB,MAAQM,EAChCP,GAAOC,kBAAoBA,EAM3B,IACI3/B,EACAqhC,EACAC,EAHAvhC,EAAM,IAAI8I,GAgBd,SAASqF,IACPj8I,KAAK04J,YAAc,EACnB14J,KAAK24J,kBAAoB,EACzB34J,KAAKw8I,YAAcsxB,GAAYzlC,GAAQoE,SACvCzsI,KAAKk8I,YAAc4xB,GAAYzlC,GAAQqE,QACzC,CACA,SAAS4iC,IACPtvK,KAAKuvK,WAAa,CACpB,CACA,SAASC,EAASC,EAASC,GACzB1vK,KAAK2vK,QAAUD,CACjB,CAvBA1vK,KAAK4vK,IAAM,IAAIvnC,GACfroI,KAAKiuI,WAAa,SAASy7B,EAAKx7B,EAAKz7F,EAAI27F,EAAQyhC,EAAKxhC,EAAMu7B,EAAMkG,EAAMC,GACtExG,EAAKG,EACLpnE,EAAK4rC,EACLniE,EAAKt5B,EACLu7F,EAAQI,EACR+gC,EAAKU,EACL9hC,EAAMM,EACN+gC,EAAMU,EACNT,EAASU,EACT/vK,KAAK4vK,IAAI3hC,WAAW3rC,EAAIwrC,EAAKE,EAAOD,EACtC,EAaA,IAAIiiC,EAAU,WACd,SAASC,EAAc1gC,GACrB,IAAI5E,EAyDJ,OAxDA4E,EAAIoY,SAAWqoB,EACfrlC,EAAM4E,EAAIE,eAAiB,IAAImf,GAC/Brf,EAAIv5H,KAAO+2H,GAASM,QACpBkC,EAAIkZ,SAAW,EACflZ,EAAIuY,cAAgB,MACpBvY,EAAIsY,aAAe,EACnBtY,EAAIqY,aAAe,EACnBrY,EAAIqD,cAAe,EACnBrD,EAAI2Y,SAAW,EACf3Y,EAAI8N,aAAe,KACnB1S,EAAI4gB,eAAiB,EACrBhc,EAAIga,YAAc,EAClBha,EAAIia,aAAe,EACnBja,EAAIka,cAAgB,EACpBla,EAAIma,eAAiB,EACrBna,EAAI+B,IAAMs8B,GAAUvnC,QACpBkJ,EAAI2Z,MAAQ,EACZ3Z,EAAIkY,UAAY,EAChBlY,EAAI4Z,sBAAwB,IAC5B5Z,EAAI6Z,qBAAuB,EAC3B7Z,EAAI8Z,qBAAuB,EAC3B9Z,EAAI+Z,aAAe,EACnB3e,EAAI6kB,gBAAkB,EACtB7kB,EAAI8kB,gBAAkB,GACtBlgB,EAAIsZ,YAAc,EAClBtZ,EAAIuZ,kBAAoB,EACxBvZ,EAAIsL,OAAS,EACblQ,EAAI2kB,eAAiB,EACrB3kB,EAAI4lB,SAAS,GAAK,IAClB5lB,EAAI4lB,SAAS,GAAK,IAClB5lB,EAAI6lB,YAAY,GAAK,EACrB7lB,EAAI6lB,YAAY,GAAK,EACrB7lB,EAAI+S,cAAgB,EACpB/S,EAAI2H,MAAMkO,YAAc,EACxB7V,EAAI2H,MAAMiO,cAAgB,EAC1BhR,EAAI3lB,OAAS,EACb2lB,EAAIya,YAAc,EAClBza,EAAI+X,SAAW,EACf/X,EAAIqJ,kBAAoB,EACxBrJ,EAAI0a,kBAAoB,EACxB1a,EAAI2a,YAAc,KAClB3a,EAAIwR,cAAgB,EACpBpW,EAAI4kB,qBAAuBlnB,GAAQ2K,SAAW3K,GAAQ4K,UACtD1D,EAAI+a,gBAAkB,EACtB3f,EAAIiF,QAAUvH,GAAQ2K,SAAW3K,GAAQ6K,UACzC3D,EAAI6Y,gBAAiB,EACrB7Y,EAAI8Y,mBAAoB,EACxB1d,EAAI0d,mBAAoB,EACxB1d,EAAIyd,gBAAiB,EACrBzd,EAAIknB,gBAAiB,EACrBlnB,EAAIonB,UAAY,EAChBpnB,EAAIqnB,eAAiB,EACrBrnB,EAAIunB,iBAAmB,EACvBvnB,EAAIwnB,aAAe,EACnB5iB,EAAIyZ,OAAS,EACbzZ,EAAI+Y,wBAAyB,EACtB,CACT,CAOA,SAAS4nB,EAAY97J,GACnB,OAAIA,EAAI,EACC,EACLA,GAAK,EACA,EACFpD,KAAKilI,IAAIjlI,KAAKklI,GAAK,EAAI9hI,EAChC,CA2CA,SAAS+7J,EAAmB5mB,EAAa6mB,GACvC,IAAIC,EAAuB,MAmB3B,OAlBID,GAAoB,KACtBC,EAAuB,KAChBD,GAAoB,MAC3BC,EAAuB,MAChBD,GAAoB,KAC3BC,EAAuB,KAChBD,GAAoB,KAC3BC,EAAuB,KAChBD,GAAoB,MAC3BC,EAAuB,MAChBD,GAAoB,KAC3BC,EAAuB,KAChBD,GAAoB,KAC3BC,EAAuB,KAChBD,GAAoB,MAC3BC,EAAuB,MAChBD,GAAoB,MAC3BC,EAAuB,MACL,GAAhB9mB,EACK8mB,GACL9mB,GAAe,QACjB8mB,EAAuB,OACrB9mB,GAAe,QACjB8mB,EAAuB,MACrB9mB,GAAe,QACjB8mB,EAAuB,MACrB9mB,GAAe,OACjB8mB,EAAuB,OACrB9mB,GAAe,OACjB8mB,EAAuB,MACrB9mB,GAAe,OACjB8mB,EAAuB,MACrB9mB,GAAe,OACjB8mB,EAAuB,OACrB9mB,GAAe,OACjB8mB,EAAuB,KACrBD,EAAmBC,EACjBD,EAAmB,MACd,KAELA,EAAmB,KACd,MAELA,EAAmB,KACd,KAELA,EAAmB,MACd,KAELA,EAAmB,KACd,MAELA,EAAmB,KACd,KAELA,EAAmB,MACd,KAELA,EAAmB,IACd,MAEF,IAEFC,EACT,CACA,SAASC,EAAYC,EAAaC,GAChC,OAAQD,GACN,KAAK,MAEH,OADAC,EAAI3hK,QAAU,EACP,EACT,KAAK,KAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,KAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,MAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,KAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,KAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,MAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,KAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,KAAK,IAEH,OADA2hK,EAAI3hK,QAAU,EACP,EACT,QAEE,OADA2hK,EAAI3hK,QAAU,GACN,EAEd,CACA,SAAS4hK,EAAmBC,EAAOv2D,EAAUw2D,GACvCA,EAAa,OACfx2D,EAAW,GAEb,IADA,IAAIs1D,EAAUlW,GAASuC,cAAc3hD,GAAU,GACtCj0G,EAAI,EAAGA,GAAK,GAAIA,IACnBqzJ,GAASuC,cAAc3hD,GAAUj0G,GAAK,GACpC8K,KAAK01G,IAAI6yC,GAASuC,cAAc3hD,GAAUj0G,GAAKwqK,GAAS1/J,KAAK01G,IAAI+oD,EAAUiB,KAC7EjB,EAAUlW,GAASuC,cAAc3hD,GAAUj0G,IAIjD,OAAOupK,CACT,CACA,SAASmB,EAAaF,EAAOv2D,EAAUw2D,GACjCA,EAAa,OACfx2D,EAAW,GACb,IAAK,IAAIj0G,EAAI,EAAGA,GAAK,GAAIA,IACvB,GAAIqzJ,GAASuC,cAAc3hD,GAAUj0G,GAAK,GACpCqzJ,GAASuC,cAAc3hD,GAAUj0G,IAAMwqK,EACzC,OAAOxqK,EAIb,OAAQ,CACV,CACA,SAAS2qK,EAAkBC,EAAIrB,GAC7B,IAAIsB,EAAW,CACb,IAAIvB,EAAS,EAAG,KAChB,IAAIA,EAAS,GAAI,MACjB,IAAIA,EAAS,GAAI,MACjB,IAAIA,EAAS,GAAI,MACjB,IAAIA,EAAS,GAAI,KACjB,IAAIA,EAAS,GAAI,MACjB,IAAIA,EAAS,GAAI,KACjB,IAAIA,EAAS,GAAI,MACjB,IAAIA,EAAS,GAAI,OACjB,IAAIA,EAAS,GAAI,OACjB,IAAIA,EAAS,IAAK,OAClB,IAAIA,EAAS,IAAK,MAClB,IAAIA,EAAS,IAAK,OAClB,IAAIA,EAAS,IAAK,OAClB,IAAIA,EAAS,IAAK,OAClB,IAAIA,EAAS,IAAK,OAClB,IAAIA,EAAS,IAAK,QAEhBwB,EAAcvmG,EAAMwmG,wBAAwBxB,GAChDqB,EAAGvB,WAAawB,EAASC,GAAarB,OACxC,CACA,SAASuB,EAAuB3hC,GAC9B,IAAI5E,EAAM4E,EAAIE,eACV0hC,EAAe,GACfC,GAAiB,EACrB,GAAIzmC,EAAIglB,SAAW,EAAG,CAEpB,IADA,IAAI0hB,EAAU,IACLjmC,EAAO,EAAGA,GAAQ,GAAIA,IAAQ,CACrC,IAAI+Y,EAAO/Y,EAAO,GACd+Y,GAAQxZ,EAAIilB,WACduhB,EAAengK,KAAKwF,IAAI26J,EAAc/lC,IAEpCT,EAAIglB,SAAWxL,GAAQA,EAAOxZ,EAAIilB,WACpCyhB,EAAUrgK,KAAKwF,IAAI66J,EAASjmC,GAEhC,CAEET,EAAIglB,SADS,KAAX0hB,GACcF,EAAe,KAAQ,IAEvBE,EAAU,KAAQ,GAEpC1mC,EAAIilB,SAAWuhB,EAAe,EAChC,CAUA,GATIxmC,EAAImlB,UAAY,GACdnlB,EAAImlB,UAAmB,IAAO,GAAd,KAClBnlB,EAAIklB,UAAY,EAChBllB,EAAImlB,UAAY,EAChB6d,GAASzhJ,IAAIi5G,QACX,uEAIFwF,EAAImlB,UAAY,EAAG,CACrB,IAAIwhB,GAAW,EACf,IAASlmC,EAAO,EAAGA,GAAQ,GAAIA,IAAQ,CACjC+Y,EAAO/Y,EAAO,GACd+Y,GAAQxZ,EAAIklB,YACduhB,EAAgBpgK,KAAKuF,IAAI66J,EAAehmC,IAEtCT,EAAIklB,UAAY1L,GAAQA,EAAOxZ,EAAImlB,YACrCwhB,EAAUtgK,KAAKuF,IAAI+6J,EAASlmC,GAEhC,CACAT,EAAIklB,UAAYuhB,EAAgB,GAE9BzmC,EAAImlB,WADU,GAAZwhB,GACeF,EAAgB,KAAQ,IAExBE,EAAU,KAAQ,EAEvC,CACA,IAASlmC,EAAO,EAAGA,EAAO,GAAIA,IAAQ,CACpC,IAAImmC,EAAKC,EACLrtB,EAAO/Y,EAAO,GAEhBmmC,EADE5mC,EAAImlB,UAAYnlB,EAAIklB,UAChBqgB,GACHvlC,EAAImlB,UAAY3L,IAASxZ,EAAImlB,UAAYnlB,EAAIklB,UAAY,QAGtD,EAGN2hB,EADE7mC,EAAIilB,SAAWjlB,EAAIglB,SACfugB,GACH/rB,EAAOxZ,EAAIglB,WAAahlB,EAAIilB,SAAWjlB,EAAIglB,SAAW,QAGnD,EAERhlB,EAAIsB,WAAWb,GAAQmmC,EAAMC,CAC/B,CACF,CACA,SAASC,EAAeliC,GACtB,IAAI5E,EAAM4E,EAAIE,eACd,OAAQF,EAAI2Y,SACV,QACA,KAAK,EACHvd,EAAIuG,SAAW,EACfvG,EAAIolB,cAAgB,EACpBplB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,EACzBvlB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACH7gB,EAAI2Y,QAAU,EAChB,KAAK,EACHvd,EAAIuG,SAAW,EACfvG,EAAIolB,cAAgB,EACpBplB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,EACzBvlB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACtBplB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACtBplB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACtBplB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACtBplB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACK,GAAvBplB,EAAIslB,kBACNtlB,EAAIslB,gBAAkB,GACxBtlB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACK,GAAvBplB,EAAIslB,kBACNtlB,EAAIslB,gBAAkB,GACxBtlB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MACF,KAAK,EACHzlB,EAAIuG,SAAW,EACU,GAArBvG,EAAIolB,gBACNplB,EAAIolB,cAAgB,GACK,GAAvBplB,EAAIslB,kBACNtlB,EAAIslB,gBAAkB,GACxBtlB,EAAIqlB,kBAAoB,EACxBrlB,EAAIulB,mBAAqB,GACC,GAAtBvlB,EAAI4gB,gBACN5gB,EAAI4gB,cAAgB,GACtB5gB,EAAIwlB,iBAAmB,EACvBxlB,EAAIylB,gBAAkB,EACtB,MAEN,CACA,SAASshB,EAAoBniC,GAC3B,IAAI5E,EAAM4E,EAAIE,eACdF,EAAIgb,SAAW,EACXhb,EAAI+Y,wBACN8mB,EAAIuC,gBAAgBpiC,GAEtB5E,EAAIwE,wBAA0B3H,GAAU,CAAC,GAAI,IAC7CmD,EAAI0E,uBAAyB7H,GAAU,CAAC,GAAI,IAC5CmD,EAAImnB,WAAa,EACbviB,EAAIqD,cACN7E,EAAI6jC,WAAWriC,EACnB,CAqbA,SAASsiC,EAAqBlnC,EAAKmnC,IACV,MAAnBnnC,EAAI2nB,aAAuB3nB,EAAI0nB,mBAAqByf,KACtDnnC,EAAI2nB,YAAcwb,GAAYgE,GAC9BnnC,EAAI4nB,YAAcub,GAAYgE,GAC9BnnC,EAAI0nB,mBAAqByf,EAE7B,CAgHA,SAASC,EAAWxiC,GAClB,IAAIyiC,EAAY3pC,GAAQwH,QAAUN,EAAIO,UAAYzH,GAAQuF,UAE1D,OADAokC,EAAYhhK,KAAKuF,IAAIy7J,EAAW,IAAMziC,EAAIO,UAAY,IAC/CkiC,CACT,CACA,SAASC,EAA0B1iC,EAAK2iC,EAAUC,EAAUL,EAAU5hC,EAAQC,EAAWC,GACvF,IAEI7zH,EACArW,EACA8kI,EACAgnC,EACAI,EANAznC,EAAM4E,EAAIE,eACV4iC,EAAU,EAMVljB,EAAQ,CAAC,KAAM,MACfmjB,EAAY,CAAC,KAAM,MACvB,GAAI3nC,EAAIqkB,UAAYghB,EAClB,OAAQ,EACV,GAAgB,GAAZ8B,EACF,OAAO,EAET,GADAM,EAAS9vE,EAAGqwC,YAAYhI,EAAKuF,EAAQC,EAAWC,EAAa,GACzDgiC,EAAS,EACX,OAAOA,EAKT,GAJAjiC,GAAaiiC,EACbC,GAAWD,EACXE,EAAU,GAAKJ,EACfI,EAAU,GAAKH,EACXrS,GAAY+M,IAAIt9B,EAAI3lB,MAAO,IAAMk2C,GAAY+M,IAAIt9B,EAAI3lB,MAAO,GAC9D,IAAK1jH,EAAI,EAAGA,EAAI4rK,IAAY5rK,EAC1BosK,EAAU,GAAGpsK,IAAMqpI,EAAI3lB,MACC,GAApB+gB,EAAIM,eACNqnC,EAAU,GAAGpsK,IAAMqpI,EAAI3lB,OAG7B,GAAIk2C,GAAY+M,IAAIt9B,EAAIwY,WAAY,IAAM+X,GAAY+M,IAAIt9B,EAAIwY,WAAY,GACxE,IAAK7hJ,EAAI,EAAGA,EAAI4rK,IAAY5rK,EAC1BosK,EAAU,GAAGpsK,IAAMqpI,EAAIwY,WAG3B,GAAI+X,GAAY+M,IAAIt9B,EAAIyY,YAAa,IAAM8X,GAAY+M,IAAIt9B,EAAIyY,YAAa,GAC1E,IAAK9hJ,EAAI,EAAGA,EAAI4rK,IAAY5rK,EAC1BosK,EAAU,GAAGpsK,IAAMqpI,EAAIyY,YAG3B,GAAwB,GAApBzY,EAAIsY,cAAyC,GAApBld,EAAIM,aAC/B,IAAK/kI,EAAI,EAAGA,EAAI4rK,IAAY5rK,EAC1BosK,EAAU,GAAGpsK,GAAK,IAAOosK,EAAU,GAAGpsK,GAAKosK,EAAU,GAAGpsK,IACxDosK,EAAU,GAAGpsK,GAAK,EAGtB8rK,EAAYD,EAAWxiC,GACvB4f,EAAM,GAAKxkB,EAAIwkB,MAAM,GACrBA,EAAM,GAAKxkB,EAAIwkB,MAAM,GACrB,IAAIojB,EAAe,EACnB,MAAOT,EAAW,EAAG,CACnB,IAAIU,EAAgB,CAAC,KAAM,MACvBC,EAAO,EACPC,EAAQ,EACZF,EAAc,GAAKF,EAAU,GAC7BE,EAAc,GAAKF,EAAU,GAC7B,IAAIK,EAAQ,IAAIC,EAIhB,GAHAC,EAAYtjC,EAAK4f,EAAOqjB,EAAeD,EAAcT,EAAUa,GAC/DF,EAAOE,EAAMF,KACbC,EAAQC,EAAMD,MACV/nC,EAAIyd,iBAAmBzd,EAAI0d,mBACzBkhB,EAAG3T,eACLjrB,EAAIsnB,OACJ9C,EAAM,GACNxkB,EAAIiF,QACJuf,EAAM,GACNxkB,EAAIiF,QACJ8iC,EACA/nC,EAAIM,eACD6hC,aAAarW,oBAChB,OAAQ,EAaZ,GAVAqb,GAAYW,EACZF,GAAgBE,EACZ9nC,EAAIM,aAERN,EAAIiF,SAAW8iC,EACf3E,GAASpjC,EAAIiF,SAAWgf,GAAoBQ,QACxCzkB,EAAI4kB,qBAAuB,IAC7B5kB,EAAI4kB,qBAAuBlnB,GAAQ2K,SAAW3K,GAAQ4K,WAExDtI,EAAI4kB,sBAAwBmjB,EACxB/nC,EAAIiF,SAAWoiC,EAAW,CAC5B,IAAIc,EAAW1iC,EAAciiC,EAW7B,GAVmB,GAAfjiC,IACF0iC,EAAW,GACbv2J,EAAMw2J,EACJxjC,EACA4f,EAAM,GACNA,EAAM,GACNjf,EACAC,EACA2iC,GAEEv2J,EAAM,EACR,OAAOA,EAKT,IAJA4zH,GAAa5zH,EACb81J,GAAW91J,EACXouH,EAAIiF,SAAWL,EAAIO,UACnBnF,EAAI4kB,sBAAwBhgB,EAAIO,UAC3B9E,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAClC,IAAK9kI,EAAI,EAAGA,EAAIykI,EAAIiF,QAAS1pI,IAC3BipJ,EAAMnkB,GAAI9kI,GAAKipJ,EAAMnkB,GAAI9kI,EAAIqpI,EAAIO,UAGvC,CACF,CACA,OAAOuiC,CACT,CACA,SAASU,EAAkBxjC,EAAKS,EAASC,EAASC,EAAQC,EAAWC,GACnE,IAAI7zH,EAAMkuD,EAAMmlG,IAAI7/B,sBAClBR,EACAS,EACAC,EACAC,EACAC,EACAC,GAGF,OADAb,EAAIgb,WACGhuI,CACT,CACA,SAASq2J,IACP5yK,KAAKyyK,KAAO,EACZzyK,KAAK0yK,MAAQ,CACf,CACA,SAASM,IACPhzK,KAAKizK,SAAW,CAClB,CACA,SAASC,EAAIhtK,EAAGonC,GACd,OAAY,GAALA,EAAS4lI,EAAI5lI,EAAGpnC,EAAIonC,GAAKpnC,CAClC,CACA,SAASitK,EAAS/+J,EAAGg/J,EAAK5oK,GACxB,IAAI6oK,EAAMriK,KAAKklI,GAAKk9B,EACpBh/J,GAAK5J,EACD4J,EAAI,IACNA,EAAI,GACFA,EAAI,IACNA,EAAI,GACN,IAAI20H,EAAK30H,EAAI,GACTk/J,EAAO,IAAO,GAAMtiK,KAAKilI,IAAI,EAAI7hI,EAAIpD,KAAKklI,IAAM,IAAOllI,KAAKilI,IAAI,EAAI7hI,EAAIpD,KAAKklI,IACjF,OAAIllI,KAAK01G,IAAIqiB,GAAM,KACVsqC,EAAMriK,KAAKklI,GAEXo9B,EAAOtiK,KAAKuiK,IAAI/oK,EAAI6oK,EAAMtqC,IAAO/3H,KAAKklI,GAAK1rI,EAAIu+H,EAC1D,CACA,SAASyqC,EAAqBjkC,EAAKkkC,EAAQC,EAAWC,EAAankC,EAAO+iC,EAAc37J,EAAKq8J,EAAUjoC,GACrG,IACI9kI,EAEA87C,EAHA2oF,EAAM4E,EAAIE,eAEVniG,EAAI,EAEJsmI,EAAMrkC,EAAI0B,eAAiBiiC,EAAI3jC,EAAI0B,eAAgB1B,EAAIuY,eACvD8rB,EAAMhlB,GAAoBkC,MAC5B8iB,EAAMhlB,GAAoBkC,KAC5B,IAAI+iB,EAAW7iK,KAAK01G,IAAIikB,EAAI2kB,eAAiBt+I,KAAKkD,MAAM,GAAMy2H,EAAI2kB,iBAAmB,KAAO,EAAI,EAC5F8jB,EAAM,EAAIzoC,EAAI2kB,eACd8jB,EAAM,IACRA,EAAM,GACR,IAAIU,EAAW,GACXA,EAAW,GAAK,KAChBA,EACJA,GAAYD,EACZ,IAAIE,EAAYD,EAAW,EAC3B,GAAqC,GAAjCnpC,EAAIukB,0BAAgC,CAGtC,IAFAvkB,EAAIimB,UAAU,GAAKkd,GAAYiG,GAC/BppC,EAAIimB,UAAU,GAAKkd,GAAYiG,GAC1B7tK,EAAI,EAAGA,GAAK,EAAI0tK,IAAO1tK,EAC1BykI,EAAIkmB,UAAU3qJ,GAAK4nK,GAAYiG,GAGjC,IAFAppC,EAAIomB,MAAM,GAAK,EACfpmB,EAAIomB,MAAM,GAAK,EACVzjH,EAAI,EAAGA,GAAK,EAAIsmI,EAAKtmI,IAAK,CAC7B,IAAIu2G,EAAM,EACNhjE,GAAUvzC,EAAIsmI,IAAQ,EAAIA,GAC9B,IAAK1tK,EAAI,EAAGA,GAAK4tK,EAAU5tK,IACzB29I,GAAOlZ,EAAIkmB,UAAUvjH,GAAGpnC,GAAKitK,EAASjtK,EAAI26E,EAAQuyF,EAAKU,GAEzD,IAAK5tK,EAAI,EAAGA,GAAK4tK,EAAU5tK,IACzBykI,EAAIkmB,UAAUvjH,GAAGpnC,IAAM29I,CAC3B,CACAlZ,EAAIukB,0BAA4B,CAClC,CACA,IAAI0B,EAAYjmB,EAAIimB,UAAU5lB,GAC9B,IAAKhpF,EAAI,EAAGA,EAAI2xH,EAAa3xH,IAAK,CAChC,IAAIgyH,EACAC,EAGJ,GAFAD,EAAQhyH,EAAI2oF,EAAI2kB,eAChBhiH,EAAI,EAAIt8B,KAAKkD,MAAM8/J,EAAQrpC,EAAIomB,MAAM/lB,IACjC8oC,EAAWxmI,EAAIwmI,EAAW,GAAKl9J,EACjC,MACEiqE,EAASmzF,EAAQrpC,EAAIomB,MAAM/lB,IAAO19F,EAAWwmI,EAAW,EAAlB,IAC1CG,EAAO,EAAIjjK,KAAKkD,MAAe,EAAT2sE,EAAa+yF,EAAMA,EAAM,IAC/C,IAAIM,EAAS,EACb,IAAKhuK,EAAI,EAAGA,GAAK4tK,IAAY5tK,EAAG,CAC9B,IACI2/H,EADAuf,EAAK,EAAIl/I,EAAIonC,EAAIwmI,EAAW,EAEhCjuC,EAAIuf,EAAK,EAAIwL,EAAUmjB,EAAY3uB,GAAM5V,EAAM+iC,EAAentB,GAC9D8uB,GAAUruC,EAAI8E,EAAIkmB,UAAUojB,GAAM/tK,EACpC,CACAutK,EAAOC,EAAY1xH,GAAKkyH,CAC1B,CAGA,GAFAjB,EAASA,SAAWjiK,KAAKwF,IAAII,EAAKk9J,EAAWxmI,EAAIwmI,EAAW,GAC5DnpC,EAAIomB,MAAM/lB,IAAOioC,EAASA,SAAWjxH,EAAI2oF,EAAI2kB,eACzC2jB,EAASA,UAAYc,EACvB,IAAK7tK,EAAI,EAAGA,EAAI6tK,EAAW7tK,IACzB0qJ,EAAU1qJ,GAAKspI,EAAM+iC,EAAeU,EAASA,SAAW/sK,EAAI6tK,OAEzD,CACL,IAAII,EAAUJ,EAAYd,EAASA,SACnC,IAAK/sK,EAAI,EAAGA,EAAIiuK,IAAWjuK,EACzB0qJ,EAAU1qJ,GAAK0qJ,EAAU1qJ,EAAI+sK,EAASA,UAExC,IAAK3lI,EAAI,EAAGpnC,EAAI6tK,IAAa7tK,IAAKonC,EAChCsjH,EAAU1qJ,GAAKspI,EAAM+iC,EAAejlI,GAEtCygI,GAASzgI,GAAK2lI,EAASA,SACzB,CACA,OAAOjxH,CACT,CACA,SAAS6wH,EAAYtjC,EAAK4f,EAAOmjB,EAAWC,EAAcT,EAAUsC,GAClE,IAAIzpC,EAAM4E,EAAIE,eACd,GAAI9E,EAAI2kB,eAAiB,OAAU3kB,EAAI2kB,eAAiB,OACtD,IAAK,IAAItkB,EAAK,EAAGA,EAAKL,EAAIM,aAAcD,IAAM,CAC5C,IAAIqpC,EAAU,IAAIrB,EAClBoB,EAAG1B,MAAQc,EACTjkC,EACA4f,EAAMnkB,GACNL,EAAIiF,QACJL,EAAIO,UACJwiC,EAAUtnC,GACVunC,EACAT,EACAuC,EACArpC,GAEFopC,EAAG3B,KAAO4B,EAAQpB,QACpB,KACK,CACLmB,EAAG1B,MAAQ1hK,KAAKwF,IAAI+4H,EAAIO,UAAWgiC,GACnCsC,EAAG3B,KAAO2B,EAAG1B,MACb,IAAK,IAAIxsK,EAAI,EAAGA,EAAIkuK,EAAG1B,QAASxsK,EAC9BipJ,EAAM,GAAGxkB,EAAIiF,QAAU1pI,GAAKosK,EAAU,GAAGC,EAAersK,GAChC,GAApBykI,EAAIM,eACNkkB,EAAM,GAAGxkB,EAAIiF,QAAU1pI,GAAKosK,EAAU,GAAGC,EAAersK,GAG9D,CACF,CA3qCAlG,KAAKs0K,UAAY,WACf,IAAI/kC,EAAM,IAAImY,GAGd,OAFAuoB,EAAc1gC,GACdA,EAAIib,mBAAqB,EAClBjb,CACT,EAQAvvI,KAAKixK,wBAA0B,SAASxB,GACtC,IAAI8E,EAAqB,CACvB,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEEC,EAAc,EACdC,EAAmB,EACnBC,EAAc,EACdC,EAAmB,EACvBA,EAAmBJ,EAAmB,IACtCG,EAAc,GACdD,EAAmBF,EAAmB,IACtCC,EAAc,GACd,IAAK,IAAI5pK,EAAI,EAAGA,EAAI,GAAIA,IACtB,GAAIoG,KAAKuF,IAAIk5J,EAAS8E,EAAmB3pK,EAAI,KAAO6kK,EAAS,CAC3DkF,EAAmBJ,EAAmB3pK,EAAI,GAC1C8pK,EAAc9pK,EAAI,EAClB6pK,EAAmBF,EAAmB3pK,GACtC4pK,EAAc5pK,EACd,KACF,CAEF,OAAI+pK,EAAmBlF,EAAUA,EAAUgF,EAClCD,EAEFE,CACT,EAkVA10K,KAAK40K,iBAAmB,SAASrlC,GAC/B,IAAI5E,EAAM4E,EAAIE,eAqDd,GApDA9E,EAAIqkB,SAAW,EACA,MAAXrkB,EAAI+D,MACN/D,EAAI+D,IAAM,IAAIA,IACD,MAAX/D,EAAIsR,MACNtR,EAAIsR,IAAM,IAAIA,GACE,MAAdtR,EAAIsnB,SACNtnB,EAAIsnB,OAAS,IAAIkF,IACnBxsB,EAAI0kB,YAAc9f,EAAIsY,aACC,GAAnBld,EAAI0kB,cACN9f,EAAIv5H,KAAO+2H,GAASK,MACtBzC,EAAIM,aAAesE,EAAIv5H,MAAQ+2H,GAASK,KAAO,EAAI,EACnDzC,EAAIuE,SAAW7G,GAAQwF,aACnB0B,EAAIv5H,MAAQ+2H,GAASK,OACvBmC,EAAIqC,UAAW,GACbrC,EAAI+B,KAAOs8B,GAAUvnC,SAAwC,KAA7BkJ,EAAI4Z,uBAA6C,GAAb5Z,EAAIgZ,QAC1EhZ,EAAIgZ,MAAQhZ,EAAI4Z,uBAEd5Z,EAAI+B,KAAOs8B,GAAUvnC,SAAWkJ,EAAI+B,KAAOs8B,GAAUnnC,UAAY8I,EAAI+B,KAAOs8B,GAAUtnC,SAGxFiJ,EAAI4Y,aAAc,GAEhB5Y,EAAI+B,KAAOs8B,GAAUvnC,SAAwB,GAAbkJ,EAAIgZ,OAClCuX,GAAYC,GAAGxwB,EAAIiZ,kBAAmB,KACxCjZ,EAAIiZ,kBAAoB,QAExBjZ,EAAI+B,KAAOs8B,GAAUvnC,SAAWkJ,EAAIiZ,kBAAoB,IAChC,GAAtBjZ,EAAI0B,iBACN1B,EAAI0B,eAAiB4jC,iBAAiB9yB,IAAI,IAAOxS,EAAIuY,iBAEvDvY,EAAIgZ,MAAQ,EAAyB,GAArBhZ,EAAI0B,eAAsBtG,EAAIM,cAAgB,IAAMsE,EAAIiZ,mBACxE7d,EAAI+kB,iBAAmB4gB,EAAY/gC,EAAI0B,eAAgB1B,GAClDA,EAAI4Y,cACP5Y,EAAIgZ,MAAQkoB,EACVlhC,EAAIgZ,MACJhZ,EAAI1gI,QACJ0gI,EAAI0B,kBAIgB,GAAtB1B,EAAI0B,iBACF1B,EAAI0B,eAAiB,MACvB1B,EAAI4Z,sBAAwBn4I,KAAKuF,IAAIg5H,EAAI4Z,sBAAuB,GAChE5Z,EAAI4Z,sBAAwBn4I,KAAKwF,IAAI+4H,EAAI4Z,sBAAuB,KACvD5Z,EAAI0B,eAAiB,MAC9B1B,EAAI4Z,sBAAwBn4I,KAAKuF,IAAIg5H,EAAI4Z,sBAAuB,GAChE5Z,EAAI4Z,sBAAwBn4I,KAAKwF,IAAI+4H,EAAI4Z,sBAAuB,OAEhE5Z,EAAI4Z,sBAAwBn4I,KAAKuF,IAAIg5H,EAAI4Z,sBAAuB,IAChE5Z,EAAI4Z,sBAAwBn4I,KAAKwF,IAAI+4H,EAAI4Z,sBAAuB,OAG7C,GAAnB5Z,EAAIga,YAAkB,CACxB,IAAIomB,EAAU,KACd,OAAQpgC,EAAI+B,KACV,KAAKs8B,GAAUvnC,QACb,IAAIyqC,EAAK,IAAIxB,EACbuB,EAAkBC,EAAIvhC,EAAIgZ,OAC1BonB,EAAUmB,EAAGvB,WACb,MAEF,KAAK3B,GAAUpnC,QACTsqC,EAAK,IAAIxB,EACbuB,EAAkBC,EAAIvhC,EAAI4Z,uBAC1BwmB,EAAUmB,EAAGvB,WACb,MAEF,KAAK3B,GAAUrnC,OACb,IAAInyH,EAAI,CACN,MACA,KACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,IACA,MAEF,GAAIm7H,EAAI2Z,OAAS,GAAK3Z,EAAI2Z,OAAS,EAAG,CACpC,IAAIv+I,EAAIyJ,EAAEm7H,EAAI2Z,OACVt+I,EAAIwJ,EAAEm7H,EAAI2Z,MAAQ,GAClBn3H,EAAIw9G,EAAI0Z,WACZ0mB,EAAUmF,WAAWnqK,EAAGC,EAAGmnB,EAC7B,MACE49I,EAAU,MAEZ,MAEF,QACMv7J,EAAI,CACN,MACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,MAEF,GAAIm7H,EAAI2Z,OAAS,GAAK3Z,EAAI2Z,OAAS,EAAG,CAChCv+I,EAAIyJ,EAAEm7H,EAAI2Z,OACVt+I,EAAIwJ,EAAEm7H,EAAI2Z,MAAQ,GAClBn3H,EAAIw9G,EAAI0Z,WACZ0mB,EAAUmF,WAAWnqK,EAAGC,EAAGmnB,EAC7B,MACE49I,EAAU,MAIZpgC,EAAIv5H,MAAQ+2H,GAASK,MAASmC,EAAI+B,KAAOs8B,GAAUvnC,SAAWkJ,EAAI+B,KAAOs8B,GAAUpnC,UACrFmpC,GAAW,KAEbpgC,EAAIga,YAAwB,EAAVomB,CACpB,CA2BA,GA1B0B,GAAtBpgC,EAAI0B,iBACF,EAAI1B,EAAIga,YAAcha,EAAIuY,gBAC5BvY,EAAIga,YAAcha,EAAIuY,cAAgB,GAExCvY,EAAI0B,eAAiBk/B,EACD,EAAlB5gC,EAAIga,YACJha,EAAIuY,gBAGRvY,EAAIga,YAAcv4I,KAAKwF,IAAI,MAAO+4H,EAAIga,aACtCha,EAAIga,YAAcv4I,KAAKwF,IAAI+4H,EAAI0B,eAAiB,EAAG1B,EAAIga,aACnDha,EAAI+B,KAAOs8B,GAAUvnC,UACvBkJ,EAAIiZ,kBAAyC,GAArBjZ,EAAI0B,eAAsBtG,EAAIM,cAAgB,IAAMsE,EAAIgZ,QAE9EhZ,EAAI+B,KAAOs8B,GAAUpnC,UACvB+I,EAAIiZ,kBAAyC,GAArBjZ,EAAI0B,eAAsBtG,EAAIM,cAAgB,IAAMsE,EAAI4Z,wBAE7E5Z,EAAIqD,eACPrD,EAAI6Y,gBAAiB,EACrB7Y,EAAI8Y,mBAAoB,EACxB1d,EAAIknB,gBAAiB,GAEvBlnB,EAAIyd,eAAiB7Y,EAAI6Y,eACzBzd,EAAI0d,kBAAoB9Y,EAAI8Y,kBACxB1d,EAAI0d,oBACN1d,EAAIknB,gBAAiB,GACnBlnB,EAAIyd,gBACFmhB,EAAGnU,iBAAiBzqB,EAAIsnB,OAAQ1iB,EAAI0B,iBAAmB67B,aAAaxY,yBAEtE,OADA/kB,EAAIE,eAAiB,MACb,EAaZ,OAVI9E,EAAI0d,oBAAsB9Y,EAAI0Y,cACjB,MAAXtd,EAAIynB,KACNid,EAAO0F,gBAAgBpqC,EAAIynB,KAE7BznB,EAAIynB,IAAMid,EAAO2F,mBAEnBrqC,EAAIQ,QAAUoE,EAAI0B,gBAAkB,KAAO,EAAI,EAC/C1B,EAAIO,UAAY,IAAMnF,EAAIQ,QAC1BoE,EAAI8a,cAAgBhiB,GAAQ2K,SAC5BrI,EAAI2kB,eAAiB/f,EAAIuY,cAAgBvY,EAAI0B,eACrC1B,EAAI+B,KACV,KAAKs8B,GAAUtnC,OACf,KAAKsnC,GAAUrnC,OACf,KAAKqnC,GAAUnnC,SAEX,IAAIwuC,EAAM,CAAC,IAAK,IAAK,IAAK,IAAK,GAAI,KAAM,GAAI,GAAI,GAAI,MACrD1lC,EAAIiZ,kBAAoBysB,EAAI1lC,EAAI2Z,OAElC,MACF,KAAK0kB,GAAUpnC,QACb+I,EAAIiZ,kBAAyC,GAArBjZ,EAAI0B,eAAsBtG,EAAIM,cAAgB,IAAMsE,EAAI4Z,uBAChF,MACF,QACE5Z,EAAIiZ,kBAAyC,GAArBjZ,EAAI0B,eAAsBtG,EAAIM,cAAgB,IAAMsE,EAAIgZ,OAChF,MAmCJ,GAjCIhZ,EAAIv5H,MAAQ+2H,GAASM,UACvBkC,EAAIv5H,KAAO+2H,GAASG,cAElBqC,EAAIia,aAAe,GACrB7e,EAAIklB,UAAY,EAAItgB,EAAIia,aACpBja,EAAIma,eAAiB,EACvB/e,EAAImlB,UAAY,GAAKvgB,EAAIia,aAAeja,EAAIma,eAE5C/e,EAAImlB,UAAY,EAAcvgB,EAAIia,aAEpC7e,EAAIklB,WAAatgB,EAAI0B,eACrBtG,EAAImlB,WAAavgB,EAAI0B,iBAErBtG,EAAIklB,UAAY,EAChBllB,EAAImlB,UAAY,GAEdvgB,EAAIga,YAAc,GACpB5e,EAAIilB,SAAW,EAAIrgB,EAAIga,YACnBha,EAAIka,cAAgB,GACtB9e,EAAIglB,SAAW,GAAKpgB,EAAIga,YAAcha,EAAIka,cACtC9e,EAAIglB,SAAW,IACjBhlB,EAAIglB,SAAW,IAEjBhlB,EAAIglB,SAAW,EAAcpgB,EAAIga,YAEnC5e,EAAIglB,UAAYpgB,EAAI0B,eACpBtG,EAAIilB,UAAYrgB,EAAI0B,iBAEpBtG,EAAIglB,SAAW,EACfhlB,EAAIilB,SAAW,GAEjBshB,EAAuB3hC,GACvB5E,EAAI+kB,iBAAmB4gB,EAAY/gC,EAAI0B,eAAgB1B,GACnD5E,EAAI+kB,iBAAmB,EAEzB,OADAngB,EAAIE,eAAiB,MACb,EAEV,GAAIF,EAAI+B,KAAOs8B,GAAUvnC,SACvB,GAAIkJ,EAAI4Y,YACNxd,EAAIsE,cAAgB,OAYpB,GAVAM,EAAIgZ,MAAQkoB,EACVlhC,EAAIgZ,MACJhZ,EAAI1gI,QACJ0gI,EAAI0B,gBAENtG,EAAIsE,cAAgB2hC,EAClBrhC,EAAIgZ,MACJhZ,EAAI1gI,QACJ0gI,EAAI0B,gBAEFtG,EAAIsE,eAAiB,EAEvB,OADAM,EAAIE,eAAiB,MACb,OAIZ9E,EAAIsE,cAAgB,EAElBM,EAAI0C,WACN1C,EAAIqD,cAAe,GACJ,MAAbjI,EAAIuH,QACN3C,EAAIqD,cAAe,GACrBtwC,EAAGkrE,kBAAkB7iC,GAErB,IADA,IA4BM3oF,EA5BF1U,EAAIq9F,EAAI+kB,iBAAmB,EAAIngB,EAAI1gI,QAAU,GAAK0gI,EAAI0B,eAAiB,KAAO,EAAI,GAC7E/qI,EAAI,EAAGA,EAAImiI,GAAQoE,QAAU,EAAGvmI,IACvCykI,EAAIqc,cAAcx8I,EAAEtE,GAAK8nI,EAAMsvB,YAAYhwH,GAAG9iC,EAAEtE,GAElD,IAASA,EAAI,EAAGA,EAAImiI,GAAQmL,OAAS,EAAGttI,IAAK,CAC3C,IAAIk4E,GAASusD,EAAIqc,cAAcx8I,EAAE,IAAMmgI,EAAIqc,cAAcx8I,EAAE,KAAO69H,GAAQmL,OACtE3lH,EAAQ88G,EAAIqc,cAAcx8I,EAAE,IAAMtE,EAAIk4E,EAC1CusD,EAAIqc,cAAcyG,OAAOvnJ,GAAK2nB,CAChC,CACA88G,EAAIqc,cAAcyG,OAAOplB,GAAQmL,QAAU,IAC3C,IAASttI,EAAI,EAAGA,EAAImiI,GAAQqE,QAAU,EAAGxmI,IACvCykI,EAAIqc,cAAclsI,EAAE5U,GAAK8nI,EAAMsvB,YAAYhwH,GAAGxyB,EAAE5U,GAElD,IAASA,EAAI,EAAGA,EAAImiI,GAAQoL,OAAS,EAAGvtI,IAAK,CACvCk4E,GAASusD,EAAIqc,cAAclsI,EAAE,IAAM6vH,EAAIqc,cAAclsI,EAAE,KAAOutH,GAAQoL,OACtE5lH,EAAQ88G,EAAIqc,cAAclsI,EAAE,IAAM5U,EAAIk4E,EAC1CusD,EAAIqc,cAAc0G,OAAOxnJ,GAAK2nB,CAChC,CAYE,IAXF88G,EAAIqc,cAAc0G,OAAOrlB,GAAQoL,QAAU,IACxB,GAAflE,EAAI1gI,QACN87H,EAAIqmB,aAAmC,GAApBrmB,EAAIM,aAAoB,GAAS,GAEpDN,EAAIqmB,aAAmC,GAApBrmB,EAAIM,aAAoB,GAAQ,GACjDsE,EAAImZ,mBACN/d,EAAIqmB,cAAgB,GACtB0gB,EAAoBniC,GACpB5E,EAAIqkB,SAAWghB,EAGRhuH,EAAI,EAAGA,EAAI,GAAIA,IAClB2oF,EAAI2H,MAAMC,SAASvwF,GAAK,IAAM2oF,EAAIQ,QAAUR,EAAIM,aAOpD,QALsB,GAAhBsE,EAAI+X,UACN/X,EAAI+X,QAAU,GAElBymB,GAASx+B,EAAI2Z,OAAS,GACtB6kB,GAASx+B,EAAI2Z,OAAS,GACd3Z,EAAI+B,KACV,KAAKs8B,GAAUtnC,OACbiJ,EAAI+B,IAAMs8B,GAAUnnC,SACtB,KAAKmnC,GAAUnnC,SACU,MAAnB8I,EAAI2a,cACN3a,EAAI2a,aAAc,GAEpBn+E,EAAGmpG,aAAa3lC,EAAK,IAAkB,GAAZA,EAAI2Z,MAAY,GACvC3Z,EAAI2Y,QAAU,IAChB3Y,EAAI2Y,QAAUitB,sBACZ5lC,EAAI2Y,QAAU,IAChB3Y,EAAI2Y,QAAU,GACZ3Y,EAAI2Y,QAAU,IAChB3Y,EAAI2Y,QAAU,GAChBvd,EAAIsR,IAAIyc,YAAcnpB,EAAIoa,cAC1Bhf,EAAIsR,IAAI0c,kBAAoBppB,EAAIqa,oBAC5Bra,EAAIwZ,cACNpe,EAAIgmB,aAAc,EAElBhmB,EAAIgmB,YAAcphB,EAAI0B,eAAiB,KACzCtG,EAAI8H,eAAiB,IAAI2iC,oBAAoBjG,GAC7C,MAEF,KAAKvB,GAAUrnC,OACbx6D,EAAGmpG,aAAa3lC,EAAK,IAAkB,GAAZA,EAAI2Z,MAAY,GAC3Cve,EAAIsR,IAAIyc,YAAcnpB,EAAIoa,cAC1Bhf,EAAIsR,IAAI0c,kBAAoBppB,EAAIqa,oBAC5Bra,EAAIwZ,cACNpe,EAAIgmB,aAAc,EAElBhmB,EAAIgmB,YAAcphB,EAAI0B,eAAiB,KACrC1B,EAAI2Y,QAAU,IAChB3Y,EAAI2Y,QAAU,GACZ3Y,EAAI2Y,QAAU,IAChB3Y,EAAI2Y,QAAUitB,sBAChBxqC,EAAI8H,eAAiB,IAAI4iC,oBAAoBlG,GAC7C,MAEF,QACE,IAAImG,EACJ3qC,EAAIgmB,aAAc,EACdphB,EAAI2Y,QAAU,IAChB3Y,EAAI2Y,QAAUitB,sBAChBG,EAAU/lC,EAAI+B,IACVgkC,GAAW1H,GAAUvnC,UACvBkJ,EAAI4Z,sBAAwB5Z,EAAIgZ,OAClCx8E,EAAGmpG,aAAa3lC,EAAKA,EAAI4Z,sBAAuB,GAChD5Z,EAAI+B,IAAMgkC,EACV3qC,EAAIsR,IAAIyc,YAAcnpB,EAAIoa,cAC1Bhf,EAAIsR,IAAI0c,kBAAoBppB,EAAIqa,oBAC5B0rB,GAAW1H,GAAUvnC,QACvBsE,EAAI8H,eAAiB,IAAIklB,GAAoBwX,GAE7CxkC,EAAI8H,eAAiB,IAAI8iC,iBAAiBpG,GAE5C,MAIJ,GADApB,GAASx+B,EAAI3lB,OAAS,GAClB2lB,EAAI+B,KAAOs8B,GAAUvnC,QAAS,CAKhC,GAJAsE,EAAI6kB,gBAAkB,EACtB7kB,EAAI8kB,gBAAkB,GAClBlgB,EAAI0B,eAAiB,OACvBtG,EAAI8kB,gBAAkB,GACQ,GAA5BlgB,EAAI6Z,uBACN7Z,EAAI6Z,qBAAuBqnB,EACzBlhC,EAAI6Z,qBACJ7Z,EAAI1gI,QACJ0gI,EAAI0B,gBAENtG,EAAI6kB,gBAAkBohB,EACpBrhC,EAAI6Z,qBACJ7Z,EAAI1gI,QACJ0gI,EAAI0B,gBAEFtG,EAAI6kB,gBAAkB,GACxB,OAAQ,EAEZ,GAAgC,GAA5BjgB,EAAI8Z,uBACN9Z,EAAI8Z,qBAAuBonB,EACzBlhC,EAAI8Z,qBACJ9Z,EAAI1gI,QACJ0gI,EAAI0B,gBAENtG,EAAI8kB,gBAAkBmhB,EACpBrhC,EAAI8Z,qBACJ9Z,EAAI1gI,QACJ0gI,EAAI0B,gBAEFtG,EAAI8kB,gBAAkB,GACxB,OAAQ,EAEZlgB,EAAI6Z,qBAAuBmQ,GAASuC,cAAcvsB,EAAI1gI,SAAS87H,EAAI6kB,iBACnEjgB,EAAI8Z,qBAAuBkQ,GAASuC,cAAcvsB,EAAI1gI,SAAS87H,EAAI8kB,iBACnElgB,EAAI4Z,sBAAwBn4I,KAAKwF,IAC/B+iJ,GAASuC,cAAcvsB,EAAI1gI,SAAS87H,EAAI8kB,iBACxClgB,EAAI4Z,uBAEN5Z,EAAI4Z,sBAAwBn4I,KAAKuF,IAC/BgjJ,GAASuC,cAAcvsB,EAAI1gI,SAAS87H,EAAI6kB,iBACxCjgB,EAAI4Z,sBAER,CAmDA,OAlDI5Z,EAAI4a,OACNxf,EAAIsR,IAAIyc,aAAenpB,EAAI6a,aAC3Bzf,EAAIsR,IAAI0c,mBAAqBppB,EAAI6a,cAEnCqnB,EAAeliC,GACfw+B,GAASx+B,EAAI3lB,OAAS,GAClB2lB,EAAIya,WAAa,EACnBrf,EAAI+D,IAAIC,UAAY,EAEpBhE,EAAI+D,IAAIC,UAAYY,EAAIya,WAC1Brf,EAAI+D,IAAIG,eAAiB79H,KAAKsoI,IAAI,GAAI/J,EAAI0a,mBAAqB,IACvC,MAApB1a,EAAI8N,eACN9N,EAAI8N,aAAewwB,GAAa/nC,qBAE9ByJ,EAAI8N,cAAgBwwB,GAAa/nC,qBAAwByJ,EAAIv5H,MAAQ+2H,GAASG,cAAgBqC,EAAIv5H,MAAQ+2H,GAASE,SACrHsC,EAAI8N,aAAewwB,GAAa9nC,qBAE9BwJ,EAAIsZ,WAAa,IACnBtZ,EAAIsZ,WAAa,GACftZ,EAAIuZ,iBAAmB,IACzBvZ,EAAIuZ,iBAAmB,GACrBvZ,EAAIsL,MAAQ,IACdtL,EAAIsL,MAAQ,GACdtL,EAAI6X,cAAoC,EAApB7X,EAAI6X,cACpB7X,EAAIE,eAAe6C,MAAMkO,WAAa,IACxCjR,EAAIE,eAAe6C,MAAMkO,WAAa5J,GAAS4+B,cAE7CjmC,EAAIE,eAAe6C,MAAMiO,aAAe,IAC1ChR,EAAIE,eAAe6C,MAAMiO,aAAe3J,GAAS6+B,gBAEnD1H,GAASx+B,EAAI3lB,OAAS,GAClB2lB,EAAI3lB,MAAQ,IACd2lB,EAAI3lB,MAAQ,GACV2lB,EAAI+X,QAAU,IAChB/X,EAAI+X,QAAU,GACZ/X,EAAIkY,SAAW,IACjBlY,EAAIkY,SAAW,GACblY,EAAIqJ,iBAAmB,IACzBrJ,EAAIqJ,iBAAmB,GACrBrJ,EAAIwR,aAAe,IACrBxR,EAAIwR,aAAe,GACE,MAAnBxR,EAAI2a,cACN3a,EAAI2a,aAAc,GACpBvf,EAAIoG,SAAWpG,EAAIqG,SAAW,EAC1BzB,EAAI+B,KAAOs8B,GAAUvnC,UACvBsE,EAAIoG,SAAWpG,EAAIqG,SAA+B,MAAnBzB,EAAI1gI,QAAU,GAAY0gI,EAAIgZ,MAAQhZ,EAAI0B,eAAiB,GAE5FjD,EAAMkwB,eAAe3uB,GACrBzB,EAAIwY,cAAc/W,GAClBw+B,GAASx+B,EAAI3lB,OAAS,GACf,CACT,EAQA5pH,KAAK01K,kBAAoB,SAASnmC,EAAKomC,EAAWC,EAAcC,GAC9D,IAGIxlC,EACAylC,EACAC,EACAC,EANArrC,EAAM4E,EAAIE,eACVlqI,EAASkiI,GAAY,CAAC,EAAG,OACzBwuC,EAAO,EAKPC,EAAoBvrC,EAAI4kB,qBAAuBlnB,GAAQ4K,UACvD++B,EAAYD,EAAWxiC,GAC3B,GAAI5E,EAAI4kB,qBAAuB,EAC7B,OAAO,EAETlf,EAAW,EACPd,EAAIuY,eAAiBvY,EAAI0B,iBAC3BilC,GAAqB,GAAK3mC,EAAI0B,eAAiB1B,EAAIuY,eAErDiuB,EAAcxmC,EAAIO,UAAYomC,EAAoB3mC,EAAIO,UAClDimC,EAAc,MAChBA,GAAexmC,EAAIO,WACrBP,EAAI+a,gBAAkByrB,EACtBC,GAAeE,EAAoBH,GAAexmC,EAAIO,UACtD,MAAOkmC,EAAc,GAAKC,GAAQ,EAAG,CACnC,IAAIE,EAAQnE,EAAYrnC,EAAIiF,QACxBwmC,EAAY7mC,EAAIgb,SACpB4rB,GAAS5mC,EAAIuY,cACbquB,GAAS5mC,EAAI0B,eACTklC,EAAQ,OACVA,EAAQ,MACNA,EAAQ,IACVA,EAAQ,GACVL,EAA2BD,EAAiBxlC,EACtB,GAAlBwlC,IACFC,EAA2B,GAC7BG,EAAOj2K,KAAKq2K,mBACV9mC,EACAhqI,EAAO,GACPA,EAAO,GACP4wK,EACAR,EACAC,EACAE,GAEFF,GAAgBK,EAChB5lC,GAAY4lC,EACZD,GAAeI,GAAa7mC,EAAIgb,SAAW,EAAI,CACjD,CAEA,GADA5f,EAAI4kB,qBAAuB,EACvB0mB,EAAO,EACT,OAAOA,EAaT,GAXAH,EAA2BD,EAAiBxlC,EACtB,GAAlBwlC,IACFC,EAA2B,GAC7BxzE,EAAGsqE,gBAAgBr9B,GACnB0mC,EAAO3zE,EAAGqwC,YACRhI,EACAgrC,EACAC,EACAE,EACA,GAEEG,EAAO,EACT,OAAOA,EAOT,GALAL,GAAgBK,EAChB5lC,GAAY4lC,EACZH,EAA2BD,EAAiBxlC,EACtB,GAAlBwlC,IACFC,EAA2B,GACzBvmC,EAAI+Y,uBAAwB,CAS9B,GARA8mB,EAAIkH,gBAAgB/mC,GACpB0mC,EAAO3zE,EAAGqwC,YACRhI,EACAgrC,EACAC,EACAE,EACA,GAEEG,EAAO,EACT,OAAOA,EAET5lC,GAAY4lC,CACd,CACA,OAAO5lC,CACT,EACArwI,KAAKq2K,mBAAqB,SAAS9mC,EAAK2iC,EAAUC,EAAUL,EAAU5hC,EAAQC,EAAWC,GACvF,IAAIzF,EAAM4E,EAAIE,eACV6iC,EAAY,CAAC,KAAM,MACvB,GAAI3nC,EAAIqkB,UAAYghB,EAClB,OAAQ,EACV,GAAgB,GAAZ8B,EACF,OAAO,EACTD,EAAqBlnC,EAAKmnC,GAC1BQ,EAAU,GAAK3nC,EAAI2nB,YACnBggB,EAAU,GAAK3nC,EAAI4nB,YACnB,IAAK,IAAIrsJ,EAAI,EAAGA,EAAI4rK,EAAU5rK,IAC5BosK,EAAU,GAAGpsK,GAAKgsK,EAAShsK,GACvBykI,EAAI0kB,YAAc,IACpBijB,EAAU,GAAGpsK,GAAKisK,EAASjsK,IAE/B,OAAO+rK,EACL1iC,EACA+iC,EAAU,GACVA,EAAU,GACVR,EACA5hC,EACAC,EACAC,EAEJ,CA2PF,CACA,IAAImmC,GAAY5zK,GAAOkkI,QACvB,SAAS2vC,KACP,SAASC,EAAWC,EAAMhlJ,EAAMilJ,EAAO9wC,EAAG+wC,EAAaC,EAAcC,EAAKC,EAAUC,EAAOC,EAAOC,EAAMC,EAAOC,EAAO53G,EAAK63G,GACzHr3K,KAAKs3K,MAAQZ,EACb12K,KAAK6oJ,WAAan3H,EAClB1xB,KAAKu3K,aAAeZ,EACpB32K,KAAKw3K,KAAO3xC,EACZ7lI,KAAKy3K,OAASb,EACd52K,KAAK03K,KAAOb,EACZ72K,KAAK23K,YAAcb,EACnB92K,KAAK43K,kBAAoBb,EACzB/2K,KAAK63K,UAAYb,EACjBh3K,KAAK83K,UAAYb,EACjBj3K,KAAK+3K,gBAAkBb,EACvBl3K,KAAKg4K,QAAUb,EACfn3K,KAAKi4K,UAAYb,EACjBp3K,KAAKk4K,SAAW14G,EAChBx/D,KAAK66I,MAAQw8B,CACf,CACA,SAASc,EAAWC,EAAM1mJ,EAAMilJ,EAAOS,EAAOC,EAAKT,EAAaC,EAAc1Y,EAAMka,EAAIC,EAAMtB,EAAOC,EAAOsB,EAASC,GACnHx4K,KAAK6oJ,WAAan3H,EAClB1xB,KAAKu3K,aAAeZ,EACpB32K,KAAKi4K,UAAYb,EACjBp3K,KAAKy4K,QAAUpB,EACfr3K,KAAKy3K,OAASb,EACd52K,KAAK03K,KAAOb,EACZ72K,KAAK04K,OAASva,EACdn+J,KAAK4pH,MAAQyuD,EACbr4K,KAAK23K,YAAcW,EACnBt4K,KAAK63K,UAAYb,EACjBh3K,KAAK83K,UAAYb,EACjBj3K,KAAKg4K,QAAUO,EACfv4K,KAAK24K,QAAUH,CACjB,CACA,IAAII,EACJ54K,KAAKiuI,WAAa,SAAS4qC,GACzBD,EAAOC,CACT,EACA,IAAIC,EAAqB,CACvB,IAAIrC,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,EACA,EACA,EACA,EACA,GACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,IACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,EACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,GACC,EACD,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,EACA,KACC,IACA,IACD,IACA,KACC,EACD,EACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,GACA,IACC,IACD,GACC,GACD,KACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,KACC,KACD,KACC,GACD,KACA,EACA,EACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,GACA,KACC,KACD,GACC,GACD,KACA,EACA,EACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,MACC,KACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,KACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,IACA,EACA,GACC,GACD,IACC,GACD,KACA,EACA,EACA,IAGAsC,EAAqB,CACvB,IAAItC,EACF,EACA,EACA,EACA,EACA,IACA,IACC,GACA,EACD,IACA,EACA,EACA,EACA,EACA,GACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,KACA,IACD,IACA,IACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,KAAM,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,MACnE,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,KACA,KACD,IACA,GACC,EACD,EACA,EACA,GACA,MAEF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,MACpE,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,EACD,MACC,IACD,GACC,GACD,KACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,EACD,MACC,IACD,KACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,GACA,GACC,KACD,GACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,EACA,KACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,IACA,MACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,GACA,EACA,MACC,GACD,IACC,GACD,KACA,EACA,EACA,IA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5C,GAAX/lK,EACFo9H,EAAIsL,MAAQ5tE,EAAK4tE,MACR7pI,KAAK01G,IAAI6oB,EAAIsL,QAAS,GAAK,IACpCtL,EAAIsL,MAAQ5tE,EAAK4tE,OACJ,GAAX1oI,IACFo9H,EAAI2Z,MAAQv+I,EACZ4kI,EAAI0Z,WAAa70I,EAErB,CACA,IAAIglK,EAAiB,CACnB,IAAIjB,EACF,EACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,MACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,EACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,EACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,EACA,EACA,EACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,IACA,IACA,EACA,IACA,EACA,EACA,IACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,IACA,EACA,EACA,IACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,IACA,EACA,EACA,EACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EA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ACF,CACA,IAAIj5C,GAASjkI,GAAOikI,OAChBC,GAAUlkI,GAAOkkI,QACjBE,GAAapkI,GAAOokI,WACpBE,GAAStkI,GAAOskI,OAChB64C,GAAan9K,GAAOwkI,SACpB44C,GAAWp9K,GAAO+kI,OAGtB,SAASs4C,KACP,IAAIpH,EACAt2E,EACA/7F,EACJvG,KAAKiuI,WAAa,SAAS4qC,EAAO3qC,EAAK/7F,GACrCymI,EAAOC,EACPv2E,EAAK4rC,EACL3nI,EAAI4rC,CACN,EACA,IAAI8tI,EAAc,EACdC,EAAa,EACbC,EAAW,EACXC,EAAiB,EACjBC,EAAgBL,GAAOK,cACvBC,EAAeN,GAAOM,aACtBC,EAAgBF,EAAgB,EAAI,EAAI,EAAI,EAAI,EAChDG,EAAiBD,EAAgB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EACjFE,EAAgB,IAChBC,EAAgB,GAChBC,EAAiB,GACjBC,EAAa,KACbC,EAAU,OACVC,EAAU,OACVC,EAAc,CAChB,EACA,MACA,MACA,IACA,MACA,IACA,IACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEF,SAASC,EAAOC,EAAIxR,GAIlB,GAHAwR,EAAG7yB,gBACH6yB,EAAGp9B,KAAO4rB,EACVwR,EAAGryJ,SACCqyJ,EAAGryJ,KAAOqyJ,EAAG/yB,QAGb+yB,EAAGniD,IAAMmiD,EAAGhjK,OACdgjK,EAAG9yB,IAAI8yB,EAAGniD,KAAOmiD,EAAGp9B,IACpBo9B,EAAGniD,MACHmiD,EAAGryJ,KAAO,GAERqyJ,EAAGniD,KAAOmiD,EAAGhjK,MAAM,CACrB,IAAK,IAAI/X,EAAI,EAAGA,EAAI+6K,EAAGhjK,KAAM/X,GAAK,EAChC+6K,EAAG9yB,IAAIjoJ,EAAI,GAAK+6K,EAAG9yB,IAAIjoJ,GAEzB+6K,EAAG/yB,MAAQ,EACX+yB,EAAGniD,KAAO,CACZ,CACF,CACA,SAASoiD,EAAcD,EAAIt2I,GACzB,KAAIs2I,EAAGniD,KAAO,GAEd,IAAK,IAAI54H,EAAI,EAAGA,EAAIm6K,IAAiBn6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","sources":["webpack://src/./node_modules/axios/index.js","webpack://src/./node_modules/axios/lib/adapters/xhr.js","webpack://src/./node_modules/axios/lib/axios.js","webpack://src/./node_modules/axios/lib/cancel/Cancel.js","webpack://src/./node_modules/axios/lib/cancel/CancelToken.js","webpack://src/./node_modules/axios/lib/cancel/isCancel.js","webpack://src/./node_modules/axios/lib/core/Axios.js","webpack://src/./node_modules/axios/lib/core/InterceptorManager.js","webpack://src/./node_modules/axios/lib/core/buildFullPath.js","webpack://src/./node_modules/axios/lib/core/createError.js","webpack://src/./node_modules/axios/lib/core/dispatchRequest.js","webpack://src/./node_modules/axios/lib/core/enhanceError.js","webpack://src/./node_modules/axios/lib/core/mergeConfig.js","webpack://src/./node_modules/axios/lib/core/settle.js","webpack://src/./node_modules/axios/lib/core/transformData.js","webpack://src/./node_modules/axios/lib/defaults.js","webpack://src/./node_modules/axios/lib/helpers/bind.js","webpack://src/./node_modules/axios/lib/helpers/buildURL.js","webpack://src/./node_modules/axios/lib/helpers/combineURLs.js","webpack://src/./node_modules/axios/lib/helpers/cookies.js","webpack://src/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://src/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://src/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://src/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://src/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://src/./node_modules/axios/lib/helpers/spread.js","webpack://src/./node_modules/axios/lib/utils.js","webpack://src/./js/compatibility.ts","webpack://src/./node_modules/vue-loader/dist/exportHelper.js","webpack://src/./node_modules/core-js/internals/a-callable.js","webpack://src/./node_modules/core-js/internals/an-object.js","webpack://src/./node_modules/core-js/internals/array-includes.js","webpack://src/./node_modules/core-js/internals/array-set-length.js","webpack://src/./node_modules/core-js/internals/classof-raw.js","webpack://src/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://src/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://src/./node_modules/core-js/internals/create-property-descriptor.js","webpack://src/./node_modules/core-js/internals/define-built-in.js","webpack://src/./node_modules/core-js/internals/define-global-property.js","webpack://src/./node_modules/core-js/internals/descriptors.js","webpack://src/./node_modules/core-js/internals/document-create-element.js","webpack://src/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://src/./node_modules/core-js/internals/engine-user-agent.js","webpack://src/./node_modules/core-js/internals/engine-v8-version.js","webpack://src/./node_modules/core-js/internals/enum-bug-keys.js","webpack://src/./node_modules/core-js/internals/export.js","webpack://src/./node_modules/core-js/internals/fails.js","webpack://src/./node_modules/core-js/internals/function-bind-native.js","webpack://src/./node_modules/core-js/internals/function-call.js","webpack://src/./node_modules/core-js/internals/function-name.js","webpack://src/./node_modules/core-js/internals/function-uncurry-this.js","webpack://src/./node_modules/core-js/internals/get-built-in.js","webpack://src/./node_modules/core-js/internals/get-method.js","webpack://src/./node_modules/core-js/internals/global.js","webpack://src/./node_modules/core-js/internals/has-own-property.js","webpack://src/./node_modules/core-js/internals/hidden-keys.js","webpack://src/./node_modules/core-js/internals/ie8-dom-define.js","webpack://src/./node_modules/core-js/internals/indexed-object.js","webpack://src/./node_modules/core-js/internals/inspect-source.js","webpack://src/./node_modules/core-js/internals/internal-state.js","webpack://src/./node_modules/core-js/internals/is-array.js","webpack://src/./node_modules/core-js/internals/is-callable.js","webpack://src/./node_modules/core-js/internals/is-forced.js","webpack://src/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://src/./node_modules/core-js/internals/is-object.js","webpack://src/./node_modules/core-js/internals/is-pure.js","webpack://src/./node_modules/core-js/internals/is-symbol.js","webpack://src/./node_modules/core-js/internals/length-of-array-like.js","webpack://src/./node_modules/core-js/internals/make-built-in.js","webpack://src/./node_modules/core-js/internals/math-trunc.js","webpack://src/./node_modules/core-js/internals/object-define-property.js","webpack://src/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://src/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://src/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://src/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://src/./node_modules/core-js/internals/object-keys-internal.js","webpack://src/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://src/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://src/./node_modules/core-js/internals/own-keys.js","webpack://src/./node_modules/core-js/internals/require-object-coercible.js","webpack://src/./node_modules/core-js/internals/shared-key.js","webpack://src/./node_modules/core-js/internals/shared-store.js","webpack://src/./node_modules/core-js/internals/shared.js","webpack://src/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://src/./node_modules/core-js/internals/to-absolute-index.js","webpack://src/./node_modules/core-js/internals/to-indexed-object.js","webpack://src/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://src/./node_modules/core-js/internals/to-length.js","webpack://src/./node_modules/core-js/internals/to-object.js","webpack://src/./node_modules/core-js/internals/to-primitive.js","webpack://src/./node_modules/core-js/internals/to-property-key.js","webpack://src/./node_modules/core-js/internals/try-to-string.js","webpack://src/./node_modules/core-js/internals/uid.js","webpack://src/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://src/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://src/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://src/./node_modules/core-js/internals/well-known-symbol.js","webpack://src/./node_modules/core-js/modules/es.array.push.js","webpack://src/webpack/bootstrap","webpack://src/webpack/runtime/compat get default export","webpack://src/webpack/runtime/define property getters","webpack://src/webpack/runtime/global","webpack://src/webpack/runtime/hasOwnProperty shorthand","webpack://src/./node_modules/@vue/compat/dist/vue.runtime.esm-bundler.js","webpack://src/./js/components/ChatComponent.vue?e262","webpack://src/./js/components/ChatComponent.vue","webpack://src/./node_modules/vue-advanced-chat/dist/vue-advanced-chat.es.js","webpack://src/./js/components/ChatComponent.vue?ef42","webpack://src/./js/components/NotificationsBell.vue?641f","webpack://src/./js/components/NotificationsBell.vue","webpack://src/./js/components/sub/NotificationMessage.vue?cc67","webpack://src/./js/components/sub/NotificationMessage.vue","webpack://src/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://src/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://src/./node_modules/date-fns/esm/toDate/index.js","webpack://src/./node_modules/date-fns/esm/startOfDay/index.js","webpack://src/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://src/./node_modules/date-fns/esm/isDate/index.js","webpack://src/./node_modules/date-fns/esm/isValid/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://src/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://src/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://src/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://src/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://src/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://src/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://src/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://src/./node_modules/date-fns/esm/format/index.js","webpack://src/./node_modules/date-fns/esm/formatRelative/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/match/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/index.js","webpack://src/./js/components/sub/NotificationMessage.vue?4cf0","webpack://src/./js/components/NotificationsBell.vue?67bf","webpack://src/./js/video/constants.ts","webpack://src/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://src/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://src/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://src/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://src/./js/video/utils.ts","webpack://src/./js/video/VideoPlayer.ts","webpack://src/./js/video/SyncVideoPlayer.ts","webpack://src/./js/video/VideoComponent.vue?c30e","webpack://src/./js/video/VideoComponent.vue","webpack://src/./js/video/VideoComponent.vue?eef0","webpack://src/./js/main.ts"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request.onreadystatechange = function handleLoad() {\n      if (!request || request.readyState !== 4) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  var valueFromConfig2Keys = ['url', 'method', 'data'];\n  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n  var defaultToConfig2Keys = [\n    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n  ];\n  var directMergeKeys = ['validateStatus'];\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    }\n  });\n\n  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  utils.forEach(directMergeKeys, function merge(prop) {\n    if (prop in config2) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  var axiosKeys = valueFromConfig2Keys\n    .concat(mergeDeepPropertiesKeys)\n    .concat(defaultToConfig2Keys)\n    .concat(directMergeKeys);\n\n  var otherKeys = Object\n    .keys(config1)\n    .concat(Object.keys(config2))\n    .filter(function filterAxiosKeys(key) {\n      return axiosKeys.indexOf(key) === -1;\n    });\n\n  utils.forEach(otherKeys, mergeDeepProperties);\n\n  return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (toString.call(val) !== '[object Object]') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM\n};\n","window.addEventListener(\"DOMContentLoaded\", () => {\n\n    const testVideo = document.createElement(\"video\");\n    if (testVideo.canPlayType) {\n        // Check for Webm support\n        const webm = \"\" !== testVideo.canPlayType('video/webm; codecs=\"vp8, vorbis\"');\n        if (!webm){\n            const container = document.getElementById(\"content\");\n            if(container){\n                const p = document.createElement(\"p\");\n                p.classList.add(\"warning\");\n                container.prepend(p);\n                p.innerHTML = `\n                    Votre navigateur n'est pas compatible avec le format video <abbr title=\"WebM est un format de fichier multimédia ouvert, principalement destiné à un usage sur le web.\">WebM</abbr> des cours en direct.\n                    Veuillez téléchargez Firefox ou Google Chrome dans leur dernière version.\n                `;\n            }\n        }\n        \n    }\n});","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = global[TARGET] && global[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.35.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.35.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","/**\n* @vue/compat v3.4.15\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nfunction makeMap(str, expectsLowerCase) {\n  const set = new Set(str.split(\",\"));\n  return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty$1.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n  const s = str ? `on${capitalize(str)}` : ``;\n  return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](arg);\n  }\n};\nconst def = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  let ret = \"\";\n  if (!styles || isString(styles)) {\n    return ret;\n  }\n  for (const key in styles) {\n    const value = styles[key];\n    const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n    if (isString(value) || typeof value === \"number\") {\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props)\n    return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length)\n    return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b)\n    return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (val && val.__v_isRef) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nfunction warn$2(msg, ...args) {\n  console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$2(`cannot run an inactive effect scope.`);\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    activeEffectScope = this;\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this._active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n      this._active = false;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n  if (scope && scope.active) {\n    scope.effects.push(effect);\n  }\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$2(\n      `onScopeDispose() is called when there is no active effect scope to be associated with.`\n    );\n  }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n  constructor(fn, trigger, scheduler, scope) {\n    this.fn = fn;\n    this.trigger = trigger;\n    this.scheduler = scheduler;\n    this.active = true;\n    this.deps = [];\n    /**\n     * @internal\n     */\n    this._dirtyLevel = 2;\n    /**\n     * @internal\n     */\n    this._trackId = 0;\n    /**\n     * @internal\n     */\n    this._runnings = 0;\n    /**\n     * @internal\n     */\n    this._shouldSchedule = false;\n    /**\n     * @internal\n     */\n    this._depsLength = 0;\n    recordEffectScope(this, scope);\n  }\n  get dirty() {\n    if (this._dirtyLevel === 1) {\n      pauseTracking();\n      for (let i = 0; i < this._depsLength; i++) {\n        const dep = this.deps[i];\n        if (dep.computed) {\n          triggerComputed(dep.computed);\n          if (this._dirtyLevel >= 2) {\n            break;\n          }\n        }\n      }\n      if (this._dirtyLevel < 2) {\n        this._dirtyLevel = 0;\n      }\n      resetTracking();\n    }\n    return this._dirtyLevel >= 2;\n  }\n  set dirty(v) {\n    this._dirtyLevel = v ? 2 : 0;\n  }\n  run() {\n    this._dirtyLevel = 0;\n    if (!this.active) {\n      return this.fn();\n    }\n    let lastShouldTrack = shouldTrack;\n    let lastEffect = activeEffect;\n    try {\n      shouldTrack = true;\n      activeEffect = this;\n      this._runnings++;\n      preCleanupEffect(this);\n      return this.fn();\n    } finally {\n      postCleanupEffect(this);\n      this._runnings--;\n      activeEffect = lastEffect;\n      shouldTrack = lastShouldTrack;\n    }\n  }\n  stop() {\n    var _a;\n    if (this.active) {\n      preCleanupEffect(this);\n      postCleanupEffect(this);\n      (_a = this.onStop) == null ? void 0 : _a.call(this);\n      this.active = false;\n    }\n  }\n}\nfunction triggerComputed(computed) {\n  return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n  effect2._trackId++;\n  effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n  if (effect2.deps && effect2.deps.length > effect2._depsLength) {\n    for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n      cleanupDepEffect(effect2.deps[i], effect2);\n    }\n    effect2.deps.length = effect2._depsLength;\n  }\n}\nfunction cleanupDepEffect(dep, effect2) {\n  const trackId = dep.get(effect2);\n  if (trackId !== void 0 && effect2._trackId !== trackId) {\n    dep.delete(effect2);\n    if (dep.size === 0) {\n      dep.cleanup();\n    }\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect instanceof ReactiveEffect) {\n    fn = fn.effect.fn;\n  }\n  const _effect = new ReactiveEffect(fn, NOOP, () => {\n    if (_effect.dirty) {\n      _effect.run();\n    }\n  });\n  if (options) {\n    extend(_effect, options);\n    if (options.scope)\n      recordEffectScope(_effect, options.scope);\n  }\n  if (!options || !options.lazy) {\n    _effect.run();\n  }\n  const runner = _effect.run.bind(_effect);\n  runner.effect = _effect;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n  pauseScheduleStack++;\n}\nfunction resetScheduling() {\n  pauseScheduleStack--;\n  while (!pauseScheduleStack && queueEffectSchedulers.length) {\n    queueEffectSchedulers.shift()();\n  }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n  var _a;\n  if (dep.get(effect2) !== effect2._trackId) {\n    dep.set(effect2, effect2._trackId);\n    const oldDep = effect2.deps[effect2._depsLength];\n    if (oldDep !== dep) {\n      if (oldDep) {\n        cleanupDepEffect(oldDep, effect2);\n      }\n      effect2.deps[effect2._depsLength++] = dep;\n    } else {\n      effect2._depsLength++;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n    }\n  }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n  var _a;\n  pauseScheduling();\n  for (const effect2 of dep.keys()) {\n    if (effect2._dirtyLevel < dirtyLevel && dep.get(effect2) === effect2._trackId) {\n      const lastDirtyLevel = effect2._dirtyLevel;\n      effect2._dirtyLevel = dirtyLevel;\n      if (lastDirtyLevel === 0) {\n        effect2._shouldSchedule = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n        }\n        effect2.trigger();\n      }\n    }\n  }\n  scheduleEffects(dep);\n  resetScheduling();\n}\nfunction scheduleEffects(dep) {\n  for (const effect2 of dep.keys()) {\n    if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse) && dep.get(effect2) === effect2._trackId) {\n      effect2._shouldSchedule = false;\n      queueEffectSchedulers.push(effect2.scheduler);\n    }\n  }\n}\n\nconst createDep = (cleanup, computed) => {\n  const dep = /* @__PURE__ */ new Map();\n  dep.cleanup = cleanup;\n  dep.computed = computed;\n  return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n  if (shouldTrack && activeEffect) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n    }\n    trackEffect(\n      activeEffect,\n      dep,\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target,\n        type,\n        key\n      } : void 0\n    );\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  let deps = [];\n  if (type === \"clear\") {\n    deps = [...depsMap.values()];\n  } else if (key === \"length\" && isArray(target)) {\n    const newLength = Number(newValue);\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n        deps.push(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      deps.push(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          deps.push(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  pauseScheduling();\n  for (const dep of deps) {\n    if (dep) {\n      triggerEffects(\n        dep,\n        2,\n        !!(process.env.NODE_ENV !== \"production\") ? {\n          target,\n          type,\n          key,\n          newValue,\n          oldValue,\n          oldTarget\n        } : void 0\n      );\n    }\n  }\n  resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n  var _a;\n  return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      pauseScheduling();\n      const res = toRaw(this)[key].apply(this, args);\n      resetScheduling();\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction hasOwnProperty(key) {\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n  constructor(_isReadonly = false, _shallow = false) {\n    this._isReadonly = _isReadonly;\n    this._shallow = _shallow;\n  }\n  get(target, key, receiver) {\n    const isReadonly2 = this._isReadonly, shallow = this._shallow;\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return shallow;\n    } else if (key === \"__v_raw\") {\n      if (receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n      // this means the reciever is a user proxy of the reactive proxy\n      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n        return target;\n      }\n      return;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly2) {\n      if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n        return Reflect.get(arrayInstrumentations, key, receiver);\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n  constructor(shallow = false) {\n    super(false, shallow);\n  }\n  set(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!this._shallow) {\n      const isOldValueReadonly = isReadonly(oldValue);\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        if (isOldValueReadonly) {\n          return false;\n        } else {\n          oldValue.value = value;\n          return true;\n        }\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  }\n  deleteProperty(target, key) {\n    const hadKey = hasOwn(target, key);\n    const oldValue = target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) {\n      trigger(target, \"delete\", key, void 0, oldValue);\n    }\n    return result;\n  }\n  has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!isSymbol(key) || !builtInSymbols.has(key)) {\n      track(target, \"has\", key);\n    }\n    return result;\n  }\n  ownKeys(target) {\n    track(\n      target,\n      \"iterate\",\n      isArray(target) ? \"length\" : ITERATE_KEY\n    );\n    return Reflect.ownKeys(target);\n  }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n  constructor(shallow = false) {\n    super(true, shallow);\n  }\n  set(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$2(\n        `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n  deleteProperty(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$2(\n        `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n  true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (hasChanged(key, rawKey)) {\n      track(rawTarget, \"get\", key);\n    }\n    track(rawTarget, \"get\", rawKey);\n  }\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has(key, isReadonly = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (hasChanged(key, rawKey)) {\n      track(rawTarget, \"has\", key);\n    }\n    track(rawTarget, \"has\", rawKey);\n  }\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2 ? get2.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      console.warn(\n        `${capitalize(type)} operation ${key}failed: target is readonly.`,\n        toRaw(this)\n      );\n    }\n    return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      false\n    );\n    readonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      false\n    );\n    shallowInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      true\n    );\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      true\n    );\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nconst [\n  mutableInstrumentations,\n  readonlyInstrumentations,\n  shallowInstrumentations,\n  shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    console.warn(\n      `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n    );\n  }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      console.warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  def(value, \"__v_skip\", true);\n  return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nclass ComputedRefImpl {\n  constructor(getter, _setter, isReadonly, isSSR) {\n    this._setter = _setter;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this[\"__v_isReadonly\"] = false;\n    this.effect = new ReactiveEffect(\n      () => getter(this._value),\n      () => triggerRefValue(this, 1),\n      () => this.dep && scheduleEffects(this.dep)\n    );\n    this.effect.computed = this;\n    this.effect.active = this._cacheable = !isSSR;\n    this[\"__v_isReadonly\"] = isReadonly;\n  }\n  get value() {\n    const self = toRaw(this);\n    if (!self._cacheable || self.effect.dirty) {\n      if (hasChanged(self._value, self._value = self.effect.run())) {\n        triggerRefValue(self, 2);\n      }\n    }\n    trackRefValue(self);\n    if (self.effect._dirtyLevel >= 1) {\n      triggerRefValue(self, 1);\n    }\n    return self._value;\n  }\n  set value(newValue) {\n    this._setter(newValue);\n  }\n  // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n  get _dirty() {\n    return this.effect.dirty;\n  }\n  set _dirty(v) {\n    this.effect.dirty = v;\n  }\n  // #endregion\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  const onlyGetter = isFunction(getterOrOptions);\n  if (onlyGetter) {\n    getter = getterOrOptions;\n    setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n      console.warn(\"Write operation failed: computed value is readonly\");\n    } : NOOP;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n  if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n    cRef.effect.onTrack = debugOptions.onTrack;\n    cRef.effect.onTrigger = debugOptions.onTrigger;\n  }\n  return cRef;\n}\n\nfunction trackRefValue(ref2) {\n  if (shouldTrack && activeEffect) {\n    ref2 = toRaw(ref2);\n    trackEffect(\n      activeEffect,\n      ref2.dep || (ref2.dep = createDep(\n        () => ref2.dep = void 0,\n        ref2 instanceof ComputedRefImpl ? ref2 : void 0\n      )),\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target: ref2,\n        type: \"get\",\n        key: \"value\"\n      } : void 0\n    );\n  }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 2, newVal) {\n  ref2 = toRaw(ref2);\n  const dep = ref2.dep;\n  if (dep) {\n    triggerEffects(\n      dep,\n      dirtyLevel,\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target: ref2,\n        type: \"set\",\n        key: \"value\",\n        newValue: newVal\n      } : void 0\n    );\n  }\n}\nfunction isRef(r) {\n  return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, __v_isShallow) {\n    this.__v_isShallow = __v_isShallow;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this._rawValue = __v_isShallow ? value : toRaw(value);\n    this._value = __v_isShallow ? value : toReactive(value);\n  }\n  get value() {\n    trackRefValue(this);\n    return this._value;\n  }\n  set value(newVal) {\n    const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n    newVal = useDirectValue ? newVal : toRaw(newVal);\n    if (hasChanged(newVal, this._rawValue)) {\n      this._rawValue = newVal;\n      this._value = useDirectValue ? newVal : toReactive(newVal);\n      triggerRefValue(this, 2, newVal);\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  triggerRefValue(ref2, 2, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this.dep = void 0;\n    this.__v_isRef = true;\n    const { get, set } = factory(\n      () => trackRefValue(this),\n      () => triggerRefValue(this)\n    );\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n    console.warn(`toRefs() expects a reactive object but received a plain one.`);\n  }\n  const ret = isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this.__v_isRef = true;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this.__v_isRef = true;\n    this.__v_isReadonly = true;\n  }\n  get value() {\n    return this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst TrackOpTypes = {\n  \"GET\": \"get\",\n  \"HAS\": \"has\",\n  \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n  \"SET\": \"set\",\n  \"ADD\": \"add\",\n  \"DELETE\": \"delete\",\n  \"CLEAR\": \"clear\"\n};\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n  stack.push(vnode);\n}\nfunction popWarningContext() {\n  stack.pop();\n}\nfunction warn$1(msg, ...args) {\n  pauseTracking();\n  const instance = stack.length ? stack[stack.length - 1].component : null;\n  const appWarnHandler = instance && instance.appContext.config.warnHandler;\n  const trace = getComponentTrace();\n  if (appWarnHandler) {\n    callWithErrorHandling(\n      appWarnHandler,\n      instance,\n      11,\n      [\n        msg + args.join(\"\"),\n        instance && instance.proxy,\n        trace.map(\n          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n        ).join(\"\\n\"),\n        trace\n      ]\n    );\n  } else {\n    const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n    if (trace.length && // avoid spamming console during tests\n    true) {\n      warnArgs.push(`\n`, ...formatTrace(trace));\n    }\n    console.warn(...warnArgs);\n  }\n  resetTracking();\n}\nfunction getComponentTrace() {\n  let currentVNode = stack[stack.length - 1];\n  if (!currentVNode) {\n    return [];\n  }\n  const normalizedStack = [];\n  while (currentVNode) {\n    const last = normalizedStack[0];\n    if (last && last.vnode === currentVNode) {\n      last.recurseCount++;\n    } else {\n      normalizedStack.push({\n        vnode: currentVNode,\n        recurseCount: 0\n      });\n    }\n    const parentInstance = currentVNode.component && currentVNode.component.parent;\n    currentVNode = parentInstance && parentInstance.vnode;\n  }\n  return normalizedStack;\n}\nfunction formatTrace(trace) {\n  const logs = [];\n  trace.forEach((entry, i) => {\n    logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n  });\n  return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n  const isRoot = vnode.component ? vnode.component.parent == null : false;\n  const open = ` at <${formatComponentName(\n    vnode.component,\n    vnode.type,\n    isRoot\n  )}`;\n  const close = `>` + postfix;\n  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n  const res = [];\n  const keys = Object.keys(props);\n  keys.slice(0, 3).forEach((key) => {\n    res.push(...formatProp(key, props[key]));\n  });\n  if (keys.length > 3) {\n    res.push(` ...`);\n  }\n  return res;\n}\nfunction formatProp(key, value, raw) {\n  if (isString(value)) {\n    value = JSON.stringify(value);\n    return raw ? value : [`${key}=${value}`];\n  } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n    return raw ? value : [`${key}=${value}`];\n  } else if (isRef(value)) {\n    value = formatProp(key, toRaw(value.value), true);\n    return raw ? value : [`${key}=Ref<`, value, `>`];\n  } else if (isFunction(value)) {\n    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n  } else {\n    value = toRaw(value);\n    return raw ? value : [`${key}=`, value];\n  }\n}\nfunction assertNumber(val, type) {\n  if (!!!(process.env.NODE_ENV !== \"production\"))\n    return;\n  if (val === void 0) {\n    return;\n  } else if (typeof val !== \"number\") {\n    warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n  } else if (isNaN(val)) {\n    warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n  }\n}\n\nconst ErrorCodes = {\n  \"SETUP_FUNCTION\": 0,\n  \"0\": \"SETUP_FUNCTION\",\n  \"RENDER_FUNCTION\": 1,\n  \"1\": \"RENDER_FUNCTION\",\n  \"WATCH_GETTER\": 2,\n  \"2\": \"WATCH_GETTER\",\n  \"WATCH_CALLBACK\": 3,\n  \"3\": \"WATCH_CALLBACK\",\n  \"WATCH_CLEANUP\": 4,\n  \"4\": \"WATCH_CLEANUP\",\n  \"NATIVE_EVENT_HANDLER\": 5,\n  \"5\": \"NATIVE_EVENT_HANDLER\",\n  \"COMPONENT_EVENT_HANDLER\": 6,\n  \"6\": \"COMPONENT_EVENT_HANDLER\",\n  \"VNODE_HOOK\": 7,\n  \"7\": \"VNODE_HOOK\",\n  \"DIRECTIVE_HOOK\": 8,\n  \"8\": \"DIRECTIVE_HOOK\",\n  \"TRANSITION_HOOK\": 9,\n  \"9\": \"TRANSITION_HOOK\",\n  \"APP_ERROR_HANDLER\": 10,\n  \"10\": \"APP_ERROR_HANDLER\",\n  \"APP_WARN_HANDLER\": 11,\n  \"11\": \"APP_WARN_HANDLER\",\n  \"FUNCTION_REF\": 12,\n  \"12\": \"FUNCTION_REF\",\n  \"ASYNC_COMPONENT_LOADER\": 13,\n  \"13\": \"ASYNC_COMPONENT_LOADER\",\n  \"SCHEDULER\": 14,\n  \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  let res;\n  try {\n    res = args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n  return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  const values = [];\n  for (let i = 0; i < fn.length; i++) {\n    values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n  }\n  return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    const appErrorHandler = instance.appContext.config.errorHandler;\n    if (appErrorHandler) {\n      callWithErrorHandling(\n        appErrorHandler,\n        null,\n        10,\n        [err, exposedInstance, errorInfo]\n      );\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const info = ErrorTypeStrings$1[type];\n    if (contextVNode) {\n      pushWarningContext(contextVNode);\n    }\n    warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n    if (contextVNode) {\n      popWarningContext();\n    }\n    if (throwInDev) {\n      throw err;\n    } else {\n      console.error(err);\n    }\n  } else {\n    console.error(err);\n  }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJob = queue[middle];\n    const middleJobId = getId(middleJob);\n    if (middleJobId < id || middleJobId === id && middleJob.pre) {\n      start = middle + 1;\n    } else {\n      end = middle;\n    }\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!queue.length || !queue.includes(\n    job,\n    isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n  )) {\n    if (job.id == null) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(job.id), 0, job);\n    }\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!isFlushing && !isFlushPending) {\n    isFlushPending = true;\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction invalidateJob(job) {\n  const i = queue.indexOf(job);\n  if (i > flushIndex) {\n    queue.splice(i, 1);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!isArray(cb)) {\n    if (!activePostFlushCbs || !activePostFlushCbs.includes(\n      cb,\n      cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n    )) {\n      pendingPostFlushCbs.push(cb);\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.pre) {\n      if (instance && cb.id !== instance.uid) {\n        continue;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      cb();\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)].sort(\n      (a, b) => getId(a) - getId(b)\n    );\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      seen = seen || /* @__PURE__ */ new Map();\n    }\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n        continue;\n      }\n      activePostFlushCbs[postFlushIndex]();\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n  const diff = getId(a) - getId(b);\n  if (diff === 0) {\n    if (a.pre && !b.pre)\n      return -1;\n    if (b.pre && !a.pre)\n      return 1;\n  }\n  return diff;\n};\nfunction flushJobs(seen) {\n  isFlushPending = false;\n  isFlushing = true;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  queue.sort(comparator);\n  const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && job.active !== false) {\n        if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n          continue;\n        }\n        callWithErrorHandling(job, null, 14);\n      }\n    }\n  } finally {\n    flushIndex = 0;\n    queue.length = 0;\n    flushPostFlushCbs(seen);\n    isFlushing = false;\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n  if (!seen.has(fn)) {\n    seen.set(fn, 1);\n  } else {\n    const count = seen.get(fn);\n    if (count > RECURSION_LIMIT) {\n      const instance = fn.ownerInstance;\n      const componentName = instance && getComponentName(instance.type);\n      handleError(\n        `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n        null,\n        10\n      );\n      return true;\n    } else {\n      seen.set(fn, count + 1);\n    }\n  }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  getGlobalThis().__VUE_HMR_RUNTIME__ = {\n    createRecord: tryWrap(createRecord),\n    rerender: tryWrap(rerender),\n    reload: tryWrap(reload)\n  };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n  const id = instance.type.__hmrId;\n  let record = map.get(id);\n  if (!record) {\n    createRecord(id, instance.type);\n    record = map.get(id);\n  }\n  record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n  map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n  if (map.has(id)) {\n    return false;\n  }\n  map.set(id, {\n    initialDef: normalizeClassComponent(initialDef),\n    instances: /* @__PURE__ */ new Set()\n  });\n  return true;\n}\nfunction normalizeClassComponent(component) {\n  return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n  const record = map.get(id);\n  if (!record) {\n    return;\n  }\n  record.initialDef.render = newRender;\n  [...record.instances].forEach((instance) => {\n    if (newRender) {\n      instance.render = newRender;\n      normalizeClassComponent(instance.type).render = newRender;\n    }\n    instance.renderCache = [];\n    isHmrUpdating = true;\n    instance.effect.dirty = true;\n    instance.update();\n    isHmrUpdating = false;\n  });\n}\nfunction reload(id, newComp) {\n  const record = map.get(id);\n  if (!record)\n    return;\n  newComp = normalizeClassComponent(newComp);\n  updateComponentDef(record.initialDef, newComp);\n  const instances = [...record.instances];\n  for (const instance of instances) {\n    const oldComp = normalizeClassComponent(instance.type);\n    if (!hmrDirtyComponents.has(oldComp)) {\n      if (oldComp !== record.initialDef) {\n        updateComponentDef(oldComp, newComp);\n      }\n      hmrDirtyComponents.add(oldComp);\n    }\n    instance.appContext.propsCache.delete(instance.type);\n    instance.appContext.emitsCache.delete(instance.type);\n    instance.appContext.optionsCache.delete(instance.type);\n    if (instance.ceReload) {\n      hmrDirtyComponents.add(oldComp);\n      instance.ceReload(newComp.styles);\n      hmrDirtyComponents.delete(oldComp);\n    } else if (instance.parent) {\n      instance.parent.effect.dirty = true;\n      queueJob(instance.parent.update);\n    } else if (instance.appContext.reload) {\n      instance.appContext.reload();\n    } else if (typeof window !== \"undefined\") {\n      window.location.reload();\n    } else {\n      console.warn(\n        \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n      );\n    }\n  }\n  queuePostFlushCb(() => {\n    for (const instance of instances) {\n      hmrDirtyComponents.delete(\n        normalizeClassComponent(instance.type)\n      );\n    }\n  });\n}\nfunction updateComponentDef(oldComp, newComp) {\n  extend(oldComp, newComp);\n  for (const key in oldComp) {\n    if (key !== \"__file\" && !(key in newComp)) {\n      delete oldComp[key];\n    }\n  }\n}\nfunction tryWrap(fn) {\n  return (id, arg) => {\n    try {\n      return fn(id, arg);\n    } catch (e) {\n      console.error(e);\n      console.warn(\n        `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n      );\n    }\n  };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$2(event, ...args) {\n  if (devtools$1) {\n    devtools$1.emit(event, ...args);\n  } else if (!devtoolsNotInstalled) {\n    buffer.push({ event, args });\n  }\n}\nfunction setDevtoolsHook$1(hook, target) {\n  var _a, _b;\n  devtools$1 = hook;\n  if (devtools$1) {\n    devtools$1.enabled = true;\n    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n    buffer = [];\n  } else if (\n    // handle late devtools injection - only do this if we are in an actual\n    // browser environment to avoid the timer handle stalling test runner exit\n    // (#4815)\n    typeof window !== \"undefined\" && // some envs mock window but not fully\n    window.HTMLElement && // also exclude jsdom\n    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n  ) {\n    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n    replay.push((newHook) => {\n      setDevtoolsHook$1(newHook, target);\n    });\n    setTimeout(() => {\n      if (!devtools$1) {\n        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n        devtoolsNotInstalled = true;\n        buffer = [];\n      }\n    }, 3e3);\n  } else {\n    devtoolsNotInstalled = true;\n    buffer = [];\n  }\n}\nfunction devtoolsInitApp(app, version) {\n  emit$2(\"app:init\" /* APP_INIT */, app, version, {\n    Fragment,\n    Text,\n    Comment,\n    Static\n  });\n}\nfunction devtoolsUnmountApp(app) {\n  emit$2(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n  if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n  !devtools$1.cleanupBuffer(component)) {\n    _devtoolsComponentRemoved(component);\n  }\n};\nfunction createDevtoolsComponentHook(hook) {\n  return (component) => {\n    emit$2(\n      hook,\n      component.appContext.app,\n      component.uid,\n      component.parent ? component.parent.uid : void 0,\n      component\n    );\n  };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n  return (component, type, time) => {\n    emit$2(hook, component.appContext.app, component.uid, component, type, time);\n  };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n  emit$2(\n    \"component:emit\" /* COMPONENT_EMIT */,\n    component.appContext.app,\n    component,\n    event,\n    params\n  );\n}\n\nconst DeprecationTypes$1 = {\n  \"GLOBAL_MOUNT\": \"GLOBAL_MOUNT\",\n  \"GLOBAL_MOUNT_CONTAINER\": \"GLOBAL_MOUNT_CONTAINER\",\n  \"GLOBAL_EXTEND\": \"GLOBAL_EXTEND\",\n  \"GLOBAL_PROTOTYPE\": \"GLOBAL_PROTOTYPE\",\n  \"GLOBAL_SET\": \"GLOBAL_SET\",\n  \"GLOBAL_DELETE\": \"GLOBAL_DELETE\",\n  \"GLOBAL_OBSERVABLE\": \"GLOBAL_OBSERVABLE\",\n  \"GLOBAL_PRIVATE_UTIL\": \"GLOBAL_PRIVATE_UTIL\",\n  \"CONFIG_SILENT\": \"CONFIG_SILENT\",\n  \"CONFIG_DEVTOOLS\": \"CONFIG_DEVTOOLS\",\n  \"CONFIG_KEY_CODES\": \"CONFIG_KEY_CODES\",\n  \"CONFIG_PRODUCTION_TIP\": \"CONFIG_PRODUCTION_TIP\",\n  \"CONFIG_IGNORED_ELEMENTS\": \"CONFIG_IGNORED_ELEMENTS\",\n  \"CONFIG_WHITESPACE\": \"CONFIG_WHITESPACE\",\n  \"CONFIG_OPTION_MERGE_STRATS\": \"CONFIG_OPTION_MERGE_STRATS\",\n  \"INSTANCE_SET\": \"INSTANCE_SET\",\n  \"INSTANCE_DELETE\": \"INSTANCE_DELETE\",\n  \"INSTANCE_DESTROY\": \"INSTANCE_DESTROY\",\n  \"INSTANCE_EVENT_EMITTER\": \"INSTANCE_EVENT_EMITTER\",\n  \"INSTANCE_EVENT_HOOKS\": \"INSTANCE_EVENT_HOOKS\",\n  \"INSTANCE_CHILDREN\": \"INSTANCE_CHILDREN\",\n  \"INSTANCE_LISTENERS\": \"INSTANCE_LISTENERS\",\n  \"INSTANCE_SCOPED_SLOTS\": \"INSTANCE_SCOPED_SLOTS\",\n  \"INSTANCE_ATTRS_CLASS_STYLE\": \"INSTANCE_ATTRS_CLASS_STYLE\",\n  \"OPTIONS_DATA_FN\": \"OPTIONS_DATA_FN\",\n  \"OPTIONS_DATA_MERGE\": \"OPTIONS_DATA_MERGE\",\n  \"OPTIONS_BEFORE_DESTROY\": \"OPTIONS_BEFORE_DESTROY\",\n  \"OPTIONS_DESTROYED\": \"OPTIONS_DESTROYED\",\n  \"WATCH_ARRAY\": \"WATCH_ARRAY\",\n  \"PROPS_DEFAULT_THIS\": \"PROPS_DEFAULT_THIS\",\n  \"V_ON_KEYCODE_MODIFIER\": \"V_ON_KEYCODE_MODIFIER\",\n  \"CUSTOM_DIR\": \"CUSTOM_DIR\",\n  \"ATTR_FALSE_VALUE\": \"ATTR_FALSE_VALUE\",\n  \"ATTR_ENUMERATED_COERCION\": \"ATTR_ENUMERATED_COERCION\",\n  \"TRANSITION_CLASSES\": \"TRANSITION_CLASSES\",\n  \"TRANSITION_GROUP_ROOT\": \"TRANSITION_GROUP_ROOT\",\n  \"COMPONENT_ASYNC\": \"COMPONENT_ASYNC\",\n  \"COMPONENT_FUNCTIONAL\": \"COMPONENT_FUNCTIONAL\",\n  \"COMPONENT_V_MODEL\": \"COMPONENT_V_MODEL\",\n  \"RENDER_FUNCTION\": \"RENDER_FUNCTION\",\n  \"FILTERS\": \"FILTERS\",\n  \"PRIVATE_APIS\": \"PRIVATE_APIS\"\n};\nconst deprecationData = {\n  [\"GLOBAL_MOUNT\"]: {\n    message: `The global app bootstrapping API has changed: vm.$mount() and the \"el\" option have been removed. Use createApp(RootComponent).mount() instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`\n  },\n  [\"GLOBAL_MOUNT_CONTAINER\"]: {\n    message: `Vue detected directives on the mount container. In Vue 3, the container is no longer considered part of the template and will not be processed/replaced.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`\n  },\n  [\"GLOBAL_EXTEND\"]: {\n    message: `Vue.extend() has been removed in Vue 3. Use defineComponent() instead.`,\n    link: `https://vuejs.org/api/general.html#definecomponent`\n  },\n  [\"GLOBAL_PROTOTYPE\"]: {\n    message: `Vue.prototype is no longer available in Vue 3. Use app.config.globalProperties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`\n  },\n  [\"GLOBAL_SET\"]: {\n    message: `Vue.set() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"GLOBAL_DELETE\"]: {\n    message: `Vue.delete() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"GLOBAL_OBSERVABLE\"]: {\n    message: `Vue.observable() has been removed. Use \\`import { reactive } from \"vue\"\\` from Composition API instead.`,\n    link: `https://vuejs.org/api/reactivity-core.html#reactive`\n  },\n  [\"GLOBAL_PRIVATE_UTIL\"]: {\n    message: `Vue.util has been removed. Please refactor to avoid its usage since it was an internal API even in Vue 2.`\n  },\n  [\"CONFIG_SILENT\"]: {\n    message: `config.silent has been removed because it is not good practice to intentionally suppress warnings. You can use your browser console's filter features to focus on relevant messages.`\n  },\n  [\"CONFIG_DEVTOOLS\"]: {\n    message: `config.devtools has been removed. To enable devtools for production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,\n    link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`\n  },\n  [\"CONFIG_KEY_CODES\"]: {\n    message: `config.keyCodes has been removed. In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`\n  },\n  [\"CONFIG_PRODUCTION_TIP\"]: {\n    message: `config.productionTip has been removed.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`\n  },\n  [\"CONFIG_IGNORED_ELEMENTS\"]: {\n    message: () => {\n      let msg = `config.ignoredElements has been removed.`;\n      if (isRuntimeOnly()) {\n        msg += ` Pass the \"isCustomElement\" option to @vue/compiler-dom instead.`;\n      } else {\n        msg += ` Use config.isCustomElement instead.`;\n      }\n      return msg;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`\n  },\n  [\"CONFIG_WHITESPACE\"]: {\n    // this warning is only relevant in the full build when using runtime\n    // compilation, so it's put in the runtime compatConfig list.\n    message: `Vue 3 compiler's whitespace option will default to \"condense\" instead of \"preserve\". To suppress this warning, provide an explicit value for \\`config.compilerOptions.whitespace\\`.`\n  },\n  [\"CONFIG_OPTION_MERGE_STRATS\"]: {\n    message: `config.optionMergeStrategies no longer exposes internal strategies. Use custom merge functions instead.`\n  },\n  [\"INSTANCE_SET\"]: {\n    message: `vm.$set() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"INSTANCE_DELETE\"]: {\n    message: `vm.$delete() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"INSTANCE_DESTROY\"]: {\n    message: `vm.$destroy() has been removed. Use app.unmount() instead.`,\n    link: `https://vuejs.org/api/application.html#app-unmount`\n  },\n  [\"INSTANCE_EVENT_EMITTER\"]: {\n    message: `vm.$on/$once/$off() have been removed. Use an external event emitter library instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`\n  },\n  [\"INSTANCE_EVENT_HOOKS\"]: {\n    message: (event) => `\"${event}\" lifecycle events are no longer supported. From templates, use the \"vue:\" prefix instead of \"hook:\". For example, @${event} should be changed to @vue:${event.slice(5)}. From JavaScript, use Composition API to dynamically register lifecycle hooks.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`\n  },\n  [\"INSTANCE_CHILDREN\"]: {\n    message: `vm.$children has been removed. Consider refactoring your logic to avoid relying on direct access to child components.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/children.html`\n  },\n  [\"INSTANCE_LISTENERS\"]: {\n    message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are included in vm.$attrs and it is no longer necessary to separately use v-on=\"$listeners\" if you are already using v-bind=\"$attrs\". (Note: the Vue 3 behavior only applies if this compat config is disabled)`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`\n  },\n  [\"INSTANCE_SCOPED_SLOTS\"]: {\n    message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`\n  },\n  [\"INSTANCE_ATTRS_CLASS_STYLE\"]: {\n    message: (componentName) => `Component <${componentName || \"Anonymous\"}> has \\`inheritAttrs: false\\` but is relying on class/style fallthrough from parent. In Vue 3, class/style are now included in $attrs and will no longer fallthrough when inheritAttrs is false. If you are already using v-bind=\"$attrs\" on component root it should render the same end result. If you are binding $attrs to a non-root element and expecting class/style to fallthrough on root, you will need to now manually bind them on root via :class=\"$attrs.class\".`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`\n  },\n  [\"OPTIONS_DATA_FN\"]: {\n    message: `The \"data\" option can no longer be a plain object. Always use a function.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`\n  },\n  [\"OPTIONS_DATA_MERGE\"]: {\n    message: (key) => `Detected conflicting key \"${key}\" when merging data option values. In Vue 3, data keys are merged shallowly and will override one another.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`\n  },\n  [\"OPTIONS_BEFORE_DESTROY\"]: {\n    message: `\\`beforeDestroy\\` has been renamed to \\`beforeUnmount\\`.`\n  },\n  [\"OPTIONS_DESTROYED\"]: {\n    message: `\\`destroyed\\` has been renamed to \\`unmounted\\`.`\n  },\n  [\"WATCH_ARRAY\"]: {\n    message: `\"watch\" option or vm.$watch on an array value will no longer trigger on array mutation unless the \"deep\" option is specified. If current usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"WATCH_ARRAY\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`\n  },\n  [\"PROPS_DEFAULT_THIS\"]: {\n    message: (key) => `props default value function no longer has access to \"this\". The compat build only offers access to this.$options.(found in prop \"${key}\")`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`\n  },\n  [\"CUSTOM_DIR\"]: {\n    message: (legacyHook, newHook) => `Custom directive hook \"${legacyHook}\" has been removed. Use \"${newHook}\" instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`\n  },\n  [\"V_ON_KEYCODE_MODIFIER\"]: {\n    message: `Using keyCode as v-on modifier is no longer supported. Use kebab-case key name modifiers instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`\n  },\n  [\"ATTR_FALSE_VALUE\"]: {\n    message: (name) => `Attribute \"${name}\" with v-bind value \\`false\\` will render ${name}=\"false\" instead of removing it in Vue 3. To remove the attribute, use \\`null\\` or \\`undefined\\` instead. If the usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"ATTR_FALSE_VALUE\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`\n  },\n  [\"ATTR_ENUMERATED_COERCION\"]: {\n    message: (name, value, coerced) => `Enumerated attribute \"${name}\" with v-bind value \\`${value}\\` will ${value === null ? `be removed` : `render the value as-is`} instead of coercing the value to \"${coerced}\" in Vue 3. Always use explicit \"true\" or \"false\" values for enumerated attributes. If the usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"ATTR_ENUMERATED_COERCION\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`\n  },\n  [\"TRANSITION_CLASSES\"]: {\n    message: ``\n    // this feature cannot be runtime-detected\n  },\n  [\"TRANSITION_GROUP_ROOT\"]: {\n    message: `<TransitionGroup> no longer renders a root <span> element by default if no \"tag\" prop is specified. If you do not rely on the span for styling, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"TRANSITION_GROUP_ROOT\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`\n  },\n  [\"COMPONENT_ASYNC\"]: {\n    message: (comp) => {\n      const name = getComponentName(comp);\n      return `Async component${name ? ` <${name}>` : `s`} should be explicitly created via \\`defineAsyncComponent()\\` in Vue 3. Plain functions will be treated as functional components in non-compat build. If you have already migrated all async component usage and intend to use plain functions for functional components, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"COMPONENT_ASYNC\"}: false })\n`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`\n  },\n  [\"COMPONENT_FUNCTIONAL\"]: {\n    message: (comp) => {\n      const name = getComponentName(comp);\n      return `Functional component${name ? ` <${name}>` : `s`} should be defined as a plain function in Vue 3. The \"functional\" option has been removed. NOTE: Before migrating to use plain functions for functional components, first make sure that all async components usage have been migrated and its compat behavior has been disabled.`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`\n  },\n  [\"COMPONENT_V_MODEL\"]: {\n    message: (comp) => {\n      const configMsg = `opt-in to Vue 3 behavior on a per-component basis with \\`compatConfig: { ${\"COMPONENT_V_MODEL\"}: false }\\`.`;\n      if (comp.props && (isArray(comp.props) ? comp.props.includes(\"modelValue\") : hasOwn(comp.props, \"modelValue\"))) {\n        return `Component declares \"modelValue\" prop, which is Vue 3 usage, but is running under Vue 2 compat v-model behavior. You can ${configMsg}`;\n      }\n      return `v-model usage on component has changed in Vue 3. Component that expects to work with v-model should now use the \"modelValue\" prop and emit the \"update:modelValue\" event. You can update the usage and then ${configMsg}`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\n  },\n  [\"RENDER_FUNCTION\"]: {\n    message: `Vue 3's render function API has changed. You can opt-in to the new API with:\n\n  configureCompat({ ${\"RENDER_FUNCTION\"}: false })\n\n  (This can also be done per-component via the \"compatConfig\" option.)`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`\n  },\n  [\"FILTERS\"]: {\n    message: `filters have been removed in Vue 3. The \"|\" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\n  },\n  [\"PRIVATE_APIS\"]: {\n    message: (name) => `\"${name}\" is a Vue 2 private API that no longer exists in Vue 3. If you are seeing this warning only due to a dependency, you can suppress this warning via { PRIVATE_APIS: 'suppress-warning' }.`\n  }\n};\nconst instanceWarned = /* @__PURE__ */ Object.create(null);\nconst warnCount = /* @__PURE__ */ Object.create(null);\nfunction warnDeprecation(key, instance, ...args) {\n  if (!!!(process.env.NODE_ENV !== \"production\")) {\n    return;\n  }\n  instance = instance || getCurrentInstance();\n  const config = getCompatConfigForKey(key, instance);\n  if (config === \"suppress-warning\") {\n    return;\n  }\n  const dupKey = key + args.join(\"\");\n  let compId = instance && formatComponentName(instance, instance.type);\n  if (compId === \"Anonymous\" && instance) {\n    compId = instance.uid;\n  }\n  const componentDupKey = dupKey + compId;\n  if (componentDupKey in instanceWarned) {\n    return;\n  }\n  instanceWarned[componentDupKey] = true;\n  if (dupKey in warnCount) {\n    warn$1(`(deprecation ${key}) (${++warnCount[dupKey] + 1})`);\n    return;\n  }\n  warnCount[dupKey] = 0;\n  const { message, link } = deprecationData[key];\n  warn$1(\n    `(deprecation ${key}) ${typeof message === \"function\" ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`\n  );\n  if (!isCompatEnabled(key, instance, true)) {\n    console.error(\n      `^ The above deprecation's compat behavior is disabled and will likely lead to runtime errors.`\n    );\n  }\n}\nconst globalCompatConfig = {\n  MODE: 2\n};\nfunction configureCompat$1(config) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateCompatConfig(config);\n  }\n  extend(globalCompatConfig, config);\n}\nconst seenConfigObjects = /* @__PURE__ */ new WeakSet();\nconst warnedInvalidKeys = {};\nfunction validateCompatConfig(config, instance) {\n  if (seenConfigObjects.has(config)) {\n    return;\n  }\n  seenConfigObjects.add(config);\n  for (const key of Object.keys(config)) {\n    if (key !== \"MODE\" && !(key in deprecationData) && !(key in warnedInvalidKeys)) {\n      if (key.startsWith(\"COMPILER_\")) {\n        if (isRuntimeOnly()) {\n          warn$1(\n            `Deprecation config \"${key}\" is compiler-specific and you are running a runtime-only build of Vue. This deprecation should be configured via compiler options in your build setup instead.\nDetails: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`\n          );\n        }\n      } else {\n        warn$1(`Invalid deprecation config \"${key}\".`);\n      }\n      warnedInvalidKeys[key] = true;\n    }\n  }\n  if (instance && config[\"OPTIONS_DATA_MERGE\"] != null) {\n    warn$1(\n      `Deprecation config \"${\"OPTIONS_DATA_MERGE\"}\" can only be configured globally.`\n    );\n  }\n}\nfunction getCompatConfigForKey(key, instance) {\n  const instanceConfig = instance && instance.type.compatConfig;\n  if (instanceConfig && key in instanceConfig) {\n    return instanceConfig[key];\n  }\n  return globalCompatConfig[key];\n}\nfunction isCompatEnabled(key, instance, enableForBuiltIn = false) {\n  if (!enableForBuiltIn && instance && instance.type.__isBuiltIn) {\n    return false;\n  }\n  const rawMode = getCompatConfigForKey(\"MODE\", instance) || 2;\n  const val = getCompatConfigForKey(key, instance);\n  const mode = isFunction(rawMode) ? rawMode(instance && instance.type) : rawMode;\n  if (mode === 2) {\n    return val !== false;\n  } else {\n    return val === true || val === \"suppress-warning\";\n  }\n}\nfunction assertCompatEnabled(key, instance, ...args) {\n  if (!isCompatEnabled(key, instance)) {\n    throw new Error(`${key} compat has been disabled.`);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnDeprecation(key, instance, ...args);\n  }\n}\nfunction softAssertCompatEnabled(key, instance, ...args) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnDeprecation(key, instance, ...args);\n  }\n  return isCompatEnabled(key, instance);\n}\nfunction checkCompatEnabled(key, instance, ...args) {\n  const enabled = isCompatEnabled(key, instance);\n  if (!!(process.env.NODE_ENV !== \"production\") && enabled) {\n    warnDeprecation(key, instance, ...args);\n  }\n  return enabled;\n}\n\nconst eventRegistryMap = /* @__PURE__ */ new WeakMap();\nfunction getRegistry(instance) {\n  let events = eventRegistryMap.get(instance);\n  if (!events) {\n    eventRegistryMap.set(instance, events = /* @__PURE__ */ Object.create(null));\n  }\n  return events;\n}\nfunction on(instance, event, fn) {\n  if (isArray(event)) {\n    event.forEach((e) => on(instance, e, fn));\n  } else {\n    if (event.startsWith(\"hook:\")) {\n      assertCompatEnabled(\n        \"INSTANCE_EVENT_HOOKS\",\n        instance,\n        event\n      );\n    } else {\n      assertCompatEnabled(\"INSTANCE_EVENT_EMITTER\", instance);\n    }\n    const events = getRegistry(instance);\n    (events[event] || (events[event] = [])).push(fn);\n  }\n  return instance.proxy;\n}\nfunction once(instance, event, fn) {\n  const wrapped = (...args) => {\n    off(instance, event, wrapped);\n    fn.call(instance.proxy, ...args);\n  };\n  wrapped.fn = fn;\n  on(instance, event, wrapped);\n  return instance.proxy;\n}\nfunction off(instance, event, fn) {\n  assertCompatEnabled(\"INSTANCE_EVENT_EMITTER\", instance);\n  const vm = instance.proxy;\n  if (!event) {\n    eventRegistryMap.set(instance, /* @__PURE__ */ Object.create(null));\n    return vm;\n  }\n  if (isArray(event)) {\n    event.forEach((e) => off(instance, e, fn));\n    return vm;\n  }\n  const events = getRegistry(instance);\n  const cbs = events[event];\n  if (!cbs) {\n    return vm;\n  }\n  if (!fn) {\n    events[event] = void 0;\n    return vm;\n  }\n  events[event] = cbs.filter((cb) => !(cb === fn || cb.fn === fn));\n  return vm;\n}\nfunction emit$1(instance, event, args) {\n  const cbs = getRegistry(instance)[event];\n  if (cbs) {\n    callWithAsyncErrorHandling(\n      cbs.map((cb) => cb.bind(instance.proxy)),\n      instance,\n      6,\n      args\n    );\n  }\n  return instance.proxy;\n}\n\nconst compatModelEventPrefix = `onModelCompat:`;\nconst warnedTypes = /* @__PURE__ */ new WeakSet();\nfunction convertLegacyVModelProps(vnode) {\n  const { type, shapeFlag, props, dynamicProps } = vnode;\n  const comp = type;\n  if (shapeFlag & 6 && props && \"modelValue\" in props) {\n    if (!isCompatEnabled(\n      \"COMPONENT_V_MODEL\",\n      // this is a special case where we want to use the vnode component's\n      // compat config instead of the current rendering instance (which is the\n      // parent of the component that exposes v-model)\n      { type }\n    )) {\n      return;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && !warnedTypes.has(comp)) {\n      pushWarningContext(vnode);\n      warnDeprecation(\"COMPONENT_V_MODEL\", { type }, comp);\n      popWarningContext();\n      warnedTypes.add(comp);\n    }\n    const model = comp.model || {};\n    applyModelFromMixins(model, comp.mixins);\n    const { prop = \"value\", event = \"input\" } = model;\n    if (prop !== \"modelValue\") {\n      props[prop] = props.modelValue;\n      delete props.modelValue;\n    }\n    if (dynamicProps) {\n      dynamicProps[dynamicProps.indexOf(\"modelValue\")] = prop;\n    }\n    props[compatModelEventPrefix + event] = props[\"onUpdate:modelValue\"];\n    delete props[\"onUpdate:modelValue\"];\n  }\n}\nfunction applyModelFromMixins(model, mixins) {\n  if (mixins) {\n    mixins.forEach((m) => {\n      if (m.model)\n        extend(model, m.model);\n      if (m.mixins)\n        applyModelFromMixins(model, m.mixins);\n    });\n  }\n}\nfunction compatModelEmit(instance, event, args) {\n  if (!isCompatEnabled(\"COMPONENT_V_MODEL\", instance)) {\n    return;\n  }\n  const props = instance.vnode.props;\n  const modelHandler = props && props[compatModelEventPrefix + event];\n  if (modelHandler) {\n    callWithErrorHandling(\n      modelHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted)\n    return;\n  const props = instance.vnode.props || EMPTY_OBJ;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const {\n      emitsOptions,\n      propsOptions: [propsOptions]\n    } = instance;\n    if (emitsOptions) {\n      if (!(event in emitsOptions) && !(event.startsWith(\"hook:\") || event.startsWith(compatModelEventPrefix))) {\n        if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n          warn$1(\n            `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n          );\n        }\n      } else {\n        const validator = emitsOptions[event];\n        if (isFunction(validator)) {\n          const isValid = validator(...rawArgs);\n          if (!isValid) {\n            warn$1(\n              `Invalid event arguments: event validation failed for event \"${event}\".`\n            );\n          }\n        }\n      }\n    }\n  }\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modelArg = isModelListener && event.slice(7);\n  if (modelArg && modelArg in props) {\n    const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n    const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n    if (trim) {\n      args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n    }\n    if (number) {\n      args = rawArgs.map(looseToNumber);\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsComponentEmit(instance, event, args);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const lowerCaseEvent = event.toLowerCase();\n    if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n      warn$1(\n        `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n          instance,\n          instance.type\n        )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n          event\n        )}\" instead of \"${event}\".`\n      );\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = toHandlerKey(camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = toHandlerKey(hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n  {\n    compatModelEmit(instance, event, args);\n    return emit$1(instance, event, args);\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend(normalized, raw);\n  }\n  if (isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn(key)) {\n    return false;\n  }\n  if (key.startsWith(compatModelEventPrefix)) {\n    return true;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  if (!currentScopeId) {\n    currentScopeId = instance && instance.type._scopeId || null;\n  }\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx)\n    return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentUpdated(ctx);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  if (isNonScopedSlot) {\n    renderFnWithContext._ns = true;\n  }\n  return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n  accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    props,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  let result;\n  let fallthroughAttrs;\n  const prev = setCurrentRenderingInstance(instance);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    accessedAttrs = false;\n  }\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n        get(target, key, receiver) {\n          warn$1(\n            `Property '${String(\n              key\n            )}' was accessed via 'this'. Avoid using 'this' in templates.`\n          );\n          return Reflect.get(target, key, receiver);\n        }\n      }) : proxyToUse;\n      result = normalizeVNode(\n        render.call(\n          thisProxy,\n          proxyToUse,\n          renderCache,\n          props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n        markAttrsAccessed();\n      }\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          props,\n          !!(process.env.NODE_ENV !== \"production\") ? {\n            get attrs() {\n              markAttrsAccessed();\n              return attrs;\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          props,\n          null\n          /* we know it doesn't need it */\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  let setRoot = void 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n    [root, setRoot] = getChildRoot(result);\n  }\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n        const allAttrs = Object.keys(attrs);\n        const eventAttrs = [];\n        const extraAttrs = [];\n        for (let i = 0, l = allAttrs.length; i < l; i++) {\n          const key = allAttrs[i];\n          if (isOn(key)) {\n            if (!isModelListener(key)) {\n              eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n            }\n          } else {\n            extraAttrs.push(key);\n          }\n        }\n        if (extraAttrs.length) {\n          warn$1(\n            `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n          );\n        }\n        if (eventAttrs.length) {\n          warn$1(\n            `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n          );\n        }\n      }\n    }\n  }\n  if (isCompatEnabled(\"INSTANCE_ATTRS_CLASS_STYLE\", instance) && vnode.shapeFlag & 4 && root.shapeFlag & (1 | 6)) {\n    const { class: cls, style } = vnode.props || {};\n    if (cls || style) {\n      if (!!(process.env.NODE_ENV !== \"production\") && inheritAttrs === false) {\n        warnDeprecation(\n          \"INSTANCE_ATTRS_CLASS_STYLE\",\n          instance,\n          getComponentName(instance.type)\n        );\n      }\n      root = cloneVNode(root, {\n        class: cls,\n        style\n      });\n    }\n  }\n  if (vnode.dirs) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n      );\n    }\n    root = cloneVNode(root);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Component inside <Transition> renders non-element root node that cannot be animated.`\n      );\n    }\n    root.transition = vnode.transition;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n    setRoot(root);\n  } else {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getChildRoot = (vnode) => {\n  const rawChildren = vnode.children;\n  const dynamicChildren = vnode.dynamicChildren;\n  const childRoot = filterSingleRoot(rawChildren, false);\n  if (!childRoot) {\n    return [vnode, void 0];\n  } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n    return getChildRoot(childRoot);\n  }\n  const index = rawChildren.indexOf(childRoot);\n  const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n  const setRoot = (updatedRoot) => {\n    rawChildren[index] = updatedRoot;\n    if (dynamicChildren) {\n      if (dynamicIndex > -1) {\n        dynamicChildren[dynamicIndex] = updatedRoot;\n      } else if (updatedRoot.patchFlag > 0) {\n        vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n      }\n    }\n  };\n  return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n          if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n            return filterSingleRoot(singleRoot.children);\n          }\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst isElementRoot = (vnode) => {\n  return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n    return true;\n  }\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent) {\n    const root = parent.subTree;\n    if (root.suspense && root.suspense.activeBranch === vnode) {\n      root.el = vnode.el;\n    }\n    if (root === vnode) {\n      (vnode = parent.vnode).el = el;\n      parent = parent.parent;\n    } else {\n      break;\n    }\n  }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nconst FILTERS = \"filters\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveFilter$1(name) {\n  return resolveAsset(FILTERS, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n      );\n      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n      const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n      warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n    }\n    return res;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n    );\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      if (parentSuspense && parentSuspense.deps > 0) {\n        n2.suspense = n1.suspense;\n        return;\n      }\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  create: createSuspenseBoundary,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    namespace,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      namespace,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        if (!isHydrating) {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      }\n    } else {\n      suspense.pendingId = suspenseId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      if (newBranch.shapeFlag & 512) {\n        suspense.pendingId = newBranch.component.suspenseId;\n      } else {\n        suspense.pendingId = suspenseId++;\n      }\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n    hasWarned = true;\n    console[console.info ? \"info\" : \"log\"](\n      `<Suspense> is an experimental feature and its API will likely change.`\n    );\n  }\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(timeout, `Suspense timeout`);\n  }\n  const initialAnchor = anchor;\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    namespace,\n    container,\n    hiddenContainer,\n    deps: 0,\n    pendingId: suspenseId++,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: !isHydrating,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!resume && !suspense.pendingBranch) {\n          throw new Error(\n            `suspense.resolve() is called without a pending branch.`\n          );\n        }\n        if (suspense.isUnmounted) {\n          throw new Error(\n            `suspense.resolve() is called on an already unmounted suspense boundary.`\n          );\n        }\n      }\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      let delayEnter = false;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(\n                pendingBranch,\n                container2,\n                anchor === initialAnchor ? next(activeBranch) : anchor,\n                0\n              );\n              queuePostFlushCb(effects);\n            }\n          };\n        }\n        if (activeBranch) {\n          if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n            anchor = next(activeBranch);\n          }\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor && !delayEnter) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          namespace2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(vnode2);\n        }\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          namespace,\n          optimized\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    // eslint-disable-next-line no-restricted-globals\n    document.createElement(\"div\"),\n    null,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n      warn$1(`<Suspense> slots expect a single root node.`);\n    }\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  let el = branch.el;\n  while (!el && branch.component) {\n    branch = branch.component.subTree;\n    el = branch.el;\n  }\n  vnode.el = el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  var _a;\n  return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst legacyDirectiveHookMap = {\n  beforeMount: \"bind\",\n  mounted: \"inserted\",\n  updated: [\"update\", \"componentUpdated\"],\n  unmounted: \"unbind\"\n};\nfunction mapCompatDirectiveHook(name, dir, instance) {\n  const mappedName = legacyDirectiveHookMap[name];\n  if (mappedName) {\n    if (isArray(mappedName)) {\n      const hook = [];\n      mappedName.forEach((mapped) => {\n        const mappedHook = dir[mapped];\n        if (mappedHook) {\n          softAssertCompatEnabled(\n            \"CUSTOM_DIR\",\n            instance,\n            mapped,\n            name\n          );\n          hook.push(mappedHook);\n        }\n      });\n      return hook.length ? hook : void 0;\n    } else {\n      if (dir[mappedName]) {\n        softAssertCompatEnabled(\n          \"CUSTOM_DIR\",\n          instance,\n          mappedName,\n          name\n        );\n      }\n      return dir[mappedName];\n    }\n  }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    if (!ctx) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n      );\n    }\n    return ctx;\n  }\n};\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n  );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n    warn$1(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n    );\n  }\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n  immediate,\n  deep,\n  flush,\n  once,\n  onTrack,\n  onTrigger\n} = EMPTY_OBJ) {\n  if (cb && once) {\n    const _cb = cb;\n    cb = (...args) => {\n      _cb(...args);\n      unwatch();\n    };\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n    warn$1(\n      `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n    );\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n    if (immediate !== void 0) {\n      warn$1(\n        `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (deep !== void 0) {\n      warn$1(\n        `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (once !== void 0) {\n      warn$1(\n        `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n  }\n  const warnInvalidSource = (s) => {\n    warn$1(\n      `Invalid watch source: `,\n      s,\n      `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n    );\n  };\n  const instance = currentInstance;\n  const reactiveGetter = (source2) => deep === true ? source2 : (\n    // for deep: false, only traverse root-level properties\n    traverse(source2, deep === false ? 1 : void 0)\n  );\n  let getter;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => reactiveGetter(source);\n    forceTrigger = true;\n  } else if (isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return reactiveGetter(s);\n      } else if (isFunction(s)) {\n        return callWithErrorHandling(s, instance, 2);\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n      }\n    });\n  } else if (isFunction(source)) {\n    if (cb) {\n      getter = () => callWithErrorHandling(source, instance, 2);\n    } else {\n      getter = () => {\n        if (cleanup) {\n          cleanup();\n        }\n        return callWithAsyncErrorHandling(\n          source,\n          instance,\n          3,\n          [onCleanup]\n        );\n      };\n    }\n  } else {\n    getter = NOOP;\n    !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n  }\n  if (cb && !deep) {\n    const baseGetter = getter;\n    getter = () => {\n      const val = baseGetter();\n      if (isArray(val) && checkCompatEnabled(\"WATCH_ARRAY\", instance)) {\n        traverse(val);\n      }\n      return val;\n    };\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    getter = () => traverse(baseGetter());\n  }\n  let cleanup;\n  let onCleanup = (fn) => {\n    cleanup = effect.onStop = () => {\n      callWithErrorHandling(fn, instance, 4);\n      cleanup = effect.onStop = void 0;\n    };\n  };\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    onCleanup = NOOP;\n    if (!cb) {\n      getter();\n    } else if (immediate) {\n      callWithAsyncErrorHandling(cb, instance, 3, [\n        getter(),\n        isMultiSource ? [] : void 0,\n        onCleanup\n      ]);\n    }\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else {\n      return NOOP;\n    }\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = () => {\n    if (!effect.active || !effect.dirty) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || isArray(newValue) && isCompatEnabled(\"WATCH_ARRAY\", instance)) {\n        if (cleanup) {\n          cleanup();\n        }\n        callWithAsyncErrorHandling(cb, instance, 3, [\n          newValue,\n          // pass undefined as the old value when it's changed for the first time\n          oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n          onCleanup\n        ]);\n        oldValue = newValue;\n      }\n    } else {\n      effect.run();\n    }\n  };\n  job.allowRecurse = !!cb;\n  let scheduler;\n  if (flush === \"sync\") {\n    scheduler = job;\n  } else if (flush === \"post\") {\n    scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n  } else {\n    job.pre = true;\n    if (instance)\n      job.id = instance.uid;\n    scheduler = () => queueJob(job);\n  }\n  const effect = new ReactiveEffect(getter, NOOP, scheduler);\n  const scope = getCurrentScope();\n  const unwatch = () => {\n    effect.stop();\n    if (scope) {\n      remove(scope.effects, effect);\n    }\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    effect.onTrack = onTrack;\n    effect.onTrigger = onTrigger;\n  }\n  if (cb) {\n    if (immediate) {\n      job();\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (flush === \"post\") {\n    queuePostRenderEffect(\n      effect.run.bind(effect),\n      instance && instance.suspense\n    );\n  } else {\n    effect.run();\n  }\n  if (ssrCleanup)\n    ssrCleanup.push(unwatch);\n  return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const reset = setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  reset();\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n  if (!isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  if (depth && depth > 0) {\n    if (currentDepth >= depth) {\n      return value;\n    }\n    currentDepth++;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  if (isRef(value)) {\n    traverse(value.value, depth, currentDepth, seen);\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], depth, currentDepth, seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, depth, currentDepth, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], depth, currentDepth, seen);\n    }\n  }\n  return value;\n}\n\nfunction validateDirectiveName(name) {\n  if (isBuiltInDirective(name)) {\n    warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n  }\n}\nfunction withDirectives(vnode, directives) {\n  if (currentRenderingInstance === null) {\n    !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n    return vnode;\n  }\n  const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (!hook) {\n      hook = mapCompatDirectiveHook(name, binding.dir, instance);\n    }\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey$1 = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevTransitionKey;\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      let child = children[0];\n      if (children.length > 1) {\n        let hasFound = false;\n        for (const c of children) {\n          if (c.type !== Comment) {\n            if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n              warn$1(\n                \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n              );\n              break;\n            }\n            child = c;\n            hasFound = true;\n            if (!!!(process.env.NODE_ENV !== \"production\"))\n              break;\n          }\n        }\n      }\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n        warn$1(`invalid <transition> mode: ${mode}`);\n      }\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getKeepAliveChild(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      const enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance\n      );\n      setTransitionHooks(innerChild, enterHooks);\n      const oldChild = instance.subTree;\n      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n      let transitionKeyChanged = false;\n      const { getTransitionKey } = innerChild.type;\n      if (getTransitionKey) {\n        const key = getTransitionKey();\n        if (prevTransitionKey === void 0) {\n          prevTransitionKey = key;\n        } else if (key !== prevTransitionKey) {\n          prevTransitionKey = key;\n          transitionKeyChanged = true;\n        }\n      }\n      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n        const leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\") {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (instance.update.active !== false) {\n              instance.effect.dirty = true;\n              instance.update();\n            }\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el[leaveCbKey] = () => {\n              earlyRemove();\n              el[leaveCbKey] = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\n{\n  BaseTransitionImpl.__isBuiltIn = true;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1))\n        done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el[leaveCbKey]) {\n        el[leaveCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n        leavingVNode.el[leaveCbKey]();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el[enterCbKey$1] = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el[enterCbKey$1] = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el[enterCbKey$1]) {\n        el[enterCbKey$1](\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el[leaveCbKey] = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el[leaveCbKey] = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      return resolveTransitionHooks(vnode2, props, state, instance);\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getKeepAliveChild(vnode) {\n  return isKeepAlive(vnode) ? (\n    // #7121 ensure get the child component subtree in case\n    // it's been replaced during HMR\n    !!(process.env.NODE_ENV !== \"production\") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0\n  ) : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128)\n        keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n  return isFunction(options) ? (\n    // #8326: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n  if (isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n        warn$1(\n          `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n        );\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n        throw new Error(`Invalid async component load result: ${comp}`);\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = ref(false);\n      const error = ref();\n      const delayed = ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          instance.parent.effect.dirty = true;\n          queueJob(instance.parent.update);\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.__v_cache = cache;\n    }\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        namespace,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && (!filter || !filter(name))) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (!current || !isSameVNodeType(cached, current)) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`KeepAlive should contain exactly one component child.`);\n        }\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\n{\n  KeepAliveImpl.__isBuildIn = true;\n}\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= ~256;\n  vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      if (target.isUnmounted) {\n        return;\n      }\n      pauseTracking();\n      const reset = setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      reset();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n    warn$1(\n      `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n    );\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n  (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n  \"rtg\"\n);\nconst onRenderTracked = createHook(\n  \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nfunction getCompatChildren(instance) {\n  assertCompatEnabled(\"INSTANCE_CHILDREN\", instance);\n  const root = instance.subTree;\n  const children = [];\n  if (root) {\n    walk(root, children);\n  }\n  return children;\n}\nfunction walk(vnode, children) {\n  if (vnode.component) {\n    children.push(vnode.component.proxy);\n  } else if (vnode.shapeFlag & 16) {\n    const vnodes = vnode.children;\n    for (let i = 0; i < vnodes.length; i++) {\n      walk(vnodes[i], children);\n    }\n  }\n}\n\nfunction getCompatListeners(instance) {\n  assertCompatEnabled(\"INSTANCE_LISTENERS\", instance);\n  const listeners = {};\n  const rawProps = instance.vnode.props;\n  if (!rawProps) {\n    return listeners;\n  }\n  for (const key in rawProps) {\n    if (isOn(key)) {\n      listeners[key[2].toLowerCase() + key.slice(3)] = rawProps[key];\n    }\n  }\n  return listeners;\n}\n\nfunction convertLegacyRenderFn(instance) {\n  const Component = instance.type;\n  const render = Component.render;\n  if (!render || render._rc || render._compatChecked || render._compatWrapped) {\n    return;\n  }\n  if (render.length >= 2) {\n    render._compatChecked = true;\n    return;\n  }\n  if (checkCompatEnabled(\"RENDER_FUNCTION\", instance)) {\n    const wrapped = Component.render = function compatRender() {\n      return render.call(this, compatH);\n    };\n    wrapped._compatWrapped = true;\n  }\n}\nfunction compatH(type, propsOrChildren, children) {\n  if (!type) {\n    type = Comment;\n  }\n  if (typeof type === \"string\") {\n    const t = hyphenate(type);\n    if (t === \"transition\" || t === \"transition-group\" || t === \"keep-alive\") {\n      type = `__compat__${t}`;\n    }\n    type = resolveDynamicComponent(type);\n  }\n  const l = arguments.length;\n  const is2ndArgArrayChildren = isArray(propsOrChildren);\n  if (l === 2 || is2ndArgArrayChildren) {\n    if (isObject(propsOrChildren) && !is2ndArgArrayChildren) {\n      if (isVNode(propsOrChildren)) {\n        return convertLegacySlots(createVNode(type, null, [propsOrChildren]));\n      }\n      return convertLegacySlots(\n        convertLegacyDirectives(\n          createVNode(type, convertLegacyProps(propsOrChildren, type)),\n          propsOrChildren\n        )\n      );\n    } else {\n      return convertLegacySlots(createVNode(type, null, propsOrChildren));\n    }\n  } else {\n    if (isVNode(children)) {\n      children = [children];\n    }\n    return convertLegacySlots(\n      convertLegacyDirectives(\n        createVNode(type, convertLegacyProps(propsOrChildren, type), children),\n        propsOrChildren\n      )\n    );\n  }\n}\nconst skipLegacyRootLevelProps = /* @__PURE__ */ makeMap(\n  \"staticStyle,staticClass,directives,model,hook\"\n);\nfunction convertLegacyProps(legacyProps, type) {\n  if (!legacyProps) {\n    return null;\n  }\n  const converted = {};\n  for (const key in legacyProps) {\n    if (key === \"attrs\" || key === \"domProps\" || key === \"props\") {\n      extend(converted, legacyProps[key]);\n    } else if (key === \"on\" || key === \"nativeOn\") {\n      const listeners = legacyProps[key];\n      for (const event in listeners) {\n        let handlerKey = convertLegacyEventKey(event);\n        if (key === \"nativeOn\")\n          handlerKey += `Native`;\n        const existing = converted[handlerKey];\n        const incoming = listeners[event];\n        if (existing !== incoming) {\n          if (existing) {\n            converted[handlerKey] = [].concat(existing, incoming);\n          } else {\n            converted[handlerKey] = incoming;\n          }\n        }\n      }\n    } else if (!skipLegacyRootLevelProps(key)) {\n      converted[key] = legacyProps[key];\n    }\n  }\n  if (legacyProps.staticClass) {\n    converted.class = normalizeClass([legacyProps.staticClass, converted.class]);\n  }\n  if (legacyProps.staticStyle) {\n    converted.style = normalizeStyle([legacyProps.staticStyle, converted.style]);\n  }\n  if (legacyProps.model && isObject(type)) {\n    const { prop = \"value\", event = \"input\" } = type.model || {};\n    converted[prop] = legacyProps.model.value;\n    converted[compatModelEventPrefix + event] = legacyProps.model.callback;\n  }\n  return converted;\n}\nfunction convertLegacyEventKey(event) {\n  if (event[0] === \"&\") {\n    event = event.slice(1) + \"Passive\";\n  }\n  if (event[0] === \"~\") {\n    event = event.slice(1) + \"Once\";\n  }\n  if (event[0] === \"!\") {\n    event = event.slice(1) + \"Capture\";\n  }\n  return toHandlerKey(event);\n}\nfunction convertLegacyDirectives(vnode, props) {\n  if (props && props.directives) {\n    return withDirectives(\n      vnode,\n      props.directives.map(({ name, value, arg, modifiers }) => {\n        return [\n          resolveDirective(name),\n          value,\n          arg,\n          modifiers\n        ];\n      })\n    );\n  }\n  return vnode;\n}\nfunction convertLegacySlots(vnode) {\n  const { props, children } = vnode;\n  let slots;\n  if (vnode.shapeFlag & 6 && isArray(children)) {\n    slots = {};\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      const slotName = isVNode(child) && child.props && child.props.slot || \"default\";\n      const slot = slots[slotName] || (slots[slotName] = []);\n      if (isVNode(child) && child.type === \"template\") {\n        slot.push(child.children);\n      } else {\n        slot.push(child);\n      }\n    }\n    if (slots) {\n      for (const key in slots) {\n        const slotChildren = slots[key];\n        slots[key] = () => slotChildren;\n        slots[key]._ns = true;\n      }\n    }\n  }\n  const scopedSlots = props && props.scopedSlots;\n  if (scopedSlots) {\n    delete props.scopedSlots;\n    if (slots) {\n      extend(slots, scopedSlots);\n    } else {\n      slots = scopedSlots;\n    }\n  }\n  if (slots) {\n    normalizeChildren(vnode, slots);\n  }\n  return vnode;\n}\nfunction defineLegacyVNodeProperties(vnode) {\n  if (isCompatEnabled(\n    \"RENDER_FUNCTION\",\n    currentRenderingInstance,\n    true\n  ) && isCompatEnabled(\n    \"PRIVATE_APIS\",\n    currentRenderingInstance,\n    true\n  )) {\n    const context = currentRenderingInstance;\n    const getInstance = () => vnode.component && vnode.component.proxy;\n    let componentOptions;\n    Object.defineProperties(vnode, {\n      tag: { get: () => vnode.type },\n      data: { get: () => vnode.props || {}, set: (p) => vnode.props = p },\n      elm: { get: () => vnode.el },\n      componentInstance: { get: getInstance },\n      child: { get: getInstance },\n      text: { get: () => isString(vnode.children) ? vnode.children : null },\n      context: { get: () => context && context.proxy },\n      componentOptions: {\n        get: () => {\n          if (vnode.shapeFlag & 4) {\n            if (componentOptions) {\n              return componentOptions;\n            }\n            return componentOptions = {\n              Ctor: vnode.type,\n              propsData: vnode.props,\n              children: vnode.children\n            };\n          }\n        }\n      }\n    });\n  }\n}\n\nconst normalizedFunctionalComponentMap = /* @__PURE__ */ new WeakMap();\nconst legacySlotProxyHandlers = {\n  get(target, key) {\n    const slot = target[key];\n    return slot && slot();\n  }\n};\nfunction convertLegacyFunctionalComponent(comp) {\n  if (normalizedFunctionalComponentMap.has(comp)) {\n    return normalizedFunctionalComponentMap.get(comp);\n  }\n  const legacyFn = comp.render;\n  const Func = (props, ctx) => {\n    const instance = getCurrentInstance();\n    const legacyCtx = {\n      props,\n      children: instance.vnode.children || [],\n      data: instance.vnode.props || {},\n      scopedSlots: ctx.slots,\n      parent: instance.parent && instance.parent.proxy,\n      slots() {\n        return new Proxy(ctx.slots, legacySlotProxyHandlers);\n      },\n      get listeners() {\n        return getCompatListeners(instance);\n      },\n      get injections() {\n        if (comp.inject) {\n          const injections = {};\n          resolveInjections(comp.inject, injections);\n          return injections;\n        }\n        return {};\n      }\n    };\n    return legacyFn(compatH, legacyCtx);\n  };\n  Func.props = comp.props;\n  Func.displayName = comp.name;\n  Func.compatConfig = comp.compatConfig;\n  Func.inheritAttrs = false;\n  normalizedFunctionalComponentMap.set(comp, Func);\n  return Func;\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  if (isArray(source) || isString(source)) {\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n    }\n  } else if (typeof source === \"number\") {\n    if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n      warn$1(`The v-for range expect an integer value but got ${source}.`);\n    }\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res)\n          res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n    if (name !== \"default\")\n      props.name = name;\n    return createVNode(\"slot\", props, fallback && fallback());\n  }\n  let slot = slots[name];\n  if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n    warn$1(\n      `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n    );\n    slot = () => [];\n  }\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: props.key || // slot content array of a dynamic conditional slot may have a branch\n      // key attached in the `createSlots` helper, respect that\n      validSlotContent && validSlotContent.key || `_${name}`\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child))\n      return true;\n    if (child.type === Comment)\n      return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n    warn$1(`v-on with no argument expects an object value.`);\n    return ret;\n  }\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nfunction toObject(arr) {\n  const res = {};\n  for (let i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res;\n}\nfunction legacyBindObjectProps(data, _tag, value, _asProp, isSync) {\n  if (value && isObject(value)) {\n    if (isArray(value)) {\n      value = toObject(value);\n    }\n    for (const key in value) {\n      if (isReservedProp(key)) {\n        data[key] = value[key];\n      } else if (key === \"class\") {\n        data.class = normalizeClass([data.class, value.class]);\n      } else if (key === \"style\") {\n        data.style = normalizeClass([data.style, value.style]);\n      } else {\n        const attrs = data.attrs || (data.attrs = {});\n        const camelizedKey = camelize(key);\n        const hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in attrs) && !(hyphenatedKey in attrs)) {\n          attrs[key] = value[key];\n          if (isSync) {\n            const on = data.on || (data.on = {});\n            on[`update:${key}`] = function($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      }\n    }\n  }\n  return data;\n}\nfunction legacyBindObjectListeners(props, listeners) {\n  return mergeProps(props, toHandlers(listeners));\n}\nfunction legacyRenderSlot(instance, name, fallback, props, bindObject) {\n  if (bindObject) {\n    props = mergeProps(props, bindObject);\n  }\n  return renderSlot(instance.slots, name, props, fallback && (() => fallback));\n}\nfunction legacyresolveScopedSlots(fns, raw, hasDynamicKeys) {\n  return createSlots(\n    raw || { $stable: !hasDynamicKeys },\n    mapKeyToName(fns)\n  );\n}\nfunction mapKeyToName(slots) {\n  for (let i = 0; i < slots.length; i++) {\n    const fn = slots[i];\n    if (fn) {\n      if (isArray(fn)) {\n        mapKeyToName(fn);\n      } else {\n        fn.name = fn.key || \"default\";\n      }\n    }\n  }\n  return slots;\n}\nconst staticCacheMap = /* @__PURE__ */ new WeakMap();\nfunction legacyRenderStatic(instance, index) {\n  let cache = staticCacheMap.get(instance);\n  if (!cache) {\n    staticCacheMap.set(instance, cache = []);\n  }\n  if (cache[index]) {\n    return cache[index];\n  }\n  const fn = instance.type.staticRenderFns[index];\n  const ctx = instance.proxy;\n  return cache[index] = fn.call(ctx, null, ctx);\n}\nfunction legacyCheckKeyCodes(instance, eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n  const config = instance.appContext.config;\n  const configKeyCodes = config.keyCodes || {};\n  const mappedKeyCode = configKeyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !configKeyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName);\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key;\n  }\n}\nfunction isKeyNotMatch(expect, actual) {\n  if (isArray(expect)) {\n    return !expect.includes(actual);\n  } else {\n    return expect !== actual;\n  }\n}\nfunction legacyMarkOnce(tree) {\n  return tree;\n}\nfunction legacyBindDynamicKeys(props, values) {\n  for (let i = 0; i < values.length; i += 2) {\n    const key = values[i];\n    if (typeof key === \"string\" && key) {\n      props[values[i]] = values[i + 1];\n    }\n  }\n  return props;\n}\nfunction legacyPrependModifier(value, symbol) {\n  return typeof value === \"string\" ? symbol + value : value;\n}\n\nfunction installCompatInstanceProperties(map) {\n  const set = (target, key, val) => {\n    target[key] = val;\n    return target[key];\n  };\n  const del = (target, key) => {\n    delete target[key];\n  };\n  extend(map, {\n    $set: (i) => {\n      assertCompatEnabled(\"INSTANCE_SET\", i);\n      return set;\n    },\n    $delete: (i) => {\n      assertCompatEnabled(\"INSTANCE_DELETE\", i);\n      return del;\n    },\n    $mount: (i) => {\n      assertCompatEnabled(\n        \"GLOBAL_MOUNT\",\n        null\n      );\n      return i.ctx._compat_mount || NOOP;\n    },\n    $destroy: (i) => {\n      assertCompatEnabled(\"INSTANCE_DESTROY\", i);\n      return i.ctx._compat_destroy || NOOP;\n    },\n    // overrides existing accessor\n    $slots: (i) => {\n      if (isCompatEnabled(\"RENDER_FUNCTION\", i) && i.render && i.render._compatWrapped) {\n        return new Proxy(i.slots, legacySlotProxyHandlers);\n      }\n      return !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots;\n    },\n    $scopedSlots: (i) => {\n      assertCompatEnabled(\"INSTANCE_SCOPED_SLOTS\", i);\n      const res = {};\n      for (const key in i.slots) {\n        const fn = i.slots[key];\n        if (!fn._ns) {\n          res[key] = fn;\n        }\n      }\n      return res;\n    },\n    $on: (i) => on.bind(null, i),\n    $once: (i) => once.bind(null, i),\n    $off: (i) => off.bind(null, i),\n    $children: getCompatChildren,\n    $listeners: getCompatListeners\n  });\n  if (isCompatEnabled(\"PRIVATE_APIS\", null)) {\n    extend(map, {\n      // needed by many libs / render fns\n      $vnode: (i) => i.vnode,\n      // inject additional properties into $options for compat\n      // e.g. vuex needs this.$options.parent\n      $options: (i) => {\n        const res = extend({}, resolveMergedOptions(i));\n        res.parent = i.proxy.$parent;\n        res.propsData = i.vnode.props;\n        return res;\n      },\n      // some private properties that are likely accessed...\n      _self: (i) => i.proxy,\n      _uid: (i) => i.uid,\n      _data: (i) => i.data,\n      _isMounted: (i) => i.isMounted,\n      _isDestroyed: (i) => i.isUnmounted,\n      // v2 render helpers\n      $createElement: () => compatH,\n      _c: () => compatH,\n      _o: () => legacyMarkOnce,\n      _n: () => looseToNumber,\n      _s: () => toDisplayString,\n      _l: () => renderList,\n      _t: (i) => legacyRenderSlot.bind(null, i),\n      _q: () => looseEqual,\n      _i: () => looseIndexOf,\n      _m: (i) => legacyRenderStatic.bind(null, i),\n      _f: () => resolveFilter$1,\n      _k: (i) => legacyCheckKeyCodes.bind(null, i),\n      _b: () => legacyBindObjectProps,\n      _v: () => createTextVNode,\n      _e: () => createCommentVNode,\n      _u: () => legacyresolveScopedSlots,\n      _g: () => legacyBindObjectListeners,\n      _d: () => legacyBindDynamicKeys,\n      _p: () => legacyPrependModifier\n    });\n  }\n}\n\nconst getPublicInstance = (i) => {\n  if (!i)\n    return null;\n  if (isStatefulComponent(i))\n    return getExposeProxy(i) || i.proxy;\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n    $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n    $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n    $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $emit: (i) => i.emit,\n    $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n    $forceUpdate: (i) => i.f || (i.f = () => {\n      i.effect.dirty = true;\n      queueJob(i.update);\n    }),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n  })\n);\n{\n  installCompatInstanceProperties(publicPropertiesMap);\n}\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n      return true;\n    }\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance, \"get\", key);\n        !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n      } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n        track(instance, \"get\", key);\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n    ) {\n      {\n        const desc = Object.getOwnPropertyDescriptor(globalProperties, key);\n        if (desc.get) {\n          return desc.get.call(instance.proxy);\n        } else {\n          const val = globalProperties[key];\n          return isFunction(val) ? Object.assign(val.bind(instance.proxy), val) : val;\n        }\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n    // to infinite warning loop\n    key.indexOf(\"__v\") !== 0)) {\n      if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n        );\n      } else if (instance === currentRenderingInstance) {\n        warn$1(\n          `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n        );\n      }\n    }\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n      warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n      return false;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance.props, key)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n      );\n      return false;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          value\n        });\n      } else {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n  PublicInstanceProxyHandlers.ownKeys = (target) => {\n    warn$1(\n      `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n    );\n    return Reflect.ownKeys(target);\n  };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(\n  {},\n  PublicInstanceProxyHandlers,\n  {\n    get(target, key) {\n      if (key === Symbol.unscopables) {\n        return;\n      }\n      return PublicInstanceProxyHandlers.get(target, key, target);\n    },\n    has(_, key) {\n      const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n      if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} should not start with _ which is a reserved prefix for Vue internals.`\n        );\n      }\n      return has;\n    }\n  }\n);\nfunction createDevRenderContext(instance) {\n  const target = {};\n  Object.defineProperty(target, `_`, {\n    configurable: true,\n    enumerable: false,\n    get: () => instance\n  });\n  Object.keys(publicPropertiesMap).forEach((key) => {\n    Object.defineProperty(target, key, {\n      configurable: true,\n      enumerable: false,\n      get: () => publicPropertiesMap[key](instance),\n      // intercepted by the proxy so no need for implementation,\n      // but needed to prevent set errors\n      set: NOOP\n    });\n  });\n  return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n  const {\n    ctx,\n    propsOptions: [propsOptions]\n  } = instance;\n  if (propsOptions) {\n    Object.keys(propsOptions).forEach((key) => {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => instance.props[key],\n        set: NOOP\n      });\n    });\n  }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n  const { ctx, setupState } = instance;\n  Object.keys(toRaw(setupState)).forEach((key) => {\n    if (!setupState.__isScriptSetup) {\n      if (isReservedPrefix(key[0])) {\n        warn$1(\n          `setup() return property ${JSON.stringify(\n            key\n          )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n        );\n        return;\n      }\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => setupState[key],\n        set: NOOP\n      });\n    }\n  });\n}\n\nfunction deepMergeData(to, from) {\n  for (const key in from) {\n    const toVal = to[key];\n    const fromVal = from[key];\n    if (key in to && isPlainObject(toVal) && isPlainObject(fromVal)) {\n      !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\"OPTIONS_DATA_MERGE\", null, key);\n      deepMergeData(toVal, fromVal);\n    } else {\n      to[key] = fromVal;\n    }\n  }\n  return to;\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineProps`);\n  }\n  return null;\n}\nfunction defineEmits() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineEmits`);\n  }\n  return null;\n}\nfunction defineExpose(exposed) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineExpose`);\n  }\n}\nfunction defineOptions(options) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineOptions`);\n  }\n}\nfunction defineSlots() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineSlots`);\n  }\n  return null;\n}\nfunction defineModel() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(\"defineModel\");\n  }\n}\nfunction withDefaults(props, defaults) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`withDefaults`);\n  }\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction getContext() {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useContext() called without active instance.`);\n  }\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\"))\n      continue;\n    let opt = props[key];\n    if (opt) {\n      if (isArray(opt) || isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n    }\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b)\n    return a || b;\n  if (isArray(a) && isArray(b))\n    return a.concat(b);\n  return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n    warn$1(\n      `withAsyncContext called without active current instance. This is likely a bug.`\n    );\n  }\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (type, key) => {\n    if (cache[key]) {\n      warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n    } else {\n      cache[key] = type;\n    }\n  };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook$1(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const [propsOptions] = instance.propsOptions;\n    if (propsOptions) {\n      for (const key in propsOptions) {\n        checkDuplicateProperties(\"Props\" /* PROPS */, key);\n      }\n    }\n  }\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction(methodHandler)) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          Object.defineProperty(ctx, key, {\n            value: methodHandler.bind(publicThis),\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n        } else {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(\n          `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n        );\n      }\n    }\n  }\n  if (dataOptions) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n      warn$1(\n        `The data option must be a function. Plain object usage is no longer supported.`\n      );\n    }\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n      warn$1(\n        `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n      );\n    }\n    if (!isObject(data)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n    } else {\n      instance.data = reactive(data);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (const key in data) {\n          checkDuplicateProperties(\"Data\" /* DATA */, key);\n          if (!isReservedPrefix(key[0])) {\n            Object.defineProperty(ctx, key, {\n              configurable: true,\n              enumerable: true,\n              get: () => data[key],\n              set: NOOP\n            });\n          }\n        }\n      }\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n        warn$1(`Computed property \"${key}\" has no getter.`);\n      }\n      const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n        warn$1(\n          `Write operation failed: computed property \"${key}\" is readonly.`\n        );\n      } : NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n      }\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook$1(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  {\n    if (beforeDestroy && softAssertCompatEnabled(\"OPTIONS_BEFORE_DESTROY\", instance)) {\n      registerLifecycleHook(onBeforeUnmount, beforeDestroy);\n    }\n    if (destroyed && softAssertCompatEnabled(\"OPTIONS_DESTROYED\", instance)) {\n      registerLifecycleHook(onUnmounted, destroyed);\n    }\n  }\n  if (isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components)\n    instance.components = components;\n  if (directives)\n    instance.directives = directives;\n  if (filters && isCompatEnabled(\"FILTERS\", instance)) {\n    instance.filters = filters;\n  }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n  if (isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n    }\n  }\n}\nfunction callHook$1(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString(raw)) {\n    const handler = ctx[raw];\n    if (isFunction(handler)) {\n      watch(getter, handler);\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n    }\n  } else if (isFunction(raw)) {\n    watch(getter, raw.bind(publicThis));\n  } else if (isObject(raw)) {\n    if (isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction(handler)) {\n        watch(getter, handler, raw);\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n      }\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid watch option: \"${key}\"`, raw);\n  }\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    if (isCompatEnabled(\"PRIVATE_APIS\", instance)) {\n      resolved = extend({}, base);\n      resolved.parent = instance.parent && instance.parent.proxy;\n      resolved.propsData = instance.vnode.props;\n    } else {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  if (isFunction(from)) {\n    from = from.options;\n  }\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n      );\n    } else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\n{\n  internalOptionMergeStrats.filters = mergeObjectOptions;\n}\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (isCompatEnabled(\"OPTIONS_DATA_MERGE\", null) ? deepMergeData : extend)(\n      isFunction(to) ? to.call(this, this) : to,\n      isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (isArray(to) && isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to)\n    return from;\n  if (!from)\n    return to;\n  const merged = extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction installLegacyConfigWarnings(config) {\n  const legacyConfigOptions = {\n    silent: \"CONFIG_SILENT\",\n    devtools: \"CONFIG_DEVTOOLS\",\n    ignoredElements: \"CONFIG_IGNORED_ELEMENTS\",\n    keyCodes: \"CONFIG_KEY_CODES\",\n    productionTip: \"CONFIG_PRODUCTION_TIP\"\n  };\n  Object.keys(legacyConfigOptions).forEach((key) => {\n    let val = config[key];\n    Object.defineProperty(config, key, {\n      enumerable: true,\n      get() {\n        return val;\n      },\n      set(newVal) {\n        if (!isCopyingConfig) {\n          warnDeprecation(legacyConfigOptions[key], null);\n        }\n        val = newVal;\n      }\n    });\n  });\n}\nfunction installLegacyOptionMergeStrats(config) {\n  config.optionMergeStrategies = new Proxy({}, {\n    get(target, key) {\n      if (key in target) {\n        return target[key];\n      }\n      if (key in internalOptionMergeStrats && softAssertCompatEnabled(\n        \"CONFIG_OPTION_MERGE_STRATS\",\n        null\n      )) {\n        return internalOptionMergeStrats[key];\n      }\n    }\n  });\n}\n\nlet isCopyingConfig = false;\nlet singletonApp;\nlet singletonCtor;\nfunction createCompatVue$1(createApp, createSingletonApp) {\n  singletonApp = createSingletonApp({});\n  const Vue = singletonCtor = function Vue2(options = {}) {\n    return createCompatApp(options, Vue2);\n  };\n  function createCompatApp(options = {}, Ctor) {\n    assertCompatEnabled(\"GLOBAL_MOUNT\", null);\n    const { data } = options;\n    if (data && !isFunction(data) && softAssertCompatEnabled(\"OPTIONS_DATA_FN\", null)) {\n      options.data = () => data;\n    }\n    const app = createApp(options);\n    if (Ctor !== Vue) {\n      applySingletonPrototype(app, Ctor);\n    }\n    const vm = app._createRoot(options);\n    if (options.el) {\n      return vm.$mount(options.el);\n    } else {\n      return vm;\n    }\n  }\n  Vue.version = `2.6.14-compat:${\"3.4.15\"}`;\n  Vue.config = singletonApp.config;\n  Vue.use = (p, ...options) => {\n    if (p && isFunction(p.install)) {\n      p.install(Vue, ...options);\n    } else if (isFunction(p)) {\n      p(Vue, ...options);\n    }\n    return Vue;\n  };\n  Vue.mixin = (m) => {\n    singletonApp.mixin(m);\n    return Vue;\n  };\n  Vue.component = (name, comp) => {\n    if (comp) {\n      singletonApp.component(name, comp);\n      return Vue;\n    } else {\n      return singletonApp.component(name);\n    }\n  };\n  Vue.directive = (name, dir) => {\n    if (dir) {\n      singletonApp.directive(name, dir);\n      return Vue;\n    } else {\n      return singletonApp.directive(name);\n    }\n  };\n  Vue.options = { _base: Vue };\n  let cid = 1;\n  Vue.cid = cid;\n  Vue.nextTick = nextTick;\n  const extendCache = /* @__PURE__ */ new WeakMap();\n  function extendCtor(extendOptions = {}) {\n    assertCompatEnabled(\"GLOBAL_EXTEND\", null);\n    if (isFunction(extendOptions)) {\n      extendOptions = extendOptions.options;\n    }\n    if (extendCache.has(extendOptions)) {\n      return extendCache.get(extendOptions);\n    }\n    const Super = this;\n    function SubVue(inlineOptions) {\n      if (!inlineOptions) {\n        return createCompatApp(SubVue.options, SubVue);\n      } else {\n        return createCompatApp(\n          mergeOptions(\n            extend({}, SubVue.options),\n            inlineOptions,\n            internalOptionMergeStrats\n          ),\n          SubVue\n        );\n      }\n    }\n    SubVue.super = Super;\n    SubVue.prototype = Object.create(Vue.prototype);\n    SubVue.prototype.constructor = SubVue;\n    const mergeBase = {};\n    for (const key in Super.options) {\n      const superValue = Super.options[key];\n      mergeBase[key] = isArray(superValue) ? superValue.slice() : isObject(superValue) ? extend(/* @__PURE__ */ Object.create(null), superValue) : superValue;\n    }\n    SubVue.options = mergeOptions(\n      mergeBase,\n      extendOptions,\n      internalOptionMergeStrats\n    );\n    SubVue.options._base = SubVue;\n    SubVue.extend = extendCtor.bind(SubVue);\n    SubVue.mixin = Super.mixin;\n    SubVue.use = Super.use;\n    SubVue.cid = ++cid;\n    extendCache.set(extendOptions, SubVue);\n    return SubVue;\n  }\n  Vue.extend = extendCtor.bind(Vue);\n  Vue.set = (target, key, value) => {\n    assertCompatEnabled(\"GLOBAL_SET\", null);\n    target[key] = value;\n  };\n  Vue.delete = (target, key) => {\n    assertCompatEnabled(\"GLOBAL_DELETE\", null);\n    delete target[key];\n  };\n  Vue.observable = (target) => {\n    assertCompatEnabled(\"GLOBAL_OBSERVABLE\", null);\n    return reactive(target);\n  };\n  Vue.filter = (name, filter) => {\n    if (filter) {\n      singletonApp.filter(name, filter);\n      return Vue;\n    } else {\n      return singletonApp.filter(name);\n    }\n  };\n  const util = {\n    warn: !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP,\n    extend,\n    mergeOptions: (parent, child, vm) => mergeOptions(\n      parent,\n      child,\n      vm ? void 0 : internalOptionMergeStrats\n    ),\n    defineReactive\n  };\n  Object.defineProperty(Vue, \"util\", {\n    get() {\n      assertCompatEnabled(\"GLOBAL_PRIVATE_UTIL\", null);\n      return util;\n    }\n  });\n  Vue.configureCompat = configureCompat$1;\n  return Vue;\n}\nfunction installAppCompatProperties(app, context, render) {\n  installFilterMethod(app, context);\n  installLegacyOptionMergeStrats(app.config);\n  if (!singletonApp) {\n    return;\n  }\n  installCompatMount(app, context, render);\n  installLegacyAPIs(app);\n  applySingletonAppMutations(app);\n  if (!!(process.env.NODE_ENV !== \"production\"))\n    installLegacyConfigWarnings(app.config);\n}\nfunction installFilterMethod(app, context) {\n  context.filters = {};\n  app.filter = (name, filter) => {\n    assertCompatEnabled(\"FILTERS\", null);\n    if (!filter) {\n      return context.filters[name];\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && context.filters[name]) {\n      warn$1(`Filter \"${name}\" has already been registered.`);\n    }\n    context.filters[name] = filter;\n    return app;\n  };\n}\nfunction installLegacyAPIs(app) {\n  Object.defineProperties(app, {\n    // so that app.use() can work with legacy plugins that extend prototypes\n    prototype: {\n      get() {\n        !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\"GLOBAL_PROTOTYPE\", null);\n        return app.config.globalProperties;\n      }\n    },\n    nextTick: { value: nextTick },\n    extend: { value: singletonCtor.extend },\n    set: { value: singletonCtor.set },\n    delete: { value: singletonCtor.delete },\n    observable: { value: singletonCtor.observable },\n    util: {\n      get() {\n        return singletonCtor.util;\n      }\n    }\n  });\n}\nfunction applySingletonAppMutations(app) {\n  app._context.mixins = [...singletonApp._context.mixins];\n  [\"components\", \"directives\", \"filters\"].forEach((key) => {\n    app._context[key] = Object.create(singletonApp._context[key]);\n  });\n  isCopyingConfig = true;\n  for (const key in singletonApp.config) {\n    if (key === \"isNativeTag\")\n      continue;\n    if (isRuntimeOnly() && (key === \"isCustomElement\" || key === \"compilerOptions\")) {\n      continue;\n    }\n    const val = singletonApp.config[key];\n    app.config[key] = isObject(val) ? Object.create(val) : val;\n    if (key === \"ignoredElements\" && isCompatEnabled(\"CONFIG_IGNORED_ELEMENTS\", null) && !isRuntimeOnly() && isArray(val)) {\n      app.config.compilerOptions.isCustomElement = (tag) => {\n        return val.some((v) => isString(v) ? v === tag : v.test(tag));\n      };\n    }\n  }\n  isCopyingConfig = false;\n  applySingletonPrototype(app, singletonCtor);\n}\nfunction applySingletonPrototype(app, Ctor) {\n  const enabled = isCompatEnabled(\"GLOBAL_PROTOTYPE\", null);\n  if (enabled) {\n    app.config.globalProperties = Object.create(Ctor.prototype);\n  }\n  let hasPrototypeAugmentations = false;\n  const descriptors = Object.getOwnPropertyDescriptors(Ctor.prototype);\n  for (const key in descriptors) {\n    if (key !== \"constructor\") {\n      hasPrototypeAugmentations = true;\n      if (enabled) {\n        Object.defineProperty(\n          app.config.globalProperties,\n          key,\n          descriptors[key]\n        );\n      }\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && hasPrototypeAugmentations) {\n    warnDeprecation(\"GLOBAL_PROTOTYPE\", null);\n  }\n}\nfunction installCompatMount(app, context, render) {\n  let isMounted = false;\n  app._createRoot = (options) => {\n    const component = app._component;\n    const vnode = createVNode(component, options.propsData || null);\n    vnode.appContext = context;\n    const hasNoRender = !isFunction(component) && !component.render && !component.template;\n    const emptyRender = () => {\n    };\n    const instance = createComponentInstance(vnode, null, null);\n    if (hasNoRender) {\n      instance.render = emptyRender;\n    }\n    setupComponent(instance);\n    vnode.component = instance;\n    vnode.isCompatRoot = true;\n    instance.ctx._compat_mount = (selectorOrEl) => {\n      if (isMounted) {\n        !!(process.env.NODE_ENV !== \"production\") && warn$1(`Root instance is already mounted.`);\n        return;\n      }\n      let container;\n      if (typeof selectorOrEl === \"string\") {\n        const result = document.querySelector(selectorOrEl);\n        if (!result) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(\n            `Failed to mount root instance: selector \"${selectorOrEl}\" returned null.`\n          );\n          return;\n        }\n        container = result;\n      } else {\n        container = selectorOrEl || document.createElement(\"div\");\n      }\n      let namespace;\n      if (container instanceof SVGElement)\n        namespace = \"svg\";\n      else if (typeof MathMLElement === \"function\" && container instanceof MathMLElement)\n        namespace = \"mathml\";\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        context.reload = () => {\n          const cloned = cloneVNode(vnode);\n          cloned.component = null;\n          render(cloned, container, namespace);\n        };\n      }\n      if (hasNoRender && instance.render === emptyRender) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          for (let i = 0; i < container.attributes.length; i++) {\n            const attr = container.attributes[i];\n            if (attr.name !== \"v-cloak\" && /^(v-|:|@)/.test(attr.name)) {\n              warnDeprecation(\"GLOBAL_MOUNT_CONTAINER\", null);\n              break;\n            }\n          }\n        }\n        instance.render = null;\n        component.template = container.innerHTML;\n        finishComponentSetup(\n          instance,\n          false,\n          true\n          /* skip options */\n        );\n      }\n      container.innerHTML = \"\";\n      render(vnode, container, namespace);\n      if (container instanceof Element) {\n        container.removeAttribute(\"v-cloak\");\n        container.setAttribute(\"data-v-app\", \"\");\n      }\n      isMounted = true;\n      app._container = container;\n      container.__vue_app__ = app;\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsInitApp(app, version);\n      }\n      return instance.proxy;\n    };\n    instance.ctx._compat_destroy = () => {\n      if (isMounted) {\n        render(null, app._container);\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsUnmountApp(app);\n        }\n        delete app._container.__vue_app__;\n      } else {\n        const { bum, scope, um } = instance;\n        if (bum) {\n          invokeArrayFns(bum);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeDestroy\");\n        }\n        if (scope) {\n          scope.stop();\n        }\n        if (um) {\n          invokeArrayFns(um);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:destroyed\");\n        }\n      }\n    };\n    return instance.proxy;\n  };\n}\nconst methodsToPatch = [\n  \"push\",\n  \"pop\",\n  \"shift\",\n  \"unshift\",\n  \"splice\",\n  \"sort\",\n  \"reverse\"\n];\nconst patched = /* @__PURE__ */ new WeakSet();\nfunction defineReactive(obj, key, val) {\n  if (isObject(val) && !isReactive(val) && !patched.has(val)) {\n    const reactiveVal = reactive(val);\n    if (isArray(val)) {\n      methodsToPatch.forEach((m) => {\n        val[m] = (...args) => {\n          Array.prototype[m].call(reactiveVal, ...args);\n        };\n      });\n    } else {\n      Object.keys(val).forEach((key2) => {\n        try {\n          defineReactiveSimple(val, key2, val[key2]);\n        } catch (e) {\n        }\n      });\n    }\n  }\n  const i = obj.$;\n  if (i && obj === i.proxy) {\n    defineReactiveSimple(i.ctx, key, val);\n    i.accessCache = /* @__PURE__ */ Object.create(null);\n  } else if (isReactive(obj)) {\n    obj[key] = val;\n  } else {\n    defineReactiveSimple(obj, key, val);\n  }\n}\nfunction defineReactiveSimple(obj, key, val) {\n  val = isObject(val) ? reactive(val) : val;\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get() {\n      track(obj, \"get\", key);\n      return val;\n    },\n    set(newVal) {\n      val = isObject(newVal) ? reactive(newVal) : newVal;\n      trigger(obj, \"set\", key, newVal);\n    }\n  });\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction(rootComponent)) {\n      rootComponent = extend({}, rootComponent);\n    }\n    if (rootProps != null && !isObject(rootProps)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new WeakSet();\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `app.config cannot be replaced. Modify individual options instead.`\n          );\n        }\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n        } else if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `A plugin must either be a function or an object with an \"install\" function.`\n          );\n        }\n        return app;\n      },\n      mixin(mixin) {\n        if (__VUE_OPTIONS_API__) {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n            );\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Mixins are only available in builds supporting Options API\");\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateComponentName(name, context.config);\n        }\n        if (!component) {\n          return context.components[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n          warn$1(`Component \"${name}\" has already been registered in target app.`);\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateDirectiveName(name);\n        }\n        if (!directive) {\n          return context.directives[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n          warn$1(`Directive \"${name}\" has already been registered in target app.`);\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, namespace) {\n        if (!isMounted) {\n          if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n            warn$1(\n              `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n            );\n          }\n          const vnode = createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (namespace === true) {\n            namespace = \"svg\";\n          } else if (namespace === false) {\n            namespace = void 0;\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            context.reload = () => {\n              render(\n                cloneVNode(vnode),\n                rootContainer,\n                namespace\n              );\n            };\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, namespace);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = vnode.component;\n            devtoolsInitApp(app, version);\n          }\n          return getExposeProxy(vnode.component) || vnode.component.proxy;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n          );\n        }\n      },\n      unmount() {\n        if (isMounted) {\n          render(null, app._container);\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = null;\n            devtoolsUnmountApp(app);\n          }\n          delete app._container.__vue_app__;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`Cannot unmount an app that is not mounted.`);\n        }\n      },\n      provide(key, value) {\n        if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n          warn$1(\n            `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n          );\n        }\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = null;\n        }\n      }\n    };\n    {\n      installAppCompatProperties(app, context, render);\n    }\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`provide() can only be used inside setup().`);\n    }\n  } else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = currentInstance || currentRenderingInstance;\n  if (instance || currentApp) {\n    const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`injection \"${String(key)}\" not found.`);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`inject() can only be used inside setup() or functional components.`);\n  }\n}\nfunction hasInjectionContext() {\n  return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nfunction createPropsDefaultThis(instance, rawProps, propKey) {\n  return new Proxy(\n    {},\n    {\n      get(_, key) {\n        !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\"PROPS_DEFAULT_THIS\", null, propKey);\n        if (key === \"$options\") {\n          return resolveMergedOptions(instance);\n        }\n        if (key in rawProps) {\n          return rawProps[key];\n        }\n        const injections = instance.type.inject;\n        if (injections) {\n          if (isArray(injections)) {\n            if (injections.includes(key)) {\n              return inject(key);\n            }\n          } else if (key in injections) {\n            return inject(key);\n          }\n        }\n      }\n    }\n  );\n}\n\nfunction shouldSkipAttr(key, instance) {\n  if (key === \"is\") {\n    return true;\n  }\n  if ((key === \"class\" || key === \"style\") && isCompatEnabled(\"INSTANCE_ATTRS_CLASS_STYLE\", instance)) {\n    return true;\n  }\n  if (isOn(key) && isCompatEnabled(\"INSTANCE_LISTENERS\", instance)) {\n    return true;\n  }\n  if (key.startsWith(\"routerView\") || key === \"registerRouteInstance\") {\n    return true;\n  }\n  return false;\n}\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = {};\n  def(attrs, InternalObjectKey, 1);\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n  while (instance) {\n    if (instance.type.__hmrId)\n      return true;\n    instance = instance.parent;\n  }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n            );\n          }\n        } else {\n          {\n            if (isOn(key) && key.endsWith(\"Native\")) {\n              key = key.slice(0, -6);\n            } else if (shouldSkipAttr(key, instance)) {\n              continue;\n            }\n          }\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && !hasOwn(rawProps, key + \"Native\")) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance, \"set\", \"$attrs\");\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      {\n        if (key.startsWith(\"onHook:\")) {\n          softAssertCompatEnabled(\n            \"INSTANCE_EVENT_HOOKS\",\n            instance,\n            key.slice(2).toLowerCase()\n          );\n        }\n        if (key === \"inline-template\") {\n          continue;\n        }\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        {\n          if (isOn(key) && key.endsWith(\"Native\")) {\n            key = key.slice(0, -6);\n          } else if (shouldSkipAttr(key, instance)) {\n            continue;\n          }\n        }\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          const reset = setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            isCompatEnabled(\"PROPS_DEFAULT_THIS\", instance) ? createPropsDefaultThis(instance, props, key) : null,\n            props\n          );\n          reset();\n        }\n      } else {\n        value = defaultValue;\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendProps = (raw2) => {\n      if (isFunction(raw2)) {\n        raw2 = raw2.options;\n      }\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend(normalized, props);\n      if (keys)\n        needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, EMPTY_ARR);\n    }\n    return EMPTY_ARR;\n  }\n  if (isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n        warn$1(`props must be strings when using array syntax.`, raw[i]);\n      }\n      const normalizedKey = camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n      warn$1(`invalid props options`, raw);\n    }\n    for (const key in raw) {\n      const normalizedKey = camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n        if (prop) {\n          const booleanIndex = getTypeIndex(Boolean, prop.type);\n          const stringIndex = getTypeIndex(String, prop.type);\n          prop[0 /* shouldCast */] = booleanIndex > -1;\n          prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;\n          if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n            needCastKeys.push(normalizedKey);\n          }\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\") {\n    return true;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n  }\n  return false;\n}\nfunction getType(ctor) {\n  const match = ctor && ctor.toString().match(/^\\s*(function|class) (\\w+)/);\n  return match ? match[2] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n  if (isArray(expectedTypes)) {\n    return expectedTypes.findIndex((t) => isSameType(t, type));\n  } else if (isFunction(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n  return -1;\n}\nfunction validateProps(rawProps, props, instance) {\n  const resolvedValues = toRaw(props);\n  const options = instance.propsOptions[0];\n  for (const key in options) {\n    let opt = options[key];\n    if (opt == null)\n      continue;\n    validateProp(\n      key,\n      resolvedValues[key],\n      opt,\n      !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n      !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))\n    );\n  }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n  const { type, required, validator, skipCheck } = prop;\n  if (required && isAbsent) {\n    warn$1('Missing required prop: \"' + name + '\"');\n    return;\n  }\n  if (value == null && !required) {\n    return;\n  }\n  if (type != null && type !== true && !skipCheck) {\n    let isValid = false;\n    const types = isArray(type) ? type : [type];\n    const expectedTypes = [];\n    for (let i = 0; i < types.length && !isValid; i++) {\n      const { valid, expectedType } = assertType(value, types[i]);\n      expectedTypes.push(expectedType || \"\");\n      isValid = valid;\n    }\n    if (!isValid) {\n      warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n      return;\n    }\n  }\n  if (validator && !validator(value, props)) {\n    warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n  }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n  \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n  let valid;\n  const expectedType = getType(type);\n  if (isSimpleType(expectedType)) {\n    const t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    if (!valid && t === \"object\") {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === \"Object\") {\n    valid = isObject(value);\n  } else if (expectedType === \"Array\") {\n    valid = isArray(value);\n  } else if (expectedType === \"null\") {\n    valid = value === null;\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid,\n    expectedType\n  };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  if (expectedTypes.length === 0) {\n    return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n  }\n  let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n  const expectedType = expectedTypes[0];\n  const receivedType = toRawType(value);\n  const expectedValue = styleValue(value, expectedType);\n  const receivedValue = styleValue(value, receivedType);\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n    message += ` with value ${expectedValue}`;\n  }\n  message += `, got ${receivedType} `;\n  if (isExplicable(receivedType)) {\n    message += `with value ${receivedValue}.`;\n  }\n  return message;\n}\nfunction styleValue(value, type) {\n  if (type === \"String\") {\n    return `\"${value}\"`;\n  } else if (type === \"Number\") {\n    return `${Number(value)}`;\n  } else {\n    return `${value}`;\n  }\n}\nfunction isExplicable(type) {\n  const explicitTypes = [\"string\", \"number\", \"boolean\"];\n  return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n  return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && (!ctx || ctx.root === currentInstance.root)) {\n      warn$1(\n        `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n      );\n    }\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key))\n      continue;\n    const value = rawSlots[key];\n    if (isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isCompatEnabled(\"RENDER_FUNCTION\", instance)) {\n        warn$1(\n          `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n        );\n      }\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && !isCompatEnabled(\"RENDER_FUNCTION\", instance)) {\n    warn$1(\n      `Non-function value encountered for default slot. Prefer function slots for better performance.`\n    );\n  }\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n  if (instance.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      instance.slots = toRaw(children);\n      def(children, \"_\", type);\n    } else {\n      normalizeObjectSlots(\n        children,\n        instance.slots = {},\n        instance\n      );\n    }\n  } else {\n    instance.slots = {};\n    if (children) {\n      normalizeVNodeSlots(instance, children);\n    }\n  }\n  def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n        extend(slots, children);\n        trigger(instance, \"set\", \"$slots\");\n      } else if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        extend(slots, children);\n        if (!optimized && type === 1) {\n          delete slots._;\n        }\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots, instance);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n    warn$1(\n      `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n    );\n    return;\n  }\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  if (oldRef != null && oldRef !== ref) {\n    if (isString(oldRef)) {\n      refs[oldRef] = null;\n      if (hasOwn(setupState, oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString(ref);\n    const _isRef = isRef(ref);\n    const isVFor = rawRef.f;\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (isVFor) {\n          const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (hasOwn(setupState, ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k)\n                  refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (hasOwn(setupState, ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k)\n            refs[rawRef.k] = value;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n        }\n      };\n      if (isUnmount || isVFor) {\n        doSet();\n      } else {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n    }\n  }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n  if (isSVGContainer(container))\n    return \"svg\";\n  if (isMathMLContainer(container))\n    return \"mathml\";\n  return void 0;\n};\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n      );\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hasMismatch = false;\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n    if (hasMismatch && true) {\n      console.error(`Hydration completed but contains mismatches.`);\n    }\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      if (!(\"__vnode\" in node)) {\n        Object.defineProperty(node, \"__vnode\", {\n          value: vnode,\n          enumerable: false\n        });\n      }\n      if (!(\"__vueParentComponent\" in node)) {\n        Object.defineProperty(node, \"__vueParentComponent\", {\n          value: parentComponent,\n          enumerable: false\n        });\n      }\n    }\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3 /* TEXT */) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            hasMismatch = true;\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text mismatch in`,\n              node.parentNode,\n              `\n  - rendered on server: ${JSON.stringify(\n                node.data\n              )}\n  - expected on client: ${JSON.stringify(vnode.children)}`\n            );\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (isTemplateNode(node)) {\n          nextNode = nextSibling(node);\n          replaceNode(\n            vnode.el = node.content.firstChild,\n            node,\n            parentComponent\n          );\n        } else if (domType !== 8 /* COMMENT */ || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          if (isFragmentStart) {\n            nextNode = locateClosingAnchor(node);\n          } else if (isComment(node) && node.data === \"teleport start\") {\n            nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n          } else {\n            nextNode = nextSibling(node);\n          }\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            getContainerType(container),\n            optimized\n          );\n          if (isAsyncWrapper(vnode)) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8 /* COMMENT */) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            getContainerType(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n          warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n    const forcePatch = type === \"input\" || type === \"option\";\n    if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      let needCallTransitionHooks = false;\n      if (isTemplateNode(el)) {\n        needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n        const content = el.content.firstChild;\n        if (needCallTransitionHooks) {\n          transition.beforeEnter(content);\n        }\n        replaceNode(content, el, parentComponent);\n        vnode.el = el = content;\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        let hasWarned = false;\n        while (next) {\n          hasMismatch = true;\n          if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n            warn$1(\n              `Hydration children mismatch on`,\n              el,\n              `\nServer rendered element contains more child nodes than client vdom.`\n            );\n            hasWarned = true;\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        if (el.textContent !== vnode.children) {\n          hasMismatch = true;\n          (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n            `Hydration text content mismatch on`,\n            el,\n            `\n  - rendered on server: ${el.textContent}\n  - expected on client: ${vnode.children}`\n          );\n          el.textContent = vnode.children;\n        }\n      }\n      if (props) {\n        if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || !optimized || patchFlag & (16 | 32)) {\n          for (const key in props) {\n            if (!!(process.env.NODE_ENV !== \"production\") && propHasMismatch(el, key, props[key], vnode)) {\n              hasMismatch = true;\n            }\n            if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n            key[0] === \".\") {\n              patchProp(\n                el,\n                key,\n                null,\n                props[key],\n                void 0,\n                void 0,\n                parentComponent\n              );\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            void 0,\n            void 0,\n            parentComponent\n          );\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          needCallTransitionHooks && transition.enter(el);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    let hasWarned = false;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      if (node) {\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (vnode.type === Text && !vnode.children) {\n        continue;\n      } else {\n        hasMismatch = true;\n        if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n          warn$1(\n            `Hydration children mismatch on`,\n            container,\n            `\nServer rendered element contains fewer child nodes than client vdom.`\n          );\n          hasWarned = true;\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          getContainerType(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      hasMismatch = true;\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    hasMismatch = true;\n    (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n      `Hydration node mismatch:\n- rendered on server:`,\n      node,\n      node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n      `\n- expected on client:`,\n      vnode.type\n    );\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      getContainerType(container),\n      slotScopeIds\n    );\n    return next;\n  };\n  const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === open)\n          match++;\n        if (node.data === close) {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  const replaceNode = (newNode, oldNode, parentComponent) => {\n    const parentNode2 = oldNode.parentNode;\n    if (parentNode2) {\n      parentNode2.replaceChild(newNode, oldNode);\n    }\n    let parent = parentComponent;\n    while (parent) {\n      if (parent.vnode.el === oldNode) {\n        parent.vnode.el = parent.subTree.el = newNode;\n      }\n      parent = parent.parent;\n    }\n  };\n  const isTemplateNode = (node) => {\n    return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === \"template\";\n  };\n  return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode) {\n  let mismatchType;\n  let mismatchKey;\n  let actual;\n  let expected;\n  if (key === \"class\") {\n    actual = el.getAttribute(\"class\");\n    expected = normalizeClass(clientValue);\n    if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n      mismatchType = mismatchKey = `class`;\n    }\n  } else if (key === \"style\") {\n    actual = el.getAttribute(\"style\");\n    expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n    const actualMap = toStyleMap(actual);\n    const expectedMap = toStyleMap(expected);\n    if (vnode.dirs) {\n      for (const { dir, value } of vnode.dirs) {\n        if (dir.name === \"show\" && !value) {\n          expectedMap.set(\"display\", \"none\");\n        }\n      }\n    }\n    if (!isMapEqual(actualMap, expectedMap)) {\n      mismatchType = mismatchKey = \"style\";\n    }\n  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n    if (isBooleanAttr(key)) {\n      actual = el.hasAttribute(key);\n      expected = includeBooleanAttr(clientValue);\n    } else if (clientValue == null) {\n      actual = el.hasAttribute(key);\n      expected = false;\n    } else {\n      if (el.hasAttribute(key)) {\n        actual = el.getAttribute(key);\n      } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n        actual = el.value;\n      } else {\n        actual = false;\n      }\n      expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n    }\n    if (actual !== expected) {\n      mismatchType = `attribute`;\n      mismatchKey = key;\n    }\n  }\n  if (mismatchType) {\n    const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n    const preSegment = `Hydration ${mismatchType} mismatch on`;\n    const postSegment = `\n  - rendered on server: ${format(actual)}\n  - expected on client: ${format(expected)}\n  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n  You should fix the source of the mismatch.`;\n    {\n      warn$1(preSegment, el, postSegment);\n    }\n    return true;\n  }\n  return false;\n}\nfunction toClassSet(str) {\n  return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const s of a) {\n    if (!b.has(s)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction toStyleMap(str) {\n  const styleMap = /* @__PURE__ */ new Map();\n  for (const item of str.split(\";\")) {\n    let [key, value] = item.split(\":\");\n    key = key == null ? void 0 : key.trim();\n    value = value == null ? void 0 : value.trim();\n    if (key && value) {\n      styleMap.set(key, value);\n    }\n  }\n  return styleMap;\n}\nfunction isMapEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const [key, value] of a) {\n    if (value !== b.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    perf.mark(`vue-${type}-${instance.uid}`);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction endMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    const startTag = `vue-${type}-${instance.uid}`;\n    const endTag = startTag + `:end`;\n    perf.mark(endTag);\n    perf.measure(\n      `<${formatComponentName(instance, instance.type)}> ${type}`,\n      startTag,\n      endTag\n    );\n    perf.clearMarks(startTag);\n    perf.clearMarks(endTag);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction isSupported() {\n  if (supported !== void 0) {\n    return supported;\n  }\n  if (typeof window !== \"undefined\" && window.performance) {\n    supported = true;\n    perf = window.performance;\n  } else {\n    supported = false;\n  }\n  return supported;\n}\n\nfunction initFeatureFlags() {\n  const needWarn = [];\n  if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n    getGlobalThis().__VUE_OPTIONS_API__ = true;\n  }\n  if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n    getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n  }\n  if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n    getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n    const multi = needWarn.length > 1;\n    console.warn(\n      `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n    );\n  }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  {\n    initFeatureFlags();\n  }\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n  }\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, namespace);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          patchStaticNode(n1, n2, container, namespace);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, namespace) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      namespace,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const patchStaticNode = (n1, n2, container, namespace) => {\n    if (n2.children !== n1.children) {\n      const anchor = hostNextSibling(n1.anchor);\n      removeStaticNode(n1);\n      [n2.el, n2.anchor] = hostInsertStaticContent(\n        n2.children,\n        container,\n        anchor,\n        namespace\n      );\n    } else {\n      n2.el = n1.el;\n      n2.anchor = n1.anchor;\n    }\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    if (n2.type === \"svg\") {\n      namespace = \"svg\";\n    } else if (n2.type === \"math\") {\n      namespace = \"mathml\";\n    }\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      namespace,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(vnode, namespace),\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !isReservedProp(key)) {\n          hostPatchProp(\n            el,\n            key,\n            null,\n            props[key],\n            namespace,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value, namespace);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      Object.defineProperty(el, \"__vnode\", {\n        value: vnode,\n        enumerable: false\n      });\n      Object.defineProperty(el, \"__vueParentComponent\", {\n        value: parentComponent,\n        enumerable: false\n      });\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = needTransition(parentSuspense, transition);\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n        subTree = filterSingleRoot(subTree.children) || subTree;\n      }\n      if (vnode === subTree) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds\n      );\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        traverseStaticChildren(n1, n2);\n      }\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(\n          el,\n          n2,\n          oldProps,\n          newProps,\n          parentComponent,\n          parentSuspense,\n          namespace\n        );\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, namespace);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(\n                el,\n                key,\n                prev,\n                next,\n                namespace,\n                n1.children,\n                parentComponent,\n                parentSuspense,\n                unmountChildren\n              );\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(\n        el,\n        n2,\n        oldProps,\n        newProps,\n        parentComponent,\n        parentSuspense,\n        namespace\n      );\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, namespace) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              namespace,\n              vnode.children,\n              parentComponent,\n              parentSuspense,\n              unmountChildren\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (isReservedProp(key))\n          continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(\n            el,\n            key,\n            prev,\n            next,\n            namespace,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n    (isHmrUpdating || patchFlag & 2048)) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        // #10007\n        // such fragment like `<></>` will be compiled into\n        // a fragment which doesn't have a children.\n        // In this case fallback to an empty array\n        n2.children || [],\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          traverseStaticChildren(n1, n2);\n        } else if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          namespace,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n    const compatMountInstance = initialVNode.isCompatRoot && initialVNode.component;\n    const instance = compatMountInstance || (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      registerHMR(instance);\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      pushWarningContext(initialVNode);\n      startMeasure(instance, `mount`);\n    }\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    if (!compatMountInstance) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        startMeasure(instance, `init`);\n      }\n      setupComponent(instance);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        endMeasure(instance, `init`);\n      }\n    }\n    if (instance.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n    } else {\n      setupRenderEffect(\n        instance,\n        initialVNode,\n        container,\n        anchor,\n        parentSuspense,\n        namespace,\n        optimized\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      popWarningContext();\n      endMeasure(instance, `mount`);\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(n2);\n        }\n        updateComponentPreRender(instance, n2, optimized);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        return;\n      } else {\n        instance.next = n2;\n        invalidateJob(instance.update);\n        instance.effect.dirty = true;\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeMount\");\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `render`);\n            }\n            instance.subTree = renderComponentRoot(instance);\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `render`);\n            }\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `hydrate`);\n            }\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `hydrate`);\n            }\n          };\n          if (isAsyncWrapperVNode) {\n            initialVNode.type.__asyncLoader().then(\n              // note: we are moving the render call into an async callback,\n              // which means it won't track dependencies - but it's ok because\n              // a server-rendered async wrapper is already in resolved state\n              // and it will never need to change.\n              () => !instance.isUnmounted && hydrateSubTree()\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `render`);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `render`);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `patch`);\n          }\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            namespace\n          );\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `patch`);\n          }\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          queuePostRenderEffect(\n            () => instance.emit(\"hook:mounted\"),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n          if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n            queuePostRenderEffect(\n              () => instance.emit(\"hook:activated\"),\n              parentSuspense\n            );\n          }\n        }\n        instance.isMounted = true;\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentAdded(instance);\n        }\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        {\n          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n          if (nonHydratedAsyncRoot) {\n            if (next) {\n              next.el = vnode.el;\n              updateComponentPreRender(instance, next, optimized);\n            }\n            nonHydratedAsyncRoot.asyncDep.then(() => {\n              if (!instance.isUnmounted) {\n                componentUpdateFn();\n              }\n            });\n            return;\n          }\n        }\n        let originNext = next;\n        let vnodeHook;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(next || instance.vnode);\n        }\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeUpdate\");\n        }\n        toggleRecurse(instance, true);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `render`);\n        }\n        const nextTree = renderComponentRoot(instance);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `render`);\n        }\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `patch`);\n        }\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          namespace\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `patch`);\n        }\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          queuePostRenderEffect(\n            () => instance.emit(\"hook:updated\"),\n            parentSuspense\n          );\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentUpdated(instance);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n      }\n    };\n    const effect = instance.effect = new ReactiveEffect(\n      componentUpdateFn,\n      NOOP,\n      () => queueJob(update),\n      instance.scope\n      // track it in component's effect scope\n    );\n    const update = instance.update = () => {\n      if (effect.dirty) {\n        effect.run();\n      }\n    };\n    update.id = instance.uid;\n    toggleRecurse(instance, true);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n      effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n      update.ownerInstance = instance;\n    }\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(instance);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n            warn$1(\n              `Duplicate keys found during update:`,\n              JSON.stringify(nextChild.key),\n              `Make sure keys are unique.`\n            );\n          }\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++)\n        newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition2) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs\n    } = vnode;\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          optimized,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n        vnode.children.forEach((child) => {\n          if (child.type === Comment) {\n            hostRemove(child.el);\n          } else {\n            remove(child);\n          }\n        });\n      } else {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      unregisterHMR(instance);\n    }\n    const { bum, scope, update, subTree, um } = instance;\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n      instance.emit(\"hook:beforeDestroy\");\n    }\n    scope.stop();\n    if (update) {\n      update.active = false;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n      queuePostRenderEffect(\n        () => instance.emit(\"hook:destroyed\"),\n        parentSuspense\n      );\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentRemoved(instance);\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    return hostNextSibling(vnode.anchor || vnode.el);\n  };\n  let isFlushing = false;\n  const render = (vnode, container, namespace) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(\n        container._vnode || null,\n        vnode,\n        container,\n        null,\n        null,\n        null,\n        namespace\n      );\n    }\n    if (!isFlushing) {\n      isFlushing = true;\n      flushPreFlushCbs();\n      flushPostFlushCbs();\n      isFlushing = false;\n    }\n    container._vnode = vnode;\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n  return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n  effect.allowRecurse = update.allowRecurse = allowed;\n}\nfunction needTransition(parentSuspense, transition) {\n  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray(ch1) && isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n  const subComponent = instance.subTree.component;\n  if (subComponent) {\n    if (subComponent.asyncDep && !subComponent.asyncResolved) {\n      return subComponent;\n    } else {\n      return locateNonHydratedAsyncRoot(subComponent);\n    }\n  }\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (isString(targetSelector)) {\n    if (!select) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n      );\n      return null;\n    } else {\n      const target = select(targetSelector);\n      if (!target) {\n        !!(process.env.NODE_ENV !== \"production\") && warn$1(\n          `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n        );\n      }\n      return target;\n    }\n  } else {\n    if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n      warn$1(`Invalid Teleport target: ${targetSelector}`);\n    }\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  name: \"Teleport\",\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (n1 == null) {\n      const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n      const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const target = n2.target = resolveTarget(n2.props, querySelector);\n      const targetAnchor = n2.targetAnchor = createText(\"\");\n      if (target) {\n        insert(targetAnchor, target);\n        if (namespace === \"svg\" || isTargetSVG(target)) {\n          namespace = \"svg\";\n        } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n          namespace = \"mathml\";\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n        warn$1(\"Invalid Teleport target on mount:\", target, `(${typeof target})`);\n      }\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n      } else if (target) {\n        mount(target, targetAnchor);\n      }\n    } else {\n      n2.el = n1.el;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      if (namespace === \"svg\" || isTargetSVG(target)) {\n        namespace = \"svg\";\n      } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n        namespace = \"mathml\";\n      }\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        } else {\n          if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n            n2.props.to = n1.props.to;\n          }\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Invalid Teleport target on update:\",\n              target,\n              `(${typeof target})`\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n    }\n    updateCssVars(n2);\n  },\n  remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n    if (target) {\n      hostRemove(targetAnchor);\n    }\n    doRemove && hostRemove(anchor);\n    if (shapeFlag & 16) {\n      const shouldRemove = doRemove || !isTeleportDisabled(props);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        unmount(\n          child,\n          parentComponent,\n          parentSuspense,\n          shouldRemove,\n          !!child.dynamicChildren\n        );\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (isTeleportDisabled(vnode.props)) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetAnchor = targetNode;\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          targetAnchor = nextSibling(targetAnchor);\n          if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === \"teleport anchor\") {\n            vnode.targetAnchor = targetAnchor;\n            target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n            break;\n          }\n        }\n        hydrateChildren(\n          targetNode,\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node = vnode.children[0].el;\n    while (node && node !== vnode.targetAnchor) {\n      if (node.nodeType === 1)\n        node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\n\nconst normalizedAsyncComponentMap = /* @__PURE__ */ new WeakMap();\nfunction convertLegacyAsyncComponent(comp) {\n  if (normalizedAsyncComponentMap.has(comp)) {\n    return normalizedAsyncComponentMap.get(comp);\n  }\n  let resolve;\n  let reject;\n  const fallbackPromise = new Promise((r, rj) => {\n    resolve = r, reject = rj;\n  });\n  const res = comp(resolve, reject);\n  let converted;\n  if (isPromise(res)) {\n    converted = defineAsyncComponent(() => res);\n  } else if (isObject(res) && !isVNode(res) && !isArray(res)) {\n    converted = defineAsyncComponent({\n      loader: () => res.component,\n      loadingComponent: res.loading,\n      errorComponent: res.error,\n      delay: res.delay,\n      timeout: res.timeout\n    });\n  } else if (res == null) {\n    converted = defineAsyncComponent(() => fallbackPromise);\n  } else {\n    converted = comp;\n  }\n  normalizedAsyncComponentMap.set(comp, converted);\n  return converted;\n}\n\nfunction convertLegacyComponent(comp, instance) {\n  if (comp.__isBuiltIn) {\n    return comp;\n  }\n  if (isFunction(comp) && comp.cid) {\n    comp = comp.options;\n  }\n  if (isFunction(comp) && checkCompatEnabled(\"COMPONENT_ASYNC\", instance, comp)) {\n    return convertLegacyAsyncComponent(comp);\n  }\n  if (isObject(comp) && comp.functional && softAssertCompatEnabled(\n    \"COMPONENT_FUNCTIONAL\",\n    instance,\n    comp\n  )) {\n    return convertLegacyFunctionalComponent(comp);\n  }\n  return comp;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {\n    n1.shapeFlag &= ~256;\n    n2.shapeFlag &= ~512;\n    return false;\n  }\n  return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n  vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n  return _createVNode(\n    ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n  );\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString(children) ? 8 : 16;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n    warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  {\n    convertLegacyVModelProps(vnode);\n    defineLegacyVNodeProperties(vnode);\n  }\n  return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n      warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n    }\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag |= -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  {\n    type = convertLegacyComponent(type, currentRenderingInstance);\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject(style)) {\n      if (isProxy(style) && !isArray(style)) {\n        style = extend({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n    type = toRaw(type);\n    warn$1(\n      `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n      `\nComponent that was made reactive: `,\n      type\n    );\n  }\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props)\n    return null;\n  return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n  const { props, ref, patchFlag, children } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n    target: vnode.target,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition: vnode.transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  {\n    defineLegacyVNodeProperties(cloned);\n  }\n  return cloned;\n}\nfunction deepCloneVNode(vnode) {\n  const cloned = cloneVNode(vnode);\n  if (isArray(vnode.children)) {\n    cloned.children = vnode.children.map(deepCloneVNode);\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (typeof child === \"object\") {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !(InternalObjectKey in children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    scope: new EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    attrsProxy: null,\n    slotsProxy: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.ctx = createDevRenderContext(instance);\n  } else {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n  const g = getGlobalThis();\n  const registerGlobalSetter = (key, setter) => {\n    let setters;\n    if (!(setters = g[key]))\n      setters = g[key] = [];\n    setters.push(setter);\n    return (v) => {\n      if (setters.length > 1)\n        setters.forEach((set) => set(v));\n      else\n        setters[0](v);\n    };\n  };\n  internalSetCurrentInstance = registerGlobalSetter(\n    `__VUE_INSTANCE_SETTERS__`,\n    (v) => currentInstance = v\n  );\n  setInSSRSetupState = registerGlobalSetter(\n    `__VUE_SSR_SETTERS__`,\n    (v) => isInSSRComponentSetup = v\n  );\n}\nconst setCurrentInstance = (instance) => {\n  const prev = currentInstance;\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n  return () => {\n    instance.scope.off();\n    internalSetCurrentInstance(prev);\n  };\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, config) {\n  const appIsNativeTag = config.isNativeTag || NO;\n  if (isBuiltInTag(name) || appIsNativeTag(name)) {\n    warn$1(\n      \"Do not use built-in or reserved HTML elements as component id: \" + name\n    );\n  }\n}\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n  isSSR && setInSSRSetupState(isSSR);\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isSSR && setInSSRSetupState(false);\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  var _a;\n  const Component = instance.type;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (Component.name) {\n      validateComponentName(Component.name, instance.appContext.config);\n    }\n    if (Component.components) {\n      const names = Object.keys(Component.components);\n      for (let i = 0; i < names.length; i++) {\n        validateComponentName(names[i], instance.appContext.config);\n      }\n    }\n    if (Component.directives) {\n      const names = Object.keys(Component.directives);\n      for (let i = 0; i < names.length; i++) {\n        validateDirectiveName(names[i]);\n      }\n    }\n    if (Component.compilerOptions && isRuntimeOnly()) {\n      warn$1(\n        `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n      );\n    }\n  }\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    exposePropsOnRenderContext(instance);\n  }\n  const { setup } = Component;\n  if (setup) {\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [\n        !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n        setupContext\n      ]\n    );\n    resetTracking();\n    reset();\n    if (isPromise(setupResult)) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n        if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n          const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n          warn$1(\n            `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n          );\n        }\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (isObject(setupResult)) {\n    if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n      warn$1(\n        `setup() should not return VNodes directly - return a render function instead.`\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.devtoolsRawSetupState = setupResult;\n    }\n    instance.setupState = proxyRefs(setupResult);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      exposeSetupStateOnRenderContext(instance);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n    warn$1(\n      `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n    );\n  }\n  finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  {\n    convertLegacyRenderFn(instance);\n    if (!!(process.env.NODE_ENV !== \"production\") && Component.compatConfig) {\n      validateCompatConfig(Component.compatConfig);\n    }\n  }\n  if (!instance.render) {\n    if (!isSSR && compile && !Component.render) {\n      const template = instance.vnode.props && instance.vnode.props[\"inline-template\"] || Component.template || resolveMergedOptions(instance).template;\n      if (template) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `compile`);\n        }\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend(\n          extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        {\n          finalCompilerOptions.compatConfig = Object.create(globalCompatConfig);\n          if (Component.compatConfig) {\n            extend(finalCompilerOptions.compatConfig, Component.compatConfig);\n          }\n        }\n        Component.render = compile(template, finalCompilerOptions);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `compile`);\n        }\n      }\n    }\n    instance.render = Component.render || NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  if (__VUE_OPTIONS_API__ && !skipOptions) {\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    try {\n      applyOptions(instance);\n    } finally {\n      resetTracking();\n      reset();\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n    if (!compile && Component.template) {\n      warn$1(\n        `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n      );\n    } else {\n      warn$1(`Component is missing template or render function.`);\n    }\n  }\n}\nfunction getAttrsProxy(instance) {\n  return instance.attrsProxy || (instance.attrsProxy = new Proxy(\n    instance.attrs,\n    !!(process.env.NODE_ENV !== \"production\") ? {\n      get(target, key) {\n        markAttrsAccessed();\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      },\n      set() {\n        warn$1(`setupContext.attrs is readonly.`);\n        return false;\n      },\n      deleteProperty() {\n        warn$1(`setupContext.attrs is readonly.`);\n        return false;\n      }\n    } : {\n      get(target, key) {\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      }\n    }\n  ));\n}\nfunction getSlotsProxy(instance) {\n  return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {\n    get(target, key) {\n      track(instance, \"get\", \"$slots\");\n      return target[key];\n    }\n  }));\n}\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (instance.exposed) {\n        warn$1(`expose() should be called only once per setup().`);\n      }\n      if (exposed != null) {\n        let exposedType = typeof exposed;\n        if (exposedType === \"object\") {\n          if (isArray(exposed)) {\n            exposedType = \"array\";\n          } else if (isRef(exposed)) {\n            exposedType = \"ref\";\n          }\n        }\n        if (exposedType !== \"object\") {\n          warn$1(\n            `expose() should be passed a plain object, received ${exposedType}.`\n          );\n        }\n      }\n    }\n    instance.exposed = exposed || {};\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    return Object.freeze({\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      get slots() {\n        return getSlotsProxy(instance);\n      },\n      get emit() {\n        return (event, ...args) => instance.emit(event, ...args);\n      },\n      expose\n    });\n  } else {\n    return {\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getExposeProxy(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n  let name = getComponentName(Component);\n  if (!name && Component.__file) {\n    const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n  if (!name && instance && instance.parent) {\n    const inferFromRegistry = (registry) => {\n      for (const key in registry) {\n        if (registry[key] === Component) {\n          return key;\n        }\n      }\n    };\n    name = inferFromRegistry(\n      instance.components || instance.parent.type.components\n    ) || inferFromRegistry(instance.appContext.components);\n  }\n  return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n  return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useModel() called without active instance.`);\n    return ref();\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][name]) {\n    warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n    return ref();\n  }\n  const camelizedName = camelize(name);\n  const hyphenatedName = hyphenate(name);\n  const res = customRef((track, trigger) => {\n    let localValue;\n    watchSyncEffect(() => {\n      const propValue = props[name];\n      if (hasChanged(localValue, propValue)) {\n        localValue = propValue;\n        trigger();\n      }\n    });\n    return {\n      get() {\n        track();\n        return options.get ? options.get(localValue) : localValue;\n      },\n      set(value) {\n        const rawProps = i.vnode.props;\n        if (!(rawProps && // check if parent has passed v-model\n        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps)) && hasChanged(value, localValue)) {\n          localValue = value;\n          trigger();\n        }\n        i.emit(`update:${name}`, options.set ? options.set(value) : value);\n      }\n    };\n  });\n  const modifierKey = name === \"modelValue\" ? \"modelModifiers\" : `${name}Modifiers`;\n  res[Symbol.iterator] = () => {\n    let i2 = 0;\n    return {\n      next() {\n        if (i2 < 2) {\n          return { value: i2++ ? props[modifierKey] || {} : res, done: false };\n        } else {\n          return { done: true };\n        }\n      }\n    };\n  };\n  return res;\n}\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nfunction initCustomFormatter() {\n  if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n    return;\n  }\n  const vueStyle = { style: \"color:#3ba776\" };\n  const numberStyle = { style: \"color:#1677ff\" };\n  const stringStyle = { style: \"color:#f5222d\" };\n  const keywordStyle = { style: \"color:#eb2f96\" };\n  const formatter = {\n    header(obj) {\n      if (!isObject(obj)) {\n        return null;\n      }\n      if (obj.__isVue) {\n        return [\"div\", vueStyle, `VueInstance`];\n      } else if (isRef(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, genRefFlag(obj)],\n          \"<\",\n          formatValue(obj.value),\n          `>`\n        ];\n      } else if (isReactive(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n          \"<\",\n          formatValue(obj),\n          `>${isReadonly(obj) ? ` (readonly)` : ``}`\n        ];\n      } else if (isReadonly(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n          \"<\",\n          formatValue(obj),\n          \">\"\n        ];\n      }\n      return null;\n    },\n    hasBody(obj) {\n      return obj && obj.__isVue;\n    },\n    body(obj) {\n      if (obj && obj.__isVue) {\n        return [\n          \"div\",\n          {},\n          ...formatInstance(obj.$)\n        ];\n      }\n    }\n  };\n  function formatInstance(instance) {\n    const blocks = [];\n    if (instance.type.props && instance.props) {\n      blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n    }\n    if (instance.setupState !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n    }\n    if (instance.data !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n    }\n    const computed = extractKeys(instance, \"computed\");\n    if (computed) {\n      blocks.push(createInstanceBlock(\"computed\", computed));\n    }\n    const injected = extractKeys(instance, \"inject\");\n    if (injected) {\n      blocks.push(createInstanceBlock(\"injected\", injected));\n    }\n    blocks.push([\n      \"div\",\n      {},\n      [\n        \"span\",\n        {\n          style: keywordStyle.style + \";opacity:0.66\"\n        },\n        \"$ (internal): \"\n      ],\n      [\"object\", { object: instance }]\n    ]);\n    return blocks;\n  }\n  function createInstanceBlock(type, target) {\n    target = extend({}, target);\n    if (!Object.keys(target).length) {\n      return [\"span\", {}];\n    }\n    return [\n      \"div\",\n      { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n      [\n        \"div\",\n        {\n          style: \"color:#476582\"\n        },\n        type\n      ],\n      [\n        \"div\",\n        {\n          style: \"padding-left:1.25em\"\n        },\n        ...Object.keys(target).map((key) => {\n          return [\n            \"div\",\n            {},\n            [\"span\", keywordStyle, key + \": \"],\n            formatValue(target[key], false)\n          ];\n        })\n      ]\n    ];\n  }\n  function formatValue(v, asRaw = true) {\n    if (typeof v === \"number\") {\n      return [\"span\", numberStyle, v];\n    } else if (typeof v === \"string\") {\n      return [\"span\", stringStyle, JSON.stringify(v)];\n    } else if (typeof v === \"boolean\") {\n      return [\"span\", keywordStyle, v];\n    } else if (isObject(v)) {\n      return [\"object\", { object: asRaw ? toRaw(v) : v }];\n    } else {\n      return [\"span\", stringStyle, String(v)];\n    }\n  }\n  function extractKeys(instance, type) {\n    const Comp = instance.type;\n    if (isFunction(Comp)) {\n      return;\n    }\n    const extracted = {};\n    for (const key in instance.ctx) {\n      if (isKeyOfType(Comp, key, type)) {\n        extracted[key] = instance.ctx[key];\n      }\n    }\n    return extracted;\n  }\n  function isKeyOfType(Comp, key, type) {\n    const opts = Comp[type];\n    if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n      return true;\n    }\n    if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n      return true;\n    }\n    if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n      return true;\n    }\n  }\n  function genRefFlag(v) {\n    if (isShallow(v)) {\n      return `ShallowRef`;\n    }\n    if (v.effect) {\n      return `ComputedRef`;\n    }\n    return `Ref`;\n  }\n  if (window.devtoolsFormatters) {\n    window.devtoolsFormatters.push(formatter);\n  } else {\n    window.devtoolsFormatters = [formatter];\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.4.15\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = resolveFilter$1 ;\nconst _compatUtils = {\n  warnDeprecation,\n  createCompatVue: createCompatVue$1,\n  isCompatEnabled,\n  checkCompatEnabled,\n  softAssertCompatEnabled\n};\nconst compatUtils = _compatUtils ;\nconst DeprecationTypes = DeprecationTypes$1 ;\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, namespace, is, props) => {\n    const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text) => doc.createTextNode(text),\n  createComment: (text) => doc.createComment(text),\n  setText: (node, text) => {\n    node.nodeValue = text;\n  },\n  setElementText: (el, text) => {\n    el.textContent = text;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  // __UNSAFE__\n  // Reason: innerHTML.\n  // Static content here can only come from compiled templates.\n  // As long as the user only uses trusted templates, this is safe.\n  insertStaticContent(content, parent, anchor, namespace, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling))\n          break;\n      }\n    } else {\n      templateContainer.innerHTML = namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content;\n      const template = templateContainer.content;\n      if (namespace === \"svg\" || namespace === \"mathml\") {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      // first\n      before ? before.nextSibling : parent.firstChild,\n      // last\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\n{\n  Transition.__isBuiltIn = true;\n}\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(\n  {},\n  BaseTransitionPropsValidators,\n  DOMTransitionPropsValidators\n);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const {\n    name = \"v\",\n    type,\n    duration,\n    enterFromClass = `${name}-enter-from`,\n    enterActiveClass = `${name}-enter-active`,\n    enterToClass = `${name}-enter-to`,\n    appearFromClass = enterFromClass,\n    appearActiveClass = enterActiveClass,\n    appearToClass = enterToClass,\n    leaveFromClass = `${name}-leave-from`,\n    leaveActiveClass = `${name}-leave-active`,\n    leaveToClass = `${name}-leave-to`\n  } = rawProps;\n  const legacyClassEnabled = compatUtils.isCompatEnabled(\"TRANSITION_CLASSES\", null);\n  let legacyEnterFromClass;\n  let legacyAppearFromClass;\n  let legacyLeaveFromClass;\n  if (legacyClassEnabled) {\n    const toLegacyClass = (cls) => cls.replace(/-from$/, \"\");\n    if (!rawProps.enterFromClass) {\n      legacyEnterFromClass = toLegacyClass(enterFromClass);\n    }\n    if (!rawProps.appearFromClass) {\n      legacyAppearFromClass = toLegacyClass(appearFromClass);\n    }\n    if (!rawProps.leaveFromClass) {\n      legacyLeaveFromClass = toLegacyClass(leaveFromClass);\n    }\n  }\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const {\n    onBeforeEnter,\n    onEnter,\n    onEnterCancelled,\n    onLeave,\n    onLeaveCancelled,\n    onBeforeAppear = onBeforeEnter,\n    onAppear = onEnter,\n    onAppearCancelled = onEnterCancelled\n  } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        if (legacyClassEnabled) {\n          const legacyClass = isAppear ? legacyAppearFromClass : legacyEnterFromClass;\n          if (legacyClass) {\n            removeTransitionClass(el, legacyClass);\n          }\n        }\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      if (legacyClassEnabled && legacyEnterFromClass) {\n        addTransitionClass(el, legacyEnterFromClass);\n      }\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      if (legacyClassEnabled && legacyAppearFromClass) {\n        addTransitionClass(el, legacyAppearFromClass);\n      }\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      if (legacyClassEnabled && legacyLeaveFromClass) {\n        addTransitionClass(el, legacyLeaveFromClass);\n      }\n      forceReflow();\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        if (legacyClassEnabled && legacyLeaveFromClass) {\n          removeTransitionClass(el, legacyLeaveFromClass);\n        }\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve);\n        }\n      });\n      callHook(onLeave, [el, resolve]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(res, \"<transition> explicit duration\");\n  }\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el[vtcKey] = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve();\n    }\n  };\n  if (explicitTimeout) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n  const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n    getStyleProperties(`${TRANSITION}Property`).toString()\n  );\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  if (s === \"auto\")\n    return 0;\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el[vtcKey];\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\n\nconst vShowOldKey = Symbol(\"_vod\");\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el[vShowOldKey] = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue)\n      return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  vShow.name = \"show\";\n}\nfunction setDisplay(el, value) {\n  el.style.display = value ? el[vShowOldKey] : \"none\";\n}\nfunction initVShowForSSR() {\n  vShow.getSSRProps = ({ value }) => {\n    if (!value) {\n      return { style: { display: \"none\" } };\n    }\n  };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n  const instance = getCurrentInstance();\n  if (!instance) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n    return;\n  }\n  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n    Array.from(\n      document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n    ).forEach((node) => setVarsOnNode(node, vars));\n  };\n  const setVars = () => {\n    const vars = getter(instance.proxy);\n    setVarsOnVNode(instance.subTree, vars);\n    updateTeleports(vars);\n  };\n  watchPostEffect(setVars);\n  onMounted(() => {\n    const ob = new MutationObserver(setVars);\n    ob.observe(instance.subTree.el.parentNode, { childList: true });\n    onUnmounted(() => ob.disconnect());\n  });\n}\nfunction setVarsOnVNode(vnode, vars) {\n  if (vnode.shapeFlag & 128) {\n    const suspense = vnode.suspense;\n    vnode = suspense.activeBranch;\n    if (suspense.pendingBranch && !suspense.isHydrating) {\n      suspense.effects.push(() => {\n        setVarsOnVNode(suspense.activeBranch, vars);\n      });\n    }\n  }\n  while (vnode.component) {\n    vnode = vnode.component.subTree;\n  }\n  if (vnode.shapeFlag & 1 && vnode.el) {\n    setVarsOnNode(vnode.el, vars);\n  } else if (vnode.type === Fragment) {\n    vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n  } else if (vnode.type === Static) {\n    let { el, anchor } = vnode;\n    while (el) {\n      setVarsOnNode(el, vars);\n      if (el === anchor)\n        break;\n      el = el.nextSibling;\n    }\n  }\n}\nfunction setVarsOnNode(el, vars) {\n  if (el.nodeType === 1) {\n    const style = el.style;\n    let cssText = \"\";\n    for (const key in vars) {\n      style.setProperty(`--${key}`, vars[key]);\n      cssText += `--${key}: ${vars[key]};`;\n    }\n    style[CSS_VAR_TEXT] = cssText;\n  }\n}\n\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const currentDisplay = style.display;\n  const isCssString = isString(next);\n  if (next && !isCssString) {\n    if (prev && !isString(prev)) {\n      for (const key in prev) {\n        if (next[key] == null) {\n          setStyle(style, key, \"\");\n        }\n      }\n    }\n    for (const key in next) {\n      setStyle(style, key, next[key]);\n    }\n  } else {\n    if (isCssString) {\n      if (prev !== next) {\n        const cssVarText = style[CSS_VAR_TEXT];\n        if (cssVarText) {\n          next += \";\" + cssVarText;\n        }\n        style.cssText = next;\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n  }\n  if (vShowOldKey in el) {\n    style.display = currentDisplay;\n  }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null)\n      val = \"\";\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (semicolonRE.test(val)) {\n        warn(\n          `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n        );\n      }\n    }\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(\n          hyphenate(prefixed),\n          val.replace(importantRE, \"\"),\n          \"important\"\n        );\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    if (compatCoerceAttr(el, key, value, instance)) {\n      return;\n    }\n    const isBoolean = isSpecialBooleanAttr(key);\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, isBoolean ? \"\" : value);\n    }\n  }\n}\nconst isEnumeratedAttr = /* @__PURE__ */ makeMap(\"contenteditable,draggable,spellcheck\") ;\nfunction compatCoerceAttr(el, key, value, instance = null) {\n  if (isEnumeratedAttr(key)) {\n    const v2CoercedValue = value === null ? \"false\" : typeof value !== \"boolean\" && value !== void 0 ? \"true\" : null;\n    if (v2CoercedValue && compatUtils.softAssertCompatEnabled(\n      \"ATTR_ENUMERATED_COERCION\",\n      instance,\n      key,\n      value,\n      v2CoercedValue\n    )) {\n      el.setAttribute(key, v2CoercedValue);\n      return true;\n    }\n  } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.softAssertCompatEnabled(\n    \"ATTR_FALSE_VALUE\",\n    instance,\n    key\n  )) {\n    el.removeAttribute(key);\n    return true;\n  }\n  return false;\n}\n\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (prevChildren) {\n      unmountChildren(prevChildren, parentComponent, parentSuspense);\n    }\n    el[key] = value == null ? \"\" : value;\n    return;\n  }\n  const tag = el.tagName;\n  if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n  !tag.includes(\"-\")) {\n    el._value = value;\n    const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (oldValue !== newValue) {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  } else {\n    if (value === false && compatUtils.isCompatEnabled(\n      \"ATTR_FALSE_VALUE\",\n      parentComponent\n    )) {\n      const type = typeof el[key];\n      if (type === \"string\" || type === \"number\") {\n        !!(process.env.NODE_ENV !== \"production\") && compatUtils.warnDeprecation(\n          \"ATTR_FALSE_VALUE\",\n          parentComponent,\n          key\n        );\n        value = type === \"number\" ? 0 : \"\";\n        needRemove = true;\n      }\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n      warn(\n        `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n        e\n      );\n    }\n  }\n  needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n  const invokers = el[veiKey] || (el[veiKey] = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(nextValue, instance);\n      addEventListener(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n  return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n  const invoker = (e) => {\n    if (!e._vts) {\n      e._vts = Date.now();\n    } else if (e._vts <= invoker.attached) {\n      return;\n    }\n    callWithAsyncErrorHandling(\n      patchStopImmediatePropagation(e, invoker.value),\n      instance,\n      5,\n      [e]\n    );\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n  } else {\n    return value;\n  }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n  const isSVG = namespace === \"svg\";\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(\n      el,\n      key,\n      nextValue,\n      prevChildren,\n      parentComponent,\n      parentSuspense,\n      unmountChildren\n    );\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG, parentComponent);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && isNativeOn(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (key === \"width\" || key === \"height\") {\n    const tag = el.tagName;\n    if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n      return false;\n    }\n  }\n  if (isNativeOn(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, hydrate2) {\n  const Comp = defineComponent(options);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, hydrate2);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => {\n  return /* @__PURE__ */ defineCustomElement(options, hydrate);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, hydrate2) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    /**\n     * @internal\n     */\n    this._instance = null;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    this._ob = null;\n    if (this.shadowRoot && hydrate2) {\n      hydrate2(this._createVNode(), this.shadowRoot);\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n        warn(\n          `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n        );\n      }\n      this.attachShadow({ mode: \"open\" });\n      if (!this._def.__asyncLoader) {\n        this._resolveProps(this._def);\n      }\n    }\n  }\n  connectedCallback() {\n    this._connected = true;\n    if (!this._instance) {\n      if (this._resolved) {\n        this._update();\n      } else {\n        this._resolveDef();\n      }\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    if (this._ob) {\n      this._ob.disconnect();\n      this._ob = null;\n    }\n    nextTick(() => {\n      if (!this._connected) {\n        render(null, this.shadowRoot);\n        this._instance = null;\n      }\n    });\n  }\n  /**\n   * resolve inner component definition (handle possible async component)\n   */\n  _resolveDef() {\n    this._resolved = true;\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    this._ob = new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    });\n    this._ob.observe(this, { attributes: true });\n    const resolve = (def, isAsync = false) => {\n      const { props, styles } = def;\n      let numberProps;\n      if (props && !isArray(props)) {\n        for (const key in props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            if (key in this._props) {\n              this._props[key] = toNumber(this._props[key]);\n            }\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      if (isAsync) {\n        this._resolveProps(def);\n      }\n      this._applyStyles(styles);\n      this._update();\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      asyncDef().then((def) => resolve(def, true));\n    } else {\n      resolve(this._def);\n    }\n  }\n  _resolveProps(def) {\n    const { props } = def;\n    const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n    for (const key of Object.keys(this)) {\n      if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n        this._setProp(key, this[key], true, false);\n      }\n    }\n    for (const key of declaredPropKeys.map(camelize)) {\n      Object.defineProperty(this, key, {\n        get() {\n          return this._getProp(key);\n        },\n        set(val) {\n          this._setProp(key, val);\n        }\n      });\n    }\n  }\n  _setAttr(key) {\n    let value = this.getAttribute(key);\n    const camelKey = camelize(key);\n    if (this._numberProps && this._numberProps[camelKey]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelKey, value, false);\n  }\n  /**\n   * @internal\n   */\n  _getProp(key) {\n    return this._props[key];\n  }\n  /**\n   * @internal\n   */\n  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n    if (val !== this._props[key]) {\n      this._props[key] = val;\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this.shadowRoot);\n  }\n  _createVNode() {\n    const vnode = createVNode(this._def, extend({}, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance) => {\n        this._instance = instance;\n        instance.isCE = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          instance.ceReload = (newStyles) => {\n            if (this._styles) {\n              this._styles.forEach((s) => this.shadowRoot.removeChild(s));\n              this._styles.length = 0;\n            }\n            this._applyStyles(newStyles);\n            this._instance = null;\n            this._update();\n          };\n        }\n        const dispatch = (event, args) => {\n          this.dispatchEvent(\n            new CustomEvent(event, {\n              detail: args\n            })\n          );\n        };\n        instance.emit = (event, ...args) => {\n          dispatch(event, args);\n          if (hyphenate(event) !== event) {\n            dispatch(hyphenate(event), args);\n          }\n        };\n        let parent = this;\n        while (parent = parent && (parent.parentNode || parent.host)) {\n          if (parent instanceof VueElement) {\n            instance.parent = parent._instance;\n            instance.provides = parent._instance.provides;\n            break;\n          }\n        }\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles) {\n    if (styles) {\n      styles.forEach((css) => {\n        const s = document.createElement(\"style\");\n        s.textContent = css;\n        this.shadowRoot.appendChild(s);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          (this._styles || (this._styles = [])).push(s);\n        }\n      });\n    }\n  }\n}\n\nfunction useCssModule(name = \"$style\") {\n  {\n    const instance = getCurrentInstance();\n    if (!instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n      return EMPTY_OBJ;\n    }\n    const modules = instance.type.__cssModules;\n    if (!modules) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n      return EMPTY_OBJ;\n    }\n    const mod = modules[name];\n    if (!mod) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n      return EMPTY_OBJ;\n    }\n    return mod;\n  }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst TransitionGroupImpl = {\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(\n        prevChildren[0].el,\n        instance.vnode.el,\n        moveClass\n      )) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el[moveCbKey] = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el[moveCbKey] = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      if (!rawProps.tag && compatUtils.checkCompatEnabled(\n        \"TRANSITION_GROUP_ROOT\",\n        instance.parent\n      )) {\n        tag = \"span\";\n      }\n      prevChildren = children;\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(`<TransitionGroup> children must be keyed.`);\n        }\n      }\n      if (prevChildren) {\n        for (let i = 0; i < prevChildren.length; i++) {\n          const child = prevChildren[i];\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n          positionMap.set(child, child.el.getBoundingClientRect());\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n};\n{\n  TransitionGroupImpl.__isBuiltIn = true;\n}\nconst removeMode = (props) => delete props.mode;\n/* @__PURE__ */ removeMode(TransitionGroupImpl.props);\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el[moveCbKey]) {\n    el[moveCbKey]();\n  }\n  if (el[enterCbKey]) {\n    el[enterCbKey]();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n  const fn = vnode.props[\"onUpdate:modelValue\"] || vnode.props[\"onModelCompat:input\"];\n  return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n  const target = e.target;\n  if (target.composing) {\n    target.composing = false;\n    target.dispatchEvent(new Event(\"input\"));\n  }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n  created(el, { modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n    addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n      if (e.target.composing)\n        return;\n      let domValue = el.value;\n      if (trim) {\n        domValue = domValue.trim();\n      }\n      if (castToNumber) {\n        domValue = looseToNumber(domValue);\n      }\n      el[assignKey](domValue);\n    });\n    if (trim) {\n      addEventListener(el, \"change\", () => {\n        el.value = el.value.trim();\n      });\n    }\n    if (!lazy) {\n      addEventListener(el, \"compositionstart\", onCompositionStart);\n      addEventListener(el, \"compositionend\", onCompositionEnd);\n      addEventListener(el, \"change\", onCompositionEnd);\n    }\n  },\n  // set value on mounted so it's after min/max for type=\"range\"\n  mounted(el, { value }) {\n    el.value = value == null ? \"\" : value;\n  },\n  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (el.composing)\n      return;\n    const elValue = number || el.type === \"number\" ? looseToNumber(el.value) : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (elValue === newValue) {\n      return;\n    }\n    if (document.activeElement === el && el.type !== \"range\") {\n      if (lazy) {\n        return;\n      }\n      if (trim && el.value.trim() === newValue) {\n        return;\n      }\n    }\n    el.value = newValue;\n  }\n};\nconst vModelCheckbox = {\n  // #4096 array checkboxes need to be deep traversed\n  deep: true,\n  created(el, _, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      const modelValue = el._modelValue;\n      const elementValue = getValue(el);\n      const checked = el.checked;\n      const assign = el[assignKey];\n      if (isArray(modelValue)) {\n        const index = looseIndexOf(modelValue, elementValue);\n        const found = index !== -1;\n        if (checked && !found) {\n          assign(modelValue.concat(elementValue));\n        } else if (!checked && found) {\n          const filtered = [...modelValue];\n          filtered.splice(index, 1);\n          assign(filtered);\n        }\n      } else if (isSet(modelValue)) {\n        const cloned = new Set(modelValue);\n        if (checked) {\n          cloned.add(elementValue);\n        } else {\n          cloned.delete(elementValue);\n        }\n        assign(cloned);\n      } else {\n        assign(getCheckboxValue(el, checked));\n      }\n    });\n  },\n  // set initial checked on mount to wait for true-value/false-value\n  mounted: setChecked,\n  beforeUpdate(el, binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    setChecked(el, binding, vnode);\n  }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n  el._modelValue = value;\n  if (isArray(value)) {\n    el.checked = looseIndexOf(value, vnode.props.value) > -1;\n  } else if (isSet(value)) {\n    el.checked = value.has(vnode.props.value);\n  } else if (value !== oldValue) {\n    el.checked = looseEqual(value, getCheckboxValue(el, true));\n  }\n}\nconst vModelRadio = {\n  created(el, { value }, vnode) {\n    el.checked = looseEqual(value, vnode.props.value);\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      el[assignKey](getValue(el));\n    });\n  },\n  beforeUpdate(el, { value, oldValue }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (value !== oldValue) {\n      el.checked = looseEqual(value, vnode.props.value);\n    }\n  }\n};\nconst vModelSelect = {\n  // <select multiple> value need to be deep traversed\n  deep: true,\n  created(el, { value, modifiers: { number } }, vnode) {\n    const isSetModel = isSet(value);\n    addEventListener(el, \"change\", () => {\n      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n        (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n      );\n      el[assignKey](\n        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n      );\n      el._assigning = true;\n      nextTick(() => {\n        el._assigning = false;\n      });\n    });\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  // set value in mounted & updated because <select> relies on its children\n  // <option>s.\n  mounted(el, { value, oldValue, modifiers: { number } }) {\n    setSelected(el, value, oldValue, number);\n  },\n  beforeUpdate(el, _binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  updated(el, { value, oldValue, modifiers: { number } }) {\n    if (!el._assigning) {\n      setSelected(el, value, oldValue, number);\n    }\n  }\n};\nfunction setSelected(el, value, oldValue, number) {\n  const isMultiple = el.multiple;\n  const isArrayValue = isArray(value);\n  if (isMultiple && !isArrayValue && !isSet(value)) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(\n      `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n    );\n    return;\n  }\n  if (isArrayValue && looseEqual(value, oldValue)) {\n    return;\n  }\n  for (let i = 0, l = el.options.length; i < l; i++) {\n    const option = el.options[i];\n    const optionValue = getValue(option);\n    if (isMultiple) {\n      if (isArrayValue) {\n        const optionType = typeof optionValue;\n        if (optionType === \"string\" || optionType === \"number\") {\n          option.selected = value.includes(\n            number ? looseToNumber(optionValue) : optionValue\n          );\n        } else {\n          option.selected = looseIndexOf(value, optionValue) > -1;\n        }\n      } else {\n        option.selected = value.has(optionValue);\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i)\n          el.selectedIndex = i;\n        return;\n      }\n    }\n  }\n  if (!isMultiple && el.selectedIndex !== -1) {\n    el.selectedIndex = -1;\n  }\n}\nfunction getValue(el) {\n  return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n  const key = checked ? \"_trueValue\" : \"_falseValue\";\n  return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n  created(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"created\");\n  },\n  mounted(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"mounted\");\n  },\n  beforeUpdate(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n  },\n  updated(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"updated\");\n  }\n};\nfunction resolveDynamicModel(tagName, type) {\n  switch (tagName) {\n    case \"SELECT\":\n      return vModelSelect;\n    case \"TEXTAREA\":\n      return vModelText;\n    default:\n      switch (type) {\n        case \"checkbox\":\n          return vModelCheckbox;\n        case \"radio\":\n          return vModelRadio;\n        default:\n          return vModelText;\n      }\n  }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n  const modelToUse = resolveDynamicModel(\n    el.tagName,\n    vnode.props && vnode.props.type\n  );\n  const fn = modelToUse[hook];\n  fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n  vModelText.getSSRProps = ({ value }) => ({ value });\n  vModelRadio.getSSRProps = ({ value }, vnode) => {\n    if (vnode.props && looseEqual(vnode.props.value, value)) {\n      return { checked: true };\n    }\n  };\n  vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n    if (isArray(value)) {\n      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n        return { checked: true };\n      }\n    } else if (isSet(value)) {\n      if (vnode.props && value.has(vnode.props.value)) {\n        return { checked: true };\n      }\n    } else if (value) {\n      return { checked: true };\n    }\n  };\n  vModelDynamic.getSSRProps = (binding, vnode) => {\n    if (typeof vnode.type !== \"string\") {\n      return;\n    }\n    const modelToUse = resolveDynamicModel(\n      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n      vnode.type.toUpperCase(),\n      vnode.props && vnode.props.type\n    );\n    if (modelToUse.getSSRProps) {\n      return modelToUse.getSSRProps(binding, vnode);\n    }\n  };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  const cache = fn._withMods || (fn._withMods = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers))\n        return;\n    }\n    return fn(event, ...args);\n  });\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  let globalKeyCodes;\n  let instance = null;\n  {\n    instance = getCurrentInstance();\n    if (compatUtils.isCompatEnabled(\"CONFIG_KEY_CODES\", instance)) {\n      if (instance) {\n        globalKeyCodes = instance.appContext.config.keyCodes;\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && modifiers.some((m) => /^\\d+$/.test(m))) {\n      compatUtils.warnDeprecation(\n        \"V_ON_KEYCODE_MODIFIER\",\n        instance\n      );\n    }\n  }\n  const cache = fn._withKeys || (fn._withKeys = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n      return fn(event);\n    }\n    {\n      const keyCode = String(event.keyCode);\n      if (compatUtils.isCompatEnabled(\n        \"V_ON_KEYCODE_MODIFIER\",\n        instance\n      ) && modifiers.some((mod) => mod == keyCode)) {\n        return fn(event);\n      }\n      if (globalKeyCodes) {\n        for (const mod of modifiers) {\n          const codes = globalKeyCodes[mod];\n          if (codes) {\n            const matches = isArray(codes) ? codes.some((code) => String(code) === keyCode) : String(codes) === keyCode;\n            if (matches) {\n              return fn(event);\n            }\n          }\n        }\n      }\n    }\n  });\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n  renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n  enabledHydration = true;\n  return renderer;\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n  ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n  const app = ensureRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (!container)\n      return;\n    const component = app._component;\n    if (!isFunction(component) && !component.render && !component.template) {\n      component.template = container.innerHTML;\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (let i = 0; i < container.attributes.length; i++) {\n          const attr = container.attributes[i];\n          if (attr.name !== \"v-cloak\" && /^(v-|:|@)/.test(attr.name)) {\n            compatUtils.warnDeprecation(\n              \"GLOBAL_MOUNT_CONTAINER\",\n              null\n            );\n            break;\n          }\n        }\n      }\n    }\n    container.innerHTML = \"\";\n    const proxy = mount(container, false, resolveRootNamespace(container));\n    if (container instanceof Element) {\n      container.removeAttribute(\"v-cloak\");\n      container.setAttribute(\"data-v-app\", \"\");\n    }\n    return proxy;\n  };\n  return app;\n};\nconst createSSRApp = (...args) => {\n  const app = ensureHydrationRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (container) {\n      return mount(container, true, resolveRootNamespace(container));\n    }\n  };\n  return app;\n};\nfunction resolveRootNamespace(container) {\n  if (container instanceof SVGElement) {\n    return \"svg\";\n  }\n  if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n    return \"mathml\";\n  }\n}\nfunction injectNativeTagCheck(app) {\n  Object.defineProperty(app.config, \"isNativeTag\", {\n    value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n    writable: false\n  });\n}\nfunction injectCompilerOptionsCheck(app) {\n  if (isRuntimeOnly()) {\n    const isCustomElement = app.config.isCustomElement;\n    Object.defineProperty(app.config, \"isCustomElement\", {\n      get() {\n        return isCustomElement;\n      },\n      set() {\n        warn(\n          `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n        );\n      }\n    });\n    const compilerOptions = app.config.compilerOptions;\n    const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n    Object.defineProperty(app.config, \"compilerOptions\", {\n      get() {\n        warn(msg);\n        return compilerOptions;\n      },\n      set() {\n        warn(msg);\n      }\n    });\n  }\n}\nfunction normalizeContainer(container) {\n  if (isString(container)) {\n    const res = document.querySelector(container);\n    if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n      warn(\n        `Failed to mount app: mount target selector \"${container}\" returned null.`\n      );\n    }\n    return res;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n    warn(\n      `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n    );\n  }\n  return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n  if (!ssrDirectiveInitialized) {\n    ssrDirectiveInitialized = true;\n    initVModelForSSR();\n    initVShowForSSR();\n  }\n} ;\n\nvar runtimeDom = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  BaseTransition: BaseTransition,\n  BaseTransitionPropsValidators: BaseTransitionPropsValidators,\n  Comment: Comment,\n  DeprecationTypes: DeprecationTypes,\n  EffectScope: EffectScope,\n  ErrorCodes: ErrorCodes,\n  ErrorTypeStrings: ErrorTypeStrings,\n  Fragment: Fragment,\n  KeepAlive: KeepAlive,\n  ReactiveEffect: ReactiveEffect,\n  Static: Static,\n  Suspense: Suspense,\n  Teleport: Teleport,\n  Text: Text,\n  TrackOpTypes: TrackOpTypes,\n  Transition: Transition,\n  TransitionGroup: TransitionGroup,\n  TriggerOpTypes: TriggerOpTypes,\n  VueElement: VueElement,\n  assertNumber: assertNumber,\n  callWithAsyncErrorHandling: callWithAsyncErrorHandling,\n  callWithErrorHandling: callWithErrorHandling,\n  camelize: camelize,\n  capitalize: capitalize,\n  cloneVNode: cloneVNode,\n  compatUtils: compatUtils,\n  computed: computed,\n  createApp: createApp,\n  createBlock: createBlock,\n  createCommentVNode: createCommentVNode,\n  createElementBlock: createElementBlock,\n  createElementVNode: createBaseVNode,\n  createHydrationRenderer: createHydrationRenderer,\n  createPropsRestProxy: createPropsRestProxy,\n  createRenderer: createRenderer,\n  createSSRApp: createSSRApp,\n  createSlots: createSlots,\n  createStaticVNode: createStaticVNode,\n  createTextVNode: createTextVNode,\n  createVNode: createVNode,\n  customRef: customRef,\n  defineAsyncComponent: defineAsyncComponent,\n  defineComponent: defineComponent,\n  defineCustomElement: defineCustomElement,\n  defineEmits: defineEmits,\n  defineExpose: defineExpose,\n  defineModel: defineModel,\n  defineOptions: defineOptions,\n  defineProps: defineProps,\n  defineSSRCustomElement: defineSSRCustomElement,\n  defineSlots: defineSlots,\n  devtools: devtools,\n  effect: effect,\n  effectScope: effectScope,\n  getCurrentInstance: getCurrentInstance,\n  getCurrentScope: getCurrentScope,\n  getTransitionRawChildren: getTransitionRawChildren,\n  guardReactiveProps: guardReactiveProps,\n  h: h,\n  handleError: handleError,\n  hasInjectionContext: hasInjectionContext,\n  hydrate: hydrate,\n  initCustomFormatter: initCustomFormatter,\n  initDirectivesForSSR: initDirectivesForSSR,\n  inject: inject,\n  isMemoSame: isMemoSame,\n  isProxy: isProxy,\n  isReactive: isReactive,\n  isReadonly: isReadonly,\n  isRef: isRef,\n  isRuntimeOnly: isRuntimeOnly,\n  isShallow: isShallow,\n  isVNode: isVNode,\n  markRaw: markRaw,\n  mergeDefaults: mergeDefaults,\n  mergeModels: mergeModels,\n  mergeProps: mergeProps,\n  nextTick: nextTick,\n  normalizeClass: normalizeClass,\n  normalizeProps: normalizeProps,\n  normalizeStyle: normalizeStyle,\n  onActivated: onActivated,\n  onBeforeMount: onBeforeMount,\n  onBeforeUnmount: onBeforeUnmount,\n  onBeforeUpdate: onBeforeUpdate,\n  onDeactivated: onDeactivated,\n  onErrorCaptured: onErrorCaptured,\n  onMounted: onMounted,\n  onRenderTracked: onRenderTracked,\n  onRenderTriggered: onRenderTriggered,\n  onScopeDispose: onScopeDispose,\n  onServerPrefetch: onServerPrefetch,\n  onUnmounted: onUnmounted,\n  onUpdated: onUpdated,\n  openBlock: openBlock,\n  popScopeId: popScopeId,\n  provide: provide,\n  proxyRefs: proxyRefs,\n  pushScopeId: pushScopeId,\n  queuePostFlushCb: queuePostFlushCb,\n  reactive: reactive,\n  readonly: readonly,\n  ref: ref,\n  registerRuntimeCompiler: registerRuntimeCompiler,\n  render: render,\n  renderList: renderList,\n  renderSlot: renderSlot,\n  resolveComponent: resolveComponent,\n  resolveDirective: resolveDirective,\n  resolveDynamicComponent: resolveDynamicComponent,\n  resolveFilter: resolveFilter,\n  resolveTransitionHooks: resolveTransitionHooks,\n  setBlockTracking: setBlockTracking,\n  setDevtoolsHook: setDevtoolsHook,\n  setTransitionHooks: setTransitionHooks,\n  shallowReactive: shallowReactive,\n  shallowReadonly: shallowReadonly,\n  shallowRef: shallowRef,\n  ssrContextKey: ssrContextKey,\n  ssrUtils: ssrUtils,\n  stop: stop,\n  toDisplayString: toDisplayString,\n  toHandlerKey: toHandlerKey,\n  toHandlers: toHandlers,\n  toRaw: toRaw,\n  toRef: toRef,\n  toRefs: toRefs,\n  toValue: toValue,\n  transformVNodeArgs: transformVNodeArgs,\n  triggerRef: triggerRef,\n  unref: unref,\n  useAttrs: useAttrs,\n  useCssModule: useCssModule,\n  useCssVars: useCssVars,\n  useModel: useModel,\n  useSSRContext: useSSRContext,\n  useSlots: useSlots,\n  useTransitionState: useTransitionState,\n  vModelCheckbox: vModelCheckbox,\n  vModelDynamic: vModelDynamic,\n  vModelRadio: vModelRadio,\n  vModelSelect: vModelSelect,\n  vModelText: vModelText,\n  vShow: vShow,\n  version: version,\n  warn: warn,\n  watch: watch,\n  watchEffect: watchEffect,\n  watchPostEffect: watchPostEffect,\n  watchSyncEffect: watchSyncEffect,\n  withAsyncContext: withAsyncContext,\n  withCtx: withCtx,\n  withDefaults: withDefaults,\n  withDirectives: withDirectives,\n  withKeys: withKeys,\n  withMemo: withMemo,\n  withModifiers: withModifiers,\n  withScopeId: withScopeId\n});\n\nfunction initDev() {\n  {\n    initCustomFormatter();\n  }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  initDev();\n}\nfunction wrappedCreateApp(...args) {\n  const app = createApp(...args);\n  if (compatUtils.isCompatEnabled(\"RENDER_FUNCTION\", null)) {\n    app.component(\"__compat__transition\", Transition);\n    app.component(\"__compat__transition-group\", TransitionGroup);\n    app.component(\"__compat__keep-alive\", KeepAlive);\n    app._context.directives.show = vShow;\n    app._context.directives.model = vModelDynamic;\n  }\n  return app;\n}\nfunction createCompatVue() {\n  const Vue = compatUtils.createCompatVue(createApp, wrappedCreateApp);\n  extend(Vue, runtimeDom);\n  return Vue;\n}\n\nconst Vue = createCompatVue();\nVue.compile = () => {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(\n      `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"@vue/compat/dist/vue.esm-bundler.js\".` )\n    );\n  }\n};\nvar Vue$1 = Vue;\n\nconst { configureCompat } = Vue$1;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue$1 as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  const _component_vue_advanced_chat = _resolveComponent(\"vue-advanced-chat\")!\n\n  return (_openBlock(), _createBlock(_component_vue_advanced_chat, {\n    \"current-user-id\": _ctx.currentUserId,\n    \"rooms-loaded\": _ctx.rooms.length > 0,\n    \"messages-loaded\": _ctx.messagesLoaded || null,\n    \"single-room\": \"true\",\n    rooms: JSON.stringify(_ctx.rooms),\n    \"room-id\": _ctx.rooms[0].roomId,\n    \"show-files\": \"false\",\n    \"show-emojis\": \"true\",\n    \"show-reaction-emojis\": \"false\",\n    \"show-audio\": \"false\",\n    messages: JSON.stringify(_ctx.messages),\n    \"message-actions\": \n      JSON.stringify([\n        {\n          name: 'replyMessage',\n          title: 'Répondre'\n        }\n      ])\n    ,\n    \"link-options\": JSON.stringify({ disabled: false, target: '_self' }),\n    \"text-messages\": \n      JSON.stringify({\n        ROOMS_EMPTY: 'Aucune conversation',\n        ROOM_EMPTY: 'Aucune conversation sélectionnée',\n        NEW_MESSAGES: 'Nouveaux messages',\n        MESSAGE_DELETED: 'Ce message a été supprimé',\n        MESSAGES_EMPTY: 'Aucun message',\n        CONVERSATION_STARTED: 'La conversation a commencée le :',\n        TYPE_MESSAGE: 'Tapez votre message',\n        SEARCH: 'Rechercher',\n        IS_ONLINE: 'est en ligne',\n        LAST_SEEN: 'dernière connexion ',\n        IS_TYPING: 'est en train de taper...'\n      })\n    ,\n    onSendMessage: _cache[0] || (_cache[0] = ($event: any) => (_ctx.sendMessage($event.detail[0])))\n  }, null, 8, [\"current-user-id\", \"rooms-loaded\", \"messages-loaded\", \"rooms\", \"room-id\", \"messages\", \"message-actions\", \"link-options\", \"text-messages\"]))\n}","<template>\n  <vue-advanced-chat\n    :current-user-id=\"currentUserId\"\n    :rooms-loaded=\"rooms.length > 0\"\n    :messages-loaded=\"messagesLoaded || null\"\n    single-room=\"true\"\n    :rooms=\"JSON.stringify(rooms)\"\n    :room-id=\"rooms[0].roomId\"\n    show-files=\"false\"\n    show-emojis=\"true\"\n    show-reaction-emojis=\"false\"\n    show-audio=\"false\"\n    :messages=\"JSON.stringify(messages)\"\n    :message-actions=\"\n      JSON.stringify([\n        {\n          name: 'replyMessage',\n          title: 'Répondre'\n        }\n      ])\n    \"\n    :link-options=\"JSON.stringify({ disabled: false, target: '_self' })\"\n    :text-messages=\"\n      JSON.stringify({\n        ROOMS_EMPTY: 'Aucune conversation',\n        ROOM_EMPTY: 'Aucune conversation sélectionnée',\n        NEW_MESSAGES: 'Nouveaux messages',\n        MESSAGE_DELETED: 'Ce message a été supprimé',\n        MESSAGES_EMPTY: 'Aucun message',\n        CONVERSATION_STARTED: 'La conversation a commencée le :',\n        TYPE_MESSAGE: 'Tapez votre message',\n        SEARCH: 'Rechercher',\n        IS_ONLINE: 'est en ligne',\n        LAST_SEEN: 'dernière connexion ',\n        IS_TYPING: 'est en train de taper...'\n      })\n    \"\n    @send-message=\"sendMessage($event.detail[0])\"\n  />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\nimport { Message, Room, register } from \"vue-advanced-chat\"\nregister()\n\ninterface BaseComponentData {\n  socket: WebSocket | null\n  rooms: Room[]\n  messagesLoaded: boolean\n  messages: Message[]\n  currentUserId: string | null\n}\n\nexport default defineComponent({\n  data(): BaseComponentData {\n    return {\n      socket: null,\n      rooms: [\n        {\n          roomId: \"global\",\n          roomName: \"\",\n          avatar: \"\",\n          users: []\n        }\n      ],\n      messagesLoaded: false,\n      messages: [],\n      currentUserId: null\n    }\n  },\n\n  mounted() {\n    // get room info\n    let roomInfoStr: string | null = \"\"\n    const roomInfoElm = document.getElementById(\"room-info\")\n    if (roomInfoElm) roomInfoStr = roomInfoElm.textContent\n    let roomInfo: any = null\n    if (roomInfoStr) roomInfo = JSON.parse(roomInfoStr)\n    else throw \"No room info provided\"\n    this.rooms = [\n      {\n        roomId: roomInfo.room_name,\n        roomName: roomInfo.room_title,\n        avatar: \"\",\n        // add fake users to make sure username are displayed in the chat (if less than two, name are not displayed)\n        users: [\n          {\n            _id: \"1\",\n            username: \"Fake user 1\",\n            avatar: \"assets/imgs/doe.png\",\n            status: {\n              state: \"online\",\n              lastChanged: \"today, 14:30\"\n            }\n          },\n          {\n            _id: \"2\",\n            username: \"Fake user 2\",\n            avatar: \"assets/imgs/snow.png\",\n            status: {\n              state: \"online\",\n              lastChanged: \"14 July, 20:00\"\n            }\n          },\n          {\n            _id: \"3\",\n            username: \"Fake user 3\",\n            avatar: \"assets/imgs/snow.png\",\n            status: {\n              state: \"online\",\n              lastChanged: \"14 July, 20:00\"\n            }\n          }\n        ]\n      }\n    ]\n    this.connect(roomInfo.room_name)\n    this.currentUserId = roomInfo.user_id\n  },\n\n  methods: {\n    connect(roomName: string) {\n      // connect to socket\n      let protocol = \"wss\"\n      if (window.location.protocol != \"https:\") protocol = \"ws\"\n      this.socket = new WebSocket(protocol + \"://\" + window.location.host + \"/ws/chat/\" + roomName + \"/\")\n      this.fetchMessages()\n\n      this.socket.onclose = () => {\n        console.log(\"Chat socket closed\")\n        // try to reconnect\n        // setTimeout(() => {\n        //   this.connect(roomName)\n        // }, 10000)\n      }\n    },\n\n    async fetchMessages() {\n      this.socket!.onmessage = (e) => {\n        const data = JSON.parse(e.data)\n        const type = data.type\n        // do not load messages in case of socket reconnect\n        if (type == \"initial\" && this.messagesLoaded) return\n        const newMessages = data.messages as Message[]\n        this.messages = [...this.messages, ...newMessages]\n        if (type == \"initial\") {\n          this.messagesLoaded = true\n        }\n      }\n    },\n\n    sendMessage({ content, replyMessage }: Message) {\n      /** send message to socket */\n      this.socket!.send(\n        JSON.stringify({\n          message: content,\n          replyTo: replyMessage ? replyMessage._id : null\n        })\n      )\n    }\n  },\n\n  computed: {\n    showAudio() {\n      return undefined\n    }\n  }\n})\n</script>\n\n<style>\n.vac-message-wrapper .vac-offset-current {\n  margin-left: 15%;\n}\n.vac-message-wrapper .vac-message-box {\n  max-width: 80%;\n}\n</style>\n","function makeMap$2(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list2 = str.split(\",\");\n  for (let i = 0; i < list2.length; i++) {\n    map[list2[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nconst NOOP$1 = () => {\n};\nconst extend$2 = Object.assign;\nconst hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nconst hasOwn$1 = (val, key) => hasOwnProperty$3.call(val, key);\nconst isArray$2 = Array.isArray;\nconst isMap$1 = (val) => toTypeString$1(val) === \"[object Map]\";\nconst isFunction$2 = (val) => typeof val === \"function\";\nconst isString$2 = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject$2 = (val) => val !== null && typeof val === \"object\";\nconst objectToString$1 = Object.prototype.toString;\nconst toTypeString$1 = (value) => objectToString$1.call(value);\nconst toRawType = (value) => {\n  return toTypeString$1(value).slice(8, -1);\n};\nconst isIntegerKey = (key) => isString$2(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst hasChanged$1 = (value, oldValue) => !Object.is(value, oldValue);\nconst def$1 = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.active = true;\n    this.effects = [];\n    this.cleanups = [];\n    if (!detached && activeEffectScope) {\n      this.parent = activeEffectScope;\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n    }\n  }\n  run(fn) {\n    if (this.active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    }\n  }\n  on() {\n    activeEffectScope = this;\n  }\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this.active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.active = false;\n    }\n  }\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n  if (scope && scope.active) {\n    scope.effects.push(effect);\n  }\n}\nconst createDep = (effects) => {\n  const dep = new Set(effects);\n  dep.w = 0;\n  dep.n = 0;\n  return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].w |= trackOpBit;\n    }\n  }\n};\nconst finalizeDepMarkers = (effect) => {\n  const { deps } = effect;\n  if (deps.length) {\n    let ptr = 0;\n    for (let i = 0; i < deps.length; i++) {\n      const dep = deps[i];\n      if (wasTracked(dep) && !newTracked(dep)) {\n        dep.delete(effect);\n      } else {\n        deps[ptr++] = dep;\n      }\n      dep.w &= ~trackOpBit;\n      dep.n &= ~trackOpBit;\n    }\n    deps.length = ptr;\n  }\n};\nconst targetMap = /* @__PURE__ */ new WeakMap();\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol(\"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(\"\");\nclass ReactiveEffect {\n  constructor(fn, scheduler = null, scope) {\n    this.fn = fn;\n    this.scheduler = scheduler;\n    this.active = true;\n    this.deps = [];\n    this.parent = void 0;\n    recordEffectScope(this, scope);\n  }\n  run() {\n    if (!this.active) {\n      return this.fn();\n    }\n    let parent = activeEffect;\n    let lastShouldTrack = shouldTrack;\n    while (parent) {\n      if (parent === this) {\n        return;\n      }\n      parent = parent.parent;\n    }\n    try {\n      this.parent = activeEffect;\n      activeEffect = this;\n      shouldTrack = true;\n      trackOpBit = 1 << ++effectTrackDepth;\n      if (effectTrackDepth <= maxMarkerBits) {\n        initDepMarkers(this);\n      } else {\n        cleanupEffect(this);\n      }\n      return this.fn();\n    } finally {\n      if (effectTrackDepth <= maxMarkerBits) {\n        finalizeDepMarkers(this);\n      }\n      trackOpBit = 1 << --effectTrackDepth;\n      activeEffect = this.parent;\n      shouldTrack = lastShouldTrack;\n      this.parent = void 0;\n      if (this.deferStop) {\n        this.stop();\n      }\n    }\n  }\n  stop() {\n    if (activeEffect === this) {\n      this.deferStop = true;\n    } else if (this.active) {\n      cleanupEffect(this);\n      if (this.onStop) {\n        this.onStop();\n      }\n      this.active = false;\n    }\n  }\n}\nfunction cleanupEffect(effect) {\n  const { deps } = effect;\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].delete(effect);\n    }\n    deps.length = 0;\n  }\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n  if (shouldTrack && activeEffect) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = createDep());\n    }\n    trackEffects(dep);\n  }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n  let shouldTrack2 = false;\n  if (effectTrackDepth <= maxMarkerBits) {\n    if (!newTracked(dep)) {\n      dep.n |= trackOpBit;\n      shouldTrack2 = !wasTracked(dep);\n    }\n  } else {\n    shouldTrack2 = !dep.has(activeEffect);\n  }\n  if (shouldTrack2) {\n    dep.add(activeEffect);\n    activeEffect.deps.push(dep);\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  let deps = [];\n  if (type === \"clear\") {\n    deps = [...depsMap.values()];\n  } else if (key === \"length\" && isArray$2(target)) {\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || key2 >= newValue) {\n        deps.push(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      deps.push(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray$2(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap$1(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          deps.push(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray$2(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap$1(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap$1(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  if (deps.length === 1) {\n    if (deps[0]) {\n      {\n        triggerEffects(deps[0]);\n      }\n    }\n  } else {\n    const effects = [];\n    for (const dep of deps) {\n      if (dep) {\n        effects.push(...dep);\n      }\n    }\n    {\n      triggerEffects(createDep(effects));\n    }\n  }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n  const effects = isArray$2(dep) ? dep : [...dep];\n  for (const effect of effects) {\n    if (effect.computed) {\n      triggerEffect(effect);\n    }\n  }\n  for (const effect of effects) {\n    if (!effect.computed) {\n      triggerEffect(effect);\n    }\n  }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n  if (effect !== activeEffect || effect.allowRecurse) {\n    if (effect.scheduler) {\n      effect.scheduler();\n    } else {\n      effect.run();\n    }\n  }\n}\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap$2(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst get$1 = /* @__PURE__ */ createGetter();\nconst shallowGet = /* @__PURE__ */ createGetter(false, true);\nconst readonlyGet = /* @__PURE__ */ createGetter(true);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      const res = toRaw(this)[key].apply(this, args);\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction createGetter(isReadonly2 = false, shallow = false) {\n  return function get2(target, key, receiver) {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return shallow;\n    } else if (key === \"__v_raw\" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n      return target;\n    }\n    const targetIsArray = isArray$2(target);\n    if (!isReadonly2 && targetIsArray && hasOwn$1(arrayInstrumentations, key)) {\n      return Reflect.get(arrayInstrumentations, key, receiver);\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject$2(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  };\n}\nconst set$1 = /* @__PURE__ */ createSetter();\nconst shallowSet = /* @__PURE__ */ createSetter(true);\nfunction createSetter(shallow = false) {\n  return function set2(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n      return false;\n    }\n    if (!shallow && !isReadonly(value)) {\n      if (!isShallow(value)) {\n        value = toRaw(value);\n        oldValue = toRaw(oldValue);\n      }\n      if (!isArray$2(target) && isRef(oldValue) && !isRef(value)) {\n        oldValue.value = value;\n        return true;\n      }\n    }\n    const hadKey = isArray$2(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn$1(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged$1(value, oldValue)) {\n        trigger(target, \"set\", key, value);\n      }\n    }\n    return result;\n  };\n}\nfunction deleteProperty(target, key) {\n  const hadKey = hasOwn$1(target, key);\n  target[key];\n  const result = Reflect.deleteProperty(target, key);\n  if (result && hadKey) {\n    trigger(target, \"delete\", key, void 0);\n  }\n  return result;\n}\nfunction has(target, key) {\n  const result = Reflect.has(target, key);\n  if (!isSymbol(key) || !builtInSymbols.has(key)) {\n    track(target, \"has\", key);\n  }\n  return result;\n}\nfunction ownKeys(target) {\n  track(target, \"iterate\", isArray$2(target) ? \"length\" : ITERATE_KEY);\n  return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n  get: get$1,\n  set: set$1,\n  deleteProperty,\n  has,\n  ownKeys\n};\nconst readonlyHandlers = {\n  get: readonlyGet,\n  set(target, key) {\n    return true;\n  },\n  deleteProperty(target, key) {\n    return true;\n  }\n};\nconst shallowReactiveHandlers = /* @__PURE__ */ extend$2({}, mutableHandlers, {\n  get: shallowGet,\n  set: shallowSet\n});\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1$1(target, key, isReadonly2 = false, isShallow2 = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly2) {\n    if (key !== rawKey) {\n      track(rawTarget, \"get\", key);\n    }\n    track(rawTarget, \"get\", rawKey);\n  }\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has$1(key, isReadonly2 = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly2) {\n    if (key !== rawKey) {\n      track(rawTarget, \"has\", key);\n    }\n    track(rawTarget, \"has\", rawKey);\n  }\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly2 = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly2 && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set$1$1(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  }\n  const oldValue = get2.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged$1(value, oldValue)) {\n    trigger(target, \"set\", key, value);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  }\n  get2 ? get2.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0);\n  }\n  return result;\n}\nfunction createForEach(isReadonly2, isShallow2) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap$1(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n    return {\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    return type === \"delete\" ? false : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n    readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n    shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n  const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(hasOwn$1(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\nfunction readonly(target) {\n  return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject$2(target)) {\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0) {\n    return target;\n  }\n  const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  def$1(value, \"__v_skip\", true);\n  return value;\n}\nconst toReactive = (value) => isObject$2(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject$2(value) ? readonly(value) : value;\nfunction trackRefValue(ref) {\n  if (shouldTrack && activeEffect) {\n    ref = toRaw(ref);\n    {\n      trackEffects(ref.dep || (ref.dep = createDep()));\n    }\n  }\n}\nfunction triggerRefValue(ref, newVal) {\n  ref = toRaw(ref);\n  if (ref.dep) {\n    {\n      triggerEffects(ref.dep);\n    }\n  }\n}\nfunction isRef(r) {\n  return !!(r && r.__v_isRef === true);\n}\nfunction unref(ref) {\n  return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass ComputedRefImpl {\n  constructor(getter, _setter, isReadonly2, isSSR) {\n    this._setter = _setter;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this._dirty = true;\n    this.effect = new ReactiveEffect(getter, () => {\n      if (!this._dirty) {\n        this._dirty = true;\n        triggerRefValue(this);\n      }\n    });\n    this.effect.computed = this;\n    this.effect.active = this._cacheable = !isSSR;\n    this[\"__v_isReadonly\"] = isReadonly2;\n  }\n  get value() {\n    const self2 = toRaw(this);\n    trackRefValue(self2);\n    if (self2._dirty || !self2._cacheable) {\n      self2._dirty = false;\n      self2._value = self2.effect.run();\n    }\n    return self2._value;\n  }\n  set value(newValue) {\n    this._setter(newValue);\n  }\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  const onlyGetter = isFunction$2(getterOrOptions);\n  if (onlyGetter) {\n    getter = getterOrOptions;\n    setter = NOOP$1;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n  return cRef;\n}\nfunction makeMap$1(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list2 = str.split(\",\");\n  for (let i = 0; i < list2.length; i++) {\n    map[list2[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nfunction normalizeStyle(value) {\n  if (isArray$1(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString$1(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString$1(value)) {\n    return value;\n  } else if (isObject$1(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:(.+)/;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString$1(value)) {\n    res = value;\n  } else if (isArray$1(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject$1(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props)\n    return null;\n  let { class: klass, style } = props;\n  if (klass && !isString$1(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\nconst toDisplayString = (val) => {\n  return isString$1(val) ? val : val == null ? \"\" : isArray$1(val) || isObject$1(val) && (val.toString === objectToString || !isFunction$1(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (val && val.__v_isRef) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {\n        entries[`${key} =>`] = val2;\n        return entries;\n      }, {})\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()]\n    };\n  } else if (isObject$1(val) && !isArray$1(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst onRE$1 = /^on[^a-z]/;\nconst isOn$1 = (key) => onRE$1.test(key);\nconst isModelListener$1 = (key) => key.startsWith(\"onUpdate:\");\nconst extend$1 = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty$2.call(val, key);\nconst isArray$1 = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isFunction$1 = (val) => typeof val === \"function\";\nconst isString$1 = (val) => typeof val === \"string\";\nconst isObject$1 = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return isObject$1(val) && isFunction$1(val.then) && isFunction$1(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isReservedProp = /* @__PURE__ */ makeMap$1(\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst cacheStringFunction$1 = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE$1 = /-(\\w)/g;\nconst camelize$1 = cacheStringFunction$1((str) => {\n  return str.replace(camelizeRE$1, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE$1 = /\\B([A-Z])/g;\nconst hyphenate$1 = cacheStringFunction$1((str) => str.replace(hyphenateRE$1, \"-$1\").toLowerCase());\nconst capitalize$1 = cacheStringFunction$1((str) => str.charAt(0).toUpperCase() + str.slice(1));\nconst toHandlerKey = cacheStringFunction$1((str) => str ? `on${capitalize$1(str)}` : ``);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](arg);\n  }\n};\nconst def = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nconst toNumber$1 = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nfunction callWithErrorHandling(fn, instance2, type, args) {\n  let res;\n  try {\n    res = args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance2, type);\n  }\n  return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance2, type, args) {\n  if (isFunction$1(fn)) {\n    const res = callWithErrorHandling(fn, instance2, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance2, type);\n      });\n    }\n    return res;\n  }\n  const values = [];\n  for (let i = 0; i < fn.length; i++) {\n    values.push(callWithAsyncErrorHandling(fn[i], instance2, type, args));\n  }\n  return values;\n}\nfunction handleError(err, instance2, type, throwInDev = true) {\n  const contextVNode = instance2 ? instance2.vnode : null;\n  if (instance2) {\n    let cur = instance2.parent;\n    const exposedInstance = instance2.proxy;\n    const errorInfo = type;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    const appErrorHandler = instance2.appContext.config.errorHandler;\n    if (appErrorHandler) {\n      callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]);\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n  {\n    console.error(err);\n  }\n}\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPreFlushCbs = [];\nlet activePreFlushCbs = null;\nlet preFlushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nlet currentPreFlushParentJob = null;\nfunction nextTick(fn) {\n  const p2 = currentFlushPromise || resolvedPromise;\n  return fn ? p2.then(this ? fn.bind(this) : fn) : p2;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJobId = getId(queue[middle]);\n    middleJobId < id ? start = middle + 1 : end = middle;\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if ((!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) && job !== currentPreFlushParentJob) {\n    if (job.id == null) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(job.id), 0, job);\n    }\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!isFlushing && !isFlushPending) {\n    isFlushPending = true;\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction invalidateJob(job) {\n  const i = queue.indexOf(job);\n  if (i > flushIndex) {\n    queue.splice(i, 1);\n  }\n}\nfunction queueCb(cb, activeQueue, pendingQueue, index) {\n  if (!isArray$1(cb)) {\n    if (!activeQueue || !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {\n      pendingQueue.push(cb);\n    }\n  } else {\n    pendingQueue.push(...cb);\n  }\n  queueFlush();\n}\nfunction queuePreFlushCb(cb) {\n  queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);\n}\nfunction queuePostFlushCb(cb) {\n  queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);\n}\nfunction flushPreFlushCbs(seen, parentJob = null) {\n  if (pendingPreFlushCbs.length) {\n    currentPreFlushParentJob = parentJob;\n    activePreFlushCbs = [...new Set(pendingPreFlushCbs)];\n    pendingPreFlushCbs.length = 0;\n    for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {\n      activePreFlushCbs[preFlushIndex]();\n    }\n    activePreFlushCbs = null;\n    preFlushIndex = 0;\n    currentPreFlushParentJob = null;\n    flushPreFlushCbs(seen, parentJob);\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  flushPreFlushCbs();\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)];\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      activePostFlushCbs[postFlushIndex]();\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nfunction flushJobs(seen) {\n  isFlushPending = false;\n  isFlushing = true;\n  flushPreFlushCbs(seen);\n  queue.sort((a, b) => getId(a) - getId(b));\n  const check = NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && job.active !== false) {\n        if (false)\n          ;\n        callWithErrorHandling(job, null, 14);\n      }\n    }\n  } finally {\n    flushIndex = 0;\n    queue.length = 0;\n    flushPostFlushCbs();\n    isFlushing = false;\n    currentFlushPromise = null;\n    if (queue.length || pendingPreFlushCbs.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction emit$1(instance2, event, ...rawArgs) {\n  if (instance2.isUnmounted)\n    return;\n  const props = instance2.vnode.props || EMPTY_OBJ;\n  let args = rawArgs;\n  const isModelListener2 = event.startsWith(\"update:\");\n  const modelArg = isModelListener2 && event.slice(7);\n  if (modelArg && modelArg in props) {\n    const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n    const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n    if (trim) {\n      args = rawArgs.map((a) => a.trim());\n    }\n    if (number) {\n      args = rawArgs.map(toNumber$1);\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || props[handlerName = toHandlerKey(camelize$1(event))];\n  if (!handler && isModelListener2) {\n    handler = props[handlerName = toHandlerKey(hyphenate$1(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(handler, instance2, 6, args);\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance2.emitted) {\n      instance2.emitted = {};\n    } else if (instance2.emitted[handlerName]) {\n      return;\n    }\n    instance2.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(onceHandler, instance2, 6, args);\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (!isFunction$1(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend$1(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    cache.set(comp, null);\n    return null;\n  }\n  if (isArray$1(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend$1(normalized, raw);\n  }\n  cache.set(comp, normalized);\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn$1(key)) {\n    return false;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate$1(key)) || hasOwn(options, key);\n}\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance2) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance2;\n  currentScopeId = instance2 && instance2.type.__scopeId || null;\n  return prev;\n}\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx)\n    return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    const res = fn(...args);\n    setCurrentRenderingInstance(prevInstance);\n    if (renderFnWithContext._d) {\n      setBlockTracking(1);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  return renderFnWithContext;\n}\nfunction markAttrsAccessed() {\n}\nfunction renderComponentRoot(instance2) {\n  const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render: render2, renderCache, data, setupState, ctx, inheritAttrs } = instance2;\n  let result;\n  let fallthroughAttrs;\n  const prev = setCurrentRenderingInstance(instance2);\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      result = normalizeVNode(render2.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n      fallthroughAttrs = attrs;\n    } else {\n      const render3 = Component;\n      if (false)\n        ;\n      result = normalizeVNode(render3.length > 1 ? render3(props, false ? {\n        get attrs() {\n          markAttrsAccessed();\n          return attrs;\n        },\n        slots,\n        emit\n      } : { attrs, slots, emit }) : render3(props, null));\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance2, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener$1)) {\n          fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n        }\n        root = cloneVNode(root, fallthroughAttrs);\n      }\n    }\n  }\n  if (vnode.dirs) {\n    root = cloneVNode(root);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    root.transition = vnode.transition;\n  }\n  {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn$1(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener$1(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent && parent.subTree === vnode) {\n    (vnode = parent.vnode).el = el;\n    parent = parent.parent;\n  }\n}\nconst isSuspense = (type) => type.__isSuspense;\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray$1(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction provide(key, value) {\n  if (!currentInstance)\n    ;\n  else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance2 = currentInstance || currentRenderingInstance;\n  if (instance2) {\n    const provides = instance2.parent == null ? instance2.vnode.appContext && instance2.vnode.appContext.provides : instance2.parent.provides;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction$1(defaultValue) ? defaultValue.call(instance2.proxy) : defaultValue;\n    } else\n      ;\n  }\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush: flush2, onTrack, onTrigger } = EMPTY_OBJ) {\n  const instance2 = currentInstance;\n  let getter;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => source;\n    deep = true;\n  } else if (isArray$1(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return traverse(s);\n      } else if (isFunction$1(s)) {\n        return callWithErrorHandling(s, instance2, 2);\n      } else\n        ;\n    });\n  } else if (isFunction$1(source)) {\n    if (cb) {\n      getter = () => callWithErrorHandling(source, instance2, 2);\n    } else {\n      getter = () => {\n        if (instance2 && instance2.isUnmounted) {\n          return;\n        }\n        if (cleanup) {\n          cleanup();\n        }\n        return callWithAsyncErrorHandling(source, instance2, 3, [onCleanup]);\n      };\n    }\n  } else {\n    getter = NOOP;\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    getter = () => traverse(baseGetter());\n  }\n  let cleanup;\n  let onCleanup = (fn) => {\n    cleanup = effect.onStop = () => {\n      callWithErrorHandling(fn, instance2, 4);\n    };\n  };\n  if (isInSSRComponentSetup) {\n    onCleanup = NOOP;\n    if (!cb) {\n      getter();\n    } else if (immediate) {\n      callWithAsyncErrorHandling(cb, instance2, 3, [\n        getter(),\n        isMultiSource ? [] : void 0,\n        onCleanup\n      ]);\n    }\n    return NOOP;\n  }\n  let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n  const job = () => {\n    if (!effect.active) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n        if (cleanup) {\n          cleanup();\n        }\n        callWithAsyncErrorHandling(cb, instance2, 3, [\n          newValue,\n          oldValue === INITIAL_WATCHER_VALUE ? void 0 : oldValue,\n          onCleanup\n        ]);\n        oldValue = newValue;\n      }\n    } else {\n      effect.run();\n    }\n  };\n  job.allowRecurse = !!cb;\n  let scheduler;\n  if (flush2 === \"sync\") {\n    scheduler = job;\n  } else if (flush2 === \"post\") {\n    scheduler = () => queuePostRenderEffect(job, instance2 && instance2.suspense);\n  } else {\n    scheduler = () => queuePreFlushCb(job);\n  }\n  const effect = new ReactiveEffect(getter, scheduler);\n  if (cb) {\n    if (immediate) {\n      job();\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (flush2 === \"post\") {\n    queuePostRenderEffect(effect.run.bind(effect), instance2 && instance2.suspense);\n  } else {\n    effect.run();\n  }\n  return () => {\n    effect.stop();\n    if (instance2 && instance2.scope) {\n      remove(instance2.scope.effects, effect);\n    }\n  };\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString$1(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction$1(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const cur = currentInstance;\n  setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  if (cur) {\n    setCurrentInstance(cur);\n  } else {\n    unsetCurrentInstance();\n  }\n  return res;\n}\nfunction createPathGetter(ctx, path2) {\n  const segments = path2.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\nfunction traverse(value, seen) {\n  if (!isObject$1(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  if (isRef(value)) {\n    traverse(value.value, seen);\n  } else if (isArray$1(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], seen);\n    }\n  }\n  return value;\n}\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: {\n    mode: String,\n    appear: Boolean,\n    persisted: Boolean,\n    onBeforeEnter: TransitionHookValidator,\n    onEnter: TransitionHookValidator,\n    onAfterEnter: TransitionHookValidator,\n    onEnterCancelled: TransitionHookValidator,\n    onBeforeLeave: TransitionHookValidator,\n    onLeave: TransitionHookValidator,\n    onAfterLeave: TransitionHookValidator,\n    onLeaveCancelled: TransitionHookValidator,\n    onBeforeAppear: TransitionHookValidator,\n    onAppear: TransitionHookValidator,\n    onAfterAppear: TransitionHookValidator,\n    onAppearCancelled: TransitionHookValidator\n  },\n  setup(props, { slots }) {\n    const instance2 = getCurrentInstance();\n    const state = useTransitionState();\n    let prevTransitionKey;\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      let child = children[0];\n      if (children.length > 1) {\n        for (const c of children) {\n          if (c.type !== Comment) {\n            child = c;\n            break;\n          }\n        }\n      }\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getKeepAliveChild(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance2);\n      setTransitionHooks(innerChild, enterHooks);\n      const oldChild = instance2.subTree;\n      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n      let transitionKeyChanged = false;\n      const { getTransitionKey } = innerChild.type;\n      if (getTransitionKey) {\n        const key = getTransitionKey();\n        if (prevTransitionKey === void 0) {\n          prevTransitionKey = key;\n        } else if (key !== prevTransitionKey) {\n          prevTransitionKey = key;\n          transitionKeyChanged = true;\n        }\n      }\n      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n        const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance2);\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\") {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            instance2.update();\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el._leaveCb = () => {\n              earlyRemove();\n              el._leaveCb = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance2) {\n  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook2 = (hook, args) => {\n    hook && callWithAsyncErrorHandling(hook, instance2, 9, args);\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook2(hook, args);\n    if (isArray$1(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1))\n        done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el._leaveCb) {\n        el._leaveCb(true);\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {\n        leavingVNode.el._leaveCb();\n      }\n      callHook2(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el._enterCb = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        if (cancelled) {\n          callHook2(cancelHook, [el]);\n        } else {\n          callHook2(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el._enterCb = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove2) {\n      const key2 = String(vnode.key);\n      if (el._enterCb) {\n        el._enterCb(true);\n      }\n      if (state.isUnmounting) {\n        return remove2();\n      }\n      callHook2(onBeforeLeave, [el]);\n      let called = false;\n      const done = el._leaveCb = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        remove2();\n        if (cancelled) {\n          callHook2(onLeaveCancelled, [el]);\n        } else {\n          callHook2(onAfterLeave, [el]);\n        }\n        el._leaveCb = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      return resolveTransitionHooks(vnode2, props, state, instance2);\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getKeepAliveChild(vnode) {\n  return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128)\n        keyedFragmentCount++;\n      ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\nfunction defineComponent(options) {\n  return isFunction$1(options) ? { setup: options, name: options.name } : options;\n}\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(type, hook, keepAliveRoot, true);\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      if (target.isUnmounted) {\n        return;\n      }\n      pauseTracking();\n      setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      unsetCurrentInstance();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, hook, target);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\nfunction withDirectives(vnode, directives) {\n  const internalInstance = currentRenderingInstance;\n  if (internalInstance === null) {\n    return vnode;\n  }\n  const instance2 = getExposeProxy(internalInstance) || internalInstance.proxy;\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (isFunction$1(dir)) {\n      dir = {\n        mounted: dir,\n        updated: dir\n      };\n    }\n    if (dir.deep) {\n      traverse(value);\n    }\n    bindings.push({\n      dir,\n      instance: instance2,\n      value,\n      oldValue: void 0,\n      arg,\n      modifiers\n    });\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance2, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance2, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\nfunction resolveDynamicComponent(component) {\n  if (isString$1(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance2 = currentRenderingInstance || currentInstance;\n  if (instance2) {\n    const Component = instance2.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(Component, false);\n      if (selfName && (selfName === name || selfName === camelize$1(name) || selfName === capitalize$1(camelize$1(name)))) {\n        return Component;\n      }\n    }\n    const res = resolve(instance2[type] || Component[type], name) || resolve(instance2.appContext[type], name);\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    return res;\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize$1(name)] || registry[capitalize$1(camelize$1(name))]);\n}\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  if (isArray$1(source) || isString$1(source)) {\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n    }\n  } else if (typeof source === \"number\") {\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject$1(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(source, (item, i) => renderItem(item, i, void 0, cached && cached[i]));\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray$1(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.fn;\n    }\n  }\n  return slots;\n}\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n    return createVNode(\"slot\", name === \"default\" ? null : { name }, fallback && fallback());\n  }\n  let slot = slots[name];\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 ? 64 : -2);\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child))\n      return true;\n    if (child.type === Comment)\n      return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\nconst getPublicInstance = (i) => {\n  if (!i)\n    return null;\n  if (isStatefulComponent(i))\n    return getExposeProxy(i) || i.proxy;\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = /* @__PURE__ */ extend$1(/* @__PURE__ */ Object.create(null), {\n  $: (i) => i,\n  $el: (i) => i.vnode.el,\n  $data: (i) => i.data,\n  $props: (i) => i.props,\n  $attrs: (i) => i.attrs,\n  $slots: (i) => i.slots,\n  $refs: (i) => i.refs,\n  $parent: (i) => getPublicInstance(i.parent),\n  $root: (i) => getPublicInstance(i.root),\n  $emit: (i) => i.emit,\n  $options: (i) => resolveMergedOptions(i),\n  $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),\n  $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n  $watch: (i) => instanceWatch.bind(i)\n});\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance2 }, key) {\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance2;\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1:\n            return setupState[key];\n          case 2:\n            return data[key];\n          case 4:\n            return ctx[key];\n          case 3:\n            return props[key];\n        }\n      } else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n        accessCache[key] = 1;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2;\n        return data[key];\n      } else if ((normalizedProps = instance2.propsOptions[0]) && hasOwn(normalizedProps, key)) {\n        accessCache[key] = 3;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4;\n        return ctx[key];\n      } else if (shouldCacheAccess) {\n        accessCache[key] = 0;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance2, \"get\", key);\n      }\n      return publicGetter(instance2);\n    } else if ((cssModule = type.__cssModules) && (cssModule = cssModule[key])) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4;\n      return ctx[key];\n    } else if (globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)) {\n      {\n        return globalProperties[key];\n      }\n    } else\n      ;\n  },\n  set({ _: instance2 }, key, value) {\n    const { data, setupState, ctx } = instance2;\n    if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance2.props, key)) {\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance2) {\n      return false;\n    } else {\n      {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || setupState !== EMPTY_OBJ && hasOwn(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nlet shouldCacheAccess = true;\nfunction applyOptions(instance2) {\n  const options = resolveMergedOptions(instance2);\n  const publicThis = instance2.proxy;\n  const ctx = instance2.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook$1(options.beforeCreate, instance2, \"bc\");\n  }\n  const {\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    created,\n    beforeMount: beforeMount2,\n    mounted,\n    beforeUpdate,\n    updated: updated2,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted: unmounted2,\n    render: render2,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    expose,\n    inheritAttrs,\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = null;\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance2.appContext.config.unwrapInjectedRef);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction$1(methodHandler)) {\n        {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n      }\n    }\n  }\n  if (dataOptions) {\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!isObject$1(data))\n      ;\n    else {\n      instance2.data = reactive(data);\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get2 = isFunction$1(opt) ? opt.bind(publicThis, publicThis) : isFunction$1(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      const set2 = !isFunction$1(opt) && isFunction$1(opt.set) ? opt.set.bind(publicThis) : NOOP;\n      const c = computed({\n        get: get2,\n        set: set2\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction$1(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook$1(created, instance2, \"c\");\n  }\n  function registerLifecycleHook(register2, hook) {\n    if (isArray$1(hook)) {\n      hook.forEach((_hook) => register2(_hook.bind(publicThis)));\n    } else if (hook) {\n      register2(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount2);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated2);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted2);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  if (isArray$1(expose)) {\n    if (expose.length) {\n      const exposed = instance2.exposed || (instance2.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance2.exposed) {\n      instance2.exposed = {};\n    }\n  }\n  if (render2 && instance2.render === NOOP) {\n    instance2.render = render2;\n  }\n  if (inheritAttrs != null) {\n    instance2.inheritAttrs = inheritAttrs;\n  }\n  if (components)\n    instance2.components = components;\n  if (directives)\n    instance2.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n  if (isArray$1(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject$1(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(opt.from || key, opt.default, true);\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      if (unwrapRef) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          get: () => injected.value,\n          set: (v) => injected.value = v\n        });\n      } else {\n        ctx[key] = injected;\n      }\n    } else {\n      ctx[key] = injected;\n    }\n  }\n}\nfunction callHook$1(hook, instance2, type) {\n  callWithAsyncErrorHandling(isArray$1(hook) ? hook.map((h2) => h2.bind(instance2.proxy)) : hook.bind(instance2.proxy), instance2, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString$1(raw)) {\n    const handler = ctx[raw];\n    if (isFunction$1(handler)) {\n      watch(getter, handler);\n    }\n  } else if (isFunction$1(raw)) {\n    watch(getter, raw.bind(publicThis));\n  } else if (isObject$1(raw)) {\n    if (isArray$1(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction$1(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction$1(handler)) {\n        watch(getter, handler, raw);\n      }\n    }\n  } else\n    ;\n}\nfunction resolveMergedOptions(instance2) {\n  const base = instance2.type;\n  const { mixins, extends: extendsOptions } = base;\n  const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance2.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach((m) => mergeOptions(resolved, m, optionMergeStrategies, true));\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  cache.set(base, resolved);\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach((m) => mergeOptions(to, m, strats, true));\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\")\n      ;\n    else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeObjectOptions,\n  emits: mergeObjectOptions,\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  watch: mergeWatchOptions,\n  provide: mergeDataFn,\n  inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return extend$1(isFunction$1(to) ? to.call(this, this) : to, isFunction$1(from) ? from.call(this, this) : from);\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray$1(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend$1(extend$1(/* @__PURE__ */ Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to)\n    return from;\n  if (!from)\n    return to;\n  const merged = extend$1(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\nfunction initProps(instance2, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = {};\n  def(attrs, InternalObjectKey, 1);\n  instance2.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance2, rawProps, props, attrs);\n  for (const key in instance2.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (isStateful) {\n    instance2.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance2.type.props) {\n      instance2.props = attrs;\n    } else {\n      instance2.props = props;\n    }\n  }\n  instance2.attrs = attrs;\n}\nfunction updateProps(instance2, rawProps, rawPrevProps, optimized) {\n  const { props, attrs, vnode: { patchFlag } } = instance2;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance2.propsOptions;\n  let hasAttrsChanged = false;\n  if ((optimized || patchFlag > 0) && !(patchFlag & 16)) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance2.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance2.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize$1(key);\n            props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance2, false);\n          }\n        } else {\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance2, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || !hasOwn(rawProps, key) && ((kebabKey = hyphenate$1(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && (rawPrevProps[key] !== void 0 || rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(options, rawCurrentProps, key, void 0, instance2, true);\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && true) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance2, \"set\", \"$attrs\");\n  }\n}\nfunction setFullProps(instance2, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance2.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize$1(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance2.emitsOptions, key)) {\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance2, !hasOwn(castValues, key));\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance2, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && isFunction$1(defaultValue)) {\n        const { propsDefaults } = instance2;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          setCurrentInstance(instance2);\n          value = propsDefaults[key] = defaultValue.call(null, props);\n          unsetCurrentInstance();\n        }\n      } else {\n        value = defaultValue;\n      }\n    }\n    if (opt[0]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1] && (value === \"\" || value === hyphenate$1(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (!isFunction$1(comp)) {\n    const extendProps = (raw2) => {\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend$1(normalized, props);\n      if (keys)\n        needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    cache.set(comp, EMPTY_ARR);\n    return EMPTY_ARR;\n  }\n  if (isArray$1(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      const normalizedKey = camelize$1(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    for (const key in raw) {\n      const normalizedKey = camelize$1(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray$1(opt) || isFunction$1(opt) ? { type: opt } : opt;\n        if (prop) {\n          const booleanIndex = getTypeIndex(Boolean, prop.type);\n          const stringIndex = getTypeIndex(String, prop.type);\n          prop[0] = booleanIndex > -1;\n          prop[1] = stringIndex < 0 || booleanIndex < stringIndex;\n          if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n            needCastKeys.push(normalizedKey);\n          }\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  cache.set(comp, res);\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\") {\n    return true;\n  }\n  return false;\n}\nfunction getType(ctor) {\n  const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n  return match ? match[1] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n  if (isArray$1(expectedTypes)) {\n    return expectedTypes.findIndex((t) => isSameType(t, type));\n  } else if (isFunction$1(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n  return -1;\n}\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray$1(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance2) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key))\n      continue;\n    const value = rawSlots[key];\n    if (isFunction$1(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance2, children) => {\n  const normalized = normalizeSlotValue(children);\n  instance2.slots.default = () => normalized;\n};\nconst initSlots = (instance2, children) => {\n  if (instance2.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      instance2.slots = toRaw(children);\n      def(children, \"_\", type);\n    } else {\n      normalizeObjectSlots(children, instance2.slots = {});\n    }\n  } else {\n    instance2.slots = {};\n    if (children) {\n      normalizeVNodeSlots(instance2, children);\n    }\n  }\n  def(instance2.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance2, children, optimized) => {\n  const { vnode, slots } = instance2;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        extend$1(slots, children);\n        if (!optimized && type === 1) {\n          delete slots._;\n        }\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance2, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n        delete slots[key];\n      }\n    }\n  }\n};\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid = 0;\nfunction createAppAPI(render2, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction$1(rootComponent)) {\n      rootComponent = Object.assign({}, rootComponent);\n    }\n    if (rootProps != null && !isObject$1(rootProps)) {\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new Set();\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin))\n          ;\n        else if (plugin && isFunction$1(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction$1(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else\n          ;\n        return app;\n      },\n      mixin(mixin) {\n        {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          }\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!component) {\n          return context.components[name];\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive2) {\n        if (!directive2) {\n          return context.directives[name];\n        }\n        context.directives[name] = directive2;\n        return app;\n      },\n      mount(rootContainer, isHydrate, isSVG) {\n        if (!isMounted) {\n          const vnode = createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render2(vnode, rootContainer, isSVG);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          return getExposeProxy(vnode.component) || vnode.component.proxy;\n        }\n      },\n      unmount() {\n        if (isMounted) {\n          render2(null, app._container);\n          delete app._container.__vue_app__;\n        }\n      },\n      provide(key, value) {\n        context.provides[key] = value;\n        return app;\n      }\n    };\n    return app;\n  };\n}\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray$1(rawRef)) {\n    rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray$1(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  if (oldRef != null && oldRef !== ref) {\n    if (isString$1(oldRef)) {\n      refs[oldRef] = null;\n      if (hasOwn(setupState, oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction$1(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString$1(ref);\n    const _isRef = isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray$1(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray$1(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (hasOwn(setupState, ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k)\n                  refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (hasOwn(setupState, ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k)\n            refs[rawRef.k] = value;\n        } else\n          ;\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    }\n  }\n}\nconst queuePostRenderEffect = queueEffectWithSuspense;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, isSVG);\n        }\n        break;\n      case Fragment:\n        processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else if (shapeFlag & 6) {\n          processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else if (shapeFlag & 64) {\n          type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n        } else if (shapeFlag & 128) {\n          type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n        } else\n          ;\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(n2.el = hostCreateText(n2.children), container, anchor);\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(n2.el = hostCreateComment(n2.children || \"\"), container, anchor);\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, isSVG) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    isSVG = isSVG || n2.type === \"svg\";\n    if (n1 == null) {\n      mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    } else {\n      patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { type, props, shapeFlag, transition, patchFlag, dirs } = vnode;\n    if (vnode.el && hostCloneNode !== void 0 && patchFlag === -1) {\n      el = vnode.el = hostCloneNode(vnode.el);\n    } else {\n      el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n      if (shapeFlag & 8) {\n        hostSetElementText(el, vnode.children);\n      } else if (shapeFlag & 16) {\n        mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== \"foreignObject\", slotScopeIds, optimized);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      if (props) {\n        for (const key in props) {\n          if (key !== \"value\" && !isReservedProp(key)) {\n            hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n          }\n        }\n        if (\"value\" in props) {\n          hostPatchProp(el, \"value\", null, props.value);\n        }\n        if (vnodeHook = props.onVnodeBeforeMount) {\n          invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        }\n      }\n      setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (vnode === subTree) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    const areChildrenSVG = isSVG && n2.type !== \"foreignObject\";\n    if (dynamicChildren) {\n      patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n    } else if (!optimized) {\n      patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, isSVG);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, isSVG);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : fallbackContainer;\n      patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n    }\n  };\n  const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n    if (oldProps !== newProps) {\n      for (const key in newProps) {\n        if (isReservedProp(key))\n          continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n        }\n      }\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n          }\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && n1.dynamicChildren) {\n        patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n        if (n2.key != null || parentComponent && n2 === parentComponent.subTree) {\n          traverseStaticChildren(n1, n2, true);\n        }\n      } else {\n        patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n      } else {\n        mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n    const instance2 = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense);\n    if (isKeepAlive(initialVNode)) {\n      instance2.ctx.renderer = internals;\n    }\n    {\n      setupComponent(instance2);\n    }\n    if (instance2.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance2, setupRenderEffect);\n      if (!initialVNode.el) {\n        const placeholder = instance2.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n      return;\n    }\n    setupRenderEffect(instance2, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance2 = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance2.asyncDep && !instance2.asyncResolved) {\n        updateComponentPreRender(instance2, n2, optimized);\n        return;\n      } else {\n        instance2.next = n2;\n        invalidateJob(instance2.update);\n        instance2.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance2.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance2, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance2.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent } = instance2;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance2, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        toggleRecurse(instance2, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            instance2.subTree = renderComponentRoot(instance2);\n            hydrateNode(el, instance2.subTree, instance2, parentSuspense, null);\n          };\n          if (isAsyncWrapperVNode) {\n            initialVNode.type.__asyncLoader().then(\n              () => !instance2.isUnmounted && hydrateSubTree()\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          const subTree = instance2.subTree = renderComponentRoot(instance2);\n          patch(null, subTree, container, anchor, instance2, parentSuspense, isSVG);\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance2.a && queuePostRenderEffect(instance2.a, parentSuspense);\n        }\n        instance2.isMounted = true;\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance2;\n        let originNext = next;\n        let vnodeHook;\n        toggleRecurse(instance2, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance2, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        toggleRecurse(instance2, true);\n        const nextTree = renderComponentRoot(instance2);\n        const prevTree = instance2.subTree;\n        instance2.subTree = nextTree;\n        patch(\n          prevTree,\n          nextTree,\n          hostParentNode(prevTree.el),\n          getNextHostNode(prevTree),\n          instance2,\n          parentSuspense,\n          isSVG\n        );\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance2, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n        }\n      }\n    };\n    const effect = instance2.effect = new ReactiveEffect(\n      componentUpdateFn,\n      () => queueJob(update2),\n      instance2.scope\n    );\n    const update2 = instance2.update = () => effect.run();\n    update2.id = instance2.uid;\n    toggleRecurse(instance2, true);\n    update2();\n  };\n  const updateComponentPreRender = (instance2, nextVNode, optimized) => {\n    nextVNode.component = instance2;\n    const prevProps = instance2.vnode.props;\n    instance2.vnode = nextVNode;\n    instance2.next = null;\n    updateProps(instance2, nextVNode.props, prevProps, optimized);\n    updateSlots(instance2, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(void 0, instance2.update);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    }\n    if (oldLength > newLength) {\n      unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n    } else {\n      mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(null, c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++)\n        newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove3 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove3();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove3, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n      } else if (dynamicChildren && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove2(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove2 = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance2, parentSuspense, doRemove) => {\n    const { bum, scope, update: update2, subTree, um } = instance2;\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    scope.stop();\n    if (update2) {\n      update2.active = false;\n      unmount(subTree, instance2, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    queuePostRenderEffect(() => {\n      instance2.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance2.asyncDep && !instance2.asyncResolved && instance2.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    return hostNextSibling(vnode.anchor || vnode.el);\n  };\n  const render2 = (vnode, container, isSVG) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n    }\n    flushPostFlushCbs();\n    container._vnode = vnode;\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove2,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(internals);\n  }\n  return {\n    render: render2,\n    hydrate,\n    createApp: createAppAPI(render2, hydrate)\n  };\n}\nfunction toggleRecurse({ effect, update: update2 }, allowed) {\n  effect.allowRecurse = update2.allowRecurse = allowed;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray$1(ch1) && isArray$1(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow)\n          traverseStaticChildren(c1, c2);\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p2 = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p2[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p2[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p2[v];\n  }\n  return result;\n}\nconst isTeleport = (type) => type.__isTeleport;\nconst Fragment = Symbol(void 0);\nconst Text = Symbol(void 0);\nconst Comment = Symbol(void 0);\nconst Static = Symbol(void 0);\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true));\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true));\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  return n1.type === n2.type && n1.key === n2.key;\n}\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n  return ref != null ? isString$1(ref) || isRef(ref) || isFunction$1(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString$1(children) ? 8 : 16;\n  }\n  if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock && (vnode.patchFlag > 0 || shapeFlag & 6) && vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nconst createVNode = _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(type, props, true);\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag |= -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString$1(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject$1(style)) {\n      if (isProxy(style) && !isArray$1(style)) {\n        style = extend$1({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString$1(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$1(type) ? 4 : isFunction$1(type) ? 2 : 0;\n  return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n  if (!props)\n    return null;\n  return isProxy(props) || InternalObjectKey in props ? extend$1({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n  const { props, ref, patchFlag, children } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? mergeRef && ref ? isArray$1(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children,\n    target: vnode.target,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition: vnode.transition,\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor\n  };\n  return cloned;\n}\nfunction createTextVNode(text2 = \" \", flag = 0) {\n  return createVNode(Text, null, text2, flag);\n}\nfunction createCommentVNode(text2 = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text2)) : createVNode(Comment, null, text2);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray$1(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      child.slice()\n    );\n  } else if (typeof child === \"object\") {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray$1(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !(InternalObjectKey in children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction$1(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn$1(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray$1(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance2, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance2, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance2 = {\n    uid: uid$1++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    next: null,\n    subTree: null,\n    effect: null,\n    update: null,\n    scope: new EffectScope(true),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    accessCache: null,\n    renderCache: [],\n    components: null,\n    directives: null,\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    emit: null,\n    emitted: null,\n    propsDefaults: EMPTY_OBJ,\n    inheritAttrs: type.inheritAttrs,\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  {\n    instance2.ctx = { _: instance2 };\n  }\n  instance2.root = parent ? parent.root : instance2;\n  instance2.emit = emit$1.bind(null, instance2);\n  if (vnode.ce) {\n    vnode.ce(instance2);\n  }\n  return instance2;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance2) => {\n  currentInstance = instance2;\n  instance2.scope.on();\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  currentInstance = null;\n};\nfunction isStatefulComponent(instance2) {\n  return instance2.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance2, isSSR = false) {\n  isInSSRComponentSetup = isSSR;\n  const { props, children } = instance2.vnode;\n  const isStateful = isStatefulComponent(instance2);\n  initProps(instance2, props, isStateful, isSSR);\n  initSlots(instance2, children);\n  const setupResult = isStateful ? setupStatefulComponent(instance2, isSSR) : void 0;\n  isInSSRComponentSetup = false;\n  return setupResult;\n}\nfunction setupStatefulComponent(instance2, isSSR) {\n  const Component = instance2.type;\n  instance2.accessCache = /* @__PURE__ */ Object.create(null);\n  instance2.proxy = markRaw(new Proxy(instance2.ctx, PublicInstanceProxyHandlers));\n  const { setup } = Component;\n  if (setup) {\n    const setupContext = instance2.setupContext = setup.length > 1 ? createSetupContext(instance2) : null;\n    setCurrentInstance(instance2);\n    pauseTracking();\n    const setupResult = callWithErrorHandling(setup, instance2, 0, [instance2.props, setupContext]);\n    resetTracking();\n    unsetCurrentInstance();\n    if (isPromise(setupResult)) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance2, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance2, 0);\n        });\n      } else {\n        instance2.asyncDep = setupResult;\n      }\n    } else {\n      handleSetupResult(instance2, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance2, isSSR);\n  }\n}\nfunction handleSetupResult(instance2, setupResult, isSSR) {\n  if (isFunction$1(setupResult)) {\n    if (instance2.type.__ssrInlineRender) {\n      instance2.ssrRender = setupResult;\n    } else {\n      instance2.render = setupResult;\n    }\n  } else if (isObject$1(setupResult)) {\n    instance2.setupState = proxyRefs(setupResult);\n  } else\n    ;\n  finishComponentSetup(instance2, isSSR);\n}\nlet compile$1;\nfunction finishComponentSetup(instance2, isSSR, skipOptions) {\n  const Component = instance2.type;\n  if (!instance2.render) {\n    if (!isSSR && compile$1 && !Component.render) {\n      const template = Component.template;\n      if (template) {\n        const { isCustomElement, compilerOptions } = instance2.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend$1(extend$1({\n          isCustomElement,\n          delimiters\n        }, compilerOptions), componentCompilerOptions);\n        Component.render = compile$1(template, finalCompilerOptions);\n      }\n    }\n    instance2.render = Component.render || NOOP;\n  }\n  {\n    setCurrentInstance(instance2);\n    pauseTracking();\n    applyOptions(instance2);\n    resetTracking();\n    unsetCurrentInstance();\n  }\n}\nfunction createAttrsProxy(instance2) {\n  return new Proxy(instance2.attrs, {\n    get(target, key) {\n      track(instance2, \"get\", \"$attrs\");\n      return target[key];\n    }\n  });\n}\nfunction createSetupContext(instance2) {\n  const expose = (exposed) => {\n    instance2.exposed = exposed || {};\n  };\n  let attrs;\n  {\n    return {\n      get attrs() {\n        return attrs || (attrs = createAttrsProxy(instance2));\n      },\n      slots: instance2.slots,\n      emit: instance2.emit,\n      expose\n    };\n  }\n}\nfunction getExposeProxy(instance2) {\n  if (instance2.exposed) {\n    return instance2.exposeProxy || (instance2.exposeProxy = new Proxy(proxyRefs(markRaw(instance2.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance2);\n        }\n      }\n    }));\n  }\n}\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction$1(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction isClassComponent(value) {\n  return isFunction$1(value) && \"__vccOpts\" in value;\n}\nconst computed = (getterOrOptions, debugOptions) => {\n  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject$1(propsOrChildren) && !isArray$1(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\nconst version = \"3.2.37\";\nfunction makeMap(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list2 = str.split(\",\");\n  for (let i = 0; i < list2.length; i++) {\n    map[list2[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nconst toNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, isSVG, is, props) => {\n    const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text2) => doc.createTextNode(text2),\n  createComment: (text2) => doc.createComment(text2),\n  setText: (node, text2) => {\n    node.nodeValue = text2;\n  },\n  setElementText: (el, text2) => {\n    el.textContent = text2;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  cloneNode(el) {\n    const cloned = el.cloneNode(true);\n    if (`_value` in el) {\n      cloned._value = el._value;\n    }\n    return cloned;\n  },\n  insertStaticContent(content2, parent, anchor, isSVG, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling))\n          break;\n      }\n    } else {\n      templateContainer.innerHTML = isSVG ? `<svg>${content2}</svg>` : content2;\n      const template = templateContainer.content;\n      if (isSVG) {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      before ? before.nextSibling : parent.firstChild,\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el._vtc;\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const isCssString = isString(next);\n  if (next && !isCssString) {\n    for (const key in next) {\n      setStyle(style, key, next[key]);\n    }\n    if (prev && !isString(prev)) {\n      for (const key in prev) {\n        if (next[key] == null) {\n          setStyle(style, key, \"\");\n        }\n      }\n    }\n  } else {\n    const currentDisplay = style.display;\n    if (isCssString) {\n      if (prev !== next) {\n        style.cssText = next;\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n    if (\"_vod\" in el) {\n      style.display = currentDisplay;\n    }\n  }\n}\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null)\n      val = \"\";\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(hyphenate(prefixed), val.replace(importantRE, \"\"), \"important\");\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize$1(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance2) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    const isBoolean = isSpecialBooleanAttr(key);\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, isBoolean ? \"\" : value);\n    }\n  }\n}\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (prevChildren) {\n      unmountChildren(prevChildren, parentComponent, parentSuspense);\n    }\n    el[key] = value == null ? \"\" : value;\n    return;\n  }\n  if (key === \"value\" && el.tagName !== \"PROGRESS\" && !el.tagName.includes(\"-\")) {\n    el._value = value;\n    const newValue = value == null ? \"\" : value;\n    if (el.value !== newValue || el.tagName === \"OPTION\") {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n  }\n  needRemove && el.removeAttribute(key);\n}\nconst [_getNow, skipTimestampCheck] = /* @__PURE__ */ (() => {\n  let _getNow2 = Date.now;\n  let skipTimestampCheck2 = false;\n  if (typeof window !== \"undefined\") {\n    if (Date.now() > document.createEvent(\"Event\").timeStamp) {\n      _getNow2 = performance.now.bind(performance);\n    }\n    const ffMatch = navigator.userAgent.match(/firefox\\/(\\d+)/i);\n    skipTimestampCheck2 = !!(ffMatch && Number(ffMatch[1]) <= 53);\n  }\n  return [_getNow2, skipTimestampCheck2];\n})();\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst reset = () => {\n  cachedNow = 0;\n};\nconst getNow = () => cachedNow || (p.then(reset), cachedNow = _getNow());\nfunction addEventListener$1(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance2 = null) {\n  const invokers = el._vei || (el._vei = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(nextValue, instance2);\n      addEventListener$1(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  return [hyphenate(name.slice(2)), options];\n}\nfunction createInvoker(initialValue, instance2) {\n  const invoker = (e) => {\n    const timeStamp = e.timeStamp || _getNow();\n    if (skipTimestampCheck || timeStamp >= invoker.attached - 1) {\n      callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance2, 5, [e]);\n    }\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n  } else {\n    return value;\n  }\n}\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (nativeOnRE.test(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\nfunction defineCustomElement(options, hydrate) {\n  const Comp = defineComponent(options);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, hydrate);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, hydrate) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    this._instance = null;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    if (this.shadowRoot && hydrate) {\n      hydrate(this._createVNode(), this.shadowRoot);\n    } else {\n      this.attachShadow({ mode: \"open\" });\n    }\n  }\n  connectedCallback() {\n    this._connected = true;\n    if (!this._instance) {\n      this._resolveDef();\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    nextTick(() => {\n      if (!this._connected) {\n        render(null, this.shadowRoot);\n        this._instance = null;\n      }\n    });\n  }\n  _resolveDef() {\n    if (this._resolved) {\n      return;\n    }\n    this._resolved = true;\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    }).observe(this, { attributes: true });\n    const resolve2 = (def2) => {\n      const { props, styles } = def2;\n      const hasOptions = !isArray(props);\n      const rawKeys = props ? hasOptions ? Object.keys(props) : props : [];\n      let numberProps;\n      if (hasOptions) {\n        for (const key in this._props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            this._props[key] = toNumber(this._props[key]);\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[key] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      for (const key of Object.keys(this)) {\n        if (key[0] !== \"_\") {\n          this._setProp(key, this[key], true, false);\n        }\n      }\n      for (const key of rawKeys.map(camelize)) {\n        Object.defineProperty(this, key, {\n          get() {\n            return this._getProp(key);\n          },\n          set(val) {\n            this._setProp(key, val);\n          }\n        });\n      }\n      this._applyStyles(styles);\n      this._update();\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      asyncDef().then(resolve2);\n    } else {\n      resolve2(this._def);\n    }\n  }\n  _setAttr(key) {\n    let value = this.getAttribute(key);\n    if (this._numberProps && this._numberProps[key]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelize(key), value, false);\n  }\n  _getProp(key) {\n    return this._props[key];\n  }\n  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n    if (val !== this._props[key]) {\n      this._props[key] = val;\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this.shadowRoot);\n  }\n  _createVNode() {\n    const vnode = createVNode(this._def, extend({}, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance2) => {\n        this._instance = instance2;\n        instance2.isCE = true;\n        instance2.emit = (event, ...args) => {\n          this.dispatchEvent(new CustomEvent(event, {\n            detail: args\n          }));\n        };\n        let parent = this;\n        while (parent = parent && (parent.parentNode || parent.host)) {\n          if (parent instanceof VueElement) {\n            instance2.parent = parent._instance;\n            break;\n          }\n        }\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles) {\n    if (styles) {\n      styles.forEach((css) => {\n        const s = document.createElement(\"style\");\n        s.textContent = css;\n        this.shadowRoot.appendChild(s);\n      });\n    }\n  }\n}\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend({}, BaseTransition.props, DOMTransitionPropsValidators);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const { name = \"v\", type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve2 = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve2]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve2);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve2 = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      forceReflow();\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve2);\n        }\n      });\n      callHook(onLeave, [el, resolve2]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el._vtc || (el._vtc = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const { _vtc } = el;\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el._vtc = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve2) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve2();\n    }\n  };\n  if (explicitTimeout) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve2();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(TRANSITION + \"Delay\");\n  const transitionDurations = getStyleProperties(TRANSITION + \"Duration\");\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(ANIMATION + \"Delay\");\n  const animationDurations = getStyleProperties(ANIMATION + \"Duration\");\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(styles[TRANSITION + \"Property\"]);\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst TransitionGroupImpl = {\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance2 = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(prevChildren[0].el, instance2.vnode.el, moveClass)) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el._moveCb = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      prevChildren = children;\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance2));\n        }\n      }\n      if (prevChildren) {\n        for (let i = 0; i < prevChildren.length; i++) {\n          const child = prevChildren[i];\n          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance2));\n          positionMap.set(child, child.el.getBoundingClientRect());\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el._moveCb) {\n    el._moveCb();\n  }\n  if (el._enterCb) {\n    el._enterCb();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  if (el._vtc) {\n    el._vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  return (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers))\n        return;\n    }\n    return fn(event, ...args);\n  };\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  return (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n      return fn(event);\n    }\n  };\n};\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el._vod = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue)\n      return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nfunction setDisplay(el, value) {\n  el.style.display = value ? el._vod : \"none\";\n}\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nvar _export_sfc = (sfc, props) => {\n  const target = sfc.__vccOpts || sfc;\n  for (const [key, val] of props) {\n    target[key] = val;\n  }\n  return target;\n};\nconst _sfc_main$q = {\n  name: \"AppLoader\",\n  props: {\n    show: { type: Boolean, default: false },\n    infinite: { type: Boolean, default: false },\n    type: { type: String, required: true },\n    messageId: { type: String, default: \"\" }\n  }\n};\nconst _hoisted_1$q = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_2$n = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_3$j = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_4$g = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_5$b = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_6$7 = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, {\n    name: \"vac-fade-spinner\",\n    appear: \"\"\n  }, {\n    default: withCtx(() => [\n      $props.show ? (openBlock(), createElementBlock(\"div\", {\n        key: 0,\n        class: normalizeClass([\"vac-loader-wrapper\", {\n          \"vac-container-center\": !$props.infinite,\n          \"vac-container-top\": $props.infinite\n        }])\n      }, [\n        $props.type === \"rooms\" ? renderSlot(_ctx.$slots, \"spinner-icon-rooms\", { key: 0 }, () => [\n          _hoisted_1$q\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"infinite-rooms\" ? renderSlot(_ctx.$slots, \"spinner-icon-infinite-rooms\", { key: 1 }, () => [\n          _hoisted_2$n\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"message-file\" ? renderSlot(_ctx.$slots, \"spinner-icon-message-file_\" + $props.messageId, { key: 2 }, () => [\n          _hoisted_3$j\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"room-file\" ? renderSlot(_ctx.$slots, \"spinner-icon-room-file\", { key: 3 }, () => [\n          _hoisted_4$g\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"messages\" ? renderSlot(_ctx.$slots, \"spinner-icon-messages\", { key: 4 }, () => [\n          _hoisted_5$b\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"infinite-messages\" ? renderSlot(_ctx.$slots, \"spinner-icon-infinite-messages\", { key: 5 }, () => [\n          _hoisted_6$7\n        ]) : createCommentVNode(\"\", true)\n      ], 2)) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  });\n}\nvar Loader = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"render\", _sfc_render$q]]);\nconst _sfc_main$p = {\n  name: \"SvgIcon\",\n  props: {\n    name: { type: String, default: null },\n    param: { type: String, default: null }\n  },\n  data() {\n    return {\n      svgItem: {\n        search: {\n          path: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\n        },\n        add: {\n          path: \"M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"\n        },\n        toggle: {\n          path: \"M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z\"\n        },\n        menu: {\n          path: \"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\"\n        },\n        close: {\n          path: \"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z\"\n        },\n        file: {\n          path: \"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n        },\n        paperclip: {\n          path: \"M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z\"\n        },\n        \"close-outline\": {\n          path: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"\n        },\n        send: {\n          path: \"M2,21L23,12L2,3V10L17,12L2,14V21Z\"\n        },\n        emoji: {\n          path: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"\n        },\n        document: {\n          path: \"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"\n        },\n        pencil: {\n          path: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\"\n        },\n        checkmark: {\n          path: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"\n        },\n        \"double-checkmark\": {\n          path: \"M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z\"\n        },\n        eye: {\n          path: \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"\n        },\n        dropdown: {\n          path: \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"\n        },\n        deleted: {\n          path: \"M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.85 4.63,15.55 5.68,16.91L16.91,5.68C15.55,4.63 13.85,4 12,4M12,20A8,8 0 0,0 20,12C20,10.15 19.37,8.45 18.32,7.09L7.09,18.32C8.45,19.37 10.15,20 12,20Z\"\n        },\n        microphone: {\n          size: \"large\",\n          path: \"M432.8,216.4v39.2c0,45.2-15.3,84.3-45.2,118.4c-29.8,33.2-67.3,52.8-111.6,57.9v40.9h78.4c5.1,0,10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6c0,5.1-1.7,10.2-6,13.6c-4.3,4.3-8.5,6-13.6,6H157.6c-5.1,0-10.2-1.7-13.6-6c-4.3-4.3-6-8.5-6-13.6c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6H236v-40.9c-44.3-5.1-81.8-23.9-111.6-57.9s-45.2-73.3-45.2-118.4v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6s10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6v39.2c0,37.5,13.6,70.7,40,97.1s59.6,40,97.1,40s70.7-13.6,97.1-40c26.4-26.4,40-59.6,40-97.1v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6c5.1,0,10.2,1.7,13.6,6C430.2,206.2,432.8,211.3,432.8,216.4z M353.5,98v157.6c0,27.3-9.4,50.3-29,69c-19.6,19.6-42.6,29-69,29s-50.3-9.4-69-29c-19.6-19.6-29-42.6-29-69V98c0-27.3,9.4-50.3,29-69c19.6-19.6,42.6-29,69-29s50.3,9.4,69,29C344.2,47.7,353.5,71.6,353.5,98z\"\n        },\n        \"audio-play\": {\n          size: \"medium\",\n          path: \"M43.331,21.237L7.233,0.397c-0.917-0.529-2.044-0.529-2.96,0c-0.916,0.528-1.48,1.505-1.48,2.563v41.684   c0,1.058,0.564,2.035,1.48,2.563c0.458,0.268,0.969,0.397,1.48,0.397c0.511,0,1.022-0.133,1.48-0.397l36.098-20.84   c0.918-0.529,1.479-1.506,1.479-2.564S44.247,21.767,43.331,21.237z\"\n        },\n        \"audio-pause\": {\n          size: \"medium\",\n          path: \"M17.991,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C4.729,2.969,7.698,0,11.36,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z\",\n          path2: \"M42.877,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C29.616,2.969,32.585,0,36.246,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z\"\n        }\n      }\n    };\n  },\n  computed: {\n    svgId() {\n      const param = this.param ? \"-\" + this.param : \"\";\n      return `vac-icon-${this.name}${param}`;\n    },\n    size() {\n      const item = this.svgItem[this.name];\n      if (item.size === \"large\")\n        return 512;\n      else if (item.size === \"medium\")\n        return 48;\n      else\n        return 24;\n    }\n  }\n};\nconst _hoisted_1$p = [\"viewBox\"];\nconst _hoisted_2$m = [\"id\", \"d\"];\nconst _hoisted_3$i = [\"id\", \"d\"];\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n    version: \"1.1\",\n    width: \"24\",\n    height: \"24\",\n    viewBox: `0 0 ${$options.size} ${$options.size}`\n  }, [\n    createBaseVNode(\"path\", {\n      id: $options.svgId,\n      d: $data.svgItem[$props.name].path\n    }, null, 8, _hoisted_2$m),\n    $data.svgItem[$props.name].path2 ? (openBlock(), createElementBlock(\"path\", {\n      key: 0,\n      id: $options.svgId,\n      d: $data.svgItem[$props.name].path2\n    }, null, 8, _hoisted_3$i)) : createCommentVNode(\"\", true)\n  ], 8, _hoisted_1$p);\n}\nvar SvgIcon = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$p]]);\nconst _sfc_main$o = {\n  name: \"RoomsSearch\",\n  components: { SvgIcon },\n  props: {\n    textMessages: { type: Object, required: true },\n    showSearch: { type: Boolean, required: true },\n    showAddRoom: { type: Boolean, required: true },\n    rooms: { type: Array, required: true },\n    loadingRooms: { type: Boolean, required: true }\n  },\n  emits: [\"search-room\", \"add-room\"],\n  computed: {\n    showSearchBar() {\n      return this.showSearch || this.showAddRoom;\n    }\n  }\n};\nconst _hoisted_1$o = {\n  key: 0,\n  class: \"vac-icon-search\"\n};\nconst _hoisted_2$l = [\"placeholder\"];\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass({\n      \"vac-box-search\": $options.showSearchBar,\n      \"vac-box-empty\": !$options.showSearchBar\n    })\n  }, [\n    $props.showSearch ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n      !$props.loadingRooms && $props.rooms.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$o, [\n        renderSlot(_ctx.$slots, \"search-icon\", {}, () => [\n          createVNode(_component_svg_icon, { name: \"search\" })\n        ])\n      ])) : createCommentVNode(\"\", true),\n      !$props.loadingRooms && $props.rooms.length ? (openBlock(), createElementBlock(\"input\", {\n        key: 1,\n        type: \"search\",\n        placeholder: $props.textMessages.SEARCH,\n        autocomplete: \"off\",\n        class: \"vac-input\",\n        onInput: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"search-room\", $event))\n      }, null, 40, _hoisted_2$l)) : createCommentVNode(\"\", true)\n    ], 64)) : createCommentVNode(\"\", true),\n    $props.showAddRoom ? (openBlock(), createElementBlock(\"div\", {\n      key: 1,\n      class: \"vac-svg-button vac-add-icon\",\n      onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"add-room\"))\n    }, [\n      renderSlot(_ctx.$slots, \"add-icon\", {}, () => [\n        createVNode(_component_svg_icon, { name: \"add\" })\n      ])\n    ])) : createCommentVNode(\"\", true)\n  ], 2);\n}\nvar RoomsSearch = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$o]]);\nconst element$1 = document.createElement(\"i\");\nfunction decodeNamedCharacterReference(value) {\n  const characterReference2 = \"&\" + value + \";\";\n  element$1.innerHTML = characterReference2;\n  const char = element$1.textContent;\n  if (char.charCodeAt(char.length - 1) === 59 && value !== \"semi\") {\n    return false;\n  }\n  return char === characterReference2 ? false : char;\n}\nfunction splice(list2, start, remove2, items) {\n  const end = list2.length;\n  let chunkStart = 0;\n  let parameters;\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove2 = remove2 > 0 ? remove2 : 0;\n  if (items.length < 1e4) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove2);\n    list2.splice(...parameters);\n  } else {\n    if (remove2)\n      list2.splice(start, remove2);\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 1e4);\n      parameters.unshift(start, 0);\n      list2.splice(...parameters);\n      chunkStart += 1e4;\n      start += 1e4;\n    }\n  }\n}\nfunction push(list2, items) {\n  if (list2.length > 0) {\n    splice(list2, list2.length, 0, items);\n    return list2;\n  }\n  return items;\n}\nconst hasOwnProperty$1 = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n  const all = {};\n  let index = -1;\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index]);\n  }\n  return all;\n}\nfunction syntaxExtension(all, extension) {\n  let hook;\n  for (hook in extension) {\n    const maybe = hasOwnProperty$1.call(all, hook) ? all[hook] : void 0;\n    const left = maybe || (all[hook] = {});\n    const right = extension[hook];\n    let code2;\n    if (right) {\n      for (code2 in right) {\n        if (!hasOwnProperty$1.call(left, code2))\n          left[code2] = [];\n        const value = right[code2];\n        constructs(\n          left[code2],\n          Array.isArray(value) ? value : value ? [value] : []\n        );\n      }\n    }\n  }\n}\nfunction constructs(existing, list2) {\n  let index = -1;\n  const before = [];\n  while (++index < list2.length) {\n    (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n  }\n  splice(existing, 0, 0, before);\n}\nfunction combineHtmlExtensions(htmlExtensions) {\n  const handlers = {};\n  let index = -1;\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index]);\n  }\n  return handlers;\n}\nfunction htmlExtension(all, extension) {\n  let hook;\n  for (hook in extension) {\n    const maybe = hasOwnProperty$1.call(all, hook) ? all[hook] : void 0;\n    const left = maybe || (all[hook] = {});\n    const right = extension[hook];\n    let type;\n    if (right) {\n      for (type in right) {\n        left[type] = right[type];\n      }\n    }\n  }\n}\nfunction decodeNumericCharacterReference(value, base) {\n  const code2 = Number.parseInt(value, base);\n  if (code2 < 9 || code2 === 11 || code2 > 13 && code2 < 32 || code2 > 126 && code2 < 160 || code2 > 55295 && code2 < 57344 || code2 > 64975 && code2 < 65008 || (code2 & 65535) === 65535 || (code2 & 65535) === 65534 || code2 > 1114111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCharCode(code2);\n}\nconst characterReferences = { '\"': \"quot\", \"&\": \"amp\", \"<\": \"lt\", \">\": \"gt\" };\nfunction encode(value) {\n  return value.replace(/[\"&<>]/g, replace2);\n  function replace2(value2) {\n    return \"&\" + characterReferences[value2] + \";\";\n  }\n}\nfunction normalizeIdentifier(value) {\n  return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nconst unicodePunctuationRegex = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nconst asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\nfunction asciiControl(code2) {\n  return code2 !== null && (code2 < 32 || code2 === 127);\n}\nconst asciiDigit = regexCheck(/\\d/);\nconst asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\nconst asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\nfunction markdownLineEnding(code2) {\n  return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n  return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n  return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(unicodePunctuationRegex);\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n  return check;\n  function check(code2) {\n    return code2 !== null && regex.test(String.fromCharCode(code2));\n  }\n}\nfunction sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || \"\"));\n  if (!protocol) {\n    return value;\n  }\n  const colon = value.indexOf(\":\");\n  const questionMark = value.indexOf(\"?\");\n  const numberSign = value.indexOf(\"#\");\n  const slash = value.indexOf(\"/\");\n  if (colon < 0 || slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign || protocol.test(value.slice(0, colon))) {\n    return value;\n  }\n  return \"\";\n}\nfunction normalizeUri(value) {\n  const result = [];\n  let index = -1;\n  let start = 0;\n  let skip = 0;\n  while (++index < value.length) {\n    const code2 = value.charCodeAt(index);\n    let replace2 = \"\";\n    if (code2 === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n      skip = 2;\n    } else if (code2 < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code2))) {\n        replace2 = String.fromCharCode(code2);\n      }\n    } else if (code2 > 55295 && code2 < 57344) {\n      const next = value.charCodeAt(index + 1);\n      if (code2 < 56320 && next > 56319 && next < 57344) {\n        replace2 = String.fromCharCode(code2, next);\n        skip = 1;\n      } else {\n        replace2 = \"\\uFFFD\";\n      }\n    } else {\n      replace2 = String.fromCharCode(code2);\n    }\n    if (replace2) {\n      result.push(value.slice(start, index), encodeURIComponent(replace2));\n      start = index + skip + 1;\n      replace2 = \"\";\n    }\n    if (skip) {\n      index += skip;\n      skip = 0;\n    }\n  }\n  return result.join(\"\") + value.slice(start);\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nconst protocolHref = /^(https?|ircs?|mailto|xmpp)$/i;\nconst protocolSrc = /^https?$/i;\nfunction compile(options) {\n  const settings = options || {};\n  let tags = true;\n  const definitions2 = {};\n  const buffers = [[]];\n  const mediaStack = [];\n  const tightStack = [];\n  const defaultHandlers = {\n    enter: {\n      blockQuote: onenterblockquote,\n      codeFenced: onentercodefenced,\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: onentercodeindented,\n      codeText: onentercodetext,\n      content: onentercontent,\n      definition: onenterdefinition,\n      definitionDestinationString: onenterdefinitiondestinationstring,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: onenteremphasis,\n      htmlFlow: onenterhtmlflow,\n      htmlText: onenterhtml,\n      image: onenterimage,\n      label: buffer,\n      link: onenterlink,\n      listItemMarker: onenterlistitemmarker,\n      listItemValue: onenterlistitemvalue,\n      listOrdered: onenterlistordered,\n      listUnordered: onenterlistunordered,\n      paragraph: onenterparagraph,\n      reference: buffer,\n      resource: onenterresource,\n      resourceDestinationString: onenterresourcedestinationstring,\n      resourceTitleString: buffer,\n      setextHeading: onentersetextheading,\n      strong: onenterstrong\n    },\n    exit: {\n      atxHeading: onexitatxheading,\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: onexitblockquote,\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      codeFenced: onexitflowcode,\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: resume,\n      codeFlowValue: onexitcodeflowvalue,\n      codeIndented: onexitflowcode,\n      codeText: onexitcodetext,\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: onexitdefinition,\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: onexitemphasis,\n      hardBreakEscape: onexithardbreak,\n      hardBreakTrailing: onexithardbreak,\n      htmlFlow: onexithtml,\n      htmlFlowData: onexitdata,\n      htmlText: onexithtml,\n      htmlTextData: onexitdata,\n      image: onexitmedia,\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: onexitmedia,\n      listOrdered: onexitlistordered,\n      listUnordered: onexitlistunordered,\n      paragraph: onexitparagraph,\n      reference: resume,\n      referenceString: onexitreferencestring,\n      resource: resume,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      setextHeading: onexitsetextheading,\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: onexitstrong,\n      thematicBreak: onexitthematicbreak\n    }\n  };\n  const handlers = combineHtmlExtensions(\n    [defaultHandlers].concat(settings.htmlExtensions || [])\n  );\n  const data = {\n    tightStack,\n    definitions: definitions2\n  };\n  const context = {\n    lineEndingIfNeeded,\n    options: settings,\n    encode: encode$1,\n    raw,\n    tag,\n    buffer,\n    resume,\n    setData,\n    getData\n  };\n  let lineEndingStyle = settings.defaultLineEnding;\n  return compile2;\n  function compile2(events) {\n    let index = -1;\n    let start = 0;\n    const listStack = [];\n    let head = [];\n    let body = [];\n    while (++index < events.length) {\n      if (!lineEndingStyle && (events[index][1].type === \"lineEnding\" || events[index][1].type === \"lineEndingBlank\")) {\n        lineEndingStyle = events[index][2].sliceSerialize(events[index][1]);\n      }\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === \"enter\") {\n          listStack.push(index);\n        } else {\n          prepareList(events.slice(listStack.pop(), index));\n        }\n      }\n      if (events[index][1].type === \"definition\") {\n        if (events[index][0] === \"enter\") {\n          body = push(body, events.slice(start, index));\n          start = index;\n        } else {\n          head = push(head, events.slice(start, index + 1));\n          start = index + 1;\n        }\n      }\n    }\n    head = push(head, body);\n    head = push(head, events.slice(start));\n    index = -1;\n    const result = head;\n    if (handlers.enter.null) {\n      handlers.enter.null.call(context);\n    }\n    while (++index < events.length) {\n      const handles = handlers[result[index][0]];\n      const kind = result[index][1].type;\n      const handle = handles[kind];\n      if (hasOwnProperty.call(handles, kind) && handle) {\n        handle.call(\n          Object.assign(\n            {\n              sliceSerialize: result[index][2].sliceSerialize\n            },\n            context\n          ),\n          result[index][1]\n        );\n      }\n    }\n    if (handlers.exit.null) {\n      handlers.exit.null.call(context);\n    }\n    return buffers[0].join(\"\");\n  }\n  function prepareList(slice) {\n    const length = slice.length;\n    let index = 0;\n    let containerBalance = 0;\n    let loose = false;\n    let atMarker;\n    while (++index < length) {\n      const event = slice[index];\n      if (event[1]._container) {\n        atMarker = void 0;\n        if (event[0] === \"enter\") {\n          containerBalance++;\n        } else {\n          containerBalance--;\n        }\n      } else\n        switch (event[1].type) {\n          case \"listItemPrefix\": {\n            if (event[0] === \"exit\") {\n              atMarker = true;\n            }\n            break;\n          }\n          case \"linePrefix\": {\n            break;\n          }\n          case \"lineEndingBlank\": {\n            if (event[0] === \"enter\" && !containerBalance) {\n              if (atMarker) {\n                atMarker = void 0;\n              } else {\n                loose = true;\n              }\n            }\n            break;\n          }\n          default: {\n            atMarker = void 0;\n          }\n        }\n    }\n    slice[0][1]._loose = loose;\n  }\n  function setData(key, value) {\n    data[key] = value;\n  }\n  function getData(key) {\n    return data[key];\n  }\n  function buffer() {\n    buffers.push([]);\n  }\n  function resume() {\n    const buf = buffers.pop();\n    return buf.join(\"\");\n  }\n  function tag(value) {\n    if (!tags)\n      return;\n    setData(\"lastWasTag\", true);\n    buffers[buffers.length - 1].push(value);\n  }\n  function raw(value) {\n    setData(\"lastWasTag\");\n    buffers[buffers.length - 1].push(value);\n  }\n  function lineEnding2() {\n    raw(lineEndingStyle || \"\\n\");\n  }\n  function lineEndingIfNeeded() {\n    const buffer2 = buffers[buffers.length - 1];\n    const slice = buffer2[buffer2.length - 1];\n    const previous2 = slice ? slice.charCodeAt(slice.length - 1) : null;\n    if (previous2 === 10 || previous2 === 13 || previous2 === null) {\n      return;\n    }\n    lineEnding2();\n  }\n  function encode$1(value) {\n    return getData(\"ignoreEncode\") ? value : encode(value);\n  }\n  function onenterlistordered(token) {\n    tightStack.push(!token._loose);\n    lineEndingIfNeeded();\n    tag(\"<ol\");\n    setData(\"expectFirstItem\", true);\n  }\n  function onenterlistunordered(token) {\n    tightStack.push(!token._loose);\n    lineEndingIfNeeded();\n    tag(\"<ul\");\n    setData(\"expectFirstItem\", true);\n  }\n  function onenterlistitemvalue(token) {\n    if (getData(\"expectFirstItem\")) {\n      const value = Number.parseInt(this.sliceSerialize(token), 10);\n      if (value !== 1) {\n        tag(' start=\"' + encode$1(String(value)) + '\"');\n      }\n    }\n  }\n  function onenterlistitemmarker() {\n    if (getData(\"expectFirstItem\")) {\n      tag(\">\");\n    } else {\n      onexitlistitem();\n    }\n    lineEndingIfNeeded();\n    tag(\"<li>\");\n    setData(\"expectFirstItem\");\n    setData(\"lastWasTag\");\n  }\n  function onexitlistordered() {\n    onexitlistitem();\n    tightStack.pop();\n    lineEnding2();\n    tag(\"</ol>\");\n  }\n  function onexitlistunordered() {\n    onexitlistitem();\n    tightStack.pop();\n    lineEnding2();\n    tag(\"</ul>\");\n  }\n  function onexitlistitem() {\n    if (getData(\"lastWasTag\") && !getData(\"slurpAllLineEndings\")) {\n      lineEndingIfNeeded();\n    }\n    tag(\"</li>\");\n    setData(\"slurpAllLineEndings\");\n  }\n  function onenterblockquote() {\n    tightStack.push(false);\n    lineEndingIfNeeded();\n    tag(\"<blockquote>\");\n  }\n  function onexitblockquote() {\n    tightStack.pop();\n    lineEndingIfNeeded();\n    tag(\"</blockquote>\");\n    setData(\"slurpAllLineEndings\");\n  }\n  function onenterparagraph() {\n    if (!tightStack[tightStack.length - 1]) {\n      lineEndingIfNeeded();\n      tag(\"<p>\");\n    }\n    setData(\"slurpAllLineEndings\");\n  }\n  function onexitparagraph() {\n    if (tightStack[tightStack.length - 1]) {\n      setData(\"slurpAllLineEndings\", true);\n    } else {\n      tag(\"</p>\");\n    }\n  }\n  function onentercodefenced() {\n    lineEndingIfNeeded();\n    tag(\"<pre><code\");\n    setData(\"fencesCount\", 0);\n  }\n  function onexitcodefencedfenceinfo() {\n    const value = resume();\n    tag(' class=\"language-' + value + '\"');\n  }\n  function onexitcodefencedfence() {\n    const count = getData(\"fencesCount\") || 0;\n    if (!count) {\n      tag(\">\");\n      setData(\"slurpOneLineEnding\", true);\n    }\n    setData(\"fencesCount\", count + 1);\n  }\n  function onentercodeindented() {\n    lineEndingIfNeeded();\n    tag(\"<pre><code>\");\n  }\n  function onexitflowcode() {\n    const count = getData(\"fencesCount\");\n    if (count !== void 0 && count < 2 && data.tightStack.length > 0 && !getData(\"lastWasTag\")) {\n      lineEnding2();\n    }\n    if (getData(\"flowCodeSeenData\")) {\n      lineEndingIfNeeded();\n    }\n    tag(\"</code></pre>\");\n    if (count !== void 0 && count < 2)\n      lineEndingIfNeeded();\n    setData(\"flowCodeSeenData\");\n    setData(\"fencesCount\");\n    setData(\"slurpOneLineEnding\");\n  }\n  function onenterimage() {\n    mediaStack.push({\n      image: true\n    });\n    tags = void 0;\n  }\n  function onenterlink() {\n    mediaStack.push({});\n  }\n  function onexitlabeltext(token) {\n    mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token);\n  }\n  function onexitlabel() {\n    mediaStack[mediaStack.length - 1].label = resume();\n  }\n  function onexitreferencestring(token) {\n    mediaStack[mediaStack.length - 1].referenceId = this.sliceSerialize(token);\n  }\n  function onenterresource() {\n    buffer();\n    mediaStack[mediaStack.length - 1].destination = \"\";\n  }\n  function onenterresourcedestinationstring() {\n    buffer();\n    setData(\"ignoreEncode\", true);\n  }\n  function onexitresourcedestinationstring() {\n    mediaStack[mediaStack.length - 1].destination = resume();\n    setData(\"ignoreEncode\");\n  }\n  function onexitresourcetitlestring() {\n    mediaStack[mediaStack.length - 1].title = resume();\n  }\n  function onexitmedia() {\n    let index = mediaStack.length - 1;\n    const media = mediaStack[index];\n    const id = media.referenceId || media.labelId;\n    const context2 = media.destination === void 0 ? definitions2[normalizeIdentifier(id)] : media;\n    tags = true;\n    while (index--) {\n      if (mediaStack[index].image) {\n        tags = void 0;\n        break;\n      }\n    }\n    if (media.image) {\n      tag(\n        '<img src=\"' + sanitizeUri(\n          context2.destination,\n          settings.allowDangerousProtocol ? void 0 : protocolSrc\n        ) + '\" alt=\"'\n      );\n      raw(media.label);\n      tag('\"');\n    } else {\n      tag(\n        '<a href=\"' + sanitizeUri(\n          context2.destination,\n          settings.allowDangerousProtocol ? void 0 : protocolHref\n        ) + '\"'\n      );\n    }\n    tag(context2.title ? ' title=\"' + context2.title + '\"' : \"\");\n    if (media.image) {\n      tag(\" />\");\n    } else {\n      tag(\">\");\n      raw(media.label);\n      tag(\"</a>\");\n    }\n    mediaStack.pop();\n  }\n  function onenterdefinition() {\n    buffer();\n    mediaStack.push({});\n  }\n  function onexitdefinitionlabelstring(token) {\n    resume();\n    mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token);\n  }\n  function onenterdefinitiondestinationstring() {\n    buffer();\n    setData(\"ignoreEncode\", true);\n  }\n  function onexitdefinitiondestinationstring() {\n    mediaStack[mediaStack.length - 1].destination = resume();\n    setData(\"ignoreEncode\");\n  }\n  function onexitdefinitiontitlestring() {\n    mediaStack[mediaStack.length - 1].title = resume();\n  }\n  function onexitdefinition() {\n    const media = mediaStack[mediaStack.length - 1];\n    const id = normalizeIdentifier(media.labelId);\n    resume();\n    if (!hasOwnProperty.call(definitions2, id)) {\n      definitions2[id] = mediaStack[mediaStack.length - 1];\n    }\n    mediaStack.pop();\n  }\n  function onentercontent() {\n    setData(\"slurpAllLineEndings\", true);\n  }\n  function onexitatxheadingsequence(token) {\n    if (getData(\"headingRank\"))\n      return;\n    setData(\"headingRank\", this.sliceSerialize(token).length);\n    lineEndingIfNeeded();\n    tag(\"<h\" + getData(\"headingRank\") + \">\");\n  }\n  function onentersetextheading() {\n    buffer();\n    setData(\"slurpAllLineEndings\");\n  }\n  function onexitsetextheadingtext() {\n    setData(\"slurpAllLineEndings\", true);\n  }\n  function onexitatxheading() {\n    tag(\"</h\" + getData(\"headingRank\") + \">\");\n    setData(\"headingRank\");\n  }\n  function onexitsetextheadinglinesequence(token) {\n    setData(\n      \"headingRank\",\n      this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n    );\n  }\n  function onexitsetextheading() {\n    const value = resume();\n    lineEndingIfNeeded();\n    tag(\"<h\" + getData(\"headingRank\") + \">\");\n    raw(value);\n    tag(\"</h\" + getData(\"headingRank\") + \">\");\n    setData(\"slurpAllLineEndings\");\n    setData(\"headingRank\");\n  }\n  function onexitdata(token) {\n    raw(encode$1(this.sliceSerialize(token)));\n  }\n  function onexitlineending(token) {\n    if (getData(\"slurpAllLineEndings\")) {\n      return;\n    }\n    if (getData(\"slurpOneLineEnding\")) {\n      setData(\"slurpOneLineEnding\");\n      return;\n    }\n    if (getData(\"inCodeText\")) {\n      raw(\" \");\n      return;\n    }\n    raw(encode$1(this.sliceSerialize(token)));\n  }\n  function onexitcodeflowvalue(token) {\n    raw(encode$1(this.sliceSerialize(token)));\n    setData(\"flowCodeSeenData\", true);\n  }\n  function onexithardbreak() {\n    tag(\"<br />\");\n  }\n  function onenterhtmlflow() {\n    lineEndingIfNeeded();\n    onenterhtml();\n  }\n  function onexithtml() {\n    setData(\"ignoreEncode\");\n  }\n  function onenterhtml() {\n    if (settings.allowDangerousHtml) {\n      setData(\"ignoreEncode\", true);\n    }\n  }\n  function onenteremphasis() {\n    tag(\"<em>\");\n  }\n  function onenterstrong() {\n    tag(\"<strong>\");\n  }\n  function onentercodetext() {\n    setData(\"inCodeText\", true);\n    tag(\"<code>\");\n  }\n  function onexitcodetext() {\n    setData(\"inCodeText\");\n    tag(\"</code>\");\n  }\n  function onexitemphasis() {\n    tag(\"</em>\");\n  }\n  function onexitstrong() {\n    tag(\"</strong>\");\n  }\n  function onexitthematicbreak() {\n    lineEndingIfNeeded();\n    tag(\"<hr />\");\n  }\n  function onexitcharacterreferencemarker(token) {\n    setData(\"characterReferenceType\", token.type);\n  }\n  function onexitcharacterreferencevalue(token) {\n    let value = this.sliceSerialize(token);\n    value = getData(\"characterReferenceType\") ? decodeNumericCharacterReference(\n      value,\n      getData(\"characterReferenceType\") === \"characterReferenceMarkerNumeric\" ? 10 : 16\n    ) : decodeNamedCharacterReference(value);\n    raw(encode$1(value));\n    setData(\"characterReferenceType\");\n  }\n  function onexitautolinkprotocol(token) {\n    const uri = this.sliceSerialize(token);\n    tag(\n      '<a href=\"' + sanitizeUri(\n        uri,\n        settings.allowDangerousProtocol ? void 0 : protocolHref\n      ) + '\">'\n    );\n    raw(encode$1(uri));\n    tag(\"</a>\");\n  }\n  function onexitautolinkemail(token) {\n    const uri = this.sliceSerialize(token);\n    tag('<a href=\"' + sanitizeUri(\"mailto:\" + uri) + '\">');\n    raw(encode$1(uri));\n    tag(\"</a>\");\n  }\n}\nfunction factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(type);\n      return prefix(code2);\n    }\n    return ok(code2);\n  }\n  function prefix(code2) {\n    if (markdownSpace(code2) && size2++ < limit) {\n      effects.consume(code2);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code2);\n  }\n}\nconst content$1 = {\n  tokenize: initializeContent\n};\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  );\n  let previous2;\n  return contentStart;\n  function afterContentStartConstruct(code2) {\n    if (code2 === null) {\n      effects.consume(code2);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n  function paragraphInitial(code2) {\n    effects.enter(\"paragraph\");\n    return lineStart(code2);\n  }\n  function lineStart(code2) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous: previous2\n    });\n    if (previous2) {\n      previous2.next = token;\n    }\n    previous2 = token;\n    return data(code2);\n  }\n  function data(code2) {\n    if (code2 === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code2);\n      return;\n    }\n    if (markdownLineEnding(code2)) {\n      effects.consume(code2);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n    effects.consume(code2);\n    return data;\n  }\n}\nconst document$2 = {\n  tokenize: initializeDocument\n};\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\nfunction initializeDocument(effects) {\n  const self2 = this;\n  const stack = [];\n  let continued = 0;\n  let childFlow;\n  let childToken;\n  let lineStartOffset;\n  return start;\n  function start(code2) {\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self2.containerState = item[1];\n      return effects.attempt(\n        item[0].continuation,\n        documentContinue,\n        checkNewContainers\n      )(code2);\n    }\n    return checkNewContainers(code2);\n  }\n  function documentContinue(code2) {\n    continued++;\n    if (self2.containerState._closeFlow) {\n      self2.containerState._closeFlow = void 0;\n      if (childFlow) {\n        closeFlow();\n      }\n      const indexBeforeExits = self2.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      let point;\n      while (indexBeforeFlow--) {\n        if (self2.events[indexBeforeFlow][0] === \"exit\" && self2.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self2.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n      let index = indexBeforeExits;\n      while (index < self2.events.length) {\n        self2.events[index][1].end = Object.assign({}, point);\n        index++;\n      }\n      splice(\n        self2.events,\n        indexBeforeFlow + 1,\n        0,\n        self2.events.slice(indexBeforeExits)\n      );\n      self2.events.length = index;\n      return checkNewContainers(code2);\n    }\n    return start(code2);\n  }\n  function checkNewContainers(code2) {\n    if (continued === stack.length) {\n      if (!childFlow) {\n        return documentContinued(code2);\n      }\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code2);\n      }\n      self2.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      );\n    }\n    self2.containerState = {};\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code2);\n  }\n  function thereIsANewContainer(code2) {\n    if (childFlow)\n      closeFlow();\n    exitContainers(continued);\n    return documentContinued(code2);\n  }\n  function thereIsNoNewContainer(code2) {\n    self2.parser.lazy[self2.now().line] = continued !== stack.length;\n    lineStartOffset = self2.now().offset;\n    return flowStart(code2);\n  }\n  function documentContinued(code2) {\n    self2.containerState = {};\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code2);\n  }\n  function containerContinue(code2) {\n    continued++;\n    stack.push([self2.currentConstruct, self2.containerState]);\n    return documentContinued(code2);\n  }\n  function flowStart(code2) {\n    if (code2 === null) {\n      if (childFlow)\n        closeFlow();\n      exitContainers(0);\n      effects.consume(code2);\n      return;\n    }\n    childFlow = childFlow || self2.parser.flow(self2.now());\n    effects.enter(\"chunkFlow\", {\n      contentType: \"flow\",\n      previous: childToken,\n      _tokenizer: childFlow\n    });\n    return flowContinue(code2);\n  }\n  function flowContinue(code2) {\n    if (code2 === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code2);\n      return;\n    }\n    if (markdownLineEnding(code2)) {\n      effects.consume(code2);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      continued = 0;\n      self2.interrupt = void 0;\n      return start;\n    }\n    effects.consume(code2);\n    return flowContinue;\n  }\n  function writeToChild(token, eof) {\n    const stream = self2.sliceStream(token);\n    if (eof)\n      stream.push(null);\n    token.previous = childToken;\n    if (childToken)\n      childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n    if (self2.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (childFlow.events[index][1].start.offset < lineStartOffset && (!childFlow.events[index][1].end || childFlow.events[index][1].end.offset > lineStartOffset)) {\n          return;\n        }\n      }\n      const indexBeforeExits = self2.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      let seen;\n      let point;\n      while (indexBeforeFlow--) {\n        if (self2.events[indexBeforeFlow][0] === \"exit\" && self2.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self2.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n      index = indexBeforeExits;\n      while (index < self2.events.length) {\n        self2.events[index][1].end = Object.assign({}, point);\n        index++;\n      }\n      splice(\n        self2.events,\n        indexBeforeFlow + 1,\n        0,\n        self2.events.slice(indexBeforeExits)\n      );\n      self2.events.length = index;\n    }\n  }\n  function exitContainers(size2) {\n    let index = stack.length;\n    while (index-- > size2) {\n      const entry = stack[index];\n      self2.containerState = entry[1];\n      entry[0].exit.call(self2, effects);\n    }\n    stack.length = size2;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = void 0;\n    childFlow = void 0;\n    self2.containerState._closeFlow = void 0;\n  }\n}\nfunction tokenizeContainer(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    \"linePrefix\",\n    this.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n  );\n}\nfunction classifyCharacter(code2) {\n  if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n    return 1;\n  }\n  if (unicodePunctuation(code2)) {\n    return 2;\n  }\n}\nfunction resolveAll(constructs2, events, context) {\n  const called = [];\n  let index = -1;\n  while (++index < constructs2.length) {\n    const resolve2 = constructs2[index].resolveAll;\n    if (resolve2 && !called.includes(resolve2)) {\n      events = resolve2(events, context);\n      called.push(resolve2);\n    }\n  }\n  return events;\n}\nconst attention = {\n  name: \"attention\",\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n};\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  let open;\n  let group;\n  let text2;\n  let openingSequence;\n  let closingSequence;\n  let use;\n  let nextEvents;\n  let offset;\n  while (++index < events.length) {\n    if (events[index][0] === \"enter\" && events[index][1].type === \"attentionSequence\" && events[index][1]._close) {\n      open = index;\n      while (open--) {\n        if (events[open][0] === \"exit\" && events[open][1].type === \"attentionSequence\" && events[open][1]._open && context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = Object.assign({}, events[open][1].end);\n          const end = Object.assign({}, events[index][1].start);\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: Object.assign({}, events[open][1].end)\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: Object.assign({}, events[index][1].start),\n            end\n          };\n          text2 = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: Object.assign({}, events[open][1].end),\n            end: Object.assign({}, events[index][1].start)\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: Object.assign({}, openingSequence.start),\n            end: Object.assign({}, closingSequence.end)\n          };\n          events[open][1].end = Object.assign({}, openingSequence.start);\n          events[index][1].start = Object.assign({}, closingSequence.end);\n          nextEvents = [];\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [\n              [\"enter\", events[open][1], context],\n              [\"exit\", events[open][1], context]\n            ]);\n          }\n          nextEvents = push(nextEvents, [\n            [\"enter\", group, context],\n            [\"enter\", openingSequence, context],\n            [\"exit\", openingSequence, context],\n            [\"enter\", text2, context]\n          ]);\n          nextEvents = push(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          );\n          nextEvents = push(nextEvents, [\n            [\"exit\", text2, context],\n            [\"enter\", closingSequence, context],\n            [\"exit\", closingSequence, context],\n            [\"exit\", group, context]\n          ]);\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [\n              [\"enter\", events[index][1], context],\n              [\"exit\", events[index][1], context]\n            ]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === \"attentionSequence\") {\n      events[index][1].type = \"data\";\n    }\n  }\n  return events;\n}\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers2 = this.parser.constructs.attentionMarkers.null;\n  const previous2 = this.previous;\n  const before = classifyCharacter(previous2);\n  let marker;\n  return start;\n  function start(code2) {\n    marker = code2;\n    effects.enter(\"attentionSequence\");\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      return inside;\n    }\n    const token = effects.exit(\"attentionSequence\");\n    const after = classifyCharacter(code2);\n    const open = !after || after === 2 && before || attentionMarkers2.includes(code2);\n    const close = !before || before === 2 && after || attentionMarkers2.includes(previous2);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code2);\n  }\n}\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}\nconst autolink = {\n  name: \"autolink\",\n  tokenize: tokenizeAutolink\n};\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code2);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n  function open(code2) {\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return schemeOrEmailAtext;\n    }\n    return emailAtext(code2);\n  }\n  function schemeOrEmailAtext(code2) {\n    if (code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) {\n      size2 = 1;\n      return schemeInsideOrEmailAtext(code2);\n    }\n    return emailAtext(code2);\n  }\n  function schemeInsideOrEmailAtext(code2) {\n    if (code2 === 58) {\n      effects.consume(code2);\n      size2 = 0;\n      return urlInside;\n    }\n    if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size2++ < 32) {\n      effects.consume(code2);\n      return schemeInsideOrEmailAtext;\n    }\n    size2 = 0;\n    return emailAtext(code2);\n  }\n  function urlInside(code2) {\n    if (code2 === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code2);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    if (code2 === null || code2 === 32 || code2 === 60 || asciiControl(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return urlInside;\n  }\n  function emailAtext(code2) {\n    if (code2 === 64) {\n      effects.consume(code2);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code2)) {\n      effects.consume(code2);\n      return emailAtext;\n    }\n    return nok(code2);\n  }\n  function emailAtSignOrDot(code2) {\n    return asciiAlphanumeric(code2) ? emailLabel(code2) : nok(code2);\n  }\n  function emailLabel(code2) {\n    if (code2 === 46) {\n      effects.consume(code2);\n      size2 = 0;\n      return emailAtSignOrDot;\n    }\n    if (code2 === 62) {\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code2);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code2);\n  }\n  function emailValue(code2) {\n    if ((code2 === 45 || asciiAlphanumeric(code2)) && size2++ < 63) {\n      const next = code2 === 45 ? emailValue : emailLabel;\n      effects.consume(code2);\n      return next;\n    }\n    return nok(code2);\n  }\n}\nconst blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n};\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n  }\n  function after(code2) {\n    return code2 === null || markdownLineEnding(code2) ? ok(code2) : nok(code2);\n  }\n}\nconst blockQuote = {\n  name: \"blockQuote\",\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit\n};\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    if (code2 === 62) {\n      const state = self2.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code2);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code2);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code2);\n  }\n}\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self2 = this;\n  return contStart;\n  function contStart(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        contBefore,\n        \"linePrefix\",\n        self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2);\n    }\n    return contBefore(code2);\n  }\n  function contBefore(code2) {\n    return effects.attempt(blockQuote, ok, nok)(code2);\n  }\n}\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}\nconst characterEscape = {\n  name: \"characterEscape\",\n  tokenize: tokenizeCharacterEscape\n};\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code2);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n  function inside(code2) {\n    if (asciiPunctuation(code2)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code2);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code2);\n  }\n}\nconst characterReference = {\n  name: \"characterReference\",\n  tokenize: tokenizeCharacterReference\n};\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self2 = this;\n  let size2 = 0;\n  let max;\n  let test;\n  return start;\n  function start(code2) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code2);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code2);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code2);\n  }\n  function numeric(code2) {\n    if (code2 === 88 || code2 === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code2);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code2);\n  }\n  function value(code2) {\n    if (code2 === 59 && size2) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self2.sliceSerialize(token))) {\n        return nok(code2);\n      }\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code2);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code2) && size2++ < max) {\n      effects.consume(code2);\n      return value;\n    }\n    return nok(code2);\n  }\n}\nconst nonLazyContinuation = {\n  tokenize: tokenizeNonLazyContinuation,\n  partial: true\n};\nconst codeFenced = {\n  name: \"codeFenced\",\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n};\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self2 = this;\n  const closeStart = {\n    tokenize: tokenizeCloseStart,\n    partial: true\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  let marker;\n  return start;\n  function start(code2) {\n    return beforeSequenceOpen(code2);\n  }\n  function beforeSequenceOpen(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code2;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code2);\n  }\n  function sequenceOpen(code2) {\n    if (code2 === marker) {\n      sizeOpen++;\n      effects.consume(code2);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code2);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code2) ? factorySpace(effects, infoBefore, \"whitespace\")(code2) : infoBefore(code2);\n  }\n  function infoBefore(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"codeFencedFence\");\n      return self2.interrupt ? ok(code2) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code2);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code2);\n  }\n  function info(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code2);\n    }\n    if (code2 === 96 && code2 === marker) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return info;\n  }\n  function metaBefore(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return infoBefore(code2);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code2);\n  }\n  function meta(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code2);\n    }\n    if (code2 === 96 && code2 === marker) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return meta;\n  }\n  function atNonLazyBreak(code2) {\n    return effects.attempt(closeStart, after, contentBefore)(code2);\n  }\n  function contentBefore(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n  function contentStart(code2) {\n    return initialPrefix > 0 && markdownSpace(code2) ? factorySpace(\n      effects,\n      beforeContentChunk,\n      \"linePrefix\",\n      initialPrefix + 1\n    )(code2) : beforeContentChunk(code2);\n  }\n  function beforeContentChunk(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code2);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code2);\n  }\n  function contentChunk(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code2);\n    }\n    effects.consume(code2);\n    return contentChunk;\n  }\n  function after(code2) {\n    effects.exit(\"codeFenced\");\n    return ok(code2);\n  }\n  function tokenizeCloseStart(effects2, ok2, nok2) {\n    let size2 = 0;\n    return startBefore;\n    function startBefore(code2) {\n      effects2.enter(\"lineEnding\");\n      effects2.consume(code2);\n      effects2.exit(\"lineEnding\");\n      return start2;\n    }\n    function start2(code2) {\n      effects2.enter(\"codeFencedFence\");\n      return markdownSpace(code2) ? factorySpace(\n        effects2,\n        beforeSequenceClose,\n        \"linePrefix\",\n        self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2) : beforeSequenceClose(code2);\n    }\n    function beforeSequenceClose(code2) {\n      if (code2 === marker) {\n        effects2.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code2);\n      }\n      return nok2(code2);\n    }\n    function sequenceClose(code2) {\n      if (code2 === marker) {\n        size2++;\n        effects2.consume(code2);\n        return sequenceClose;\n      }\n      if (size2 >= sizeOpen) {\n        effects2.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code2) ? factorySpace(effects2, sequenceCloseAfter, \"whitespace\")(code2) : sequenceCloseAfter(code2);\n      }\n      return nok2(code2);\n    }\n    function sequenceCloseAfter(code2) {\n      if (code2 === null || markdownLineEnding(code2)) {\n        effects2.exit(\"codeFencedFence\");\n        return ok2(code2);\n      }\n      return nok2(code2);\n    }\n  }\n}\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n  function lineStart(code2) {\n    return self2.parser.lazy[self2.now().line] ? nok(code2) : ok(code2);\n  }\n}\nconst codeIndented = {\n  name: \"codeIndented\",\n  tokenize: tokenizeCodeIndented\n};\nconst furtherStart = {\n  tokenize: tokenizeFurtherStart,\n  partial: true\n};\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    effects.enter(\"codeIndented\");\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code2);\n  }\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code2) : nok(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === null) {\n      return after(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      return effects.attempt(furtherStart, atBreak, after)(code2);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    return inside;\n  }\n  function after(code2) {\n    effects.exit(\"codeIndented\");\n    return ok(code2);\n  }\n}\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self2 = this;\n  return furtherStart2;\n  function furtherStart2(code2) {\n    if (self2.parser.lazy[self2.now().line]) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return furtherStart2;\n    }\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code2);\n  }\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code2) : markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);\n  }\n}\nconst codeText = {\n  name: \"codeText\",\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n};\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  let index;\n  let enter;\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === \"space\") && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === \"space\")) {\n    index = headEnterIndex;\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === void 0) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = void 0;\n    }\n  }\n  return events;\n}\nfunction previous(code2) {\n  return code2 !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\nfunction tokenizeCodeText(effects, ok, nok) {\n  let sizeOpen = 0;\n  let size2;\n  let token;\n  return start;\n  function start(code2) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code2);\n  }\n  function sequenceOpen(code2) {\n    if (code2 === 96) {\n      effects.consume(code2);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code2);\n  }\n  function between(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 32) {\n      effects.enter(\"space\");\n      effects.consume(code2);\n      effects.exit(\"space\");\n      return between;\n    }\n    if (code2 === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size2 = 0;\n      return sequenceClose(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n    effects.enter(\"codeTextData\");\n    return data(code2);\n  }\n  function data(code2) {\n    if (code2 === null || code2 === 32 || code2 === 96 || markdownLineEnding(code2)) {\n      effects.exit(\"codeTextData\");\n      return between(code2);\n    }\n    effects.consume(code2);\n    return data;\n  }\n  function sequenceClose(code2) {\n    if (code2 === 96) {\n      effects.consume(code2);\n      size2++;\n      return sequenceClose;\n    }\n    if (size2 === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code2);\n    }\n    token.type = \"codeTextData\";\n    return data(code2);\n  }\n}\nfunction subtokenize(events) {\n  const jumps = {};\n  let index = -1;\n  let event;\n  let lineIndex;\n  let otherIndex;\n  let otherEvent;\n  let parameters;\n  let subevents;\n  let more;\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events[index];\n    if (index && event[1].type === \"chunkFlow\" && events[index - 1][1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n    if (event[0] === \"enter\") {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    } else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = void 0;\n      while (otherIndex--) {\n        otherEvent = events[otherIndex];\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === \"enter\") {\n            if (lineIndex) {\n              events[lineIndex][1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        event[1].end = Object.assign({}, events[lineIndex][1].start);\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        splice(events, lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n  return !more;\n}\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1];\n  const context = events[eventIndex][2];\n  let startPosition = eventIndex - 1;\n  const startPositions = [];\n  const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);\n  const childEvents = tokenizer.events;\n  const jumps = [];\n  const gaps = {};\n  let stream;\n  let previous2;\n  let index = -1;\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n  while (current) {\n    while (events[++startPosition][1] !== current) {\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous2) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = void 0;\n      }\n    }\n    previous2 = current;\n    current = current.next;\n  }\n  current = token;\n  while (++index < childEvents.length) {\n    if (childEvents[index][0] === \"exit\" && childEvents[index - 1][0] === \"enter\" && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      current._tokenizer = void 0;\n      current.previous = void 0;\n      current = current.next;\n    }\n  }\n  tokenizer.events = [];\n  if (current) {\n    current._tokenizer = void 0;\n    current.previous = void 0;\n  } else {\n    breaks.pop();\n  }\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start2 = startPositions.pop();\n    jumps.unshift([start2, start2 + slice.length - 1]);\n    splice(events, start2, 2, slice);\n  }\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}\nconst content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent\n};\nconst continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n};\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\nfunction tokenizeContent(effects, ok) {\n  let previous2;\n  return chunkStart;\n  function chunkStart(code2) {\n    effects.enter(\"content\");\n    previous2 = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code2);\n  }\n  function chunkInside(code2) {\n    if (code2 === null) {\n      return contentEnd(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code2);\n    }\n    effects.consume(code2);\n    return chunkInside;\n  }\n  function contentEnd(code2) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code2);\n  }\n  function contentContinue(code2) {\n    effects.consume(code2);\n    effects.exit(\"chunkContent\");\n    previous2.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous: previous2\n    });\n    previous2 = previous2.next;\n    return chunkInside;\n  }\n}\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self2 = this;\n  return startLookahead;\n  function startLookahead(code2) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n  function prefixed(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return nok(code2);\n    }\n    const tail = self2.events[self2.events.length - 1];\n    if (!self2.parser.constructs.disable.null.includes(\"codeIndented\") && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code2);\n    }\n    return effects.interrupt(self2.parser.constructs.flow, nok, ok)(code2);\n  }\n}\nfunction factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n  function start(code2) {\n    if (code2 === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code2);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n    if (code2 === null || code2 === 32 || code2 === 41 || asciiControl(code2)) {\n      return nok(code2);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code2);\n  }\n  function enclosedBefore(code2) {\n    if (code2 === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code2);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code2);\n  }\n  function enclosed(code2) {\n    if (code2 === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code2);\n    }\n    if (code2 === null || code2 === 60 || markdownLineEnding(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? enclosedEscape : enclosed;\n  }\n  function enclosedEscape(code2) {\n    if (code2 === 60 || code2 === 62 || code2 === 92) {\n      effects.consume(code2);\n      return enclosed;\n    }\n    return enclosed(code2);\n  }\n  function raw(code2) {\n    if (!balance && (code2 === null || code2 === 41 || markdownLineEndingOrSpace(code2))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code2);\n    }\n    if (balance < limit && code2 === 40) {\n      effects.consume(code2);\n      balance++;\n      return raw;\n    }\n    if (code2 === 41) {\n      effects.consume(code2);\n      balance--;\n      return raw;\n    }\n    if (code2 === null || code2 === 32 || code2 === 40 || asciiControl(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? rawEscape : raw;\n  }\n  function rawEscape(code2) {\n    if (code2 === 40 || code2 === 41 || code2 === 92) {\n      effects.consume(code2);\n      return raw;\n    }\n    return raw(code2);\n  }\n}\nfunction factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self2 = this;\n  let size2 = 0;\n  let seen;\n  return start;\n  function start(code2) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code2);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n  function atBreak(code2) {\n    if (size2 > 999 || code2 === null || code2 === 91 || code2 === 93 && !seen || code2 === 94 && !size2 && \"_hiddenFootnoteSupport\" in self2.parser.constructs) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code2);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code2);\n  }\n  function labelInside(code2) {\n    if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size2++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    if (!seen)\n      seen = !markdownSpace(code2);\n    return code2 === 92 ? labelEscape : labelInside;\n  }\n  function labelEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size2++;\n      return labelInside;\n    }\n    return labelInside(code2);\n  }\n}\nfunction factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  let marker;\n  return start;\n  function start(code2) {\n    if (code2 === 34 || code2 === 39 || code2 === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code2);\n      effects.exit(markerType);\n      marker = code2 === 40 ? 41 : code2;\n      return begin;\n    }\n    return nok(code2);\n  }\n  function begin(code2) {\n    if (code2 === marker) {\n      effects.enter(markerType);\n      effects.consume(code2);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === marker || code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? escape : inside;\n  }\n  function escape(code2) {\n    if (code2 === marker || code2 === 92) {\n      effects.consume(code2);\n      return inside;\n    }\n    return inside(code2);\n  }\n}\nfunction factoryWhitespace(effects, ok) {\n  let seen;\n  return start;\n  function start(code2) {\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? \"linePrefix\" : \"lineSuffix\"\n      )(code2);\n    }\n    return ok(code2);\n  }\n}\nconst definition = {\n  name: \"definition\",\n  tokenize: tokenizeDefinition\n};\nconst titleBefore = {\n  tokenize: tokenizeTitleBefore,\n  partial: true\n};\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self2 = this;\n  let identifier;\n  return start;\n  function start(code2) {\n    effects.enter(\"definition\");\n    return before(code2);\n  }\n  function before(code2) {\n    return factoryLabel.call(\n      self2,\n      effects,\n      labelAfter,\n      nok,\n      \"definitionLabel\",\n      \"definitionLabelMarker\",\n      \"definitionLabelString\"\n    )(code2);\n  }\n  function labelAfter(code2) {\n    identifier = normalizeIdentifier(\n      self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1)\n    );\n    if (code2 === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code2);\n  }\n  function markerAfter(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, destinationBefore)(code2) : destinationBefore(code2);\n  }\n  function destinationBefore(code2) {\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      nok,\n      \"definitionDestination\",\n      \"definitionDestinationLiteral\",\n      \"definitionDestinationLiteralMarker\",\n      \"definitionDestinationRaw\",\n      \"definitionDestinationString\"\n    )(code2);\n  }\n  function destinationAfter(code2) {\n    return effects.attempt(titleBefore, after, after)(code2);\n  }\n  function after(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code2) : afterWhitespace(code2);\n  }\n  function afterWhitespace(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"definition\");\n      self2.parser.defined.push(identifier);\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore2;\n  function titleBefore2(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, beforeMarker)(code2) : nok(code2);\n  }\n  function beforeMarker(code2) {\n    return factoryTitle(\n      effects,\n      titleAfter,\n      nok,\n      \"definitionTitle\",\n      \"definitionTitleMarker\",\n      \"definitionTitleString\"\n    )(code2);\n  }\n  function titleAfter(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code2) : titleAfterOptionalWhitespace(code2);\n  }\n  function titleAfterOptionalWhitespace(code2) {\n    return code2 === null || markdownLineEnding(code2) ? ok(code2) : nok(code2);\n  }\n}\nconst hardBreakEscape = {\n  name: \"hardBreakEscape\",\n  tokenize: tokenizeHardBreakEscape\n};\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code2);\n    return after;\n  }\n  function after(code2) {\n    if (markdownLineEnding(code2)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nconst headingAtx = {\n  name: \"headingAtx\",\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n};\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  let content2;\n  let text2;\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content2 = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text2 = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [\n      [\"enter\", content2, context],\n      [\"enter\", text2, context],\n      [\"exit\", text2, context],\n      [\"exit\", content2, context]\n    ]);\n  }\n  return events;\n}\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    effects.enter(\"atxHeading\");\n    return before(code2);\n  }\n  function before(code2) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code2);\n  }\n  function sequenceOpen(code2) {\n    if (code2 === 35 && size2++ < 6) {\n      effects.consume(code2);\n      return sequenceOpen;\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code2);\n    }\n    return nok(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"atxHeading\");\n      return ok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code2);\n    }\n    effects.enter(\"atxHeadingText\");\n    return data(code2);\n  }\n  function sequenceFurther(code2) {\n    if (code2 === 35) {\n      effects.consume(code2);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code2);\n  }\n  function data(code2) {\n    if (code2 === null || code2 === 35 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    return data;\n  }\n}\nconst htmlBlockNames = [\n  \"address\",\n  \"article\",\n  \"aside\",\n  \"base\",\n  \"basefont\",\n  \"blockquote\",\n  \"body\",\n  \"caption\",\n  \"center\",\n  \"col\",\n  \"colgroup\",\n  \"dd\",\n  \"details\",\n  \"dialog\",\n  \"dir\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"footer\",\n  \"form\",\n  \"frame\",\n  \"frameset\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"head\",\n  \"header\",\n  \"hr\",\n  \"html\",\n  \"iframe\",\n  \"legend\",\n  \"li\",\n  \"link\",\n  \"main\",\n  \"menu\",\n  \"menuitem\",\n  \"nav\",\n  \"noframes\",\n  \"ol\",\n  \"optgroup\",\n  \"option\",\n  \"p\",\n  \"param\",\n  \"search\",\n  \"section\",\n  \"summary\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"title\",\n  \"tr\",\n  \"track\",\n  \"ul\"\n];\nconst htmlRawNames = [\"pre\", \"script\", \"style\", \"textarea\"];\nconst htmlFlow = {\n  name: \"htmlFlow\",\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n};\nconst blankLineBefore = {\n  tokenize: tokenizeBlankLineBefore,\n  partial: true\n};\nconst nonLazyContinuationStart = {\n  tokenize: tokenizeNonLazyContinuationStart,\n  partial: true\n};\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === \"enter\" && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    events[index][1].start = events[index - 2][1].start;\n    events[index + 1][1].start = events[index - 2][1].start;\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self2 = this;\n  let marker;\n  let closingTag;\n  let buffer;\n  let index;\n  let markerB;\n  return start;\n  function start(code2) {\n    return before(code2);\n  }\n  function before(code2) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code2);\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 33) {\n      effects.consume(code2);\n      return declarationOpen;\n    }\n    if (code2 === 47) {\n      effects.consume(code2);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code2 === 63) {\n      effects.consume(code2);\n      marker = 3;\n      return self2.interrupt ? ok : continuationDeclarationInside;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      buffer = String.fromCharCode(code2);\n      return tagName;\n    }\n    return nok(code2);\n  }\n  function declarationOpen(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code2 === 91) {\n      effects.consume(code2);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      marker = 4;\n      return self2.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code2);\n  }\n  function commentOpenInside(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return self2.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code2);\n  }\n  function cdataOpenInside(code2) {\n    const value = \"CDATA[\";\n    if (code2 === value.charCodeAt(index++)) {\n      effects.consume(code2);\n      if (index === value.length) {\n        return self2.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code2);\n  }\n  function tagCloseStart(code2) {\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      buffer = String.fromCharCode(code2);\n      return tagName;\n    }\n    return nok(code2);\n  }\n  function tagName(code2) {\n    if (code2 === null || code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      const slash = code2 === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        return self2.interrupt ? ok(code2) : continuation(code2);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code2);\n          return basicSelfClosing;\n        }\n        return self2.interrupt ? ok(code2) : continuation(code2);\n      }\n      marker = 7;\n      return self2.interrupt && !self2.parser.lazy[self2.now().line] ? nok(code2) : closingTag ? completeClosingTagAfter(code2) : completeAttributeNameBefore(code2);\n    }\n    if (code2 === 45 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      buffer += String.fromCharCode(code2);\n      return tagName;\n    }\n    return nok(code2);\n  }\n  function basicSelfClosing(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      return self2.interrupt ? ok : continuation;\n    }\n    return nok(code2);\n  }\n  function completeClosingTagAfter(code2) {\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code2);\n  }\n  function completeAttributeNameBefore(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      return completeEnd;\n    }\n    if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) {\n      effects.consume(code2);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code2);\n  }\n  function completeAttributeName(code2) {\n    if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code2);\n  }\n  function completeAttributeNameAfter(code2) {\n    if (code2 === 61) {\n      effects.consume(code2);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code2);\n  }\n  function completeAttributeValueBefore(code2) {\n    if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) {\n      return nok(code2);\n    }\n    if (code2 === 34 || code2 === 39) {\n      effects.consume(code2);\n      markerB = code2;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code2);\n  }\n  function completeAttributeValueQuoted(code2) {\n    if (code2 === markerB) {\n      effects.consume(code2);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return completeAttributeValueQuoted;\n  }\n  function completeAttributeValueUnquoted(code2) {\n    if (code2 === null || code2 === 34 || code2 === 39 || code2 === 47 || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 || markdownLineEndingOrSpace(code2)) {\n      return completeAttributeNameAfter(code2);\n    }\n    effects.consume(code2);\n    return completeAttributeValueUnquoted;\n  }\n  function completeAttributeValueQuotedAfter(code2) {\n    if (code2 === 47 || code2 === 62 || markdownSpace(code2)) {\n      return completeAttributeNameBefore(code2);\n    }\n    return nok(code2);\n  }\n  function completeEnd(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      return completeAfter;\n    }\n    return nok(code2);\n  }\n  function completeAfter(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return continuation(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAfter;\n    }\n    return nok(code2);\n  }\n  function continuation(code2) {\n    if (code2 === 45 && marker === 2) {\n      effects.consume(code2);\n      return continuationCommentInside;\n    }\n    if (code2 === 60 && marker === 1) {\n      effects.consume(code2);\n      return continuationRawTagOpen;\n    }\n    if (code2 === 62 && marker === 4) {\n      effects.consume(code2);\n      return continuationClose;\n    }\n    if (code2 === 63 && marker === 3) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    if (code2 === 93 && marker === 5) {\n      effects.consume(code2);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code2) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(\n        blankLineBefore,\n        continuationAfter,\n        continuationStart\n      )(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code2);\n    }\n    effects.consume(code2);\n    return continuation;\n  }\n  function continuationStart(code2) {\n    return effects.check(\n      nonLazyContinuationStart,\n      continuationStartNonLazy,\n      continuationAfter\n    )(code2);\n  }\n  function continuationStartNonLazy(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n  function continuationBefore(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return continuationStart(code2);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code2);\n  }\n  function continuationCommentInside(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    return continuation(code2);\n  }\n  function continuationRawTagOpen(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      buffer = \"\";\n      return continuationRawEndTag;\n    }\n    return continuation(code2);\n  }\n  function continuationRawEndTag(code2) {\n    if (code2 === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code2);\n        return continuationClose;\n      }\n      return continuation(code2);\n    }\n    if (asciiAlpha(code2) && buffer.length < 8) {\n      effects.consume(code2);\n      buffer += String.fromCharCode(code2);\n      return continuationRawEndTag;\n    }\n    return continuation(code2);\n  }\n  function continuationCdataInside(code2) {\n    if (code2 === 93) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    return continuation(code2);\n  }\n  function continuationDeclarationInside(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      return continuationClose;\n    }\n    if (code2 === 45 && marker === 2) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    return continuation(code2);\n  }\n  function continuationClose(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code2);\n    }\n    effects.consume(code2);\n    return continuationClose;\n  }\n  function continuationAfter(code2) {\n    effects.exit(\"htmlFlow\");\n    return ok(code2);\n  }\n}\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    return self2.parser.lazy[self2.now().line] ? nok(code2) : ok(code2);\n  }\n}\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}\nconst htmlText = {\n  name: \"htmlText\",\n  tokenize: tokenizeHtmlText\n};\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self2 = this;\n  let marker;\n  let index;\n  let returnState;\n  return start;\n  function start(code2) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code2);\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 33) {\n      effects.consume(code2);\n      return declarationOpen;\n    }\n    if (code2 === 47) {\n      effects.consume(code2);\n      return tagCloseStart;\n    }\n    if (code2 === 63) {\n      effects.consume(code2);\n      return instruction;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return tagOpen;\n    }\n    return nok(code2);\n  }\n  function declarationOpen(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentOpenInside;\n    }\n    if (code2 === 91) {\n      effects.consume(code2);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return declaration;\n    }\n    return nok(code2);\n  }\n  function commentOpenInside(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentEnd;\n    }\n    return nok(code2);\n  }\n  function comment(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentClose;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = comment;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return comment;\n  }\n  function commentClose(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentEnd;\n    }\n    return comment(code2);\n  }\n  function commentEnd(code2) {\n    return code2 === 62 ? end(code2) : code2 === 45 ? commentClose(code2) : comment(code2);\n  }\n  function cdataOpenInside(code2) {\n    const value = \"CDATA[\";\n    if (code2 === value.charCodeAt(index++)) {\n      effects.consume(code2);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code2);\n  }\n  function cdata(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = cdata;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return cdata;\n  }\n  function cdataClose(code2) {\n    if (code2 === 93) {\n      effects.consume(code2);\n      return cdataEnd;\n    }\n    return cdata(code2);\n  }\n  function cdataEnd(code2) {\n    if (code2 === 62) {\n      return end(code2);\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return cdataEnd;\n    }\n    return cdata(code2);\n  }\n  function declaration(code2) {\n    if (code2 === null || code2 === 62) {\n      return end(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = declaration;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return declaration;\n  }\n  function instruction(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 63) {\n      effects.consume(code2);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = instruction;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return instruction;\n  }\n  function instructionClose(code2) {\n    return code2 === 62 ? end(code2) : instruction(code2);\n  }\n  function tagCloseStart(code2) {\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return tagClose;\n    }\n    return nok(code2);\n  }\n  function tagClose(code2) {\n    if (code2 === 45 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return tagClose;\n    }\n    return tagCloseBetween(code2);\n  }\n  function tagCloseBetween(code2) {\n    if (markdownLineEnding(code2)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagCloseBetween;\n    }\n    return end(code2);\n  }\n  function tagOpen(code2) {\n    if (code2 === 45 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return tagOpen;\n    }\n    if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      return tagOpenBetween(code2);\n    }\n    return nok(code2);\n  }\n  function tagOpenBetween(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      return end;\n    }\n    if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagOpenBetween;\n    }\n    return end(code2);\n  }\n  function tagOpenAttributeName(code2) {\n    if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code2);\n  }\n  function tagOpenAttributeNameAfter(code2) {\n    if (code2 === 61) {\n      effects.consume(code2);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code2);\n  }\n  function tagOpenAttributeValueBefore(code2) {\n    if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) {\n      return nok(code2);\n    }\n    if (code2 === 34 || code2 === 39) {\n      effects.consume(code2);\n      marker = code2;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code2);\n    return tagOpenAttributeValueUnquoted;\n  }\n  function tagOpenAttributeValueQuoted(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      marker = void 0;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return tagOpenAttributeValueQuoted;\n  }\n  function tagOpenAttributeValueUnquoted(code2) {\n    if (code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 96) {\n      return nok(code2);\n    }\n    if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      return tagOpenBetween(code2);\n    }\n    effects.consume(code2);\n    return tagOpenAttributeValueUnquoted;\n  }\n  function tagOpenAttributeValueQuotedAfter(code2) {\n    if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      return tagOpenBetween(code2);\n    }\n    return nok(code2);\n  }\n  function end(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code2);\n  }\n  function lineEndingBefore(code2) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n  function lineEndingAfter(code2) {\n    return markdownSpace(code2) ? factorySpace(\n      effects,\n      lineEndingAfterPrefix,\n      \"linePrefix\",\n      self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n    )(code2) : lineEndingAfterPrefix(code2);\n  }\n  function lineEndingAfterPrefix(code2) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code2);\n  }\n}\nconst labelEnd = {\n  name: \"labelEnd\",\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n};\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  while (++index < events.length) {\n    const token = events[index][1];\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      events.splice(index + 1, token.type === \"labelImage\" ? 4 : 2);\n      token.type = \"data\";\n      index++;\n    }\n  }\n  return events;\n}\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  let token;\n  let open;\n  let close;\n  let media;\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n      if (events[index][0] === \"enter\" && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === \"enter\" && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  const label = {\n    type: \"label\",\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[close][1].end)\n  };\n  const text2 = {\n    type: \"labelText\",\n    start: Object.assign({}, events[open + offset + 2][1].end),\n    end: Object.assign({}, events[close - 2][1].start)\n  };\n  media = [\n    [\"enter\", group, context],\n    [\"enter\", label, context]\n  ];\n  media = push(media, events.slice(open + 1, open + offset + 3));\n  media = push(media, [[\"enter\", text2, context]]);\n  media = push(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  );\n  media = push(media, [\n    [\"exit\", text2, context],\n    events[close - 2],\n    events[close - 1],\n    [\"exit\", label, context]\n  ]);\n  media = push(media, events.slice(close + 1));\n  media = push(media, [[\"exit\", group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self2 = this;\n  let index = self2.events.length;\n  let labelStart;\n  let defined;\n  while (index--) {\n    if ((self2.events[index][1].type === \"labelImage\" || self2.events[index][1].type === \"labelLink\") && !self2.events[index][1]._balanced) {\n      labelStart = self2.events[index][1];\n      break;\n    }\n  }\n  return start;\n  function start(code2) {\n    if (!labelStart) {\n      return nok(code2);\n    }\n    if (labelStart._inactive) {\n      return labelEndNok(code2);\n    }\n    defined = self2.parser.defined.includes(\n      normalizeIdentifier(\n        self2.sliceSerialize({\n          start: labelStart.end,\n          end: self2.now()\n        })\n      )\n    );\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code2);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n  function after(code2) {\n    if (code2 === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        labelEndOk,\n        defined ? labelEndOk : labelEndNok\n      )(code2);\n    }\n    if (code2 === 91) {\n      return effects.attempt(\n        referenceFullConstruct,\n        labelEndOk,\n        defined ? referenceNotFull : labelEndNok\n      )(code2);\n    }\n    return defined ? labelEndOk(code2) : labelEndNok(code2);\n  }\n  function referenceNotFull(code2) {\n    return effects.attempt(\n      referenceCollapsedConstruct,\n      labelEndOk,\n      labelEndNok\n    )(code2);\n  }\n  function labelEndOk(code2) {\n    return ok(code2);\n  }\n  function labelEndNok(code2) {\n    labelStart._balanced = true;\n    return nok(code2);\n  }\n}\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n  function resourceStart(code2) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code2);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n  function resourceBefore(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceOpen)(code2) : resourceOpen(code2);\n  }\n  function resourceOpen(code2) {\n    if (code2 === 41) {\n      return resourceEnd(code2);\n    }\n    return factoryDestination(\n      effects,\n      resourceDestinationAfter,\n      resourceDestinationMissing,\n      \"resourceDestination\",\n      \"resourceDestinationLiteral\",\n      \"resourceDestinationLiteralMarker\",\n      \"resourceDestinationRaw\",\n      \"resourceDestinationString\",\n      32\n    )(code2);\n  }\n  function resourceDestinationAfter(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceBetween)(code2) : resourceEnd(code2);\n  }\n  function resourceDestinationMissing(code2) {\n    return nok(code2);\n  }\n  function resourceBetween(code2) {\n    if (code2 === 34 || code2 === 39 || code2 === 40) {\n      return factoryTitle(\n        effects,\n        resourceTitleAfter,\n        nok,\n        \"resourceTitle\",\n        \"resourceTitleMarker\",\n        \"resourceTitleString\"\n      )(code2);\n    }\n    return resourceEnd(code2);\n  }\n  function resourceTitleAfter(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceEnd)(code2) : resourceEnd(code2);\n  }\n  function resourceEnd(code2) {\n    if (code2 === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code2);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self2 = this;\n  return referenceFull;\n  function referenceFull(code2) {\n    return factoryLabel.call(\n      self2,\n      effects,\n      referenceFullAfter,\n      referenceFullMissing,\n      \"reference\",\n      \"referenceMarker\",\n      \"referenceString\"\n    )(code2);\n  }\n  function referenceFullAfter(code2) {\n    return self2.parser.defined.includes(\n      normalizeIdentifier(\n        self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1)\n      )\n    ) ? ok(code2) : nok(code2);\n  }\n  function referenceFullMissing(code2) {\n    return nok(code2);\n  }\n}\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n  function referenceCollapsedStart(code2) {\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code2);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n  function referenceCollapsedOpen(code2) {\n    if (code2 === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code2);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code2);\n  }\n}\nconst labelStartImage = {\n  name: \"labelStartImage\",\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n};\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code2);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code2);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    return code2 === 94 && \"_hiddenFootnoteSupport\" in self2.parser.constructs ? nok(code2) : ok(code2);\n  }\n}\nconst labelStartLink = {\n  name: \"labelStartLink\",\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n};\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code2);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n  function after(code2) {\n    return code2 === 94 && \"_hiddenFootnoteSupport\" in self2.parser.constructs ? nok(code2) : ok(code2);\n  }\n}\nconst lineEnding = {\n  name: \"lineEnding\",\n  tokenize: tokenizeLineEnding\n};\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}\nconst thematicBreak = {\n  name: \"thematicBreak\",\n  tokenize: tokenizeThematicBreak\n};\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size2 = 0;\n  let marker;\n  return start;\n  function start(code2) {\n    effects.enter(\"thematicBreak\");\n    return before(code2);\n  }\n  function before(code2) {\n    marker = code2;\n    return atBreak(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code2);\n    }\n    if (size2 >= 3 && (code2 === null || markdownLineEnding(code2))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n  function sequence(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      size2++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code2) ? factorySpace(effects, atBreak, \"whitespace\")(code2) : atBreak(code2);\n  }\n}\nconst list = {\n  name: \"list\",\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n};\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n};\nconst indentConstruct = {\n  tokenize: tokenizeIndent$1,\n  partial: true\n};\nfunction tokenizeListStart(effects, ok, nok) {\n  const self2 = this;\n  const tail = self2.events[self2.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    const kind = self2.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self2.containerState.marker || code2 === self2.containerState.marker : asciiDigit(code2)) {\n      if (!self2.containerState.type) {\n        self2.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code2 === 42 || code2 === 45 ? effects.check(thematicBreak, nok, atMarker)(code2) : atMarker(code2);\n      }\n      if (!self2.interrupt || code2 === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code2);\n      }\n    }\n    return nok(code2);\n  }\n  function inside(code2) {\n    if (asciiDigit(code2) && ++size2 < 10) {\n      effects.consume(code2);\n      return inside;\n    }\n    if ((!self2.interrupt || size2 < 2) && (self2.containerState.marker ? code2 === self2.containerState.marker : code2 === 41 || code2 === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code2);\n    }\n    return nok(code2);\n  }\n  function atMarker(code2) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code2);\n    effects.exit(\"listItemMarker\");\n    self2.containerState.marker = self2.containerState.marker || code2;\n    return effects.check(\n      blankLine,\n      self2.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    );\n  }\n  function onBlank(code2) {\n    self2.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code2);\n  }\n  function otherPrefix(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code2);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code2);\n  }\n  function endOfPrefix(code2) {\n    self2.containerState.size = initialSize + self2.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code2);\n  }\n}\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self2 = this;\n  self2.containerState._closeFlow = void 0;\n  return effects.check(blankLine, onBlank, notBlank);\n  function onBlank(code2) {\n    self2.containerState.furtherBlankLines = self2.containerState.furtherBlankLines || self2.containerState.initialBlankLine;\n    return factorySpace(\n      effects,\n      ok,\n      \"listItemIndent\",\n      self2.containerState.size + 1\n    )(code2);\n  }\n  function notBlank(code2) {\n    if (self2.containerState.furtherBlankLines || !markdownSpace(code2)) {\n      self2.containerState.furtherBlankLines = void 0;\n      self2.containerState.initialBlankLine = void 0;\n      return notInCurrentItem(code2);\n    }\n    self2.containerState.furtherBlankLines = void 0;\n    self2.containerState.initialBlankLine = void 0;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code2);\n  }\n  function notInCurrentItem(code2) {\n    self2.containerState._closeFlow = true;\n    self2.interrupt = void 0;\n    return factorySpace(\n      effects,\n      effects.attempt(list, ok, nok),\n      \"linePrefix\",\n      self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n    )(code2);\n  }\n}\nfunction tokenizeIndent$1(effects, ok, nok) {\n  const self2 = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"listItemIndent\",\n    self2.containerState.size + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self2.containerState.size ? ok(code2) : nok(code2);\n  }\n}\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self2 = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"listItemPrefixWhitespace\",\n    self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4 + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return !markdownSpace(code2) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code2) : nok(code2);\n  }\n}\nconst setextUnderline = {\n  name: \"setextUnderline\",\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n};\nfunction resolveToSetextUnderline(events, context) {\n  let index = events.length;\n  let content2;\n  let text2;\n  let definition2;\n  while (index--) {\n    if (events[index][0] === \"enter\") {\n      if (events[index][1].type === \"content\") {\n        content2 = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text2 = index;\n      }\n    } else {\n      if (events[index][1].type === \"content\") {\n        events.splice(index, 1);\n      }\n      if (!definition2 && events[index][1].type === \"definition\") {\n        definition2 = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: Object.assign({}, events[text2][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  events[text2][1].type = \"setextHeadingText\";\n  if (definition2) {\n    events.splice(text2, 0, [\"enter\", heading, context]);\n    events.splice(definition2 + 1, 0, [\"exit\", events[content2][1], context]);\n    events[content2][1].end = Object.assign({}, events[definition2][1].end);\n  } else {\n    events[content2][1] = heading;\n  }\n  events.push([\"exit\", heading, context]);\n  return events;\n}\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self2 = this;\n  let marker;\n  return start;\n  function start(code2) {\n    let index = self2.events.length;\n    let paragraph;\n    while (index--) {\n      if (self2.events[index][1].type !== \"lineEnding\" && self2.events[index][1].type !== \"linePrefix\" && self2.events[index][1].type !== \"content\") {\n        paragraph = self2.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n    if (!self2.parser.lazy[self2.now().line] && (self2.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code2;\n      return before(code2);\n    }\n    return nok(code2);\n  }\n  function before(code2) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code2) ? factorySpace(effects, after, \"lineSuffix\")(code2) : after(code2);\n  }\n  function after(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nconst flow$1 = {\n  tokenize: initializeFlow\n};\nfunction initializeFlow(effects) {\n  const self2 = this;\n  const initial = effects.attempt(\n    blankLine,\n    atBlankEnding,\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content, afterConstruct)\n        ),\n        \"linePrefix\"\n      )\n    )\n  );\n  return initial;\n  function atBlankEnding(code2) {\n    if (code2 === null) {\n      effects.consume(code2);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code2);\n    effects.exit(\"lineEndingBlank\");\n    self2.currentConstruct = void 0;\n    return initial;\n  }\n  function afterConstruct(code2) {\n    if (code2 === null) {\n      effects.consume(code2);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    self2.currentConstruct = void 0;\n    return initial;\n  }\n}\nconst resolver = {\n  resolveAll: createResolver()\n};\nconst string$1 = initializeFactory(\"string\");\nconst text$3 = initializeFactory(\"text\");\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === \"text\" ? resolveAllLineSuffixes : void 0\n    )\n  };\n  function initializeText(effects) {\n    const self2 = this;\n    const constructs2 = this.parser.constructs[field];\n    const text2 = effects.attempt(constructs2, start, notText);\n    return start;\n    function start(code2) {\n      return atBreak(code2) ? text2(code2) : notText(code2);\n    }\n    function notText(code2) {\n      if (code2 === null) {\n        effects.consume(code2);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code2);\n      return data;\n    }\n    function data(code2) {\n      if (atBreak(code2)) {\n        effects.exit(\"data\");\n        return text2(code2);\n      }\n      effects.consume(code2);\n      return data;\n    }\n    function atBreak(code2) {\n      if (code2 === null) {\n        return true;\n      }\n      const list2 = constructs2[code2];\n      let index = -1;\n      if (list2) {\n        while (++index < list2.length) {\n          const item = list2[index];\n          if (!item.previous || item.previous.call(self2, self2.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n  function resolveAllText(events, context) {\n    let index = -1;\n    let enter;\n    while (++index <= events.length) {\n      if (enter === void 0) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = void 0;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0;\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size2 = 0;\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === \"string\") {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size2++;\n            bufferIndex--;\n          }\n          if (bufferIndex)\n            break;\n          bufferIndex = -1;\n        } else if (chunk === -2) {\n          tabs = true;\n          size2++;\n        } else if (chunk === -1)\n          ;\n        else {\n          index++;\n          break;\n        }\n      }\n      if (size2) {\n        const token = {\n          type: eventIndex === events.length || tabs || size2 < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            line: data.end.line,\n            column: data.end.column - size2,\n            offset: data.end.offset - size2,\n            _index: data.start._index + index,\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex\n          },\n          end: Object.assign({}, data.end)\n        };\n        data.end = Object.assign({}, token.start);\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            [\"enter\", token, context],\n            [\"exit\", token, context]\n          );\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}\nfunction createTokenizer(parser, initialize, from) {\n  let point = Object.assign(\n    from ? Object.assign({}, from) : {\n      line: 1,\n      column: 1,\n      offset: 0\n    },\n    {\n      _index: 0,\n      _bufferIndex: -1\n    }\n  );\n  const columnStart = {};\n  const resolveAllConstructs = [];\n  let chunks = [];\n  let stack = [];\n  const effects = {\n    consume,\n    enter,\n    exit: exit2,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n  const context = {\n    previous: null,\n    code: null,\n    containerState: {},\n    events: [],\n    parser,\n    sliceStream,\n    sliceSerialize,\n    now,\n    defineSkip,\n    write\n  };\n  let state = initialize.tokenize.call(context, effects);\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n  function now() {\n    const { line, column, offset, _index, _bufferIndex } = point;\n    return {\n      line,\n      column,\n      offset,\n      _index,\n      _bufferIndex\n    };\n  }\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n  function main() {\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n      if (typeof chunk === \"string\") {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n  function go(code2) {\n    state = state(code2);\n  }\n  function consume(code2) {\n    if (markdownLineEnding(code2)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code2 === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code2 !== -1) {\n      point.column++;\n      point.offset++;\n    }\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n    context.previous = code2;\n  }\n  function enter(type, fields) {\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push([\"enter\", token, context]);\n    stack.push(token);\n    return token;\n  }\n  function exit2(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push([\"exit\", token, context]);\n    return token;\n  }\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n  function constructFactory(onreturn, fields) {\n    return hook;\n    function hook(constructs2, returnState, bogusState) {\n      let listOfConstructs;\n      let constructIndex;\n      let currentConstruct;\n      let info;\n      return Array.isArray(constructs2) ? handleListOfConstructs(constructs2) : \"tokenize\" in constructs2 ? handleListOfConstructs([constructs2]) : handleMapOfConstructs(constructs2);\n      function handleMapOfConstructs(map) {\n        return start;\n        function start(code2) {\n          const def2 = code2 !== null && map[code2];\n          const all = code2 !== null && map.null;\n          const list2 = [\n            ...Array.isArray(def2) ? def2 : def2 ? [def2] : [],\n            ...Array.isArray(all) ? all : all ? [all] : []\n          ];\n          return handleListOfConstructs(list2)(code2);\n        }\n      }\n      function handleListOfConstructs(list2) {\n        listOfConstructs = list2;\n        constructIndex = 0;\n        if (list2.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list2[constructIndex]);\n      }\n      function handleConstruct(construct) {\n        return start;\n        function start(code2) {\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok();\n          }\n          return construct.tokenize.call(\n            fields ? Object.assign(Object.create(context), fields) : context,\n            effects,\n            ok,\n            nok\n          )(code2);\n        }\n      }\n      function ok(code2) {\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n      function nok(code2) {\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n  function addResult(construct, from2) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(\n        context.events,\n        from2,\n        context.events.length - from2,\n        construct.resolve(context.events.slice(from2), context)\n      );\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      restore,\n      from: startEventsIndex\n    };\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  let view;\n  if (startIndex === endIndex) {\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === \"string\") {\n        view[0] = head.slice(startBufferIndex);\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  const result = [];\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    let value;\n    if (typeof chunk === \"string\") {\n      value = chunk;\n    } else\n      switch (chunk) {\n        case -5: {\n          value = \"\\r\";\n          break;\n        }\n        case -4: {\n          value = \"\\n\";\n          break;\n        }\n        case -3: {\n          value = \"\\r\\n\";\n          break;\n        }\n        case -2: {\n          value = expandTabs ? \" \" : \"\t\";\n          break;\n        }\n        case -1: {\n          if (!expandTabs && atTab)\n            continue;\n          value = \" \";\n          break;\n        }\n        default: {\n          value = String.fromCharCode(chunk);\n        }\n      }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join(\"\");\n}\nconst document$1 = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\nconst contentInitial = {\n  [91]: definition\n};\nconst flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\nconst flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\nconst string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\nconst text$2 = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\nconst insideSpan = {\n  null: [attention, resolver]\n};\nconst attentionMarkers = {\n  null: [42, 95]\n};\nconst disable = {\n  null: []\n};\nvar defaultConstructs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  document: document$1,\n  contentInitial,\n  flowInitial,\n  flow,\n  string,\n  text: text$2,\n  insideSpan,\n  attentionMarkers,\n  disable\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction parse(options) {\n  const settings = options || {};\n  const constructs2 = combineExtensions([defaultConstructs, ...settings.extensions || []]);\n  const parser = {\n    defined: [],\n    lazy: {},\n    constructs: constructs2,\n    content: create(content$1),\n    document: create(document$2),\n    flow: create(flow$1),\n    string: create(string$1),\n    text: create(text$3)\n  };\n  return parser;\n  function create(initial) {\n    return creator;\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}\nfunction postprocess(events) {\n  while (!subtokenize(events)) {\n  }\n  return events;\n}\nconst search = /[\\0\\t\\n\\r]/g;\nfunction preprocess() {\n  let column = 1;\n  let buffer = \"\";\n  let start = true;\n  let atCarriageReturn;\n  return preprocessor;\n  function preprocessor(value, encoding, end) {\n    const chunks = [];\n    let match;\n    let next;\n    let startPosition;\n    let endPosition;\n    let code2;\n    value = buffer + value.toString(encoding);\n    startPosition = 0;\n    buffer = \"\";\n    if (start) {\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = void 0;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== void 0 ? match.index : value.length;\n      code2 = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code2 === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = void 0;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = void 0;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code2) {\n          case 0: {\n            chunks.push(65533);\n            column++;\n            break;\n          }\n          case 9: {\n            next = Math.ceil(column / 4) * 4;\n            chunks.push(-2);\n            while (column++ < next)\n              chunks.push(-1);\n            break;\n          }\n          case 10: {\n            chunks.push(-4);\n            column = 1;\n            break;\n          }\n          default: {\n            atCarriageReturn = true;\n            column = 1;\n          }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn)\n        chunks.push(-5);\n      if (buffer)\n        chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}\nfunction micromark(value, encoding, options) {\n  if (typeof encoding !== \"string\") {\n    options = encoding;\n    encoding = void 0;\n  }\n  return compile(options)(\n    postprocess(\n      parse(options).document().write(preprocess()(value, encoding, true))\n    )\n  );\n}\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\nconst text$1 = {};\nconst gfmAutolinkLiteral = {\n  text: text$1\n};\nlet code = 48;\nwhile (code < 123) {\n  text$1[code] = emailAutolink;\n  code++;\n  if (code === 58)\n    code = 65;\n  else if (code === 91)\n    code = 97;\n}\ntext$1[43] = emailAutolink;\ntext$1[45] = emailAutolink;\ntext$1[46] = emailAutolink;\ntext$1[95] = emailAutolink;\ntext$1[72] = [emailAutolink, protocolAutolink];\ntext$1[104] = [emailAutolink, protocolAutolink];\ntext$1[87] = [emailAutolink, wwwAutolink];\ntext$1[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self2 = this;\n  let dot;\n  let data;\n  return start;\n  function start(code2) {\n    if (!gfmAtext(code2) || !previousEmail.call(self2, self2.previous) || previousUnbalanced(self2.events)) {\n      return nok(code2);\n    }\n    effects.enter(\"literalAutolink\");\n    effects.enter(\"literalAutolinkEmail\");\n    return atext(code2);\n  }\n  function atext(code2) {\n    if (gfmAtext(code2)) {\n      effects.consume(code2);\n      return atext;\n    }\n    if (code2 === 64) {\n      effects.consume(code2);\n      return emailDomain;\n    }\n    return nok(code2);\n  }\n  function emailDomain(code2) {\n    if (code2 === 46) {\n      return effects.check(\n        emailDomainDotTrail,\n        emailDomainAfter,\n        emailDomainDot\n      )(code2);\n    }\n    if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n      data = true;\n      effects.consume(code2);\n      return emailDomain;\n    }\n    return emailDomainAfter(code2);\n  }\n  function emailDomainDot(code2) {\n    effects.consume(code2);\n    dot = true;\n    return emailDomain;\n  }\n  function emailDomainAfter(code2) {\n    if (data && dot && asciiAlpha(self2.previous)) {\n      effects.exit(\"literalAutolinkEmail\");\n      effects.exit(\"literalAutolink\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self2 = this;\n  return wwwStart;\n  function wwwStart(code2) {\n    if (code2 !== 87 && code2 !== 119 || !previousWww.call(self2, self2.previous) || previousUnbalanced(self2.events)) {\n      return nok(code2);\n    }\n    effects.enter(\"literalAutolink\");\n    effects.enter(\"literalAutolinkWww\");\n    return effects.check(\n      wwwPrefix,\n      effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n      nok\n    )(code2);\n  }\n  function wwwAfter(code2) {\n    effects.exit(\"literalAutolinkWww\");\n    effects.exit(\"literalAutolink\");\n    return ok(code2);\n  }\n}\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self2 = this;\n  let buffer = \"\";\n  let seen = false;\n  return protocolStart;\n  function protocolStart(code2) {\n    if ((code2 === 72 || code2 === 104) && previousProtocol.call(self2, self2.previous) && !previousUnbalanced(self2.events)) {\n      effects.enter(\"literalAutolink\");\n      effects.enter(\"literalAutolinkHttp\");\n      buffer += String.fromCodePoint(code2);\n      effects.consume(code2);\n      return protocolPrefixInside;\n    }\n    return nok(code2);\n  }\n  function protocolPrefixInside(code2) {\n    if (asciiAlpha(code2) && buffer.length < 5) {\n      buffer += String.fromCodePoint(code2);\n      effects.consume(code2);\n      return protocolPrefixInside;\n    }\n    if (code2 === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === \"http\" || protocol === \"https\") {\n        effects.consume(code2);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code2);\n  }\n  function protocolSlashesInside(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code2);\n  }\n  function afterProtocol(code2) {\n    return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n  }\n  function protocolAfter(code2) {\n    effects.exit(\"literalAutolinkHttp\");\n    effects.exit(\"literalAutolink\");\n    return ok(code2);\n  }\n}\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size2 = 0;\n  return wwwPrefixInside;\n  function wwwPrefixInside(code2) {\n    if ((code2 === 87 || code2 === 119) && size2 < 3) {\n      size2++;\n      effects.consume(code2);\n      return wwwPrefixInside;\n    }\n    if (code2 === 46 && size2 === 3) {\n      effects.consume(code2);\n      return wwwPrefixAfter;\n    }\n    return nok(code2);\n  }\n  function wwwPrefixAfter(code2) {\n    return code2 === null ? nok(code2) : ok(code2);\n  }\n}\nfunction tokenizeDomain(effects, ok, nok) {\n  let underscoreInLastSegment;\n  let underscoreInLastLastSegment;\n  let seen;\n  return domainInside;\n  function domainInside(code2) {\n    if (code2 === 46 || code2 === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n      return domainAfter(code2);\n    }\n    seen = true;\n    effects.consume(code2);\n    return domainInside;\n  }\n  function domainAtPunctuation(code2) {\n    if (code2 === 95) {\n      underscoreInLastSegment = true;\n    } else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = void 0;\n    }\n    effects.consume(code2);\n    return domainInside;\n  }\n  function domainAfter(code2) {\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code2);\n    }\n    return ok(code2);\n  }\n}\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n  function pathInside(code2) {\n    if (code2 === 40) {\n      sizeOpen++;\n      effects.consume(code2);\n      return pathInside;\n    }\n    if (code2 === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code2);\n    }\n    if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n      return effects.check(trail, ok, pathAtPunctuation)(code2);\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok(code2);\n    }\n    effects.consume(code2);\n    return pathInside;\n  }\n  function pathAtPunctuation(code2) {\n    if (code2 === 41) {\n      sizeClose++;\n    }\n    effects.consume(code2);\n    return pathInside;\n  }\n}\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail2;\n  function trail2(code2) {\n    if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n      effects.consume(code2);\n      return trail2;\n    }\n    if (code2 === 38) {\n      effects.consume(code2);\n      return trailCharRefStart;\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return trailBracketAfter;\n    }\n    if (code2 === 60 || code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n  function trailBracketAfter(code2) {\n    if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok(code2);\n    }\n    return trail2(code2);\n  }\n  function trailCharRefStart(code2) {\n    return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n  }\n  function trailCharRefInside(code2) {\n    if (code2 === 59) {\n      effects.consume(code2);\n      return trail2;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return trailCharRefInside;\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.consume(code2);\n    return after;\n  }\n  function after(code2) {\n    return asciiAlphanumeric(code2) ? nok(code2) : ok(code2);\n  }\n}\nfunction previousWww(code2) {\n  return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n  return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n  return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n  return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n      result = true;\n      break;\n    }\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}\nconst gfmAutolinkLiteralHtml = {\n  exit: {\n    literalAutolinkEmail,\n    literalAutolinkHttp,\n    literalAutolinkWww\n  }\n};\nfunction literalAutolinkWww(token) {\n  anchorFromToken.call(this, token, \"http://\");\n}\nfunction literalAutolinkEmail(token) {\n  anchorFromToken.call(this, token, \"mailto:\");\n}\nfunction literalAutolinkHttp(token) {\n  anchorFromToken.call(this, token);\n}\nfunction anchorFromToken(token, protocol) {\n  const url = this.sliceSerialize(token);\n  this.tag('<a href=\"' + sanitizeUri((protocol || \"\") + url) + '\">');\n  this.raw(this.encode(url));\n  this.tag(\"</a>\");\n}\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\nfunction gfmFootnote() {\n  return {\n    document: {\n      [91]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        add: \"after\",\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self2 = this;\n  let index = self2.events.length;\n  const defined = self2.parser.gfmFootnotes || (self2.parser.gfmFootnotes = []);\n  let labelStart;\n  while (index--) {\n    const token = self2.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n    if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n  function start(code2) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code2);\n    }\n    const id = normalizeIdentifier(\n      self2.sliceSerialize({\n        start: labelStart.end,\n        end: self2.now()\n      })\n    );\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code2);\n    }\n    effects.enter(\"gfmFootnoteCallLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallLabelMarker\");\n    return ok(code2);\n  }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n      events[index][1];\n      break;\n    }\n  }\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n  const call = {\n    type: \"gfmFootnoteCall\",\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  const marker = {\n    type: \"gfmFootnoteCallMarker\",\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  const string2 = {\n    type: \"gfmFootnoteCallString\",\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  const chunk = {\n    type: \"chunkString\",\n    contentType: \"string\",\n    start: Object.assign({}, string2.start),\n    end: Object.assign({}, string2.end)\n  };\n  const replacement = [\n    events[index + 1],\n    events[index + 2],\n    [\"enter\", call, context],\n    events[index + 3],\n    events[index + 4],\n    [\"enter\", marker, context],\n    [\"exit\", marker, context],\n    [\"enter\", string2, context],\n    [\"enter\", chunk, context],\n    [\"exit\", chunk, context],\n    [\"exit\", string2, context],\n    events[events.length - 2],\n    events[events.length - 1],\n    [\"exit\", call, context]\n  ];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self2 = this;\n  const defined = self2.parser.gfmFootnotes || (self2.parser.gfmFootnotes = []);\n  let size2 = 0;\n  let data;\n  return start;\n  function start(code2) {\n    effects.enter(\"gfmFootnoteCall\");\n    effects.enter(\"gfmFootnoteCallLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallLabelMarker\");\n    return callStart;\n  }\n  function callStart(code2) {\n    if (code2 !== 94)\n      return nok(code2);\n    effects.enter(\"gfmFootnoteCallMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallMarker\");\n    effects.enter(\"gfmFootnoteCallString\");\n    effects.enter(\"chunkString\").contentType = \"string\";\n    return callData;\n  }\n  function callData(code2) {\n    if (size2 > 999 || code2 === 93 && !data || code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(\"chunkString\");\n      const token = effects.exit(\"gfmFootnoteCallString\");\n      if (!defined.includes(normalizeIdentifier(self2.sliceSerialize(token)))) {\n        return nok(code2);\n      }\n      effects.enter(\"gfmFootnoteCallLabelMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteCallLabelMarker\");\n      effects.exit(\"gfmFootnoteCall\");\n      return ok;\n    }\n    if (!markdownLineEndingOrSpace(code2)) {\n      data = true;\n    }\n    size2++;\n    effects.consume(code2);\n    return code2 === 92 ? callEscape : callData;\n  }\n  function callEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size2++;\n      return callData;\n    }\n    return callData(code2);\n  }\n}\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self2 = this;\n  const defined = self2.parser.gfmFootnotes || (self2.parser.gfmFootnotes = []);\n  let identifier;\n  let size2 = 0;\n  let data;\n  return start;\n  function start(code2) {\n    effects.enter(\"gfmFootnoteDefinition\")._container = true;\n    effects.enter(\"gfmFootnoteDefinitionLabel\");\n    effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n    return labelAtMarker;\n  }\n  function labelAtMarker(code2) {\n    if (code2 === 94) {\n      effects.enter(\"gfmFootnoteDefinitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteDefinitionMarker\");\n      effects.enter(\"gfmFootnoteDefinitionLabelString\");\n      effects.enter(\"chunkString\").contentType = \"string\";\n      return labelInside;\n    }\n    return nok(code2);\n  }\n  function labelInside(code2) {\n    if (size2 > 999 || code2 === 93 && !data || code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(\"chunkString\");\n      const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n      identifier = normalizeIdentifier(self2.sliceSerialize(token));\n      effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n      effects.exit(\"gfmFootnoteDefinitionLabel\");\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code2)) {\n      data = true;\n    }\n    size2++;\n    effects.consume(code2);\n    return code2 === 92 ? labelEscape : labelInside;\n  }\n  function labelEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size2++;\n      return labelInside;\n    }\n    return labelInside(code2);\n  }\n  function labelAfter(code2) {\n    if (code2 === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"definitionMarker\");\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n      return factorySpace(\n        effects,\n        whitespaceAfter,\n        \"gfmFootnoteDefinitionWhitespace\"\n      );\n    }\n    return nok(code2);\n  }\n  function whitespaceAfter(code2) {\n    return ok(code2);\n  }\n}\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok, nok) {\n  const self2 = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"gfmFootnoteDefinitionIndent\",\n    4 + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code2) : nok(code2);\n  }\n}\nconst own = {}.hasOwnProperty;\nconst emptyOptions = {};\nfunction defaultBackLabel(referenceIndex, rereferenceIndex) {\n  return \"Back to reference \" + (referenceIndex + 1) + (rereferenceIndex > 1 ? \"-\" + rereferenceIndex : \"\");\n}\nfunction gfmFootnoteHtml(options) {\n  const config = options || emptyOptions;\n  const label = config.label || \"Footnotes\";\n  const labelTagName = config.labelTagName || \"h2\";\n  const labelAttributes = config.labelAttributes === null || config.labelAttributes === void 0 ? 'class=\"sr-only\"' : config.labelAttributes;\n  const backLabel = config.backLabel || defaultBackLabel;\n  const clobberPrefix = config.clobberPrefix === null || config.clobberPrefix === void 0 ? \"user-content-\" : config.clobberPrefix;\n  return {\n    enter: {\n      gfmFootnoteDefinition() {\n        const stack = this.getData(\"tightStack\");\n        stack.push(false);\n      },\n      gfmFootnoteDefinitionLabelString() {\n        this.buffer();\n      },\n      gfmFootnoteCallString() {\n        this.buffer();\n      }\n    },\n    exit: {\n      gfmFootnoteDefinition() {\n        let definitions2 = this.getData(\"gfmFootnoteDefinitions\");\n        const footnoteStack = this.getData(\"gfmFootnoteDefinitionStack\");\n        const tightStack = this.getData(\"tightStack\");\n        const current = footnoteStack.pop();\n        const value = this.resume();\n        if (!definitions2) {\n          this.setData(\"gfmFootnoteDefinitions\", definitions2 = {});\n        }\n        if (!own.call(definitions2, current))\n          definitions2[current] = value;\n        tightStack.pop();\n        this.setData(\"slurpOneLineEnding\", true);\n        this.setData(\"lastWasTag\");\n      },\n      gfmFootnoteDefinitionLabelString(token) {\n        let footnoteStack = this.getData(\"gfmFootnoteDefinitionStack\");\n        if (!footnoteStack) {\n          this.setData(\"gfmFootnoteDefinitionStack\", footnoteStack = []);\n        }\n        footnoteStack.push(normalizeIdentifier(this.sliceSerialize(token)));\n        this.resume();\n        this.buffer();\n      },\n      gfmFootnoteCallString(token) {\n        let calls = this.getData(\"gfmFootnoteCallOrder\");\n        let counts = this.getData(\"gfmFootnoteCallCounts\");\n        const id = normalizeIdentifier(this.sliceSerialize(token));\n        let counter;\n        this.resume();\n        if (!calls)\n          this.setData(\"gfmFootnoteCallOrder\", calls = []);\n        if (!counts)\n          this.setData(\"gfmFootnoteCallCounts\", counts = {});\n        const index = calls.indexOf(id);\n        const safeId = sanitizeUri(id.toLowerCase());\n        if (index === -1) {\n          calls.push(id);\n          counts[id] = 1;\n          counter = calls.length;\n        } else {\n          counts[id]++;\n          counter = index + 1;\n        }\n        const reuseCounter = counts[id];\n        this.tag(\n          '<sup><a href=\"#' + clobberPrefix + \"fn-\" + safeId + '\" id=\"' + clobberPrefix + \"fnref-\" + safeId + (reuseCounter > 1 ? \"-\" + reuseCounter : \"\") + '\" data-footnote-ref=\"\" aria-describedby=\"footnote-label\">' + String(counter) + \"</a></sup>\"\n        );\n      },\n      null() {\n        const calls = this.getData(\"gfmFootnoteCallOrder\") || [];\n        const counts = this.getData(\"gfmFootnoteCallCounts\") || {};\n        const definitions2 = this.getData(\"gfmFootnoteDefinitions\") || {};\n        let index = -1;\n        if (calls.length > 0) {\n          this.lineEndingIfNeeded();\n          this.tag(\n            '<section data-footnotes=\"\" class=\"footnotes\"><' + labelTagName + ' id=\"footnote-label\"' + (labelAttributes ? \" \" + labelAttributes : \"\") + \">\"\n          );\n          this.raw(this.encode(label));\n          this.tag(\"</\" + labelTagName + \">\");\n          this.lineEndingIfNeeded();\n          this.tag(\"<ol>\");\n        }\n        while (++index < calls.length) {\n          const id = calls[index];\n          const safeId = sanitizeUri(id.toLowerCase());\n          let referenceIndex = 0;\n          const references = [];\n          while (++referenceIndex <= counts[id]) {\n            references.push(\n              '<a href=\"#' + clobberPrefix + \"fnref-\" + safeId + (referenceIndex > 1 ? \"-\" + referenceIndex : \"\") + '\" data-footnote-backref=\"\" aria-label=\"' + this.encode(\n                typeof backLabel === \"string\" ? backLabel : backLabel(index, referenceIndex)\n              ) + '\" class=\"data-footnote-backref\">\\u21A9' + (referenceIndex > 1 ? \"<sup>\" + referenceIndex + \"</sup>\" : \"\") + \"</a>\"\n            );\n          }\n          const reference = references.join(\" \");\n          let injected = false;\n          this.lineEndingIfNeeded();\n          this.tag('<li id=\"' + clobberPrefix + \"fn-\" + safeId + '\">');\n          this.lineEndingIfNeeded();\n          this.tag(\n            definitions2[id].replace(\n              /<\\/p>(?:\\r?\\n|\\r)?$/,\n              ($0) => {\n                injected = true;\n                return \" \" + reference + $0;\n              }\n            )\n          );\n          if (!injected) {\n            this.lineEndingIfNeeded();\n            this.tag(reference);\n          }\n          this.lineEndingIfNeeded();\n          this.tag(\"</li>\");\n        }\n        if (calls.length > 0) {\n          this.lineEndingIfNeeded();\n          this.tag(\"</ol>\");\n          this.lineEndingIfNeeded();\n          this.tag(\"</section>\");\n        }\n      }\n    }\n  };\n}\nconst gfmStrikethroughHtml = {\n  enter: {\n    strikethrough() {\n      this.tag(\"<del>\");\n    }\n  },\n  exit: {\n    strikethrough() {\n      this.tag(\"</del>\");\n    }\n  }\n};\nfunction gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === void 0) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n    while (++index < events.length) {\n      if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n        let open = index;\n        while (open--) {\n          if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = \"strikethroughSequence\";\n            events[open][1].type = \"strikethroughSequence\";\n            const strikethrough = {\n              type: \"strikethrough\",\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n            const text2 = {\n              type: \"strikethroughText\",\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n            const nextEvents = [\n              [\"enter\", strikethrough, context],\n              [\"enter\", events[open][1], context],\n              [\"exit\", events[open][1], context],\n              [\"enter\", text2, context]\n            ];\n            const insideSpan2 = context.parser.constructs.insideSpan.null;\n            if (insideSpan2) {\n              splice(\n                nextEvents,\n                nextEvents.length,\n                0,\n                resolveAll(insideSpan2, events.slice(open + 1, index), context)\n              );\n            }\n            splice(nextEvents, nextEvents.length, 0, [\n              [\"exit\", text2, context],\n              [\"enter\", events[index][1], context],\n              [\"exit\", events[index][1], context],\n              [\"exit\", strikethrough, context]\n            ]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous2 = this.previous;\n    const events = this.events;\n    let size2 = 0;\n    return start;\n    function start(code2) {\n      if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code2);\n      }\n      effects.enter(\"strikethroughSequenceTemporary\");\n      return more(code2);\n    }\n    function more(code2) {\n      const before = classifyCharacter(previous2);\n      if (code2 === 126) {\n        if (size2 > 1)\n          return nok(code2);\n        effects.consume(code2);\n        size2++;\n        return more;\n      }\n      if (size2 < 2 && !single)\n        return nok(code2);\n      const token = effects.exit(\"strikethroughSequenceTemporary\");\n      const after = classifyCharacter(code2);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok(code2);\n    }\n  }\n}\nconst alignment = {\n  none: \"\",\n  left: ' align=\"left\"',\n  right: ' align=\"right\"',\n  center: ' align=\"center\"'\n};\nconst gfmTableHtml = {\n  enter: {\n    table(token) {\n      const tableAlign = token._align;\n      this.lineEndingIfNeeded();\n      this.tag(\"<table>\");\n      this.setData(\"tableAlign\", tableAlign);\n    },\n    tableBody() {\n      this.tag(\"<tbody>\");\n    },\n    tableData() {\n      const tableAlign = this.getData(\"tableAlign\");\n      const tableColumn = this.getData(\"tableColumn\");\n      const align = alignment[tableAlign[tableColumn]];\n      if (align === void 0) {\n        this.buffer();\n      } else {\n        this.lineEndingIfNeeded();\n        this.tag(\"<td\" + align + \">\");\n      }\n    },\n    tableHead() {\n      this.lineEndingIfNeeded();\n      this.tag(\"<thead>\");\n    },\n    tableHeader() {\n      const tableAlign = this.getData(\"tableAlign\");\n      const tableColumn = this.getData(\"tableColumn\");\n      const align = alignment[tableAlign[tableColumn]];\n      this.lineEndingIfNeeded();\n      this.tag(\"<th\" + align + \">\");\n    },\n    tableRow() {\n      this.setData(\"tableColumn\", 0);\n      this.lineEndingIfNeeded();\n      this.tag(\"<tr>\");\n    }\n  },\n  exit: {\n    codeTextData(token) {\n      let value = this.sliceSerialize(token);\n      if (this.getData(\"tableAlign\")) {\n        value = value.replace(/\\\\([\\\\|])/g, replace);\n      }\n      this.raw(this.encode(value));\n    },\n    table() {\n      this.setData(\"tableAlign\");\n      this.setData(\"slurpAllLineEndings\");\n      this.lineEndingIfNeeded();\n      this.tag(\"</table>\");\n    },\n    tableBody() {\n      this.lineEndingIfNeeded();\n      this.tag(\"</tbody>\");\n    },\n    tableData() {\n      const tableAlign = this.getData(\"tableAlign\");\n      const tableColumn = this.getData(\"tableColumn\");\n      if (tableColumn in tableAlign) {\n        this.tag(\"</td>\");\n        this.setData(\"tableColumn\", tableColumn + 1);\n      } else {\n        this.resume();\n      }\n    },\n    tableHead() {\n      this.lineEndingIfNeeded();\n      this.tag(\"</thead>\");\n    },\n    tableHeader() {\n      const tableColumn = this.getData(\"tableColumn\");\n      this.tag(\"</th>\");\n      this.setData(\"tableColumn\", tableColumn + 1);\n    },\n    tableRow() {\n      const tableAlign = this.getData(\"tableAlign\");\n      let tableColumn = this.getData(\"tableColumn\");\n      while (tableColumn < tableAlign.length) {\n        this.lineEndingIfNeeded();\n        this.tag(\"<td\" + alignment[tableAlign[tableColumn]] + \"></td>\");\n        tableColumn++;\n      }\n      this.setData(\"tableColumn\", tableColumn);\n      this.lineEndingIfNeeded();\n      this.tag(\"</tr>\");\n    }\n  }\n};\nfunction replace($0, $1) {\n  return $1 === \"|\" ? $1 : $0;\n}\nclass EditMap {\n  constructor() {\n    this.map = [];\n  }\n  add(index, remove2, add2) {\n    addImpl(this, index, remove2, add2);\n  }\n  consume(events) {\n    this.map.sort((a, b) => a[0] - b[0]);\n    if (this.map.length === 0) {\n      return;\n    }\n    let index = this.map.length;\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]));\n      vecs.push(this.map[index][2]);\n      events.length = this.map[index][0];\n    }\n    vecs.push([...events]);\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      events.push(...slice);\n      slice = vecs.pop();\n    }\n    this.map.length = 0;\n  }\n}\nfunction addImpl(editMap, at, remove2, add2) {\n  let index = 0;\n  if (remove2 === 0 && add2.length === 0) {\n    return;\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove2;\n      editMap.map[index][2].push(...add2);\n      return;\n    }\n    index += 1;\n  }\n  editMap.map.push([at, remove2, add2]);\n}\nfunction gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === \"enter\") {\n        if (event[1].type === \"tableContent\") {\n          align.push(\n            events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n          );\n        }\n      } else if (event[1].type === \"tableContent\") {\n        if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n        }\n      } else if (event[1].type === \"tableDelimiterRow\") {\n        break;\n      }\n    } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}\nconst gfmTable = {\n  flow: {\n    null: {\n      tokenize: tokenizeTable,\n      resolveAll: resolveTable\n    }\n  }\n};\nfunction tokenizeTable(effects, ok, nok) {\n  const self2 = this;\n  let size2 = 0;\n  let sizeB = 0;\n  let seen;\n  return start;\n  function start(code2) {\n    let index = self2.events.length - 1;\n    while (index > -1) {\n      const type = self2.events[index][1].type;\n      if (type === \"lineEnding\" || type === \"linePrefix\")\n        index--;\n      else\n        break;\n    }\n    const tail = index > -1 ? self2.events[index][1].type : null;\n    const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n    if (next === bodyRowStart && self2.parser.lazy[self2.now().line]) {\n      return nok(code2);\n    }\n    return next(code2);\n  }\n  function headRowBefore(code2) {\n    effects.enter(\"tableHead\");\n    effects.enter(\"tableRow\");\n    return headRowStart(code2);\n  }\n  function headRowStart(code2) {\n    if (code2 === 124) {\n      return headRowBreak(code2);\n    }\n    seen = true;\n    sizeB += 1;\n    return headRowBreak(code2);\n  }\n  function headRowBreak(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      if (sizeB > 1) {\n        sizeB = 0;\n        self2.interrupt = true;\n        effects.exit(\"tableRow\");\n        effects.enter(\"lineEnding\");\n        effects.consume(code2);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n      return nok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      size2 += 1;\n    }\n    if (code2 === 124) {\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      seen = true;\n      return headRowBreak;\n    }\n    effects.enter(\"data\");\n    return headRowData(code2);\n  }\n  function headRowData(code2) {\n    if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"data\");\n      return headRowBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? headRowEscape : headRowData;\n  }\n  function headRowEscape(code2) {\n    if (code2 === 92 || code2 === 124) {\n      effects.consume(code2);\n      return headRowData;\n    }\n    return headRowData(code2);\n  }\n  function headDelimiterStart(code2) {\n    self2.interrupt = false;\n    if (self2.parser.lazy[self2.now().line]) {\n      return nok(code2);\n    }\n    effects.enter(\"tableDelimiterRow\");\n    seen = false;\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        headDelimiterBefore,\n        \"linePrefix\",\n        self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2);\n    }\n    return headDelimiterBefore(code2);\n  }\n  function headDelimiterBefore(code2) {\n    if (code2 === 45 || code2 === 58) {\n      return headDelimiterValueBefore(code2);\n    }\n    if (code2 === 124) {\n      seen = true;\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      return headDelimiterCellBefore;\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterCellBefore(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n    }\n    return headDelimiterValueBefore(code2);\n  }\n  function headDelimiterValueBefore(code2) {\n    if (code2 === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter(\"tableDelimiterMarker\");\n      effects.consume(code2);\n      effects.exit(\"tableDelimiterMarker\");\n      return headDelimiterLeftAlignmentAfter;\n    }\n    if (code2 === 45) {\n      sizeB += 1;\n      return headDelimiterLeftAlignmentAfter(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      return headDelimiterCellAfter(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterLeftAlignmentAfter(code2) {\n    if (code2 === 45) {\n      effects.enter(\"tableDelimiterFiller\");\n      return headDelimiterFiller(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterFiller(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return headDelimiterFiller;\n    }\n    if (code2 === 58) {\n      seen = true;\n      effects.exit(\"tableDelimiterFiller\");\n      effects.enter(\"tableDelimiterMarker\");\n      effects.consume(code2);\n      effects.exit(\"tableDelimiterMarker\");\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit(\"tableDelimiterFiller\");\n    return headDelimiterRightAlignmentAfter(code2);\n  }\n  function headDelimiterRightAlignmentAfter(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n    }\n    return headDelimiterCellAfter(code2);\n  }\n  function headDelimiterCellAfter(code2) {\n    if (code2 === 124) {\n      return headDelimiterBefore(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      if (!seen || size2 !== sizeB) {\n        return headDelimiterNok(code2);\n      }\n      effects.exit(\"tableDelimiterRow\");\n      effects.exit(\"tableHead\");\n      return ok(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterNok(code2) {\n    return nok(code2);\n  }\n  function bodyRowStart(code2) {\n    effects.enter(\"tableRow\");\n    return bodyRowBreak(code2);\n  }\n  function bodyRowBreak(code2) {\n    if (code2 === 124) {\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      return bodyRowBreak;\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"tableRow\");\n      return ok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n    }\n    effects.enter(\"data\");\n    return bodyRowData(code2);\n  }\n  function bodyRowData(code2) {\n    if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? bodyRowEscape : bodyRowData;\n  }\n  function bodyRowEscape(code2) {\n    if (code2 === 92 || code2 === 124) {\n      effects.consume(code2);\n      return bodyRowData;\n    }\n    return bodyRowData(code2);\n  }\n}\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  let rowKind = 0;\n  let lastCell = [0, 0, 0, 0];\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  let currentTable;\n  let currentBody;\n  let currentCell;\n  const map = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === \"enter\") {\n      if (token.type === \"tableHead\") {\n        afterHeadAwaitingFirstBodyRow = false;\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n          currentBody = void 0;\n          lastTableEnd = 0;\n        }\n        currentTable = {\n          type: \"table\",\n          start: Object.assign({}, token.start),\n          end: Object.assign({}, token.end)\n        };\n        map.add(index, 0, [[\"enter\", currentTable, context]]);\n      } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n        inFirstCellAwaitingPipe = true;\n        currentCell = void 0;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: \"tableBody\",\n            start: Object.assign({}, token.start),\n            end: Object.assign({}, token.end)\n          };\n          map.add(index, 0, [[\"enter\", currentBody, context]]);\n        }\n        rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n      } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n        inFirstCellAwaitingPipe = false;\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              void 0,\n              currentCell\n            );\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === \"tableCellDivider\") {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              void 0,\n              currentCell\n            );\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    } else if (token.type === \"tableHead\") {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(\n          map,\n          context,\n          lastCell,\n          rowKind,\n          index,\n          currentCell\n        );\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n  }\n  map.consume(context.events);\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === \"enter\" && event[1].type === \"table\") {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n  const valueName = \"tableContent\";\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map.add(range[0], 0, [[\"exit\", previousCell, context]]);\n  }\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    end: Object.assign({}, now)\n  };\n  map.add(range[1], 0, [[\"enter\", previousCell, context]]);\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map.add(range[2], 0, [[\"enter\", valueToken, context]]);\n    if (rowKind !== 2) {\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map.add(a, b, []);\n      }\n    }\n    map.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n  }\n  if (rowEnd !== void 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n    previousCell = void 0;\n  }\n  return previousCell;\n}\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push([\"exit\", tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push([\"exit\", table, context]);\n  map.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === \"enter\" ? \"start\" : \"end\";\n  return event[1][side];\n}\nconst reFlow = /<(\\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\\t\\n\\f\\r />])/gi;\nconst reText = new RegExp(\"^\" + reFlow.source, \"i\");\nconst gfmTagfilterHtml = {\n  exit: {\n    htmlFlowData(token) {\n      exitHtmlData.call(this, token, reFlow);\n    },\n    htmlTextData(token) {\n      exitHtmlData.call(this, token, reText);\n    }\n  }\n};\nfunction exitHtmlData(token, filter) {\n  let value = this.sliceSerialize(token);\n  if (this.options.allowDangerousHtml) {\n    value = value.replace(filter, \"&lt;$1$2\");\n  }\n  this.raw(this.encode(value));\n}\nconst gfmTaskListItemHtml = {\n  enter: {\n    taskListCheck() {\n      this.tag('<input type=\"checkbox\" disabled=\"\" ');\n    }\n  },\n  exit: {\n    taskListCheck() {\n      this.tag(\"/>\");\n    },\n    taskListCheckValueChecked() {\n      this.tag('checked=\"\" ');\n    }\n  }\n};\nconst tasklistCheck = {\n  tokenize: tokenizeTasklistCheck\n};\nconst gfmTaskListItem = {\n  text: {\n    [91]: tasklistCheck\n  }\n};\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self2 = this;\n  return open;\n  function open(code2) {\n    if (self2.previous !== null || !self2._gfmTasklistFirstContentOfListItem) {\n      return nok(code2);\n    }\n    effects.enter(\"taskListCheck\");\n    effects.enter(\"taskListCheckMarker\");\n    effects.consume(code2);\n    effects.exit(\"taskListCheckMarker\");\n    return inside;\n  }\n  function inside(code2) {\n    if (markdownLineEndingOrSpace(code2)) {\n      effects.enter(\"taskListCheckValueUnchecked\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckValueUnchecked\");\n      return close;\n    }\n    if (code2 === 88 || code2 === 120) {\n      effects.enter(\"taskListCheckValueChecked\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckValueChecked\");\n      return close;\n    }\n    return nok(code2);\n  }\n  function close(code2) {\n    if (code2 === 93) {\n      effects.enter(\"taskListCheckMarker\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckMarker\");\n      effects.exit(\"taskListCheck\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    if (markdownLineEnding(code2)) {\n      return ok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return effects.check(\n        {\n          tokenize: spaceThenNonSpace\n        },\n        ok,\n        nok\n      )(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n  function after(code2) {\n    return code2 === null ? nok(code2) : ok(code2);\n  }\n}\nfunction gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral,\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable,\n    gfmTaskListItem\n  ]);\n}\nfunction gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml,\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml,\n    gfmTableHtml,\n    gfmTagfilterHtml,\n    gfmTaskListItemHtml\n  ]);\n}\nconst codes = {\n  carriageReturn: -5,\n  lineFeed: -4,\n  carriageReturnLineFeed: -3,\n  horizontalTab: -2,\n  virtualSpace: -1,\n  eof: null,\n  nul: 0,\n  soh: 1,\n  stx: 2,\n  etx: 3,\n  eot: 4,\n  enq: 5,\n  ack: 6,\n  bel: 7,\n  bs: 8,\n  ht: 9,\n  lf: 10,\n  vt: 11,\n  ff: 12,\n  cr: 13,\n  so: 14,\n  si: 15,\n  dle: 16,\n  dc1: 17,\n  dc2: 18,\n  dc3: 19,\n  dc4: 20,\n  nak: 21,\n  syn: 22,\n  etb: 23,\n  can: 24,\n  em: 25,\n  sub: 26,\n  esc: 27,\n  fs: 28,\n  gs: 29,\n  rs: 30,\n  us: 31,\n  space: 32,\n  exclamationMark: 33,\n  quotationMark: 34,\n  numberSign: 35,\n  dollarSign: 36,\n  percentSign: 37,\n  ampersand: 38,\n  apostrophe: 39,\n  leftParenthesis: 40,\n  rightParenthesis: 41,\n  asterisk: 42,\n  plusSign: 43,\n  comma: 44,\n  dash: 45,\n  dot: 46,\n  slash: 47,\n  digit0: 48,\n  digit1: 49,\n  digit2: 50,\n  digit3: 51,\n  digit4: 52,\n  digit5: 53,\n  digit6: 54,\n  digit7: 55,\n  digit8: 56,\n  digit9: 57,\n  colon: 58,\n  semicolon: 59,\n  lessThan: 60,\n  equalsTo: 61,\n  greaterThan: 62,\n  questionMark: 63,\n  atSign: 64,\n  uppercaseA: 65,\n  uppercaseB: 66,\n  uppercaseC: 67,\n  uppercaseD: 68,\n  uppercaseE: 69,\n  uppercaseF: 70,\n  uppercaseG: 71,\n  uppercaseH: 72,\n  uppercaseI: 73,\n  uppercaseJ: 74,\n  uppercaseK: 75,\n  uppercaseL: 76,\n  uppercaseM: 77,\n  uppercaseN: 78,\n  uppercaseO: 79,\n  uppercaseP: 80,\n  uppercaseQ: 81,\n  uppercaseR: 82,\n  uppercaseS: 83,\n  uppercaseT: 84,\n  uppercaseU: 85,\n  uppercaseV: 86,\n  uppercaseW: 87,\n  uppercaseX: 88,\n  uppercaseY: 89,\n  uppercaseZ: 90,\n  leftSquareBracket: 91,\n  backslash: 92,\n  rightSquareBracket: 93,\n  caret: 94,\n  underscore: 95,\n  graveAccent: 96,\n  lowercaseA: 97,\n  lowercaseB: 98,\n  lowercaseC: 99,\n  lowercaseD: 100,\n  lowercaseE: 101,\n  lowercaseF: 102,\n  lowercaseG: 103,\n  lowercaseH: 104,\n  lowercaseI: 105,\n  lowercaseJ: 106,\n  lowercaseK: 107,\n  lowercaseL: 108,\n  lowercaseM: 109,\n  lowercaseN: 110,\n  lowercaseO: 111,\n  lowercaseP: 112,\n  lowercaseQ: 113,\n  lowercaseR: 114,\n  lowercaseS: 115,\n  lowercaseT: 116,\n  lowercaseU: 117,\n  lowercaseV: 118,\n  lowercaseW: 119,\n  lowercaseX: 120,\n  lowercaseY: 121,\n  lowercaseZ: 122,\n  leftCurlyBrace: 123,\n  verticalBar: 124,\n  rightCurlyBrace: 125,\n  tilde: 126,\n  del: 127,\n  degree: 176,\n  byteOrderMarker: 65279,\n  replacementCharacter: 65533\n};\nconst underlineTokenize = (effects, ok, nok) => {\n  const inside = (code2) => {\n    if (code2 === codes.carriageReturn || code2 === codes.lineFeed || code2 === codes.carriageReturnLineFeed || code2 === codes.eof) {\n      return nok(code2);\n    }\n    if (code2 === codes.backslash) {\n      effects.consume(code2);\n      return insideEscape;\n    }\n    if (code2 === codes.degree) {\n      effects.exit(\"underlineContent\");\n      effects.enter(\"underlineMarker\");\n      effects.consume(code2);\n      effects.exit(\"underlineMarker\");\n      effects.exit(\"underline\");\n      return ok;\n    }\n    effects.consume(code2);\n    return inside;\n  };\n  const insideEscape = (code2) => {\n    if (code2 === codes.backslash || code2 === codes.degree) {\n      effects.consume(code2);\n      return inside;\n    }\n    return inside(code2);\n  };\n  const begin = (code2) => code2 === codes.degree ? nok(code2) : inside(code2);\n  return (code2) => {\n    effects.enter(\"underline\");\n    effects.enter(\"underlineMarker\");\n    effects.consume(code2);\n    effects.exit(\"underlineMarker\");\n    effects.enter(\"underlineContent\", { contentType: \"string\" });\n    return begin;\n  };\n};\nconst underlineConstruct = { name: \"underline\", tokenize: underlineTokenize };\nconst underline = { text: { 176: underlineConstruct } };\nconst underlineHtml = {\n  enter: {\n    underline() {\n      this.tag(\"<u>\");\n    }\n  },\n  exit: {\n    underline() {\n      this.tag(\"</u>\");\n    }\n  }\n};\nconst usertagTokenize = (effects, ok, nok) => {\n  const inside = (code2) => {\n    if (code2 === codes.carriageReturn || code2 === codes.lineFeed || code2 === codes.carriageReturnLineFeed || code2 === codes.eof) {\n      return nok(code2);\n    }\n    if (code2 === codes.backslash) {\n      effects.consume(code2);\n      return insideEscape;\n    }\n    if (code2 === codes.greaterThan) {\n      effects.exit(\"usertagContent\");\n      effects.enter(\"usertagMarker\");\n      effects.consume(code2);\n      effects.exit(\"usertagMarker\");\n      effects.exit(\"usertag\");\n      return ok;\n    }\n    effects.consume(code2);\n    return inside;\n  };\n  const insideEscape = (code2) => {\n    if (code2 === codes.backslash || code2 === codes.greaterThan) {\n      effects.consume(code2);\n      return inside;\n    }\n    return inside(code2);\n  };\n  const begin = (code2) => {\n    if (code2 === codes.atSign) {\n      effects.consume(code2);\n      effects.exit(\"usertagMarker\");\n      effects.enter(\"usertagContent\");\n      return inside;\n    }\n    return nok(code2);\n  };\n  return (code2) => {\n    effects.enter(\"usertag\");\n    effects.enter(\"usertagMarker\");\n    effects.consume(code2);\n    return begin;\n  };\n};\nconst usertagConstruct = { name: \"usertag\", tokenize: usertagTokenize };\nconst usertag = { text: { 60: usertagConstruct } };\nconst usertagHtml = (users) => ({\n  exit: {\n    usertagContent(token) {\n      const userId = this.sliceSerialize(token);\n      this.tag(`<span class=\"vac-text-tag\" data-user-id=\"${userId}\">`);\n      const user = users.find((user2) => user2._id === userId);\n      this.raw(`@${this.encode(user ? user.username : userId)}`);\n      this.tag(\"</span>\");\n    }\n  }\n});\nvar markdown = (text2, { textFormatting }) => {\n  if (textFormatting) {\n    let gfmDisabled = [];\n    if (!textFormatting.linkify) {\n      gfmDisabled = [\"literalAutolink\", \"literalAutolinkEmail\"];\n    }\n    const markdown2 = micromark(\n      text2.replaceAll(\"<usertag>\", \"<@\").replaceAll(\"</usertag>\", \">\"),\n      {\n        extensions: [\n          {\n            ...gfm(),\n            disable: { null: gfmDisabled }\n          },\n          underline,\n          usertag\n        ],\n        htmlExtensions: [\n          gfmHtml(),\n          underlineHtml,\n          usertagHtml(textFormatting.users)\n        ]\n      }\n    );\n    if (textFormatting.singleLine) {\n      const element2 = document.createElement(\"div\");\n      element2.innerHTML = markdown2;\n      return [\n        {\n          types: [],\n          value: element2.innerText\n        }\n      ];\n    }\n    return [\n      {\n        types: [\"markdown\"],\n        value: markdown2\n      }\n    ];\n  }\n  return [\n    {\n      types: [],\n      value: text2\n    }\n  ];\n};\nconst IMAGE_TYPES = [\"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"gif\"];\nconst VIDEO_TYPES = [\"mp4\", \"video/ogg\", \"webm\", \"quicktime\"];\nconst AUDIO_TYPES = [\"mp3\", \"audio/ogg\", \"wav\", \"mpeg\"];\nconst _sfc_main$n = {\n  name: \"FormatMessage\",\n  components: { SvgIcon },\n  props: {\n    messageId: { type: String, default: \"\" },\n    roomId: { type: String, default: \"\" },\n    roomList: { type: Boolean, default: false },\n    content: { type: [String, Number], required: true },\n    deleted: { type: Boolean, default: false },\n    users: { type: Array, default: () => [] },\n    linkify: { type: Boolean, default: true },\n    singleLine: { type: Boolean, default: false },\n    reply: { type: Boolean, default: false },\n    textFormatting: { type: Object, required: true },\n    textMessages: { type: Object, default: () => {\n    } },\n    linkOptions: { type: Object, required: true }\n  },\n  emits: [\"open-user-tag\"],\n  computed: {\n    parsedMessage() {\n      if (this.deleted) {\n        return [{ value: this.textMessages.MESSAGE_DELETED }];\n      }\n      let options;\n      if (!this.textFormatting.disabled) {\n        options = {\n          textFormatting: {\n            linkify: this.linkify,\n            linkOptions: this.linkOptions,\n            singleLine: this.singleLine,\n            reply: this.reply,\n            users: this.users,\n            ...this.textFormatting\n          }\n        };\n      } else {\n        options = {};\n      }\n      const message = markdown(this.content, options);\n      message.forEach((m) => {\n        m.markdown = this.checkType(m, \"markdown\");\n        m.tag = this.checkType(m, \"tag\");\n        m.image = this.checkImageType(m);\n      });\n      return message;\n    }\n  },\n  methods: {\n    checkType(message, type) {\n      return message.types && message.types.indexOf(type) !== -1;\n    },\n    checkImageType(message) {\n      let index = message.value.lastIndexOf(\".\");\n      const slashIndex = message.value.lastIndexOf(\"/\");\n      if (slashIndex > index)\n        index = -1;\n      const type = message.value.substring(index + 1, message.value.length);\n      const isMedia = index > 0 && IMAGE_TYPES.some((t) => type.toLowerCase().includes(t));\n      if (isMedia)\n        this.setImageSize(message);\n      return isMedia;\n    },\n    setImageSize(message) {\n      const image = new Image();\n      image.src = message.value;\n      image.addEventListener(\"load\", onLoad);\n      function onLoad(img) {\n        const ratio = img.path[0].width / 150;\n        message.height = Math.round(img.path[0].height / ratio) + \"px\";\n        image.removeEventListener(\"load\", onLoad);\n      }\n    },\n    openTag(event) {\n      const userId = event.target.getAttribute(\"data-user-id\");\n      if (!this.singleLine && userId) {\n        const user = this.users.find((u) => String(u._id) === userId);\n        this.$emit(\"open-user-tag\", user);\n      }\n    }\n  }\n};\nconst _hoisted_1$n = [\"innerHTML\"];\nconst _hoisted_2$k = { class: \"vac-image-link-container\" };\nconst _hoisted_3$h = { class: \"vac-image-link-message\" };\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass([\"vac-format-message-wrapper\", { \"vac-text-ellipsis\": $props.singleLine }])\n  }, [\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.parsedMessage, (message, i) => {\n      return openBlock(), createElementBlock(Fragment, { key: i }, [\n        message.markdown ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: \"markdown\",\n          onClick: _cache[0] || (_cache[0] = (...args) => $options.openTag && $options.openTag(...args)),\n          innerHTML: message.value\n        }, null, 8, _hoisted_1$n)) : (openBlock(), createElementBlock(\"div\", {\n          key: 1,\n          class: normalizeClass([\"vac-format-container\", { \"vac-text-ellipsis\": $props.singleLine }])\n        }, [\n          (openBlock(), createBlock(resolveDynamicComponent(message.url ? \"a\" : \"span\"), {\n            class: normalizeClass({\n              \"vac-text-ellipsis\": $props.singleLine,\n              \"vac-text-tag\": !$props.singleLine && !$props.reply && message.tag\n            }),\n            href: message.href,\n            target: message.href ? $props.linkOptions.target : null,\n            rel: message.href ? $props.linkOptions.rel : null\n          }, {\n            default: withCtx(() => [\n              $props.deleted ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n                renderSlot(\n                  _ctx.$slots,\n                  $props.roomList ? \"deleted-icon-room_\" + $props.roomId : \"deleted-icon_\" + $props.messageId,\n                  {},\n                  () => [\n                    createVNode(_component_svg_icon, {\n                      name: \"deleted\",\n                      class: normalizeClass([\"vac-icon-deleted\", { \"vac-icon-deleted-room\": $props.roomList }])\n                    }, null, 8, [\"class\"])\n                  ]\n                ),\n                createTextVNode(\" \" + toDisplayString($props.textMessages.MESSAGE_DELETED), 1)\n              ], 64)) : message.url && message.image ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n                createBaseVNode(\"div\", _hoisted_2$k, [\n                  createBaseVNode(\"div\", {\n                    class: \"vac-image-link\",\n                    style: normalizeStyle({\n                      \"background-image\": `url('${message.value}')`,\n                      height: message.height\n                    })\n                  }, null, 4)\n                ]),\n                createBaseVNode(\"div\", _hoisted_3$h, toDisplayString(message.value), 1)\n              ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n                createTextVNode(toDisplayString(message.value), 1)\n              ], 64))\n            ]),\n            _: 2\n          }, 1032, [\"class\", \"href\", \"target\", \"rel\"]))\n        ], 2))\n      ], 64);\n    }), 128))\n  ], 2);\n}\nvar FormatMessage = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$n]]);\nconst HANDLERS_PROPERTY = \"__v-click-outside\";\nconst HAS_WINDOWS = typeof window !== \"undefined\";\nconst HAS_NAVIGATOR = typeof navigator !== \"undefined\";\nconst IS_TOUCH = HAS_WINDOWS && (\"ontouchstart\" in window || HAS_NAVIGATOR && navigator.msMaxTouchPoints > 0);\nconst EVENTS = IS_TOUCH ? [\"touchstart\"] : [\"click\"];\nconst processDirectiveArguments = (bindingValue) => {\n  const isFunction2 = typeof bindingValue === \"function\";\n  if (!isFunction2 && typeof bindingValue !== \"object\") {\n    throw new Error(\n      \"v-click-outside: Binding value must be a function or an object\"\n    );\n  }\n  return {\n    handler: isFunction2 ? bindingValue : bindingValue.handler,\n    middleware: bindingValue.middleware || ((item) => item),\n    events: bindingValue.events || EVENTS,\n    isActive: !(bindingValue.isActive === false),\n    detectIframe: !(bindingValue.detectIframe === false),\n    capture: Boolean(bindingValue.capture)\n  };\n};\nconst execHandler = ({ event, handler, middleware }) => {\n  if (middleware(event)) {\n    handler(event);\n  }\n};\nconst onFauxIframeClick = ({ el, event, handler, middleware }) => {\n  setTimeout(() => {\n    const { activeElement } = document;\n    if (activeElement && activeElement.tagName === \"IFRAME\" && !el.contains(activeElement)) {\n      execHandler({ event, handler, middleware });\n    }\n  }, 0);\n};\nconst onEvent = ({ el, event, handler, middleware }) => {\n  const path2 = event.path || event.composedPath && event.composedPath();\n  const isClickOutside = path2 ? path2.indexOf(el) < 0 : !el.contains(event.target);\n  if (!isClickOutside) {\n    return;\n  }\n  execHandler({ event, handler, middleware });\n};\nconst beforeMount = (el, { value }) => {\n  const {\n    events,\n    handler,\n    middleware,\n    isActive,\n    detectIframe,\n    capture\n  } = processDirectiveArguments(value);\n  if (!isActive) {\n    return;\n  }\n  el[HANDLERS_PROPERTY] = events.map((eventName) => ({\n    event: eventName,\n    srcTarget: document.documentElement,\n    handler: (event) => onEvent({ el, event, handler, middleware }),\n    capture\n  }));\n  if (detectIframe) {\n    const detectIframeEvent = {\n      event: \"blur\",\n      srcTarget: window,\n      handler: (event) => onFauxIframeClick({ el, event, handler, middleware }),\n      capture\n    };\n    el[HANDLERS_PROPERTY] = [...el[HANDLERS_PROPERTY], detectIframeEvent];\n  }\n  el[HANDLERS_PROPERTY].forEach(\n    ({ event, srcTarget, handler: thisHandler }) => setTimeout(() => {\n      if (!el[HANDLERS_PROPERTY]) {\n        return;\n      }\n      srcTarget.addEventListener(event, thisHandler, capture);\n    }, 0)\n  );\n};\nconst unmounted = (el) => {\n  const handlers = el[HANDLERS_PROPERTY] || [];\n  handlers.forEach(\n    ({ event, srcTarget, handler, capture }) => srcTarget.removeEventListener(event, handler, capture)\n  );\n  delete el[HANDLERS_PROPERTY];\n};\nconst updated = (el, { value, oldValue }) => {\n  if (JSON.stringify(value) === JSON.stringify(oldValue)) {\n    return;\n  }\n  unmounted(el);\n  beforeMount(el, { value });\n};\nconst directive = {\n  beforeMount,\n  updated,\n  unmounted\n};\nvar vClickOutside = HAS_WINDOWS ? directive : {};\nvar typingText = (room, currentUserId, textMessages) => {\n  if (room.typingUsers && room.typingUsers.length) {\n    const typingUsers = room.users.filter((user) => {\n      if (user._id === currentUserId)\n        return;\n      if (room.typingUsers.indexOf(user._id) === -1)\n        return;\n      if (user.status && user.status.state === \"offline\")\n        return;\n      return true;\n    });\n    if (!typingUsers.length)\n      return;\n    if (room.users.length === 2) {\n      return textMessages.IS_TYPING;\n    } else {\n      return typingUsers.map((user) => user.username).join(\", \") + \" \" + textMessages.IS_TYPING;\n    }\n  }\n};\nfunction checkMediaType(types, file) {\n  if (!file || !file.type)\n    return;\n  return types.some((t) => file.type.toLowerCase().includes(t));\n}\nfunction isImageFile(file) {\n  return checkMediaType(IMAGE_TYPES, file);\n}\nfunction isVideoFile(file) {\n  return checkMediaType(VIDEO_TYPES, file);\n}\nfunction isImageVideoFile(file) {\n  return checkMediaType(IMAGE_TYPES, file) || checkMediaType(VIDEO_TYPES, file);\n}\nfunction isAudioFile(file) {\n  return checkMediaType(AUDIO_TYPES, file);\n}\nconst _sfc_main$m = {\n  name: \"RoomsContent\",\n  components: {\n    SvgIcon,\n    FormatMessage\n  },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    room: { type: Object, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    textMessages: { type: Object, required: true },\n    roomActions: { type: Array, required: true }\n  },\n  emits: [\"room-action-handler\"],\n  data() {\n    return {\n      roomMenuOpened: null\n    };\n  },\n  computed: {\n    getLastMessage() {\n      const isTyping = this.typingUsers;\n      if (isTyping)\n        return isTyping;\n      const content2 = this.room.lastMessage.content;\n      if (this.room.users.length <= 2) {\n        return content2;\n      }\n      const user = this.room.users.find(\n        (user2) => user2._id === this.room.lastMessage.senderId\n      );\n      if (this.room.lastMessage.username) {\n        return `${this.room.lastMessage.username} - ${content2}`;\n      } else if (!user || user._id === this.currentUserId) {\n        return content2;\n      }\n      return `${user.username} - ${content2}`;\n    },\n    userStatus() {\n      if (!this.room.users || this.room.users.length !== 2)\n        return;\n      const user = this.room.users.find((u) => u._id !== this.currentUserId);\n      if (user && user.status)\n        return user.status.state;\n      return null;\n    },\n    typingUsers() {\n      return typingText(this.room, this.currentUserId, this.textMessages);\n    },\n    isMessageCheckmarkVisible() {\n      return !this.typingUsers && this.room.lastMessage && !this.room.lastMessage.deleted && this.room.lastMessage.senderId === this.currentUserId && (this.room.lastMessage.saved || this.room.lastMessage.distributed || this.room.lastMessage.seen);\n    },\n    formattedDuration() {\n      var _a, _b;\n      const file = (_b = (_a = this.room.lastMessage) == null ? void 0 : _a.files) == null ? void 0 : _b[0];\n      if (file) {\n        if (!file.duration) {\n          return `${file.name}.${file.extension}`;\n        }\n        let s = Math.floor(file.duration);\n        return (s - (s %= 60)) / 60 + (s > 9 ? \":\" : \":0\") + s;\n      }\n      return \"\";\n    },\n    isAudio() {\n      return this.room.lastMessage.files ? isAudioFile(this.room.lastMessage.files[0]) : false;\n    }\n  },\n  methods: {\n    roomActionHandler(action) {\n      this.closeRoomMenu();\n      this.$emit(\"room-action-handler\", { action, roomId: this.room.roomId });\n    },\n    closeRoomMenu() {\n      this.roomMenuOpened = null;\n    }\n  }\n};\nconst _hoisted_1$m = { class: \"vac-room-container\" };\nconst _hoisted_2$j = { class: \"vac-name-container vac-text-ellipsis\" };\nconst _hoisted_3$g = { class: \"vac-title-container\" };\nconst _hoisted_4$f = { class: \"vac-room-name vac-text-ellipsis\" };\nconst _hoisted_5$a = {\n  key: 1,\n  class: \"vac-text-date\"\n};\nconst _hoisted_6$6 = { key: 0 };\nconst _hoisted_7$6 = {\n  key: 1,\n  class: \"vac-text-ellipsis\"\n};\nconst _hoisted_8$4 = {\n  key: 3,\n  class: \"vac-text-ellipsis\"\n};\nconst _hoisted_9$4 = { class: \"vac-room-options-container\" };\nconst _hoisted_10$4 = {\n  key: 0,\n  class: \"vac-badge-counter vac-room-badge\"\n};\nconst _hoisted_11$3 = {\n  key: 0,\n  class: \"vac-menu-options\"\n};\nconst _hoisted_12$3 = { class: \"vac-menu-list\" };\nconst _hoisted_13$1 = [\"onClick\"];\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_format_message = resolveComponent(\"format-message\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$m, [\n    renderSlot(_ctx.$slots, \"room-list-item_\" + $props.room.roomId, {}, () => [\n      renderSlot(_ctx.$slots, \"room-list-avatar_\" + $props.room.roomId, {}, () => [\n        $props.room.avatar ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: \"vac-avatar\",\n          style: normalizeStyle({ \"background-image\": `url('${$props.room.avatar}')` })\n        }, null, 4)) : createCommentVNode(\"\", true)\n      ]),\n      createBaseVNode(\"div\", _hoisted_2$j, [\n        createBaseVNode(\"div\", _hoisted_3$g, [\n          $options.userStatus ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"vac-state-circle\", { \"vac-state-online\": $options.userStatus === \"online\" }])\n          }, null, 2)) : createCommentVNode(\"\", true),\n          renderSlot(_ctx.$slots, \"room-list-info_\" + $props.room.roomId, {}, () => [\n            createBaseVNode(\"div\", _hoisted_4$f, toDisplayString($props.room.roomName), 1)\n          ]),\n          $props.room.lastMessage ? (openBlock(), createElementBlock(\"div\", _hoisted_5$a, toDisplayString($props.room.lastMessage.timestamp), 1)) : createCommentVNode(\"\", true)\n        ]),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-text-last\", {\n            \"vac-message-new\": $props.room.lastMessage && $props.room.lastMessage.new && !$options.typingUsers\n          }])\n        }, [\n          $options.isMessageCheckmarkVisible ? (openBlock(), createElementBlock(\"span\", _hoisted_6$6, [\n            renderSlot(_ctx.$slots, \"checkmark-icon_\" + $props.room.roomId, {}, () => [\n              createVNode(_component_svg_icon, {\n                name: $props.room.lastMessage.distributed ? \"double-checkmark\" : \"checkmark\",\n                param: $props.room.lastMessage.seen ? \"seen\" : \"\",\n                class: \"vac-icon-check\"\n              }, null, 8, [\"name\", \"param\"])\n            ])\n          ])) : createCommentVNode(\"\", true),\n          $props.room.lastMessage && !$props.room.lastMessage.deleted && $options.isAudio ? (openBlock(), createElementBlock(\"div\", _hoisted_7$6, [\n            renderSlot(_ctx.$slots, \"microphone-icon_\" + $props.room.roomId, {}, () => [\n              createVNode(_component_svg_icon, {\n                name: \"microphone\",\n                class: \"vac-icon-microphone\"\n              })\n            ]),\n            createTextVNode(\" \" + toDisplayString($options.formattedDuration), 1)\n          ])) : $props.room.lastMessage ? (openBlock(), createBlock(_component_format_message, {\n            key: 2,\n            \"message-id\": $props.room.lastMessage._id,\n            \"room-id\": $props.room.roomId,\n            \"room-list\": true,\n            content: $options.getLastMessage,\n            deleted: !!$props.room.lastMessage.deleted && !$options.typingUsers,\n            users: $props.room.users,\n            \"text-messages\": $props.textMessages,\n            linkify: false,\n            \"text-formatting\": $props.textFormatting,\n            \"link-options\": $props.linkOptions,\n            \"single-line\": true\n          }, createSlots({ _: 2 }, [\n            renderList(_ctx.$slots, (idx, name) => {\n              return {\n                name,\n                fn: withCtx((data) => [\n                  renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                ])\n              };\n            })\n          ]), 1032, [\"message-id\", \"room-id\", \"content\", \"deleted\", \"users\", \"text-messages\", \"text-formatting\", \"link-options\"])) : createCommentVNode(\"\", true),\n          !$props.room.lastMessage && $options.typingUsers ? (openBlock(), createElementBlock(\"div\", _hoisted_8$4, toDisplayString($options.typingUsers), 1)) : createCommentVNode(\"\", true),\n          createBaseVNode(\"div\", _hoisted_9$4, [\n            $props.room.unreadCount ? (openBlock(), createElementBlock(\"div\", _hoisted_10$4, toDisplayString($props.room.unreadCount), 1)) : createCommentVNode(\"\", true),\n            renderSlot(_ctx.$slots, \"room-list-options_\" + $props.room.roomId, {}, () => [\n              $props.roomActions.length ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: \"vac-svg-button vac-list-room-options\",\n                onClick: _cache[0] || (_cache[0] = withModifiers(($event) => $data.roomMenuOpened = $props.room.roomId, [\"stop\"]))\n              }, [\n                renderSlot(_ctx.$slots, \"room-list-options-icon_\" + $props.room.roomId, {}, () => [\n                  createVNode(_component_svg_icon, {\n                    name: \"dropdown\",\n                    param: \"room\"\n                  })\n                ])\n              ])) : createCommentVNode(\"\", true),\n              $props.roomActions.length ? (openBlock(), createBlock(Transition, {\n                key: 1,\n                name: \"vac-slide-left\"\n              }, {\n                default: withCtx(() => [\n                  $data.roomMenuOpened === $props.room.roomId ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_11$3, [\n                    createBaseVNode(\"div\", _hoisted_12$3, [\n                      (openBlock(true), createElementBlock(Fragment, null, renderList($props.roomActions, (action) => {\n                        return openBlock(), createElementBlock(\"div\", {\n                          key: action.name\n                        }, [\n                          createBaseVNode(\"div\", {\n                            class: \"vac-menu-item\",\n                            onClick: withModifiers(($event) => $options.roomActionHandler(action), [\"stop\"])\n                          }, toDisplayString(action.title), 9, _hoisted_13$1)\n                        ]);\n                      }), 128))\n                    ])\n                  ])), [\n                    [_directive_click_outside, $options.closeRoomMenu]\n                  ]) : createCommentVNode(\"\", true)\n                ]),\n                _: 1\n              })) : createCommentVNode(\"\", true)\n            ])\n          ])\n        ], 2)\n      ])\n    ])\n  ]);\n}\nvar RoomContent = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$m]]);\nvar filteredItems = (items, prop, val, startsWith = false) => {\n  if (!val || val === \"\")\n    return items;\n  return items.filter((v) => {\n    if (startsWith)\n      return formatString(v[prop]).startsWith(formatString(val));\n    return formatString(v[prop]).includes(formatString(val));\n  });\n};\nfunction formatString(string2) {\n  return string2.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n}\nconst _sfc_main$l = {\n  name: \"RoomsList\",\n  components: {\n    Loader,\n    RoomsSearch,\n    RoomContent\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    showRoomsList: { type: Boolean, required: true },\n    showSearch: { type: Boolean, required: true },\n    showAddRoom: { type: Boolean, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    isMobile: { type: Boolean, required: true },\n    rooms: { type: Array, required: true },\n    loadingRooms: { type: Boolean, required: true },\n    roomsLoaded: { type: Boolean, required: true },\n    room: { type: Object, required: true },\n    customSearchRoomEnabled: { type: [Boolean, String], default: false },\n    roomActions: { type: Array, required: true },\n    scrollDistance: { type: Number, required: true }\n  },\n  emits: [\n    \"add-room\",\n    \"search-room\",\n    \"room-action-handler\",\n    \"loading-more-rooms\",\n    \"fetch-room\",\n    \"fetch-more-rooms\"\n  ],\n  data() {\n    return {\n      filteredRooms: this.rooms || [],\n      observer: null,\n      showLoader: true,\n      loadingMoreRooms: false,\n      selectedRoomId: \"\"\n    };\n  },\n  watch: {\n    rooms: {\n      deep: true,\n      handler(newVal, oldVal) {\n        this.filteredRooms = newVal;\n        if (newVal.length !== oldVal.length || this.roomsLoaded) {\n          this.loadingMoreRooms = false;\n        }\n      }\n    },\n    loadingRooms(val) {\n      if (!val) {\n        setTimeout(() => this.initIntersectionObserver());\n      }\n    },\n    loadingMoreRooms(val) {\n      this.$emit(\"loading-more-rooms\", val);\n    },\n    roomsLoaded: {\n      immediate: true,\n      handler(val) {\n        if (val) {\n          this.loadingMoreRooms = false;\n          if (!this.loadingRooms) {\n            this.showLoader = false;\n          }\n        }\n      }\n    },\n    room: {\n      immediate: true,\n      handler(val) {\n        if (val && !this.isMobile)\n          this.selectedRoomId = val.roomId;\n      }\n    }\n  },\n  methods: {\n    initIntersectionObserver() {\n      if (this.observer) {\n        this.showLoader = true;\n        this.observer.disconnect();\n      }\n      const loader = this.$el.querySelector(\"#infinite-loader-rooms\");\n      if (loader) {\n        const options = {\n          root: this.$el.querySelector(\"#rooms-list\"),\n          rootMargin: `${this.scrollDistance}px`,\n          threshold: 0\n        };\n        this.observer = new IntersectionObserver((entries) => {\n          if (entries[0].isIntersecting) {\n            this.loadMoreRooms();\n          }\n        }, options);\n        this.observer.observe(loader);\n      }\n    },\n    searchRoom(ev) {\n      if (this.customSearchRoomEnabled) {\n        this.$emit(\"search-room\", ev.target.value);\n      } else {\n        this.filteredRooms = filteredItems(\n          this.rooms,\n          \"roomName\",\n          ev.target.value\n        );\n      }\n    },\n    openRoom(room) {\n      if (room.roomId === this.room.roomId && !this.isMobile)\n        return;\n      if (!this.isMobile)\n        this.selectedRoomId = room.roomId;\n      this.$emit(\"fetch-room\", { room });\n    },\n    loadMoreRooms() {\n      if (this.loadingMoreRooms)\n        return;\n      if (this.roomsLoaded) {\n        this.loadingMoreRooms = false;\n        this.showLoader = false;\n        return;\n      }\n      this.$emit(\"fetch-more-rooms\");\n      this.loadingMoreRooms = true;\n    }\n  }\n};\nconst _hoisted_1$l = {\n  key: 0,\n  class: \"vac-rooms-empty\"\n};\nconst _hoisted_2$i = {\n  key: 1,\n  id: \"rooms-list\",\n  class: \"vac-room-list\"\n};\nconst _hoisted_3$f = [\"id\", \"onClick\"];\nconst _hoisted_4$e = {\n  key: 0,\n  id: \"infinite-loader-rooms\"\n};\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_rooms_search = resolveComponent(\"rooms-search\");\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_room_content = resolveComponent(\"room-content\");\n  return withDirectives((openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass([\"vac-rooms-container\", {\n      \"vac-rooms-container-full\": $props.isMobile,\n      \"vac-app-border-r\": !$props.isMobile\n    }])\n  }, [\n    renderSlot(_ctx.$slots, \"rooms-header\"),\n    renderSlot(_ctx.$slots, \"rooms-list-search\", {}, () => [\n      createVNode(_component_rooms_search, {\n        rooms: $props.rooms,\n        \"loading-rooms\": $props.loadingRooms,\n        \"text-messages\": $props.textMessages,\n        \"show-search\": $props.showSearch,\n        \"show-add-room\": $props.showAddRoom,\n        onSearchRoom: $options.searchRoom,\n        onAddRoom: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"add-room\"))\n      }, createSlots({ _: 2 }, [\n        renderList(_ctx.$slots, (idx, name) => {\n          return {\n            name,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"rooms\", \"loading-rooms\", \"text-messages\", \"show-search\", \"show-add-room\", \"onSearchRoom\"])\n    ]),\n    createVNode(_component_loader, {\n      show: $props.loadingRooms,\n      type: \"rooms\"\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"show\"]),\n    !$props.loadingRooms && !$props.rooms.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$l, [\n      renderSlot(_ctx.$slots, \"rooms-empty\", {}, () => [\n        createTextVNode(toDisplayString($props.textMessages.ROOMS_EMPTY), 1)\n      ])\n    ])) : createCommentVNode(\"\", true),\n    !$props.loadingRooms ? (openBlock(), createElementBlock(\"div\", _hoisted_2$i, [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($data.filteredRooms, (fRoom) => {\n        return openBlock(), createElementBlock(\"div\", {\n          id: fRoom.roomId,\n          key: fRoom.roomId,\n          class: normalizeClass([\"vac-room-item\", { \"vac-room-selected\": $data.selectedRoomId === fRoom.roomId }]),\n          onClick: ($event) => $options.openRoom(fRoom)\n        }, [\n          createVNode(_component_room_content, {\n            \"current-user-id\": $props.currentUserId,\n            room: fRoom,\n            \"text-formatting\": $props.textFormatting,\n            \"link-options\": $props.linkOptions,\n            \"text-messages\": $props.textMessages,\n            \"room-actions\": $props.roomActions,\n            onRoomActionHandler: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"room-action-handler\", $event))\n          }, createSlots({ _: 2 }, [\n            renderList(_ctx.$slots, (idx, name) => {\n              return {\n                name,\n                fn: withCtx((data) => [\n                  renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                ])\n              };\n            })\n          ]), 1032, [\"current-user-id\", \"room\", \"text-formatting\", \"link-options\", \"text-messages\", \"room-actions\"])\n        ], 10, _hoisted_3$f);\n      }), 128)),\n      createVNode(Transition, { name: \"vac-fade-message\" }, {\n        default: withCtx(() => [\n          $props.rooms.length && !$props.loadingRooms ? (openBlock(), createElementBlock(\"div\", _hoisted_4$e, [\n            createVNode(_component_loader, {\n              show: $data.showLoader,\n              infinite: true,\n              type: \"infinite-rooms\"\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (idx, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"show\"])\n          ])) : createCommentVNode(\"\", true)\n        ]),\n        _: 3\n      })\n    ])) : createCommentVNode(\"\", true)\n  ], 2)), [\n    [vShow, $props.showRoomsList]\n  ]);\n}\nvar RoomsList = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$k = {\n  name: \"RoomHeader\",\n  components: {\n    SvgIcon\n  },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    singleRoom: { type: Boolean, required: true },\n    showRoomsList: { type: Boolean, required: true },\n    isMobile: { type: Boolean, required: true },\n    roomInfoEnabled: { type: Boolean, required: true },\n    menuActions: { type: Array, required: true },\n    room: { type: Object, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true },\n    messageSelectionActions: { type: Array, required: true },\n    selectedMessagesTotal: { type: Number, required: true }\n  },\n  emits: [\n    \"toggle-rooms-list\",\n    \"room-info\",\n    \"menu-action-handler\",\n    \"cancel-message-selection\",\n    \"message-selection-action-handler\"\n  ],\n  data() {\n    return {\n      menuOpened: false,\n      messageSelectionAnimationEnded: true\n    };\n  },\n  computed: {\n    typingUsers() {\n      return typingText(this.room, this.currentUserId, this.textMessages);\n    },\n    userStatus() {\n      if (!this.room.users || this.room.users.length !== 2)\n        return;\n      const user = this.room.users.find((u) => u._id !== this.currentUserId);\n      if (!(user == null ? void 0 : user.status))\n        return;\n      let text2 = \"\";\n      if (user.status.state === \"online\") {\n        text2 = this.textMessages.IS_ONLINE;\n      } else if (user.status.lastChanged) {\n        text2 = this.textMessages.LAST_SEEN + user.status.lastChanged;\n      }\n      return text2;\n    }\n  },\n  watch: {\n    messageSelectionEnabled(val) {\n      if (val) {\n        this.messageSelectionAnimationEnded = false;\n      } else {\n        setTimeout(() => {\n          this.messageSelectionAnimationEnded = true;\n        }, 300);\n      }\n    }\n  },\n  methods: {\n    menuActionHandler(action) {\n      this.closeMenu();\n      this.$emit(\"menu-action-handler\", action);\n    },\n    closeMenu() {\n      this.menuOpened = false;\n    },\n    messageSelectionActionHandler(action) {\n      this.$emit(\"message-selection-action-handler\", action);\n    }\n  }\n};\nconst _hoisted_1$k = { class: \"vac-room-header vac-app-border-b\" };\nconst _hoisted_2$h = { class: \"vac-room-wrapper\" };\nconst _hoisted_3$e = {\n  key: 0,\n  class: \"vac-room-selection\"\n};\nconst _hoisted_4$d = [\"id\"];\nconst _hoisted_5$9 = [\"onClick\"];\nconst _hoisted_6$5 = { class: \"vac-selection-button-count\" };\nconst _hoisted_7$5 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_8$3 = { class: \"vac-room-name vac-text-ellipsis\" };\nconst _hoisted_9$3 = {\n  key: 0,\n  class: \"vac-room-info vac-text-ellipsis\"\n};\nconst _hoisted_10$3 = {\n  key: 1,\n  class: \"vac-room-info vac-text-ellipsis\"\n};\nconst _hoisted_11$2 = {\n  key: 0,\n  class: \"vac-menu-options\"\n};\nconst _hoisted_12$2 = { class: \"vac-menu-list\" };\nconst _hoisted_13 = [\"onClick\"];\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$k, [\n    renderSlot(_ctx.$slots, \"room-header\", {}, () => [\n      createBaseVNode(\"div\", _hoisted_2$h, [\n        createVNode(Transition, { name: \"vac-slide-up\" }, {\n          default: withCtx(() => [\n            $props.messageSelectionEnabled ? (openBlock(), createElementBlock(\"div\", _hoisted_3$e, [\n              (openBlock(true), createElementBlock(Fragment, null, renderList($props.messageSelectionActions, (action) => {\n                return openBlock(), createElementBlock(\"div\", {\n                  id: action.name,\n                  key: action.name\n                }, [\n                  createBaseVNode(\"div\", {\n                    class: \"vac-selection-button\",\n                    onClick: ($event) => $options.messageSelectionActionHandler(action)\n                  }, [\n                    createTextVNode(toDisplayString(action.title) + \" \", 1),\n                    createBaseVNode(\"span\", _hoisted_6$5, toDisplayString($props.selectedMessagesTotal), 1)\n                  ], 8, _hoisted_5$9)\n                ], 8, _hoisted_4$d);\n              }), 128)),\n              createBaseVNode(\"div\", {\n                class: \"vac-selection-cancel vac-item-clickable\",\n                onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"cancel-message-selection\"))\n              }, toDisplayString($props.textMessages.CANCEL_SELECT_MESSAGE), 1)\n            ])) : createCommentVNode(\"\", true)\n          ]),\n          _: 1\n        }),\n        !$props.messageSelectionEnabled && $data.messageSelectionAnimationEnded ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n          !$props.singleRoom ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"vac-svg-button vac-toggle-button\", {\n              \"vac-rotate-icon-init\": !$props.isMobile,\n              \"vac-rotate-icon\": !$props.showRoomsList && !$props.isMobile\n            }]),\n            onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"toggle-rooms-list\"))\n          }, [\n            renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"toggle\" })\n            ])\n          ], 2)) : createCommentVNode(\"\", true),\n          createBaseVNode(\"div\", {\n            class: normalizeClass([\"vac-info-wrapper\", { \"vac-item-clickable\": $props.roomInfoEnabled }]),\n            onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"room-info\"))\n          }, [\n            renderSlot(_ctx.$slots, \"room-header-avatar\", {}, () => [\n              $props.room.avatar ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: \"vac-avatar\",\n                style: normalizeStyle({ \"background-image\": `url('${$props.room.avatar}')` })\n              }, null, 4)) : createCommentVNode(\"\", true)\n            ]),\n            renderSlot(_ctx.$slots, \"room-header-info\", {}, () => [\n              createBaseVNode(\"div\", _hoisted_7$5, [\n                createBaseVNode(\"div\", _hoisted_8$3, toDisplayString($props.room.roomName), 1),\n                $options.typingUsers ? (openBlock(), createElementBlock(\"div\", _hoisted_9$3, toDisplayString($options.typingUsers), 1)) : (openBlock(), createElementBlock(\"div\", _hoisted_10$3, toDisplayString($options.userStatus), 1))\n              ])\n            ])\n          ], 2),\n          $props.room.roomId ? renderSlot(_ctx.$slots, \"room-options\", { key: 1 }, () => [\n            $props.menuActions.length ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: \"vac-svg-button vac-room-options\",\n              onClick: _cache[3] || (_cache[3] = ($event) => $data.menuOpened = !$data.menuOpened)\n            }, [\n              renderSlot(_ctx.$slots, \"menu-icon\", {}, () => [\n                createVNode(_component_svg_icon, { name: \"menu\" })\n              ])\n            ])) : createCommentVNode(\"\", true),\n            $props.menuActions.length ? (openBlock(), createBlock(Transition, {\n              key: 1,\n              name: \"vac-slide-left\"\n            }, {\n              default: withCtx(() => [\n                $data.menuOpened ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_11$2, [\n                  createBaseVNode(\"div\", _hoisted_12$2, [\n                    (openBlock(true), createElementBlock(Fragment, null, renderList($props.menuActions, (action) => {\n                      return openBlock(), createElementBlock(\"div\", {\n                        key: action.name\n                      }, [\n                        createBaseVNode(\"div\", {\n                          class: \"vac-menu-item\",\n                          onClick: ($event) => $options.menuActionHandler(action)\n                        }, toDisplayString(action.title), 9, _hoisted_13)\n                      ]);\n                    }), 128))\n                  ])\n                ])), [\n                  [_directive_click_outside, $options.closeMenu]\n                ]) : createCommentVNode(\"\", true)\n              ]),\n              _: 1\n            })) : createCommentVNode(\"\", true)\n          ]) : createCommentVNode(\"\", true)\n        ], 64)) : createCommentVNode(\"\", true)\n      ])\n    ])\n  ]);\n}\nvar RoomHeader = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$k]]);\nfunction assertNonEmptyString(str) {\n  if (typeof str !== \"string\" || !str) {\n    throw new Error(\"expected a non-empty string, got: \" + str);\n  }\n}\nfunction assertNumber(number) {\n  if (typeof number !== \"number\") {\n    throw new Error(\"expected a number, got: \" + number);\n  }\n}\nconst DB_VERSION_CURRENT = 1;\nconst DB_VERSION_INITIAL = 1;\nconst STORE_EMOJI = \"emoji\";\nconst STORE_KEYVALUE = \"keyvalue\";\nconst STORE_FAVORITES = \"favorites\";\nconst FIELD_TOKENS = \"tokens\";\nconst INDEX_TOKENS = \"tokens\";\nconst FIELD_UNICODE = \"unicode\";\nconst INDEX_COUNT = \"count\";\nconst FIELD_GROUP = \"group\";\nconst FIELD_ORDER = \"order\";\nconst INDEX_GROUP_AND_ORDER = \"group-order\";\nconst KEY_ETAG = \"eTag\";\nconst KEY_URL = \"url\";\nconst KEY_PREFERRED_SKINTONE = \"skinTone\";\nconst MODE_READONLY = \"readonly\";\nconst MODE_READWRITE = \"readwrite\";\nconst INDEX_SKIN_UNICODE = \"skinUnicodes\";\nconst FIELD_SKIN_UNICODE = \"skinUnicodes\";\nconst DEFAULT_DATA_SOURCE$1 = \"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json\";\nconst DEFAULT_LOCALE$1 = \"en\";\nfunction uniqBy$1(arr, func) {\n  const set2 = /* @__PURE__ */ new Set();\n  const res = [];\n  for (const item of arr) {\n    const key = func(item);\n    if (!set2.has(key)) {\n      set2.add(key);\n      res.push(item);\n    }\n  }\n  return res;\n}\nfunction uniqEmoji(emojis) {\n  return uniqBy$1(emojis, (_) => _.unicode);\n}\nfunction initialMigration(db) {\n  function createObjectStore(name, keyPath, indexes) {\n    const store = keyPath ? db.createObjectStore(name, { keyPath }) : db.createObjectStore(name);\n    if (indexes) {\n      for (const [indexName, [keyPath2, multiEntry]] of Object.entries(indexes)) {\n        store.createIndex(indexName, keyPath2, { multiEntry });\n      }\n    }\n    return store;\n  }\n  createObjectStore(STORE_KEYVALUE);\n  createObjectStore(STORE_EMOJI, FIELD_UNICODE, {\n    [INDEX_TOKENS]: [FIELD_TOKENS, true],\n    [INDEX_GROUP_AND_ORDER]: [[FIELD_GROUP, FIELD_ORDER]],\n    [INDEX_SKIN_UNICODE]: [FIELD_SKIN_UNICODE, true]\n  });\n  createObjectStore(STORE_FAVORITES, void 0, {\n    [INDEX_COUNT]: [\"\"]\n  });\n}\nconst openReqs = {};\nconst databaseCache = {};\nconst onCloseListeners = {};\nfunction handleOpenOrDeleteReq(resolve2, reject, req) {\n  req.onerror = () => reject(req.error);\n  req.onblocked = () => reject(new Error(\"IDB blocked\"));\n  req.onsuccess = () => resolve2(req.result);\n}\nasync function createDatabase(dbName) {\n  const db = await new Promise((resolve2, reject) => {\n    const req = indexedDB.open(dbName, DB_VERSION_CURRENT);\n    openReqs[dbName] = req;\n    req.onupgradeneeded = (e) => {\n      if (e.oldVersion < DB_VERSION_INITIAL) {\n        initialMigration(req.result);\n      }\n    };\n    handleOpenOrDeleteReq(resolve2, reject, req);\n  });\n  db.onclose = () => closeDatabase(dbName);\n  return db;\n}\nfunction openDatabase(dbName) {\n  if (!databaseCache[dbName]) {\n    databaseCache[dbName] = createDatabase(dbName);\n  }\n  return databaseCache[dbName];\n}\nfunction dbPromise(db, storeName, readOnlyOrReadWrite, cb) {\n  return new Promise((resolve2, reject) => {\n    const txn = db.transaction(storeName, readOnlyOrReadWrite, { durability: \"relaxed\" });\n    const store = typeof storeName === \"string\" ? txn.objectStore(storeName) : storeName.map((name) => txn.objectStore(name));\n    let res;\n    cb(store, txn, (result) => {\n      res = result;\n    });\n    txn.oncomplete = () => resolve2(res);\n    txn.onerror = () => reject(txn.error);\n  });\n}\nfunction closeDatabase(dbName) {\n  const req = openReqs[dbName];\n  const db = req && req.result;\n  if (db) {\n    db.close();\n    const listeners = onCloseListeners[dbName];\n    if (listeners) {\n      for (const listener of listeners) {\n        listener();\n      }\n    }\n  }\n  delete openReqs[dbName];\n  delete databaseCache[dbName];\n  delete onCloseListeners[dbName];\n}\nfunction deleteDatabase(dbName) {\n  return new Promise((resolve2, reject) => {\n    closeDatabase(dbName);\n    const req = indexedDB.deleteDatabase(dbName);\n    handleOpenOrDeleteReq(resolve2, reject, req);\n  });\n}\nfunction addOnCloseListener(dbName, listener) {\n  let listeners = onCloseListeners[dbName];\n  if (!listeners) {\n    listeners = onCloseListeners[dbName] = [];\n  }\n  listeners.push(listener);\n}\nconst irregularEmoticons = /* @__PURE__ */ new Set([\n  \":D\",\n  \"XD\",\n  \":'D\",\n  \"O:)\",\n  \":X\",\n  \":P\",\n  \";P\",\n  \"XP\",\n  \":L\",\n  \":Z\",\n  \":j\",\n  \"8D\",\n  \"XO\",\n  \"8)\",\n  \":B\",\n  \":O\",\n  \":S\",\n  \":'o\",\n  \"Dx\",\n  \"X(\",\n  \"D:\",\n  \":C\",\n  \">0)\",\n  \":3\",\n  \"</3\",\n  \"<3\",\n  \"\\\\M/\",\n  \":E\",\n  \"8#\"\n]);\nfunction extractTokens(str) {\n  return str.split(/[\\s_]+/).map((word) => {\n    if (!word.match(/\\w/) || irregularEmoticons.has(word)) {\n      return word.toLowerCase();\n    }\n    return word.replace(/[)(:,]/g, \"\").replace(/’/g, \"'\").toLowerCase();\n  }).filter(Boolean);\n}\nconst MIN_SEARCH_TEXT_LENGTH$1 = 2;\nfunction normalizeTokens(str) {\n  return str.filter(Boolean).map((_) => _.toLowerCase()).filter((_) => _.length >= MIN_SEARCH_TEXT_LENGTH$1);\n}\nfunction transformEmojiData(emojiData) {\n  const res = emojiData.map(({ annotation, emoticon, group, order, shortcodes, skins, tags, emoji, version: version2 }) => {\n    const tokens = [...new Set(\n      normalizeTokens([\n        ...(shortcodes || []).map(extractTokens).flat(),\n        ...tags.map(extractTokens).flat(),\n        ...extractTokens(annotation),\n        emoticon\n      ])\n    )].sort();\n    const res2 = {\n      annotation,\n      group,\n      order,\n      tags,\n      tokens,\n      unicode: emoji,\n      version: version2\n    };\n    if (emoticon) {\n      res2.emoticon = emoticon;\n    }\n    if (shortcodes) {\n      res2.shortcodes = shortcodes;\n    }\n    if (skins) {\n      res2.skinTones = [];\n      res2.skinUnicodes = [];\n      res2.skinVersions = [];\n      for (const { tone, emoji: emoji2, version: version3 } of skins) {\n        res2.skinTones.push(tone);\n        res2.skinUnicodes.push(emoji2);\n        res2.skinVersions.push(version3);\n      }\n    }\n    return res2;\n  });\n  return res;\n}\nfunction callStore(store, method, key, cb) {\n  store[method](key).onsuccess = (e) => cb && cb(e.target.result);\n}\nfunction getIDB(store, key, cb) {\n  callStore(store, \"get\", key, cb);\n}\nfunction getAllIDB(store, key, cb) {\n  callStore(store, \"getAll\", key, cb);\n}\nfunction commit(txn) {\n  if (txn.commit) {\n    txn.commit();\n  }\n}\nfunction minBy(array, func) {\n  let minItem = array[0];\n  for (let i = 1; i < array.length; i++) {\n    const item = array[i];\n    if (func(minItem) > func(item)) {\n      minItem = item;\n    }\n  }\n  return minItem;\n}\nfunction findCommonMembers(arrays, uniqByFunc) {\n  const shortestArray = minBy(arrays, (_) => _.length);\n  const results = [];\n  for (const item of shortestArray) {\n    if (!arrays.some((array) => array.findIndex((_) => uniqByFunc(_) === uniqByFunc(item)) === -1)) {\n      results.push(item);\n    }\n  }\n  return results;\n}\nasync function isEmpty(db) {\n  return !await get(db, STORE_KEYVALUE, KEY_URL);\n}\nasync function hasData(db, url, eTag) {\n  const [oldETag, oldUrl] = await Promise.all([KEY_ETAG, KEY_URL].map((key) => get(db, STORE_KEYVALUE, key)));\n  return oldETag === eTag && oldUrl === url;\n}\nasync function doFullDatabaseScanForSingleResult(db, predicate) {\n  const BATCH_SIZE = 50;\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n    let lastKey;\n    const processNextBatch = () => {\n      emojiStore.getAll(lastKey && IDBKeyRange.lowerBound(lastKey, true), BATCH_SIZE).onsuccess = (e) => {\n        const results = e.target.result;\n        for (const result of results) {\n          lastKey = result.unicode;\n          if (predicate(result)) {\n            return cb(result);\n          }\n        }\n        if (results.length < BATCH_SIZE) {\n          return cb();\n        }\n        processNextBatch();\n      };\n    };\n    processNextBatch();\n  });\n}\nasync function loadData(db, emojiData, url, eTag) {\n  try {\n    const transformedData = transformEmojiData(emojiData);\n    await dbPromise(db, [STORE_EMOJI, STORE_KEYVALUE], MODE_READWRITE, ([emojiStore, metaStore], txn) => {\n      let oldETag;\n      let oldUrl;\n      let todo = 0;\n      function checkFetched() {\n        if (++todo === 2) {\n          onFetched();\n        }\n      }\n      function onFetched() {\n        if (oldETag === eTag && oldUrl === url) {\n          return;\n        }\n        emojiStore.clear();\n        for (const data of transformedData) {\n          emojiStore.put(data);\n        }\n        metaStore.put(eTag, KEY_ETAG);\n        metaStore.put(url, KEY_URL);\n        commit(txn);\n      }\n      getIDB(metaStore, KEY_ETAG, (result) => {\n        oldETag = result;\n        checkFetched();\n      });\n      getIDB(metaStore, KEY_URL, (result) => {\n        oldUrl = result;\n        checkFetched();\n      });\n    });\n  } finally {\n  }\n}\nasync function getEmojiByGroup(db, group) {\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n    const range = IDBKeyRange.bound([group, 0], [group + 1, 0], false, true);\n    getAllIDB(emojiStore.index(INDEX_GROUP_AND_ORDER), range, cb);\n  });\n}\nasync function getEmojiBySearchQuery(db, query) {\n  const tokens = normalizeTokens(extractTokens(query));\n  if (!tokens.length) {\n    return [];\n  }\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n    const intermediateResults = [];\n    const checkDone = () => {\n      if (intermediateResults.length === tokens.length) {\n        onDone();\n      }\n    };\n    const onDone = () => {\n      const results = findCommonMembers(intermediateResults, (_) => _.unicode);\n      cb(results.sort((a, b) => a.order < b.order ? -1 : 1));\n    };\n    for (let i = 0; i < tokens.length; i++) {\n      const token = tokens[i];\n      const range = i === tokens.length - 1 ? IDBKeyRange.bound(token, token + \"\\uFFFF\", false, true) : IDBKeyRange.only(token);\n      getAllIDB(emojiStore.index(INDEX_TOKENS), range, (result) => {\n        intermediateResults.push(result);\n        checkDone();\n      });\n    }\n  });\n}\nasync function getEmojiByShortcode(db, shortcode) {\n  const emojis = await getEmojiBySearchQuery(db, shortcode);\n  if (!emojis.length) {\n    const predicate = (_) => (_.shortcodes || []).includes(shortcode.toLowerCase());\n    return await doFullDatabaseScanForSingleResult(db, predicate) || null;\n  }\n  return emojis.filter((_) => {\n    const lowerShortcodes = (_.shortcodes || []).map((_2) => _2.toLowerCase());\n    return lowerShortcodes.includes(shortcode.toLowerCase());\n  })[0] || null;\n}\nasync function getEmojiByUnicode(db, unicode) {\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => getIDB(emojiStore, unicode, (result) => {\n    if (result) {\n      return cb(result);\n    }\n    getIDB(emojiStore.index(INDEX_SKIN_UNICODE), unicode, (result2) => cb(result2 || null));\n  }));\n}\nfunction get(db, storeName, key) {\n  return dbPromise(db, storeName, MODE_READONLY, (store, txn, cb) => getIDB(store, key, cb));\n}\nfunction set(db, storeName, key, value) {\n  return dbPromise(db, storeName, MODE_READWRITE, (store, txn) => {\n    store.put(value, key);\n    commit(txn);\n  });\n}\nfunction incrementFavoriteEmojiCount(db, unicode) {\n  return dbPromise(db, STORE_FAVORITES, MODE_READWRITE, (store, txn) => getIDB(store, unicode, (result) => {\n    store.put((result || 0) + 1, unicode);\n    commit(txn);\n  }));\n}\nfunction getTopFavoriteEmoji(db, customEmojiIndex2, limit) {\n  if (limit === 0) {\n    return [];\n  }\n  return dbPromise(db, [STORE_FAVORITES, STORE_EMOJI], MODE_READONLY, ([favoritesStore, emojiStore], txn, cb) => {\n    const results = [];\n    favoritesStore.index(INDEX_COUNT).openCursor(void 0, \"prev\").onsuccess = (e) => {\n      const cursor = e.target.result;\n      if (!cursor) {\n        return cb(results);\n      }\n      function addResult(result) {\n        results.push(result);\n        if (results.length === limit) {\n          return cb(results);\n        }\n        cursor.continue();\n      }\n      const unicodeOrName = cursor.primaryKey;\n      const custom = customEmojiIndex2.byName(unicodeOrName);\n      if (custom) {\n        return addResult(custom);\n      }\n      getIDB(emojiStore, unicodeOrName, (emoji) => {\n        if (emoji) {\n          return addResult(emoji);\n        }\n        cursor.continue();\n      });\n    };\n  });\n}\nconst CODA_MARKER = \"\";\nfunction trie(arr, itemToTokens) {\n  const map = /* @__PURE__ */ new Map();\n  for (const item of arr) {\n    const tokens = itemToTokens(item);\n    for (const token of tokens) {\n      let currentMap = map;\n      for (let i = 0; i < token.length; i++) {\n        const char = token.charAt(i);\n        let nextMap = currentMap.get(char);\n        if (!nextMap) {\n          nextMap = /* @__PURE__ */ new Map();\n          currentMap.set(char, nextMap);\n        }\n        currentMap = nextMap;\n      }\n      let valuesAtCoda = currentMap.get(CODA_MARKER);\n      if (!valuesAtCoda) {\n        valuesAtCoda = [];\n        currentMap.set(CODA_MARKER, valuesAtCoda);\n      }\n      valuesAtCoda.push(item);\n    }\n  }\n  const search2 = (query, exact) => {\n    let currentMap = map;\n    for (let i = 0; i < query.length; i++) {\n      const char = query.charAt(i);\n      const nextMap = currentMap.get(char);\n      if (nextMap) {\n        currentMap = nextMap;\n      } else {\n        return [];\n      }\n    }\n    if (exact) {\n      const results2 = currentMap.get(CODA_MARKER);\n      return results2 || [];\n    }\n    const results = [];\n    const queue2 = [currentMap];\n    while (queue2.length) {\n      const currentMap2 = queue2.shift();\n      const entriesSortedByKey = [...currentMap2.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1);\n      for (const [key, value] of entriesSortedByKey) {\n        if (key === CODA_MARKER) {\n          results.push(...value);\n        } else {\n          queue2.push(value);\n        }\n      }\n    }\n    return results;\n  };\n  return search2;\n}\nconst requiredKeys$1 = [\n  \"name\",\n  \"url\"\n];\nfunction assertCustomEmojis(customEmojis) {\n  const isArray2 = customEmojis && Array.isArray(customEmojis);\n  const firstItemIsFaulty = isArray2 && customEmojis.length && (!customEmojis[0] || requiredKeys$1.some((key) => !(key in customEmojis[0])));\n  if (!isArray2 || firstItemIsFaulty) {\n    throw new Error(\"Custom emojis are in the wrong format\");\n  }\n}\nfunction customEmojiIndex(customEmojis) {\n  assertCustomEmojis(customEmojis);\n  const sortByName = (a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;\n  const all = customEmojis.sort(sortByName);\n  const emojiToTokens = (emoji) => [...new Set((emoji.shortcodes || []).map((shortcode) => extractTokens(shortcode)).flat())];\n  const searchTrie = trie(customEmojis, emojiToTokens);\n  const searchByExactMatch = (_) => searchTrie(_, true);\n  const searchByPrefix = (_) => searchTrie(_, false);\n  const search2 = (query) => {\n    const tokens = extractTokens(query);\n    const intermediateResults = tokens.map((token, i) => (i < tokens.length - 1 ? searchByExactMatch : searchByPrefix)(token));\n    return findCommonMembers(intermediateResults, (_) => _.name).sort(sortByName);\n  };\n  const shortcodeToEmoji = /* @__PURE__ */ new Map();\n  const nameToEmoji = /* @__PURE__ */ new Map();\n  for (const customEmoji of customEmojis) {\n    nameToEmoji.set(customEmoji.name.toLowerCase(), customEmoji);\n    for (const shortcode of customEmoji.shortcodes || []) {\n      shortcodeToEmoji.set(shortcode.toLowerCase(), customEmoji);\n    }\n  }\n  const byShortcode = (shortcode) => shortcodeToEmoji.get(shortcode.toLowerCase());\n  const byName = (name) => nameToEmoji.get(name.toLowerCase());\n  return {\n    all,\n    search: search2,\n    byShortcode,\n    byName\n  };\n}\nfunction cleanEmoji(emoji) {\n  if (!emoji) {\n    return emoji;\n  }\n  delete emoji.tokens;\n  if (emoji.skinTones) {\n    const len = emoji.skinTones.length;\n    emoji.skins = Array(len);\n    for (let i = 0; i < len; i++) {\n      emoji.skins[i] = {\n        tone: emoji.skinTones[i],\n        unicode: emoji.skinUnicodes[i],\n        version: emoji.skinVersions[i]\n      };\n    }\n    delete emoji.skinTones;\n    delete emoji.skinUnicodes;\n    delete emoji.skinVersions;\n  }\n  return emoji;\n}\nfunction warnETag(eTag) {\n  if (!eTag) {\n    console.warn(\"emoji-picker-element is more efficient if the dataSource server exposes an ETag header.\");\n  }\n}\nconst requiredKeys = [\n  \"annotation\",\n  \"emoji\",\n  \"group\",\n  \"order\",\n  \"tags\",\n  \"version\"\n];\nfunction assertEmojiData(emojiData) {\n  if (!emojiData || !Array.isArray(emojiData) || !emojiData[0] || typeof emojiData[0] !== \"object\" || requiredKeys.some((key) => !(key in emojiData[0]))) {\n    throw new Error(\"Emoji data is in the wrong format\");\n  }\n}\nfunction assertStatus(response, dataSource) {\n  if (Math.floor(response.status / 100) !== 2) {\n    throw new Error(\"Failed to fetch: \" + dataSource + \":  \" + response.status);\n  }\n}\nasync function getETag(dataSource) {\n  const response = await fetch(dataSource, { method: \"HEAD\" });\n  assertStatus(response, dataSource);\n  const eTag = response.headers.get(\"etag\");\n  warnETag(eTag);\n  return eTag;\n}\nasync function getETagAndData(dataSource) {\n  const response = await fetch(dataSource);\n  assertStatus(response, dataSource);\n  const eTag = response.headers.get(\"etag\");\n  warnETag(eTag);\n  const emojiData = await response.json();\n  assertEmojiData(emojiData);\n  return [eTag, emojiData];\n}\nfunction arrayBufferToBinaryString(buffer) {\n  var binary = \"\";\n  var bytes = new Uint8Array(buffer);\n  var length = bytes.byteLength;\n  var i = -1;\n  while (++i < length) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return binary;\n}\nfunction binaryStringToArrayBuffer(binary) {\n  var length = binary.length;\n  var buf = new ArrayBuffer(length);\n  var arr = new Uint8Array(buf);\n  var i = -1;\n  while (++i < length) {\n    arr[i] = binary.charCodeAt(i);\n  }\n  return buf;\n}\nasync function jsonChecksum(object) {\n  const inString = JSON.stringify(object);\n  const inBuffer = binaryStringToArrayBuffer(inString);\n  const outBuffer = await crypto.subtle.digest(\"SHA-1\", inBuffer);\n  const outBinString = arrayBufferToBinaryString(outBuffer);\n  const res = btoa(outBinString);\n  return res;\n}\nasync function checkForUpdates(db, dataSource) {\n  let emojiData;\n  let eTag = await getETag(dataSource);\n  if (!eTag) {\n    const eTagAndData = await getETagAndData(dataSource);\n    eTag = eTagAndData[0];\n    emojiData = eTagAndData[1];\n    if (!eTag) {\n      eTag = await jsonChecksum(emojiData);\n    }\n  }\n  if (await hasData(db, dataSource, eTag))\n    ;\n  else {\n    if (!emojiData) {\n      const eTagAndData = await getETagAndData(dataSource);\n      emojiData = eTagAndData[1];\n    }\n    await loadData(db, emojiData, dataSource, eTag);\n  }\n}\nasync function loadDataForFirstTime(db, dataSource) {\n  let [eTag, emojiData] = await getETagAndData(dataSource);\n  if (!eTag) {\n    eTag = await jsonChecksum(emojiData);\n  }\n  await loadData(db, emojiData, dataSource, eTag);\n}\nclass Database {\n  constructor({ dataSource = DEFAULT_DATA_SOURCE$1, locale = DEFAULT_LOCALE$1, customEmoji = [] } = {}) {\n    this.dataSource = dataSource;\n    this.locale = locale;\n    this._dbName = `emoji-picker-element-${this.locale}`;\n    this._db = void 0;\n    this._lazyUpdate = void 0;\n    this._custom = customEmojiIndex(customEmoji);\n    this._clear = this._clear.bind(this);\n    this._ready = this._init();\n  }\n  async _init() {\n    const db = this._db = await openDatabase(this._dbName);\n    addOnCloseListener(this._dbName, this._clear);\n    const dataSource = this.dataSource;\n    const empty = await isEmpty(db);\n    if (empty) {\n      await loadDataForFirstTime(db, dataSource);\n    } else {\n      this._lazyUpdate = checkForUpdates(db, dataSource);\n    }\n  }\n  async ready() {\n    const checkReady = async () => {\n      if (!this._ready) {\n        this._ready = this._init();\n      }\n      return this._ready;\n    };\n    await checkReady();\n    if (!this._db) {\n      await checkReady();\n    }\n  }\n  async getEmojiByGroup(group) {\n    assertNumber(group);\n    await this.ready();\n    return uniqEmoji(await getEmojiByGroup(this._db, group)).map(cleanEmoji);\n  }\n  async getEmojiBySearchQuery(query) {\n    assertNonEmptyString(query);\n    await this.ready();\n    const customs = this._custom.search(query);\n    const natives = uniqEmoji(await getEmojiBySearchQuery(this._db, query)).map(cleanEmoji);\n    return [\n      ...customs,\n      ...natives\n    ];\n  }\n  async getEmojiByShortcode(shortcode) {\n    assertNonEmptyString(shortcode);\n    await this.ready();\n    const custom = this._custom.byShortcode(shortcode);\n    if (custom) {\n      return custom;\n    }\n    return cleanEmoji(await getEmojiByShortcode(this._db, shortcode));\n  }\n  async getEmojiByUnicodeOrName(unicodeOrName) {\n    assertNonEmptyString(unicodeOrName);\n    await this.ready();\n    const custom = this._custom.byName(unicodeOrName);\n    if (custom) {\n      return custom;\n    }\n    return cleanEmoji(await getEmojiByUnicode(this._db, unicodeOrName));\n  }\n  async getPreferredSkinTone() {\n    await this.ready();\n    return await get(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE) || 0;\n  }\n  async setPreferredSkinTone(skinTone) {\n    assertNumber(skinTone);\n    await this.ready();\n    return set(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE, skinTone);\n  }\n  async incrementFavoriteEmojiCount(unicodeOrName) {\n    assertNonEmptyString(unicodeOrName);\n    await this.ready();\n    return incrementFavoriteEmojiCount(this._db, unicodeOrName);\n  }\n  async getTopFavoriteEmoji(limit) {\n    assertNumber(limit);\n    await this.ready();\n    return (await getTopFavoriteEmoji(this._db, this._custom, limit)).map(cleanEmoji);\n  }\n  set customEmoji(customEmojis) {\n    this._custom = customEmojiIndex(customEmojis);\n  }\n  get customEmoji() {\n    return this._custom.all;\n  }\n  async _shutdown() {\n    await this.ready();\n    try {\n      await this._lazyUpdate;\n    } catch (err) {\n    }\n  }\n  _clear() {\n    this._db = this._ready = this._lazyUpdate = void 0;\n  }\n  async close() {\n    await this._shutdown();\n    await closeDatabase(this._dbName);\n  }\n  async delete() {\n    await this._shutdown();\n    await deleteDatabase(this._dbName);\n  }\n}\nfunction noop() {\n}\nfunction run(fn) {\n  return fn();\n}\nfunction blank_object() {\n  return /* @__PURE__ */ Object.create(null);\n}\nfunction run_all(fns) {\n  fns.forEach(run);\n}\nfunction is_function(thing) {\n  return typeof thing === \"function\";\n}\nfunction safe_not_equal(a, b) {\n  return a != a ? b == b : a !== b || (a && typeof a === \"object\" || typeof a === \"function\");\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n  if (!src_url_equal_anchor) {\n    src_url_equal_anchor = document.createElement(\"a\");\n  }\n  src_url_equal_anchor.href = url;\n  return element_src === src_url_equal_anchor.href;\n}\nfunction is_empty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction action_destroyer(action_result) {\n  return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\nfunction append(target, node) {\n  target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n  target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n  node.parentNode.removeChild(node);\n}\nfunction element(name) {\n  return document.createElement(name);\n}\nfunction text(data) {\n  return document.createTextNode(data);\n}\nfunction listen(node, event, handler, options) {\n  node.addEventListener(event, handler, options);\n  return () => node.removeEventListener(event, handler, options);\n}\nfunction attr(node, attribute, value) {\n  if (value == null)\n    node.removeAttribute(attribute);\n  else if (node.getAttribute(attribute) !== value)\n    node.setAttribute(attribute, value);\n}\nfunction set_data(text2, data) {\n  data = \"\" + data;\n  if (text2.wholeText !== data)\n    text2.data = data;\n}\nfunction set_input_value(input, value) {\n  input.value = value == null ? \"\" : value;\n}\nfunction set_style(node, key, value, important) {\n  if (value === null) {\n    node.style.removeProperty(key);\n  } else {\n    node.style.setProperty(key, value, important ? \"important\" : \"\");\n  }\n}\nlet current_component;\nfunction set_current_component(component) {\n  current_component = component;\n}\nconst dirty_components = [];\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n  if (!update_scheduled) {\n    update_scheduled = true;\n    resolved_promise.then(flush);\n  }\n}\nfunction tick() {\n  schedule_update();\n  return resolved_promise;\n}\nfunction add_render_callback(fn) {\n  render_callbacks.push(fn);\n}\nconst seen_callbacks = /* @__PURE__ */ new Set();\nlet flushidx = 0;\nfunction flush() {\n  const saved_component = current_component;\n  do {\n    while (flushidx < dirty_components.length) {\n      const component = dirty_components[flushidx];\n      flushidx++;\n      set_current_component(component);\n      update(component.$$);\n    }\n    set_current_component(null);\n    dirty_components.length = 0;\n    flushidx = 0;\n    while (binding_callbacks.length)\n      binding_callbacks.pop()();\n    for (let i = 0; i < render_callbacks.length; i += 1) {\n      const callback = render_callbacks[i];\n      if (!seen_callbacks.has(callback)) {\n        seen_callbacks.add(callback);\n        callback();\n      }\n    }\n    render_callbacks.length = 0;\n  } while (dirty_components.length);\n  while (flush_callbacks.length) {\n    flush_callbacks.pop()();\n  }\n  update_scheduled = false;\n  seen_callbacks.clear();\n  set_current_component(saved_component);\n}\nfunction update($$) {\n  if ($$.fragment !== null) {\n    $$.update();\n    run_all($$.before_update);\n    const dirty = $$.dirty;\n    $$.dirty = [-1];\n    $$.fragment && $$.fragment.p($$.ctx, dirty);\n    $$.after_update.forEach(add_render_callback);\n  }\n}\nconst outroing = /* @__PURE__ */ new Set();\nfunction transition_in(block, local) {\n  if (block && block.i) {\n    outroing.delete(block);\n    block.i(local);\n  }\n}\nconst globals = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : global;\nfunction destroy_block(block, lookup) {\n  block.d(1);\n  lookup.delete(block.key);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list2, lookup, node, destroy, create_each_block2, next, get_context) {\n  let o = old_blocks.length;\n  let n = list2.length;\n  let i = o;\n  const old_indexes = {};\n  while (i--)\n    old_indexes[old_blocks[i].key] = i;\n  const new_blocks = [];\n  const new_lookup = /* @__PURE__ */ new Map();\n  const deltas = /* @__PURE__ */ new Map();\n  i = n;\n  while (i--) {\n    const child_ctx = get_context(ctx, list2, i);\n    const key = get_key(child_ctx);\n    let block = lookup.get(key);\n    if (!block) {\n      block = create_each_block2(key, child_ctx);\n      block.c();\n    } else if (dynamic) {\n      block.p(child_ctx, dirty);\n    }\n    new_lookup.set(key, new_blocks[i] = block);\n    if (key in old_indexes)\n      deltas.set(key, Math.abs(i - old_indexes[key]));\n  }\n  const will_move = /* @__PURE__ */ new Set();\n  const did_move = /* @__PURE__ */ new Set();\n  function insert2(block) {\n    transition_in(block, 1);\n    block.m(node, next);\n    lookup.set(block.key, block);\n    next = block.first;\n    n--;\n  }\n  while (o && n) {\n    const new_block = new_blocks[n - 1];\n    const old_block = old_blocks[o - 1];\n    const new_key = new_block.key;\n    const old_key = old_block.key;\n    if (new_block === old_block) {\n      next = new_block.first;\n      o--;\n      n--;\n    } else if (!new_lookup.has(old_key)) {\n      destroy(old_block, lookup);\n      o--;\n    } else if (!lookup.has(new_key) || will_move.has(new_key)) {\n      insert2(new_block);\n    } else if (did_move.has(old_key)) {\n      o--;\n    } else if (deltas.get(new_key) > deltas.get(old_key)) {\n      did_move.add(new_key);\n      insert2(new_block);\n    } else {\n      will_move.add(old_key);\n      o--;\n    }\n  }\n  while (o--) {\n    const old_block = old_blocks[o];\n    if (!new_lookup.has(old_block.key))\n      destroy(old_block, lookup);\n  }\n  while (n)\n    insert2(new_blocks[n - 1]);\n  return new_blocks;\n}\nfunction mount_component(component, target, anchor, customElement) {\n  const { fragment, on_mount, on_destroy, after_update } = component.$$;\n  fragment && fragment.m(target, anchor);\n  if (!customElement) {\n    add_render_callback(() => {\n      const new_on_destroy = on_mount.map(run).filter(is_function);\n      if (on_destroy) {\n        on_destroy.push(...new_on_destroy);\n      } else {\n        run_all(new_on_destroy);\n      }\n      component.$$.on_mount = [];\n    });\n  }\n  after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n  const $$ = component.$$;\n  if ($$.fragment !== null) {\n    run_all($$.on_destroy);\n    $$.fragment && $$.fragment.d(detaching);\n    $$.on_destroy = $$.fragment = null;\n    $$.ctx = [];\n  }\n}\nfunction make_dirty(component, i) {\n  if (component.$$.dirty[0] === -1) {\n    dirty_components.push(component);\n    schedule_update();\n    component.$$.dirty.fill(0);\n  }\n  component.$$.dirty[i / 31 | 0] |= 1 << i % 31;\n}\nfunction init(component, options, instance2, create_fragment2, not_equal, props, append_styles, dirty = [-1]) {\n  const parent_component = current_component;\n  set_current_component(component);\n  const $$ = component.$$ = {\n    fragment: null,\n    ctx: null,\n    props,\n    update: noop,\n    not_equal,\n    bound: blank_object(),\n    on_mount: [],\n    on_destroy: [],\n    on_disconnect: [],\n    before_update: [],\n    after_update: [],\n    context: new Map(parent_component ? parent_component.$$.context : []),\n    callbacks: blank_object(),\n    dirty,\n    skip_bound: false,\n    root: options.target || parent_component.$$.root\n  };\n  append_styles && append_styles($$.root);\n  let ready = false;\n  $$.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {\n    const value = rest.length ? rest[0] : ret;\n    if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n      if (!$$.skip_bound && $$.bound[i])\n        $$.bound[i](value);\n      if (ready)\n        make_dirty(component, i);\n    }\n    return ret;\n  }) : [];\n  $$.update();\n  ready = true;\n  run_all($$.before_update);\n  $$.fragment = create_fragment2 ? create_fragment2($$.ctx) : false;\n  if (options.target) {\n    {\n      $$.fragment && $$.fragment.c();\n    }\n    mount_component(component, options.target, void 0, void 0);\n    flush();\n  }\n  set_current_component(parent_component);\n}\nclass SvelteComponent {\n  $destroy() {\n    destroy_component(this, 1);\n    this.$destroy = noop;\n  }\n  $on(type, callback) {\n    const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n    callbacks.push(callback);\n    return () => {\n      const index = callbacks.indexOf(callback);\n      if (index !== -1)\n        callbacks.splice(index, 1);\n    };\n  }\n  $set($$props) {\n    if (this.$$set && !is_empty($$props)) {\n      this.$$.skip_bound = true;\n      this.$$set($$props);\n      this.$$.skip_bound = false;\n    }\n  }\n}\nconst allGroups = [\n  [-1, \"\\u2728\", \"custom\"],\n  [0, \"\\u{1F600}\", \"smileys-emotion\"],\n  [1, \"\\u{1F44B}\", \"people-body\"],\n  [3, \"\\u{1F431}\", \"animals-nature\"],\n  [4, \"\\u{1F34E}\", \"food-drink\"],\n  [5, \"\\u{1F3E0}\\uFE0F\", \"travel-places\"],\n  [6, \"\\u26BD\", \"activities\"],\n  [7, \"\\u{1F4DD}\", \"objects\"],\n  [8, \"\\u26D4\\uFE0F\", \"symbols\"],\n  [9, \"\\u{1F3C1}\", \"flags\"]\n].map(([id, emoji, name]) => ({ id, emoji, name }));\nconst groups = allGroups.slice(1);\nconst customGroup = allGroups[0];\nconst MIN_SEARCH_TEXT_LENGTH = 2;\nconst NUM_SKIN_TONES = 6;\nconst rIC = typeof requestIdleCallback === \"function\" ? requestIdleCallback : setTimeout;\nfunction hasZwj(emoji) {\n  return emoji.unicode.includes(\"\\u200D\");\n}\nconst versionsAndTestEmoji = {\n  \"\\u{1FAE0}\": 14,\n  \"\\u{1F972}\": 13.1,\n  \"\\u{1F97B}\": 12.1,\n  \"\\u{1F970}\": 11,\n  \"\\u{1F929}\": 5,\n  \"\\u{1F471}\\u200D\\u2640\\uFE0F\": 4,\n  \"\\u{1F923}\": 3,\n  \"\\u{1F441}\\uFE0F\\u200D\\u{1F5E8}\\uFE0F\": 2,\n  \"\\u{1F600}\": 1,\n  \"\\u{1F610}\\uFE0F\": 0.7,\n  \"\\u{1F603}\": 0.6\n};\nconst TIMEOUT_BEFORE_LOADING_MESSAGE = 1e3;\nconst DEFAULT_SKIN_TONE_EMOJI = \"\\u{1F590}\\uFE0F\";\nconst DEFAULT_NUM_COLUMNS = 8;\nconst MOST_COMMONLY_USED_EMOJI = [\n  \"\\u{1F60A}\",\n  \"\\u{1F612}\",\n  \"\\u2665\\uFE0F\",\n  \"\\u{1F44D}\\uFE0F\",\n  \"\\u{1F60D}\",\n  \"\\u{1F602}\",\n  \"\\u{1F62D}\",\n  \"\\u263A\\uFE0F\",\n  \"\\u{1F614}\",\n  \"\\u{1F629}\",\n  \"\\u{1F60F}\",\n  \"\\u{1F495}\",\n  \"\\u{1F64C}\",\n  \"\\u{1F618}\"\n];\nconst FONT_FAMILY = '\"Twemoji Mozilla\",\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\",\"EmojiOne Color\",\"Android Emoji\",sans-serif';\nconst DEFAULT_CATEGORY_SORTING = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nconst getTextFeature = (text2, color) => {\n  const canvas = document.createElement(\"canvas\");\n  canvas.width = canvas.height = 1;\n  const ctx = canvas.getContext(\"2d\");\n  ctx.textBaseline = \"top\";\n  ctx.font = `100px ${FONT_FAMILY}`;\n  ctx.fillStyle = color;\n  ctx.scale(0.01, 0.01);\n  ctx.fillText(text2, 0, 0);\n  return ctx.getImageData(0, 0, 1, 1).data;\n};\nconst compareFeatures = (feature1, feature2) => {\n  const feature1Str = [...feature1].join(\",\");\n  const feature2Str = [...feature2].join(\",\");\n  return feature1Str === feature2Str && !feature1Str.startsWith(\"0,0,0,\");\n};\nfunction testColorEmojiSupported(text2) {\n  const feature1 = getTextFeature(text2, \"#000\");\n  const feature2 = getTextFeature(text2, \"#fff\");\n  return feature1 && feature2 && compareFeatures(feature1, feature2);\n}\nfunction determineEmojiSupportLevel() {\n  const entries = Object.entries(versionsAndTestEmoji);\n  try {\n    for (const [emoji, version2] of entries) {\n      if (testColorEmojiSupported(emoji)) {\n        return version2;\n      }\n    }\n  } catch (e) {\n  } finally {\n  }\n  return entries[0][1];\n}\nconst emojiSupportLevelPromise = new Promise((resolve2) => rIC(() => resolve2(determineEmojiSupportLevel())));\nconst supportedZwjEmojis = /* @__PURE__ */ new Map();\nconst VARIATION_SELECTOR = \"\\uFE0F\";\nconst SKINTONE_MODIFIER = \"\\uD83C\";\nconst ZWJ = \"\\u200D\";\nconst LIGHT_SKIN_TONE = 127995;\nconst LIGHT_SKIN_TONE_MODIFIER = 57339;\nfunction applySkinTone(str, skinTone) {\n  if (skinTone === 0) {\n    return str;\n  }\n  const zwjIndex = str.indexOf(ZWJ);\n  if (zwjIndex !== -1) {\n    return str.substring(0, zwjIndex) + String.fromCodePoint(LIGHT_SKIN_TONE + skinTone - 1) + str.substring(zwjIndex);\n  }\n  if (str.endsWith(VARIATION_SELECTOR)) {\n    str = str.substring(0, str.length - 1);\n  }\n  return str + SKINTONE_MODIFIER + String.fromCodePoint(LIGHT_SKIN_TONE_MODIFIER + skinTone - 1);\n}\nfunction halt(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction incrementOrDecrement(decrement, val, arr) {\n  val += decrement ? -1 : 1;\n  if (val < 0) {\n    val = arr.length - 1;\n  } else if (val >= arr.length) {\n    val = 0;\n  }\n  return val;\n}\nfunction uniqBy(arr, func) {\n  const set2 = /* @__PURE__ */ new Set();\n  const res = [];\n  for (const item of arr) {\n    const key = func(item);\n    if (!set2.has(key)) {\n      set2.add(key);\n      res.push(item);\n    }\n  }\n  return res;\n}\nfunction summarizeEmojisForUI(emojis, emojiSupportLevel) {\n  const toSimpleSkinsMap = (skins) => {\n    const res = {};\n    for (const skin of skins) {\n      if (typeof skin.tone === \"number\" && skin.version <= emojiSupportLevel) {\n        res[skin.tone] = skin.unicode;\n      }\n    }\n    return res;\n  };\n  return emojis.map(({ unicode, skins, shortcodes, url, name, category }) => ({\n    unicode,\n    name,\n    shortcodes,\n    url,\n    category,\n    id: unicode || name,\n    skins: skins && toSimpleSkinsMap(skins),\n    title: (shortcodes || []).join(\", \")\n  }));\n}\nconst rAF = requestAnimationFrame;\nlet resizeObserverSupported = typeof ResizeObserver === \"function\";\nfunction calculateWidth(node, onUpdate) {\n  let resizeObserver;\n  if (resizeObserverSupported) {\n    resizeObserver = new ResizeObserver((entries) => onUpdate(entries[0].contentRect.width));\n    resizeObserver.observe(node);\n  } else {\n    rAF(() => onUpdate(node.getBoundingClientRect().width));\n  }\n  return {\n    destroy() {\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    }\n  };\n}\nfunction calculateTextWidth(node) {\n  {\n    const range = document.createRange();\n    range.selectNode(node.firstChild);\n    return range.getBoundingClientRect().width;\n  }\n}\nlet baselineEmojiWidth;\nfunction checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode) {\n  for (const emoji of zwjEmojisToCheck) {\n    const domNode = emojiToDomNode(emoji);\n    const emojiWidth = calculateTextWidth(domNode);\n    if (typeof baselineEmojiWidth === \"undefined\") {\n      baselineEmojiWidth = calculateTextWidth(baselineEmoji);\n    }\n    const supported = emojiWidth / 1.8 < baselineEmojiWidth;\n    supportedZwjEmojis.set(emoji.unicode, supported);\n  }\n}\nfunction uniq(arr) {\n  return uniqBy(arr, (_) => _);\n}\nconst { Map: Map_1 } = globals;\nfunction get_each_context(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[63] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction get_each_context_1(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[66] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction get_each_context_2(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[63] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction get_each_context_3(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[69] = list2[i];\n  return child_ctx;\n}\nfunction get_each_context_4(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[72] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction create_each_block_4(key_1, ctx) {\n  let div;\n  let t_value = ctx[72] + \"\";\n  let t;\n  let div_id_value;\n  let div_class_value;\n  let div_aria_selected_value;\n  let div_title_value;\n  let div_aria_label_value;\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      div = element(\"div\");\n      t = text(t_value);\n      attr(div, \"id\", div_id_value = \"skintone-\" + ctx[65]);\n      attr(div, \"class\", div_class_value = \"emoji hide-focus \" + (ctx[65] === ctx[20] ? \"active\" : \"\"));\n      attr(div, \"aria-selected\", div_aria_selected_value = ctx[65] === ctx[20]);\n      attr(div, \"role\", \"option\");\n      attr(div, \"title\", div_title_value = ctx[0].skinTones[ctx[65]]);\n      attr(div, \"tabindex\", \"-1\");\n      attr(div, \"aria-label\", div_aria_label_value = ctx[0].skinTones[ctx[65]]);\n      this.first = div;\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      append(div, t);\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty[0] & 512 && t_value !== (t_value = ctx[72] + \"\"))\n        set_data(t, t_value);\n      if (dirty[0] & 512 && div_id_value !== (div_id_value = \"skintone-\" + ctx[65])) {\n        attr(div, \"id\", div_id_value);\n      }\n      if (dirty[0] & 1049088 && div_class_value !== (div_class_value = \"emoji hide-focus \" + (ctx[65] === ctx[20] ? \"active\" : \"\"))) {\n        attr(div, \"class\", div_class_value);\n      }\n      if (dirty[0] & 1049088 && div_aria_selected_value !== (div_aria_selected_value = ctx[65] === ctx[20])) {\n        attr(div, \"aria-selected\", div_aria_selected_value);\n      }\n      if (dirty[0] & 513 && div_title_value !== (div_title_value = ctx[0].skinTones[ctx[65]])) {\n        attr(div, \"title\", div_title_value);\n      }\n      if (dirty[0] & 513 && div_aria_label_value !== (div_aria_label_value = ctx[0].skinTones[ctx[65]])) {\n        attr(div, \"aria-label\", div_aria_label_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div);\n    }\n  };\n}\nfunction create_each_block_3(key_1, ctx) {\n  let button;\n  let div;\n  let t_value = ctx[69].emoji + \"\";\n  let t;\n  let button_aria_controls_value;\n  let button_aria_label_value;\n  let button_aria_selected_value;\n  let button_title_value;\n  let mounted;\n  let dispose;\n  function click_handler() {\n    return ctx[49](ctx[69]);\n  }\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      button = element(\"button\");\n      div = element(\"div\");\n      t = text(t_value);\n      attr(div, \"class\", \"nav-emoji emoji\");\n      attr(button, \"role\", \"tab\");\n      attr(button, \"class\", \"nav-button\");\n      attr(button, \"aria-controls\", button_aria_controls_value = \"tab-\" + ctx[69].id);\n      attr(button, \"aria-label\", button_aria_label_value = ctx[0].categories[ctx[69].name]);\n      attr(button, \"aria-selected\", button_aria_selected_value = !ctx[4] && ctx[13].id === ctx[69].id);\n      attr(button, \"title\", button_title_value = ctx[0].categories[ctx[69].name]);\n      this.first = button;\n    },\n    m(target, anchor) {\n      insert(target, button, anchor);\n      append(button, div);\n      append(div, t);\n      if (!mounted) {\n        dispose = listen(button, \"click\", click_handler);\n        mounted = true;\n      }\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty[0] & 4096 && t_value !== (t_value = ctx[69].emoji + \"\"))\n        set_data(t, t_value);\n      if (dirty[0] & 4096 && button_aria_controls_value !== (button_aria_controls_value = \"tab-\" + ctx[69].id)) {\n        attr(button, \"aria-controls\", button_aria_controls_value);\n      }\n      if (dirty[0] & 4097 && button_aria_label_value !== (button_aria_label_value = ctx[0].categories[ctx[69].name])) {\n        attr(button, \"aria-label\", button_aria_label_value);\n      }\n      if (dirty[0] & 12304 && button_aria_selected_value !== (button_aria_selected_value = !ctx[4] && ctx[13].id === ctx[69].id)) {\n        attr(button, \"aria-selected\", button_aria_selected_value);\n      }\n      if (dirty[0] & 4097 && button_title_value !== (button_title_value = ctx[0].categories[ctx[69].name])) {\n        attr(button, \"title\", button_title_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(button);\n      mounted = false;\n      dispose();\n    }\n  };\n}\nfunction create_else_block_1(ctx) {\n  let img;\n  let img_src_value;\n  return {\n    c() {\n      img = element(\"img\");\n      attr(img, \"class\", \"custom-emoji\");\n      if (!src_url_equal(img.src, img_src_value = ctx[63].url))\n        attr(img, \"src\", img_src_value);\n      attr(img, \"alt\", \"\");\n      attr(img, \"loading\", \"lazy\");\n    },\n    m(target, anchor) {\n      insert(target, img, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 32768 && !src_url_equal(img.src, img_src_value = ctx2[63].url)) {\n        attr(img, \"src\", img_src_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(img);\n    }\n  };\n}\nfunction create_if_block_1(ctx) {\n  let t_value = ctx[27](ctx[63], ctx[8]) + \"\";\n  let t;\n  return {\n    c() {\n      t = text(t_value);\n    },\n    m(target, anchor) {\n      insert(target, t, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 33024 && t_value !== (t_value = ctx2[27](ctx2[63], ctx2[8]) + \"\"))\n        set_data(t, t_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(t);\n    }\n  };\n}\nfunction create_each_block_2(key_1, ctx) {\n  let button;\n  let button_role_value;\n  let button_aria_selected_value;\n  let button_aria_label_value;\n  let button_title_value;\n  let button_class_value;\n  let button_id_value;\n  function select_block_type(ctx2, dirty) {\n    if (ctx2[63].unicode)\n      return create_if_block_1;\n    return create_else_block_1;\n  }\n  let current_block_type = select_block_type(ctx);\n  let if_block = current_block_type(ctx);\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      button = element(\"button\");\n      if_block.c();\n      attr(button, \"role\", button_role_value = ctx[4] ? \"option\" : \"menuitem\");\n      attr(button, \"aria-selected\", button_aria_selected_value = ctx[4] ? ctx[65] == ctx[5] : \"\");\n      attr(button, \"aria-label\", button_aria_label_value = ctx[28](ctx[63], ctx[8]));\n      attr(button, \"title\", button_title_value = ctx[63].title);\n      attr(button, \"class\", button_class_value = \"emoji \" + (ctx[4] && ctx[65] === ctx[5] ? \"active\" : \"\"));\n      attr(button, \"id\", button_id_value = \"emo-\" + ctx[63].id);\n      this.first = button;\n    },\n    m(target, anchor) {\n      insert(target, button, anchor);\n      if_block.m(button, null);\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {\n        if_block.p(ctx, dirty);\n      } else {\n        if_block.d(1);\n        if_block = current_block_type(ctx);\n        if (if_block) {\n          if_block.c();\n          if_block.m(button, null);\n        }\n      }\n      if (dirty[0] & 16 && button_role_value !== (button_role_value = ctx[4] ? \"option\" : \"menuitem\")) {\n        attr(button, \"role\", button_role_value);\n      }\n      if (dirty[0] & 32816 && button_aria_selected_value !== (button_aria_selected_value = ctx[4] ? ctx[65] == ctx[5] : \"\")) {\n        attr(button, \"aria-selected\", button_aria_selected_value);\n      }\n      if (dirty[0] & 33024 && button_aria_label_value !== (button_aria_label_value = ctx[28](ctx[63], ctx[8]))) {\n        attr(button, \"aria-label\", button_aria_label_value);\n      }\n      if (dirty[0] & 32768 && button_title_value !== (button_title_value = ctx[63].title)) {\n        attr(button, \"title\", button_title_value);\n      }\n      if (dirty[0] & 32816 && button_class_value !== (button_class_value = \"emoji \" + (ctx[4] && ctx[65] === ctx[5] ? \"active\" : \"\"))) {\n        attr(button, \"class\", button_class_value);\n      }\n      if (dirty[0] & 32768 && button_id_value !== (button_id_value = \"emo-\" + ctx[63].id)) {\n        attr(button, \"id\", button_id_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(button);\n      if_block.d();\n    }\n  };\n}\nfunction create_each_block_1(key_1, ctx) {\n  let div0;\n  let t_value = (ctx[4] ? ctx[0].searchResultsLabel : ctx[66].category ? ctx[66].category : ctx[15].length > 1 ? ctx[0].categories.custom : ctx[0].categories[ctx[13].name]) + \"\";\n  let t;\n  let div0_id_value;\n  let div0_class_value;\n  let div1;\n  let each_blocks = [];\n  let each_1_lookup = new Map_1();\n  let div1_role_value;\n  let div1_aria_labelledby_value;\n  let div1_id_value;\n  let each_value_2 = ctx[66].emojis;\n  const get_key = (ctx2) => ctx2[63].id;\n  for (let i = 0; i < each_value_2.length; i += 1) {\n    let child_ctx = get_each_context_2(ctx, each_value_2, i);\n    let key = get_key(child_ctx);\n    each_1_lookup.set(key, each_blocks[i] = create_each_block_2(key, child_ctx));\n  }\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      div0 = element(\"div\");\n      t = text(t_value);\n      div1 = element(\"div\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      attr(div0, \"id\", div0_id_value = \"menu-label-\" + ctx[65]);\n      attr(div0, \"class\", div0_class_value = \"category \" + (ctx[15].length === 1 && ctx[15][0].category === \"\" ? \"gone\" : \"\"));\n      attr(div0, \"aria-hidden\", \"true\");\n      attr(div1, \"class\", \"emoji-menu\");\n      attr(div1, \"role\", div1_role_value = ctx[4] ? \"listbox\" : \"menu\");\n      attr(div1, \"aria-labelledby\", div1_aria_labelledby_value = \"menu-label-\" + ctx[65]);\n      attr(div1, \"id\", div1_id_value = ctx[4] ? \"search-results\" : \"\");\n      this.first = div0;\n    },\n    m(target, anchor) {\n      insert(target, div0, anchor);\n      append(div0, t);\n      insert(target, div1, anchor);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].m(div1, null);\n      }\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty[0] & 40977 && t_value !== (t_value = (ctx[4] ? ctx[0].searchResultsLabel : ctx[66].category ? ctx[66].category : ctx[15].length > 1 ? ctx[0].categories.custom : ctx[0].categories[ctx[13].name]) + \"\"))\n        set_data(t, t_value);\n      if (dirty[0] & 32768 && div0_id_value !== (div0_id_value = \"menu-label-\" + ctx[65])) {\n        attr(div0, \"id\", div0_id_value);\n      }\n      if (dirty[0] & 32768 && div0_class_value !== (div0_class_value = \"category \" + (ctx[15].length === 1 && ctx[15][0].category === \"\" ? \"gone\" : \"\"))) {\n        attr(div0, \"class\", div0_class_value);\n      }\n      if (dirty[0] & 402686256) {\n        each_value_2 = ctx[66].emojis;\n        each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_2, each_1_lookup, div1, destroy_block, create_each_block_2, null, get_each_context_2);\n      }\n      if (dirty[0] & 16 && div1_role_value !== (div1_role_value = ctx[4] ? \"listbox\" : \"menu\")) {\n        attr(div1, \"role\", div1_role_value);\n      }\n      if (dirty[0] & 32768 && div1_aria_labelledby_value !== (div1_aria_labelledby_value = \"menu-label-\" + ctx[65])) {\n        attr(div1, \"aria-labelledby\", div1_aria_labelledby_value);\n      }\n      if (dirty[0] & 16 && div1_id_value !== (div1_id_value = ctx[4] ? \"search-results\" : \"\")) {\n        attr(div1, \"id\", div1_id_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div0);\n      if (detaching)\n        detach(div1);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].d();\n      }\n    }\n  };\n}\nfunction create_else_block(ctx) {\n  let img;\n  let img_src_value;\n  return {\n    c() {\n      img = element(\"img\");\n      attr(img, \"class\", \"custom-emoji\");\n      if (!src_url_equal(img.src, img_src_value = ctx[63].url))\n        attr(img, \"src\", img_src_value);\n      attr(img, \"alt\", \"\");\n      attr(img, \"loading\", \"lazy\");\n    },\n    m(target, anchor) {\n      insert(target, img, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 1024 && !src_url_equal(img.src, img_src_value = ctx2[63].url)) {\n        attr(img, \"src\", img_src_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(img);\n    }\n  };\n}\nfunction create_if_block(ctx) {\n  let t_value = ctx[27](ctx[63], ctx[8]) + \"\";\n  let t;\n  return {\n    c() {\n      t = text(t_value);\n    },\n    m(target, anchor) {\n      insert(target, t, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 1280 && t_value !== (t_value = ctx2[27](ctx2[63], ctx2[8]) + \"\"))\n        set_data(t, t_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(t);\n    }\n  };\n}\nfunction create_each_block(key_1, ctx) {\n  let button;\n  let button_aria_label_value;\n  let button_title_value;\n  let button_id_value;\n  function select_block_type_1(ctx2, dirty) {\n    if (ctx2[63].unicode)\n      return create_if_block;\n    return create_else_block;\n  }\n  let current_block_type = select_block_type_1(ctx);\n  let if_block = current_block_type(ctx);\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      button = element(\"button\");\n      if_block.c();\n      attr(button, \"role\", \"menuitem\");\n      attr(button, \"aria-label\", button_aria_label_value = ctx[28](ctx[63], ctx[8]));\n      attr(button, \"title\", button_title_value = ctx[63].title);\n      attr(button, \"class\", \"emoji\");\n      attr(button, \"id\", button_id_value = \"fav-\" + ctx[63].id);\n      this.first = button;\n    },\n    m(target, anchor) {\n      insert(target, button, anchor);\n      if_block.m(button, null);\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block) {\n        if_block.p(ctx, dirty);\n      } else {\n        if_block.d(1);\n        if_block = current_block_type(ctx);\n        if (if_block) {\n          if_block.c();\n          if_block.m(button, null);\n        }\n      }\n      if (dirty[0] & 1280 && button_aria_label_value !== (button_aria_label_value = ctx[28](ctx[63], ctx[8]))) {\n        attr(button, \"aria-label\", button_aria_label_value);\n      }\n      if (dirty[0] & 1024 && button_title_value !== (button_title_value = ctx[63].title)) {\n        attr(button, \"title\", button_title_value);\n      }\n      if (dirty[0] & 1024 && button_id_value !== (button_id_value = \"fav-\" + ctx[63].id)) {\n        attr(button, \"id\", button_id_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(button);\n      if_block.d();\n    }\n  };\n}\nfunction create_fragment(ctx) {\n  let section;\n  let div0;\n  let div4;\n  let div1;\n  let input;\n  let input_placeholder_value;\n  let input_aria_expanded_value;\n  let input_aria_activedescendant_value;\n  let label;\n  let t0_value = ctx[0].searchLabel + \"\";\n  let t0;\n  let span0;\n  let t1_value = ctx[0].searchDescription + \"\";\n  let t1;\n  let div2;\n  let button0;\n  let t2;\n  let button0_class_value;\n  let div2_class_value;\n  let span1;\n  let t3_value = ctx[0].skinToneDescription + \"\";\n  let t3;\n  let div3;\n  let each_blocks_3 = [];\n  let each0_lookup = new Map_1();\n  let div3_class_value;\n  let div3_aria_label_value;\n  let div3_aria_activedescendant_value;\n  let div3_aria_hidden_value;\n  let div5;\n  let each_blocks_2 = [];\n  let each1_lookup = new Map_1();\n  let div5_aria_label_value;\n  let div7;\n  let div6;\n  let div8;\n  let t4;\n  let div8_class_value;\n  let div10;\n  let div9;\n  let each_blocks_1 = [];\n  let each2_lookup = new Map_1();\n  let div10_class_value;\n  let div10_role_value;\n  let div10_aria_label_value;\n  let div10_id_value;\n  let div11;\n  let each_blocks = [];\n  let each3_lookup = new Map_1();\n  let div11_class_value;\n  let div11_aria_label_value;\n  let button1;\n  let section_aria_label_value;\n  let mounted;\n  let dispose;\n  let each_value_4 = ctx[9];\n  const get_key = (ctx2) => ctx2[72];\n  for (let i = 0; i < each_value_4.length; i += 1) {\n    let child_ctx = get_each_context_4(ctx, each_value_4, i);\n    let key = get_key(child_ctx);\n    each0_lookup.set(key, each_blocks_3[i] = create_each_block_4(key, child_ctx));\n  }\n  let each_value_3 = ctx[12];\n  const get_key_1 = (ctx2) => ctx2[69].id;\n  for (let i = 0; i < each_value_3.length; i += 1) {\n    let child_ctx = get_each_context_3(ctx, each_value_3, i);\n    let key = get_key_1(child_ctx);\n    each1_lookup.set(key, each_blocks_2[i] = create_each_block_3(key, child_ctx));\n  }\n  let each_value_1 = ctx[15];\n  const get_key_2 = (ctx2) => ctx2[66].category;\n  for (let i = 0; i < each_value_1.length; i += 1) {\n    let child_ctx = get_each_context_1(ctx, each_value_1, i);\n    let key = get_key_2(child_ctx);\n    each2_lookup.set(key, each_blocks_1[i] = create_each_block_1(key, child_ctx));\n  }\n  let each_value = ctx[10];\n  const get_key_3 = (ctx2) => ctx2[63].id;\n  for (let i = 0; i < each_value.length; i += 1) {\n    let child_ctx = get_each_context(ctx, each_value, i);\n    let key = get_key_3(child_ctx);\n    each3_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));\n  }\n  return {\n    c() {\n      section = element(\"section\");\n      div0 = element(\"div\");\n      div4 = element(\"div\");\n      div1 = element(\"div\");\n      input = element(\"input\");\n      label = element(\"label\");\n      t0 = text(t0_value);\n      span0 = element(\"span\");\n      t1 = text(t1_value);\n      div2 = element(\"div\");\n      button0 = element(\"button\");\n      t2 = text(ctx[21]);\n      span1 = element(\"span\");\n      t3 = text(t3_value);\n      div3 = element(\"div\");\n      for (let i = 0; i < each_blocks_3.length; i += 1) {\n        each_blocks_3[i].c();\n      }\n      div5 = element(\"div\");\n      for (let i = 0; i < each_blocks_2.length; i += 1) {\n        each_blocks_2[i].c();\n      }\n      div7 = element(\"div\");\n      div6 = element(\"div\");\n      div8 = element(\"div\");\n      t4 = text(ctx[18]);\n      div10 = element(\"div\");\n      div9 = element(\"div\");\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].c();\n      }\n      div11 = element(\"div\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      button1 = element(\"button\");\n      button1.textContent = \"\\u{1F600}\";\n      attr(div0, \"class\", \"pad-top\");\n      attr(input, \"id\", \"search\");\n      attr(input, \"class\", \"search\");\n      attr(input, \"type\", \"search\");\n      attr(input, \"role\", \"combobox\");\n      attr(input, \"enterkeyhint\", \"search\");\n      attr(input, \"placeholder\", input_placeholder_value = ctx[0].searchLabel);\n      attr(input, \"autocapitalize\", \"none\");\n      attr(input, \"autocomplete\", \"off\");\n      attr(input, \"spellcheck\", \"true\");\n      attr(input, \"aria-expanded\", input_aria_expanded_value = !!(ctx[4] && ctx[1].length));\n      attr(input, \"aria-controls\", \"search-results\");\n      attr(input, \"aria-describedby\", \"search-description\");\n      attr(input, \"aria-autocomplete\", \"list\");\n      attr(input, \"aria-activedescendant\", input_aria_activedescendant_value = ctx[26] ? `emo-${ctx[26]}` : \"\");\n      attr(label, \"class\", \"sr-only\");\n      attr(label, \"for\", \"search\");\n      attr(span0, \"id\", \"search-description\");\n      attr(span0, \"class\", \"sr-only\");\n      attr(div1, \"class\", \"search-wrapper\");\n      attr(button0, \"id\", \"skintone-button\");\n      attr(button0, \"class\", button0_class_value = \"emoji \" + (ctx[6] ? \"hide-focus\" : \"\"));\n      attr(button0, \"aria-label\", ctx[23]);\n      attr(button0, \"title\", ctx[23]);\n      attr(button0, \"aria-describedby\", \"skintone-description\");\n      attr(button0, \"aria-haspopup\", \"listbox\");\n      attr(button0, \"aria-expanded\", ctx[6]);\n      attr(button0, \"aria-controls\", \"skintone-list\");\n      attr(div2, \"class\", div2_class_value = \"skintone-button-wrapper \" + (ctx[19] ? \"expanded\" : \"\"));\n      attr(span1, \"id\", \"skintone-description\");\n      attr(span1, \"class\", \"sr-only\");\n      attr(div3, \"id\", \"skintone-list\");\n      attr(div3, \"class\", div3_class_value = \"skintone-list \" + (ctx[6] ? \"\" : \"hidden no-animate\"));\n      set_style(div3, \"transform\", \"translateY(\" + (ctx[6] ? 0 : \"calc(-1 * var(--num-skintones) * var(--total-emoji-size))\") + \")\");\n      attr(div3, \"role\", \"listbox\");\n      attr(div3, \"aria-label\", div3_aria_label_value = ctx[0].skinTonesLabel);\n      attr(div3, \"aria-activedescendant\", div3_aria_activedescendant_value = \"skintone-\" + ctx[20]);\n      attr(div3, \"aria-hidden\", div3_aria_hidden_value = !ctx[6]);\n      attr(div4, \"class\", \"search-row\");\n      attr(div5, \"class\", \"nav\");\n      attr(div5, \"role\", \"tablist\");\n      set_style(div5, \"grid-template-columns\", \"repeat(\" + ctx[12].length + \", 1fr)\");\n      attr(div5, \"aria-label\", div5_aria_label_value = ctx[0].categoriesLabel);\n      attr(div6, \"class\", \"indicator\");\n      set_style(div6, \"transform\", \"translateX(\" + (ctx[24] ? -1 : 1) * ctx[11] * 100 + \"%)\");\n      attr(div7, \"class\", \"indicator-wrapper\");\n      attr(div8, \"class\", div8_class_value = \"message \" + (ctx[18] ? \"\" : \"gone\"));\n      attr(div8, \"role\", \"alert\");\n      attr(div8, \"aria-live\", \"polite\");\n      attr(div10, \"class\", div10_class_value = \"tabpanel \" + (!ctx[14] || ctx[18] ? \"gone\" : \"\"));\n      attr(div10, \"role\", div10_role_value = ctx[4] ? \"region\" : \"tabpanel\");\n      attr(div10, \"aria-label\", div10_aria_label_value = ctx[4] ? ctx[0].searchResultsLabel : ctx[0].categories[ctx[13].name]);\n      attr(div10, \"id\", div10_id_value = ctx[4] ? \"\" : `tab-${ctx[13].id}`);\n      attr(div10, \"tabindex\", \"0\");\n      attr(div11, \"class\", div11_class_value = \"favorites emoji-menu \" + (ctx[18] ? \"gone\" : \"\"));\n      attr(div11, \"role\", \"menu\");\n      attr(div11, \"aria-label\", div11_aria_label_value = ctx[0].favoritesLabel);\n      set_style(div11, \"padding-inline-end\", ctx[25] + \"px\");\n      attr(button1, \"aria-hidden\", \"true\");\n      attr(button1, \"tabindex\", \"-1\");\n      attr(button1, \"class\", \"abs-pos hidden emoji\");\n      attr(section, \"class\", \"picker\");\n      attr(section, \"aria-label\", section_aria_label_value = ctx[0].regionLabel);\n      attr(section, \"style\", ctx[22]);\n    },\n    m(target, anchor) {\n      insert(target, section, anchor);\n      append(section, div0);\n      append(section, div4);\n      append(div4, div1);\n      append(div1, input);\n      set_input_value(input, ctx[2]);\n      append(div1, label);\n      append(label, t0);\n      append(div1, span0);\n      append(span0, t1);\n      append(div4, div2);\n      append(div2, button0);\n      append(button0, t2);\n      append(div4, span1);\n      append(span1, t3);\n      append(div4, div3);\n      for (let i = 0; i < each_blocks_3.length; i += 1) {\n        each_blocks_3[i].m(div3, null);\n      }\n      ctx[48](div3);\n      append(section, div5);\n      for (let i = 0; i < each_blocks_2.length; i += 1) {\n        each_blocks_2[i].m(div5, null);\n      }\n      append(section, div7);\n      append(div7, div6);\n      append(section, div8);\n      append(div8, t4);\n      append(section, div10);\n      append(div10, div9);\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].m(div9, null);\n      }\n      ctx[50](div10);\n      append(section, div11);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].m(div11, null);\n      }\n      append(section, button1);\n      ctx[51](button1);\n      ctx[52](section);\n      if (!mounted) {\n        dispose = [\n          listen(input, \"input\", ctx[47]),\n          listen(input, \"keydown\", ctx[30]),\n          listen(button0, \"click\", ctx[35]),\n          listen(div3, \"focusout\", ctx[38]),\n          listen(div3, \"click\", ctx[34]),\n          listen(div3, \"keydown\", ctx[36]),\n          listen(div3, \"keyup\", ctx[37]),\n          listen(div5, \"keydown\", ctx[32]),\n          action_destroyer(ctx[29].call(null, div9)),\n          listen(div10, \"click\", ctx[33]),\n          listen(div11, \"click\", ctx[33])\n        ];\n        mounted = true;\n      }\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 1 && input_placeholder_value !== (input_placeholder_value = ctx2[0].searchLabel)) {\n        attr(input, \"placeholder\", input_placeholder_value);\n      }\n      if (dirty[0] & 18 && input_aria_expanded_value !== (input_aria_expanded_value = !!(ctx2[4] && ctx2[1].length))) {\n        attr(input, \"aria-expanded\", input_aria_expanded_value);\n      }\n      if (dirty[0] & 67108864 && input_aria_activedescendant_value !== (input_aria_activedescendant_value = ctx2[26] ? `emo-${ctx2[26]}` : \"\")) {\n        attr(input, \"aria-activedescendant\", input_aria_activedescendant_value);\n      }\n      if (dirty[0] & 4) {\n        set_input_value(input, ctx2[2]);\n      }\n      if (dirty[0] & 1 && t0_value !== (t0_value = ctx2[0].searchLabel + \"\"))\n        set_data(t0, t0_value);\n      if (dirty[0] & 1 && t1_value !== (t1_value = ctx2[0].searchDescription + \"\"))\n        set_data(t1, t1_value);\n      if (dirty[0] & 2097152)\n        set_data(t2, ctx2[21]);\n      if (dirty[0] & 64 && button0_class_value !== (button0_class_value = \"emoji \" + (ctx2[6] ? \"hide-focus\" : \"\"))) {\n        attr(button0, \"class\", button0_class_value);\n      }\n      if (dirty[0] & 8388608) {\n        attr(button0, \"aria-label\", ctx2[23]);\n      }\n      if (dirty[0] & 8388608) {\n        attr(button0, \"title\", ctx2[23]);\n      }\n      if (dirty[0] & 64) {\n        attr(button0, \"aria-expanded\", ctx2[6]);\n      }\n      if (dirty[0] & 524288 && div2_class_value !== (div2_class_value = \"skintone-button-wrapper \" + (ctx2[19] ? \"expanded\" : \"\"))) {\n        attr(div2, \"class\", div2_class_value);\n      }\n      if (dirty[0] & 1 && t3_value !== (t3_value = ctx2[0].skinToneDescription + \"\"))\n        set_data(t3, t3_value);\n      if (dirty[0] & 1049089) {\n        each_value_4 = ctx2[9];\n        each_blocks_3 = update_keyed_each(each_blocks_3, dirty, get_key, 1, ctx2, each_value_4, each0_lookup, div3, destroy_block, create_each_block_4, null, get_each_context_4);\n      }\n      if (dirty[0] & 64 && div3_class_value !== (div3_class_value = \"skintone-list \" + (ctx2[6] ? \"\" : \"hidden no-animate\"))) {\n        attr(div3, \"class\", div3_class_value);\n      }\n      if (dirty[0] & 64) {\n        set_style(div3, \"transform\", \"translateY(\" + (ctx2[6] ? 0 : \"calc(-1 * var(--num-skintones) * var(--total-emoji-size))\") + \")\");\n      }\n      if (dirty[0] & 1 && div3_aria_label_value !== (div3_aria_label_value = ctx2[0].skinTonesLabel)) {\n        attr(div3, \"aria-label\", div3_aria_label_value);\n      }\n      if (dirty[0] & 1048576 && div3_aria_activedescendant_value !== (div3_aria_activedescendant_value = \"skintone-\" + ctx2[20])) {\n        attr(div3, \"aria-activedescendant\", div3_aria_activedescendant_value);\n      }\n      if (dirty[0] & 64 && div3_aria_hidden_value !== (div3_aria_hidden_value = !ctx2[6])) {\n        attr(div3, \"aria-hidden\", div3_aria_hidden_value);\n      }\n      if (dirty[0] & 12305 | dirty[1] & 1) {\n        each_value_3 = ctx2[12];\n        each_blocks_2 = update_keyed_each(each_blocks_2, dirty, get_key_1, 1, ctx2, each_value_3, each1_lookup, div5, destroy_block, create_each_block_3, null, get_each_context_3);\n      }\n      if (dirty[0] & 4096) {\n        set_style(div5, \"grid-template-columns\", \"repeat(\" + ctx2[12].length + \", 1fr)\");\n      }\n      if (dirty[0] & 1 && div5_aria_label_value !== (div5_aria_label_value = ctx2[0].categoriesLabel)) {\n        attr(div5, \"aria-label\", div5_aria_label_value);\n      }\n      if (dirty[0] & 16779264) {\n        set_style(div6, \"transform\", \"translateX(\" + (ctx2[24] ? -1 : 1) * ctx2[11] * 100 + \"%)\");\n      }\n      if (dirty[0] & 262144)\n        set_data(t4, ctx2[18]);\n      if (dirty[0] & 262144 && div8_class_value !== (div8_class_value = \"message \" + (ctx2[18] ? \"\" : \"gone\"))) {\n        attr(div8, \"class\", div8_class_value);\n      }\n      if (dirty[0] & 402694449) {\n        each_value_1 = ctx2[15];\n        each_blocks_1 = update_keyed_each(each_blocks_1, dirty, get_key_2, 1, ctx2, each_value_1, each2_lookup, div9, destroy_block, create_each_block_1, null, get_each_context_1);\n      }\n      if (dirty[0] & 278528 && div10_class_value !== (div10_class_value = \"tabpanel \" + (!ctx2[14] || ctx2[18] ? \"gone\" : \"\"))) {\n        attr(div10, \"class\", div10_class_value);\n      }\n      if (dirty[0] & 16 && div10_role_value !== (div10_role_value = ctx2[4] ? \"region\" : \"tabpanel\")) {\n        attr(div10, \"role\", div10_role_value);\n      }\n      if (dirty[0] & 8209 && div10_aria_label_value !== (div10_aria_label_value = ctx2[4] ? ctx2[0].searchResultsLabel : ctx2[0].categories[ctx2[13].name])) {\n        attr(div10, \"aria-label\", div10_aria_label_value);\n      }\n      if (dirty[0] & 8208 && div10_id_value !== (div10_id_value = ctx2[4] ? \"\" : `tab-${ctx2[13].id}`)) {\n        attr(div10, \"id\", div10_id_value);\n      }\n      if (dirty[0] & 402654464) {\n        each_value = ctx2[10];\n        each_blocks = update_keyed_each(each_blocks, dirty, get_key_3, 1, ctx2, each_value, each3_lookup, div11, destroy_block, create_each_block, null, get_each_context);\n      }\n      if (dirty[0] & 262144 && div11_class_value !== (div11_class_value = \"favorites emoji-menu \" + (ctx2[18] ? \"gone\" : \"\"))) {\n        attr(div11, \"class\", div11_class_value);\n      }\n      if (dirty[0] & 1 && div11_aria_label_value !== (div11_aria_label_value = ctx2[0].favoritesLabel)) {\n        attr(div11, \"aria-label\", div11_aria_label_value);\n      }\n      if (dirty[0] & 33554432) {\n        set_style(div11, \"padding-inline-end\", ctx2[25] + \"px\");\n      }\n      if (dirty[0] & 1 && section_aria_label_value !== (section_aria_label_value = ctx2[0].regionLabel)) {\n        attr(section, \"aria-label\", section_aria_label_value);\n      }\n      if (dirty[0] & 4194304) {\n        attr(section, \"style\", ctx2[22]);\n      }\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(section);\n      for (let i = 0; i < each_blocks_3.length; i += 1) {\n        each_blocks_3[i].d();\n      }\n      ctx[48](null);\n      for (let i = 0; i < each_blocks_2.length; i += 1) {\n        each_blocks_2[i].d();\n      }\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].d();\n      }\n      ctx[50](null);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].d();\n      }\n      ctx[51](null);\n      ctx[52](null);\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nfunction instance($$self, $$props, $$invalidate) {\n  let { skinToneEmoji } = $$props;\n  let { i18n } = $$props;\n  let { database } = $$props;\n  let { customEmoji } = $$props;\n  let { customCategorySorting } = $$props;\n  let initialLoad = true;\n  let currentEmojis = [];\n  let currentEmojisWithCategories = [];\n  let rawSearchText = \"\";\n  let searchText = \"\";\n  let rootElement;\n  let baselineEmoji;\n  let tabpanelElement;\n  let searchMode = false;\n  let activeSearchItem = -1;\n  let message;\n  let skinTonePickerExpanded = false;\n  let skinTonePickerExpandedAfterAnimation = false;\n  let skinToneDropdown;\n  let currentSkinTone = 0;\n  let activeSkinTone = 0;\n  let skinToneButtonText;\n  let pickerStyle;\n  let skinToneButtonLabel = \"\";\n  let skinTones = [];\n  let currentFavorites = [];\n  let defaultFavoriteEmojis;\n  let numColumns = DEFAULT_NUM_COLUMNS;\n  let isRtl = false;\n  let scrollbarWidth = 0;\n  let currentGroupIndex = 0;\n  let groups$1 = groups;\n  let currentGroup;\n  let databaseLoaded = false;\n  let activeSearchItemId;\n  const focus = (id) => {\n    rootElement.getRootNode().getElementById(id).focus();\n  };\n  const fireEvent = (name, detail) => {\n    rootElement.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));\n  };\n  const unicodeWithSkin = (emoji, currentSkinTone2) => currentSkinTone2 && emoji.skins && emoji.skins[currentSkinTone2] || emoji.unicode;\n  const labelWithSkin = (emoji, currentSkinTone2) => uniq([\n    emoji.name || unicodeWithSkin(emoji, currentSkinTone2),\n    ...emoji.shortcodes || []\n  ]).join(\", \");\n  const isSkinToneOption = (element2) => /^skintone-/.test(element2.id);\n  emojiSupportLevelPromise.then((level) => {\n    if (!level) {\n      $$invalidate(18, message = i18n.emojiUnsupportedMessage);\n    }\n  });\n  function calculateEmojiGridStyle(node) {\n    return calculateWidth(node, (width) => {\n      {\n        const style = getComputedStyle(rootElement);\n        const newNumColumns = parseInt(style.getPropertyValue(\"--num-columns\"), 10);\n        const newIsRtl = style.getPropertyValue(\"direction\") === \"rtl\";\n        const parentWidth = node.parentElement.getBoundingClientRect().width;\n        const newScrollbarWidth = parentWidth - width;\n        $$invalidate(46, numColumns = newNumColumns);\n        $$invalidate(25, scrollbarWidth = newScrollbarWidth);\n        $$invalidate(24, isRtl = newIsRtl);\n      }\n    });\n  }\n  function checkZwjSupportAndUpdate(zwjEmojisToCheck) {\n    const rootNode = rootElement.getRootNode();\n    const emojiToDomNode = (emoji) => rootNode.getElementById(`emo-${emoji.id}`);\n    checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode);\n    $$invalidate(1, currentEmojis = currentEmojis);\n  }\n  function isZwjSupported(emoji) {\n    return !emoji.unicode || !hasZwj(emoji) || supportedZwjEmojis.get(emoji.unicode);\n  }\n  async function filterEmojisByVersion(emojis) {\n    const emojiSupportLevel = await emojiSupportLevelPromise;\n    return emojis.filter(({ version: version2 }) => !version2 || version2 <= emojiSupportLevel);\n  }\n  async function summarizeEmojis(emojis) {\n    return summarizeEmojisForUI(emojis, await emojiSupportLevelPromise);\n  }\n  async function getEmojisByGroup(group) {\n    if (typeof group === \"undefined\") {\n      return [];\n    }\n    const emoji = group === -1 ? customEmoji : await database.getEmojiByGroup(group);\n    return summarizeEmojis(await filterEmojisByVersion(emoji));\n  }\n  async function getEmojisBySearchQuery(query) {\n    return summarizeEmojis(await filterEmojisByVersion(await database.getEmojiBySearchQuery(query)));\n  }\n  function onSearchKeydown(event) {\n    if (!searchMode || !currentEmojis.length) {\n      return;\n    }\n    const goToNextOrPrevious = (previous2) => {\n      halt(event);\n      $$invalidate(5, activeSearchItem = incrementOrDecrement(previous2, activeSearchItem, currentEmojis));\n    };\n    switch (event.key) {\n      case \"ArrowDown\":\n        return goToNextOrPrevious(false);\n      case \"ArrowUp\":\n        return goToNextOrPrevious(true);\n      case \"Enter\":\n        if (activeSearchItem !== -1) {\n          halt(event);\n          return clickEmoji(currentEmojis[activeSearchItem].id);\n        } else if (currentEmojis.length) {\n          $$invalidate(5, activeSearchItem = 0);\n        }\n    }\n  }\n  function onNavClick(group) {\n    $$invalidate(2, rawSearchText = \"\");\n    $$invalidate(44, searchText = \"\");\n    $$invalidate(5, activeSearchItem = -1);\n    $$invalidate(11, currentGroupIndex = groups$1.findIndex((_) => _.id === group.id));\n  }\n  function onNavKeydown(event) {\n    const { target, key } = event;\n    const doFocus = (el) => {\n      if (el) {\n        halt(event);\n        el.focus();\n      }\n    };\n    switch (key) {\n      case \"ArrowLeft\":\n        return doFocus(target.previousSibling);\n      case \"ArrowRight\":\n        return doFocus(target.nextSibling);\n      case \"Home\":\n        return doFocus(target.parentElement.firstChild);\n      case \"End\":\n        return doFocus(target.parentElement.lastChild);\n    }\n  }\n  async function clickEmoji(unicodeOrName) {\n    const emoji = await database.getEmojiByUnicodeOrName(unicodeOrName);\n    const emojiSummary = [...currentEmojis, ...currentFavorites].find((_) => _.id === unicodeOrName);\n    const skinTonedUnicode = emojiSummary.unicode && unicodeWithSkin(emojiSummary, currentSkinTone);\n    await database.incrementFavoriteEmojiCount(unicodeOrName);\n    fireEvent(\"emoji-click\", {\n      emoji,\n      skinTone: currentSkinTone,\n      ...skinTonedUnicode && { unicode: skinTonedUnicode },\n      ...emojiSummary.name && { name: emojiSummary.name }\n    });\n  }\n  async function onEmojiClick(event) {\n    const { target } = event;\n    if (!target.classList.contains(\"emoji\")) {\n      return;\n    }\n    halt(event);\n    const id = target.id.substring(4);\n    clickEmoji(id);\n  }\n  async function onSkinToneOptionsClick(event) {\n    const { target } = event;\n    if (!isSkinToneOption(target)) {\n      return;\n    }\n    halt(event);\n    const skinTone = parseInt(target.id.slice(9), 10);\n    $$invalidate(8, currentSkinTone = skinTone);\n    $$invalidate(6, skinTonePickerExpanded = false);\n    focus(\"skintone-button\");\n    fireEvent(\"skin-tone-change\", { skinTone });\n    database.setPreferredSkinTone(skinTone);\n  }\n  async function onClickSkinToneButton(event) {\n    $$invalidate(6, skinTonePickerExpanded = !skinTonePickerExpanded);\n    $$invalidate(20, activeSkinTone = currentSkinTone);\n    if (skinTonePickerExpanded) {\n      halt(event);\n      rAF(() => focus(`skintone-${activeSkinTone}`));\n    }\n  }\n  function onSkinToneOptionsKeydown(event) {\n    if (!skinTonePickerExpanded) {\n      return;\n    }\n    const changeActiveSkinTone = async (nextSkinTone) => {\n      halt(event);\n      $$invalidate(20, activeSkinTone = nextSkinTone);\n      await tick();\n      focus(`skintone-${activeSkinTone}`);\n    };\n    switch (event.key) {\n      case \"ArrowUp\":\n        return changeActiveSkinTone(incrementOrDecrement(true, activeSkinTone, skinTones));\n      case \"ArrowDown\":\n        return changeActiveSkinTone(incrementOrDecrement(false, activeSkinTone, skinTones));\n      case \"Home\":\n        return changeActiveSkinTone(0);\n      case \"End\":\n        return changeActiveSkinTone(skinTones.length - 1);\n      case \"Enter\":\n        return onSkinToneOptionsClick(event);\n      case \"Escape\":\n        halt(event);\n        $$invalidate(6, skinTonePickerExpanded = false);\n        return focus(\"skintone-button\");\n    }\n  }\n  function onSkinToneOptionsKeyup(event) {\n    if (!skinTonePickerExpanded) {\n      return;\n    }\n    switch (event.key) {\n      case \" \":\n        return onSkinToneOptionsClick(event);\n    }\n  }\n  async function onSkinToneOptionsFocusOut(event) {\n    const { relatedTarget } = event;\n    if (!relatedTarget || !isSkinToneOption(relatedTarget)) {\n      $$invalidate(6, skinTonePickerExpanded = false);\n    }\n  }\n  function input_input_handler() {\n    rawSearchText = this.value;\n    $$invalidate(2, rawSearchText);\n  }\n  function div3_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      skinToneDropdown = $$value;\n      $$invalidate(7, skinToneDropdown);\n    });\n  }\n  const click_handler = (group) => onNavClick(group);\n  function div10_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      tabpanelElement = $$value;\n      $$invalidate(3, tabpanelElement);\n    });\n  }\n  function button1_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      baselineEmoji = $$value;\n      $$invalidate(17, baselineEmoji);\n    });\n  }\n  function section_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      rootElement = $$value;\n      $$invalidate(16, rootElement);\n    });\n  }\n  $$self.$$set = ($$props2) => {\n    if (\"skinToneEmoji\" in $$props2)\n      $$invalidate(40, skinToneEmoji = $$props2.skinToneEmoji);\n    if (\"i18n\" in $$props2)\n      $$invalidate(0, i18n = $$props2.i18n);\n    if (\"database\" in $$props2)\n      $$invalidate(39, database = $$props2.database);\n    if (\"customEmoji\" in $$props2)\n      $$invalidate(41, customEmoji = $$props2.customEmoji);\n    if (\"customCategorySorting\" in $$props2)\n      $$invalidate(42, customCategorySorting = $$props2.customCategorySorting);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty[1] & 1280) {\n      {\n        if (customEmoji && database) {\n          $$invalidate(39, database.customEmoji = customEmoji, database);\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 1 | $$self.$$.dirty[1] & 256) {\n      {\n        async function handleDatabaseLoading() {\n          let showingLoadingMessage = false;\n          const timeoutHandle = setTimeout(\n            () => {\n              showingLoadingMessage = true;\n              $$invalidate(18, message = i18n.loadingMessage);\n            },\n            TIMEOUT_BEFORE_LOADING_MESSAGE\n          );\n          try {\n            await database.ready();\n            $$invalidate(14, databaseLoaded = true);\n          } catch (err) {\n            console.error(err);\n            $$invalidate(18, message = i18n.networkErrorMessage);\n          } finally {\n            clearTimeout(timeoutHandle);\n            if (showingLoadingMessage) {\n              showingLoadingMessage = false;\n              $$invalidate(18, message = \"\");\n            }\n          }\n        }\n        if (database) {\n          handleDatabaseLoading();\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 6144 | $$self.$$.dirty[1] & 1024) {\n      {\n        if (customEmoji && customEmoji.length) {\n          $$invalidate(12, groups$1 = [customGroup, ...groups]);\n        } else if (groups$1 !== groups) {\n          if (currentGroupIndex) {\n            $$invalidate(11, currentGroupIndex--, currentGroupIndex);\n          }\n          $$invalidate(12, groups$1 = groups);\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 4) {\n      {\n        rIC(() => {\n          $$invalidate(44, searchText = (rawSearchText || \"\").trim());\n          $$invalidate(5, activeSearchItem = -1);\n        });\n      }\n    }\n    if ($$self.$$.dirty[0] & 6144) {\n      $$invalidate(13, currentGroup = groups$1[currentGroupIndex]);\n    }\n    if ($$self.$$.dirty[0] & 24576 | $$self.$$.dirty[1] & 8192) {\n      {\n        async function updateEmojis() {\n          if (!databaseLoaded) {\n            $$invalidate(1, currentEmojis = []);\n            $$invalidate(4, searchMode = false);\n          } else if (searchText.length >= MIN_SEARCH_TEXT_LENGTH) {\n            const currentSearchText = searchText;\n            const newEmojis = await getEmojisBySearchQuery(currentSearchText);\n            if (currentSearchText === searchText) {\n              $$invalidate(1, currentEmojis = newEmojis);\n              $$invalidate(4, searchMode = true);\n            }\n          } else if (currentGroup) {\n            const currentGroupId = currentGroup.id;\n            const newEmojis = await getEmojisByGroup(currentGroupId);\n            if (currentGroupId === currentGroup.id) {\n              $$invalidate(1, currentEmojis = newEmojis);\n              $$invalidate(4, searchMode = false);\n            }\n          }\n        }\n        updateEmojis();\n      }\n    }\n    if ($$self.$$.dirty[0] & 4112) {\n      $$invalidate(22, pickerStyle = `\n  --font-family: ${FONT_FAMILY};\n  --num-groups: ${groups$1.length}; \n  --indicator-opacity: ${searchMode ? 0 : 1}; \n  --num-skintones: ${NUM_SKIN_TONES};`);\n    }\n    if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 256) {\n      {\n        async function updatePreferredSkinTone() {\n          if (databaseLoaded) {\n            $$invalidate(8, currentSkinTone = await database.getPreferredSkinTone());\n          }\n        }\n        updatePreferredSkinTone();\n      }\n    }\n    if ($$self.$$.dirty[1] & 512) {\n      $$invalidate(9, skinTones = Array(NUM_SKIN_TONES).fill().map((_, i) => applySkinTone(skinToneEmoji, i)));\n    }\n    if ($$self.$$.dirty[0] & 768) {\n      $$invalidate(21, skinToneButtonText = skinTones[currentSkinTone]);\n    }\n    if ($$self.$$.dirty[0] & 257) {\n      $$invalidate(23, skinToneButtonLabel = i18n.skinToneLabel.replace(\"{skinTone}\", i18n.skinTones[currentSkinTone]));\n    }\n    if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 256) {\n      {\n        async function updateDefaultFavoriteEmojis() {\n          $$invalidate(45, defaultFavoriteEmojis = (await Promise.all(MOST_COMMONLY_USED_EMOJI.map((unicode) => database.getEmojiByUnicodeOrName(unicode)))).filter(Boolean));\n        }\n        if (databaseLoaded) {\n          updateDefaultFavoriteEmojis();\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 49408) {\n      {\n        async function updateFavorites() {\n          const dbFavorites = await database.getTopFavoriteEmoji(numColumns);\n          const favorites = await summarizeEmojis(uniqBy([...dbFavorites, ...defaultFavoriteEmojis], (_) => _.unicode || _.name).slice(0, numColumns));\n          $$invalidate(10, currentFavorites = favorites);\n        }\n        if (databaseLoaded && defaultFavoriteEmojis) {\n          updateFavorites();\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 10) {\n      {\n        const zwjEmojisToCheck = currentEmojis.filter((emoji) => emoji.unicode).filter((emoji) => hasZwj(emoji) && !supportedZwjEmojis.has(emoji.unicode));\n        if (zwjEmojisToCheck.length) {\n          rAF(() => checkZwjSupportAndUpdate(zwjEmojisToCheck));\n        } else {\n          $$invalidate(1, currentEmojis = currentEmojis.filter(isZwjSupported));\n          rAF(() => {\n            (tabpanelElement || {}).scrollTop = 0;\n          });\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 1026 | $$self.$$.dirty[1] & 4096)\n      ;\n    if ($$self.$$.dirty[0] & 18 | $$self.$$.dirty[1] & 2048) {\n      {\n        let calculateCurrentEmojisWithCategories = function() {\n          if (searchMode) {\n            return [{ category: \"\", emojis: currentEmojis }];\n          }\n          const categoriesToEmoji = /* @__PURE__ */ new Map();\n          for (const emoji of currentEmojis) {\n            const category = emoji.category || \"\";\n            let emojis = categoriesToEmoji.get(category);\n            if (!emojis) {\n              emojis = [];\n              categoriesToEmoji.set(category, emojis);\n            }\n            emojis.push(emoji);\n          }\n          return [...categoriesToEmoji.entries()].map(([category, emojis]) => ({ category, emojis })).sort((a, b) => customCategorySorting(a.category, b.category));\n        };\n        $$invalidate(15, currentEmojisWithCategories = calculateCurrentEmojisWithCategories());\n      }\n    }\n    if ($$self.$$.dirty[0] & 34) {\n      $$invalidate(26, activeSearchItemId = activeSearchItem !== -1 && currentEmojis[activeSearchItem].id);\n    }\n    if ($$self.$$.dirty[0] & 192) {\n      {\n        if (skinTonePickerExpanded) {\n          skinToneDropdown.addEventListener(\n            \"transitionend\",\n            () => {\n              $$invalidate(19, skinTonePickerExpandedAfterAnimation = true);\n            },\n            { once: true }\n          );\n        } else {\n          $$invalidate(19, skinTonePickerExpandedAfterAnimation = false);\n        }\n      }\n    }\n  };\n  return [\n    i18n,\n    currentEmojis,\n    rawSearchText,\n    tabpanelElement,\n    searchMode,\n    activeSearchItem,\n    skinTonePickerExpanded,\n    skinToneDropdown,\n    currentSkinTone,\n    skinTones,\n    currentFavorites,\n    currentGroupIndex,\n    groups$1,\n    currentGroup,\n    databaseLoaded,\n    currentEmojisWithCategories,\n    rootElement,\n    baselineEmoji,\n    message,\n    skinTonePickerExpandedAfterAnimation,\n    activeSkinTone,\n    skinToneButtonText,\n    pickerStyle,\n    skinToneButtonLabel,\n    isRtl,\n    scrollbarWidth,\n    activeSearchItemId,\n    unicodeWithSkin,\n    labelWithSkin,\n    calculateEmojiGridStyle,\n    onSearchKeydown,\n    onNavClick,\n    onNavKeydown,\n    onEmojiClick,\n    onSkinToneOptionsClick,\n    onClickSkinToneButton,\n    onSkinToneOptionsKeydown,\n    onSkinToneOptionsKeyup,\n    onSkinToneOptionsFocusOut,\n    database,\n    skinToneEmoji,\n    customEmoji,\n    customCategorySorting,\n    initialLoad,\n    searchText,\n    defaultFavoriteEmojis,\n    numColumns,\n    input_input_handler,\n    div3_binding,\n    click_handler,\n    div10_binding,\n    button1_binding,\n    section_binding\n  ];\n}\nclass Picker extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(\n      this,\n      options,\n      instance,\n      create_fragment,\n      safe_not_equal,\n      {\n        skinToneEmoji: 40,\n        i18n: 0,\n        database: 39,\n        customEmoji: 41,\n        customCategorySorting: 42\n      },\n      null,\n      [-1, -1, -1]\n    );\n  }\n}\nconst DEFAULT_DATA_SOURCE = \"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json\";\nconst DEFAULT_LOCALE = \"en\";\nvar enI18n = {\n  categoriesLabel: \"Categories\",\n  emojiUnsupportedMessage: \"Your browser does not support color emoji.\",\n  favoritesLabel: \"Favorites\",\n  loadingMessage: \"Loading\\u2026\",\n  networkErrorMessage: \"Could not load emoji.\",\n  regionLabel: \"Emoji picker\",\n  searchDescription: \"When search results are available, press up or down to select and enter to choose.\",\n  searchLabel: \"Search\",\n  searchResultsLabel: \"Search results\",\n  skinToneDescription: \"When expanded, press up or down to select and enter to choose.\",\n  skinToneLabel: \"Choose a skin tone (currently {skinTone})\",\n  skinTonesLabel: \"Skin tones\",\n  skinTones: [\n    \"Default\",\n    \"Light\",\n    \"Medium-Light\",\n    \"Medium\",\n    \"Medium-Dark\",\n    \"Dark\"\n  ],\n  categories: {\n    custom: \"Custom\",\n    \"smileys-emotion\": \"Smileys and emoticons\",\n    \"people-body\": \"People and body\",\n    \"animals-nature\": \"Animals and nature\",\n    \"food-drink\": \"Food and drink\",\n    \"travel-places\": \"Travel and places\",\n    activities: \"Activities\",\n    objects: \"Objects\",\n    symbols: \"Symbols\",\n    flags: \"Flags\"\n  }\n};\nconst PROPS = [\n  \"customEmoji\",\n  \"customCategorySorting\",\n  \"database\",\n  \"dataSource\",\n  \"i18n\",\n  \"locale\",\n  \"skinToneEmoji\"\n];\nclass PickerElement extends HTMLElement {\n  constructor(props) {\n    super();\n    this.attachShadow({ mode: \"open\" });\n    const style = document.createElement(\"style\");\n    style.textContent = \":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}\";\n    this.shadowRoot.appendChild(style);\n    this._ctx = {\n      locale: DEFAULT_LOCALE,\n      dataSource: DEFAULT_DATA_SOURCE,\n      skinToneEmoji: DEFAULT_SKIN_TONE_EMOJI,\n      customCategorySorting: DEFAULT_CATEGORY_SORTING,\n      customEmoji: null,\n      i18n: enI18n,\n      ...props\n    };\n    for (const prop of PROPS) {\n      if (prop !== \"database\" && Object.prototype.hasOwnProperty.call(this, prop)) {\n        this._ctx[prop] = this[prop];\n        delete this[prop];\n      }\n    }\n    this._dbFlush();\n  }\n  connectedCallback() {\n    this._cmp = new Picker({\n      target: this.shadowRoot,\n      props: this._ctx\n    });\n  }\n  disconnectedCallback() {\n    this._cmp.$destroy();\n    this._cmp = void 0;\n    const { database } = this._ctx;\n    if (database) {\n      database.close().catch((err) => console.error(err));\n    }\n  }\n  static get observedAttributes() {\n    return [\"locale\", \"data-source\", \"skin-tone-emoji\"];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    this._set(\n      attrName.replace(/-([a-z])/g, (_, up) => up.toUpperCase()),\n      newValue\n    );\n  }\n  _set(prop, newValue) {\n    this._ctx[prop] = newValue;\n    if (this._cmp) {\n      this._cmp.$set({ [prop]: newValue });\n    }\n    if ([\"locale\", \"dataSource\"].includes(prop)) {\n      this._dbFlush();\n    }\n  }\n  _dbCreate() {\n    const { locale, dataSource, database } = this._ctx;\n    if (!database || database.locale !== locale || database.dataSource !== dataSource) {\n      this._set(\"database\", new Database({ locale, dataSource }));\n    }\n  }\n  _dbFlush() {\n    Promise.resolve().then(() => this._dbCreate());\n  }\n}\nconst definitions = {};\nfor (const prop of PROPS) {\n  definitions[prop] = {\n    get() {\n      if (prop === \"database\") {\n        this._dbCreate();\n      }\n      return this._ctx[prop];\n    },\n    set(val) {\n      if (prop === \"database\") {\n        throw new Error(\"database is read-only\");\n      }\n      this._set(prop, val);\n    }\n  };\n}\nObject.defineProperties(PickerElement.prototype, definitions);\nif (!customElements.get(\"emoji-picker\")) {\n  customElements.define(\"emoji-picker\", PickerElement);\n}\nfunction findParentBySelector(node, selector) {\n  while (node && !node.querySelector(selector)) {\n    node = node.parentNode;\n    const element2 = node.querySelector(selector);\n    if (element2)\n      return element2;\n  }\n  return null;\n}\nconst _sfc_main$j = {\n  name: \"EmojiPickerContainer\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    emojiOpened: { type: Boolean, default: false },\n    emojiReaction: { type: Boolean, default: false },\n    positionTop: { type: Boolean, default: false },\n    positionRight: { type: Boolean, default: false },\n    messageId: { type: String, default: \"\" },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\"add-emoji\", \"open-emoji\"],\n  data() {\n    return {\n      emojiPickerHeight: 320,\n      emojiPickerTop: 0,\n      emojiPickerRight: \"\"\n    };\n  },\n  watch: {\n    emojiOpened(val) {\n      if (val) {\n        setTimeout(() => {\n          this.addCustomStyling();\n          this.$refs.emojiPicker.shadowRoot.addEventListener(\n            \"emoji-click\",\n            ({ detail }) => {\n              this.$emit(\"add-emoji\", {\n                unicode: detail.unicode\n              });\n            }\n          );\n        }, 0);\n      }\n    }\n  },\n  methods: {\n    addCustomStyling() {\n      const picker = `.picker {\n\t\t\t\tborder: none;\n\t\t\t}`;\n      const nav = `.nav {\n\t\t\t\toverflow-x: auto;\n\t\t\t}`;\n      const searchBox = `.search-wrapper {\n\t\t\t\tpadding-right: 2px;\n\t\t\t\tpadding-left: 2px;\n\t\t\t}`;\n      const search2 = `input.search {\n\t\t\t\theight: 32px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tborder-radius: 10rem;\n\t\t\t\tborder: var(--chat-border-style);\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\toutline: none;\n\t\t\t\tbackground: var(--chat-bg-color-input);\n\t\t\t\tcolor: var(--chat-color);\n\t\t\t}`;\n      const style = document.createElement(\"style\");\n      style.textContent = picker + nav + searchBox + search2;\n      this.$refs.emojiPicker.shadowRoot.appendChild(style);\n    },\n    openEmoji(ev) {\n      this.$emit(\"open-emoji\", !this.emojiOpened);\n      this.setEmojiPickerPosition(\n        ev.clientY,\n        ev.view.innerWidth,\n        ev.view.innerHeight\n      );\n    },\n    setEmojiPickerPosition(clientY, innerWidth, innerHeight) {\n      const mobileSize = innerWidth < 500 || innerHeight < 700;\n      const roomFooterRef = findParentBySelector(this.$el, \"#room-footer\");\n      if (!roomFooterRef) {\n        if (mobileSize)\n          this.emojiPickerRight = \"-50px\";\n        return;\n      }\n      if (mobileSize) {\n        this.emojiPickerRight = innerWidth / 2 - (this.positionTop ? 200 : 150) + \"px\";\n        this.emojiPickerTop = 100;\n        this.emojiPickerHeight = innerHeight - 200;\n      } else {\n        const roomFooterTop = roomFooterRef.getBoundingClientRect().top;\n        const pickerTopPosition = roomFooterTop - clientY > this.emojiPickerHeight - 50;\n        if (pickerTopPosition)\n          this.emojiPickerTop = clientY + 10;\n        else\n          this.emojiPickerTop = clientY - this.emojiPickerHeight - 10;\n        this.emojiPickerRight = this.positionTop ? \"0px\" : this.positionRight ? \"60px\" : \"\";\n      }\n    }\n  }\n};\nconst _hoisted_1$j = { class: \"vac-emoji-wrapper\" };\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_emoji_picker = resolveComponent(\"emoji-picker\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$j, [\n    createBaseVNode(\"div\", {\n      class: normalizeClass([\"vac-svg-button\", { \"vac-emoji-reaction\": $props.emojiReaction }]),\n      onClick: _cache[0] || (_cache[0] = (...args) => $options.openEmoji && $options.openEmoji(...args))\n    }, [\n      renderSlot(\n        _ctx.$slots,\n        $props.messageId ? \"emoji-picker-reaction-icon_\" + $props.messageId : \"emoji-picker-icon\",\n        {},\n        () => [\n          createVNode(_component_svg_icon, {\n            name: \"emoji\",\n            param: $props.emojiReaction ? \"reaction\" : \"\"\n          }, null, 8, [\"param\"])\n        ]\n      )\n    ], 2),\n    $props.emojiOpened ? (openBlock(), createBlock(Transition, {\n      key: 0,\n      name: \"vac-slide-up\",\n      appear: \"\"\n    }, {\n      default: withCtx(() => [\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-emoji-picker\", { \"vac-picker-reaction\": $props.emojiReaction }]),\n          style: normalizeStyle({\n            height: `${$data.emojiPickerHeight}px`,\n            top: $props.positionTop ? $data.emojiPickerHeight : `${$data.emojiPickerTop}px`,\n            right: $data.emojiPickerRight,\n            display: $data.emojiPickerTop || !$props.emojiReaction ? \"initial\" : \"none\"\n          })\n        }, [\n          $props.emojiOpened ? (openBlock(), createBlock(_component_emoji_picker, {\n            key: 0,\n            ref: \"emojiPicker\",\n            \"data-source\": $props.emojiDataSource\n          }, null, 8, [\"data-source\"])) : createCommentVNode(\"\", true)\n        ], 6)\n      ]),\n      _: 1\n    })) : createCommentVNode(\"\", true)\n  ]);\n}\nvar EmojiPickerContainer = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$j]]);\nconst _sfc_main$i = {\n  name: \"RoomFiles\",\n  components: {\n    Loader,\n    SvgIcon\n  },\n  props: {\n    file: { type: Object, required: true },\n    index: { type: Number, required: true }\n  },\n  emits: [\"remove-file\"],\n  computed: {\n    isImage() {\n      return isImageFile(this.file);\n    },\n    isVideo() {\n      return isVideoFile(this.file);\n    }\n  }\n};\nconst _hoisted_1$i = { class: \"vac-room-file-container\" };\nconst _hoisted_2$g = [\"src\"];\nconst _hoisted_3$d = { class: \"vac-text-ellipsis\" };\nconst _hoisted_4$c = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$i, [\n    createVNode(_component_loader, {\n      show: $props.file.loading,\n      type: \"room-file\"\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"show\"]),\n    createBaseVNode(\"div\", {\n      class: \"vac-svg-button vac-icon-remove\",\n      onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"remove-file\", $props.index))\n    }, [\n      renderSlot(_ctx.$slots, \"image-close-icon\", {}, () => [\n        createVNode(_component_svg_icon, {\n          name: \"close\",\n          param: \"image\"\n        })\n      ])\n    ]),\n    $options.isImage ? (openBlock(), createElementBlock(\"div\", {\n      key: 0,\n      class: normalizeClass([\"vac-message-image\", { \"vac-blur-loading\": $props.file.loading }]),\n      style: normalizeStyle({\n        \"background-image\": `url('${$props.file.localUrl || $props.file.url}')`\n      })\n    }, null, 6)) : $options.isVideo ? (openBlock(), createElementBlock(\"video\", {\n      key: 1,\n      controls: \"\",\n      class: normalizeClass({ \"vac-blur-loading\": $props.file.loading })\n    }, [\n      createBaseVNode(\"source\", {\n        src: $props.file.localUrl || $props.file.url\n      }, null, 8, _hoisted_2$g)\n    ], 2)) : (openBlock(), createElementBlock(\"div\", {\n      key: 2,\n      class: normalizeClass([\"vac-file-container\", { \"vac-blur-loading\": $props.file.loading }])\n    }, [\n      createBaseVNode(\"div\", null, [\n        renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n          createVNode(_component_svg_icon, { name: \"file\" })\n        ])\n      ]),\n      createBaseVNode(\"div\", _hoisted_3$d, toDisplayString($props.file.name), 1),\n      $props.file.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_4$c, toDisplayString($props.file.extension), 1)) : createCommentVNode(\"\", true)\n    ], 2))\n  ]);\n}\nvar RoomFile = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$i]]);\nconst _sfc_main$h = {\n  name: \"RoomFiles\",\n  components: {\n    SvgIcon,\n    RoomFile\n  },\n  props: {\n    files: { type: Array, required: true }\n  },\n  emits: [\"remove-file\", \"reset-message\"],\n  computed: {}\n};\nconst _hoisted_1$h = {\n  key: 0,\n  class: \"vac-room-files-container\"\n};\nconst _hoisted_2$f = { class: \"vac-files-box\" };\nconst _hoisted_3$c = { class: \"vac-icon-close\" };\nfunction _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_room_file = resolveComponent(\"room-file\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.files.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$h, [\n        createBaseVNode(\"div\", _hoisted_2$f, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList($props.files, (file, i) => {\n            return openBlock(), createElementBlock(\"div\", { key: i }, [\n              createVNode(_component_room_file, {\n                file,\n                index: i,\n                onRemoveFile: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"remove-file\", $event))\n              }, createSlots({ _: 2 }, [\n                renderList(_ctx.$slots, (idx, name) => {\n                  return {\n                    name,\n                    fn: withCtx((data) => [\n                      renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                    ])\n                  };\n                })\n              ]), 1032, [\"file\", \"index\"])\n            ]);\n          }), 128))\n        ]),\n        createBaseVNode(\"div\", _hoisted_3$c, [\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button\",\n            onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"reset-message\"))\n          }, [\n            renderSlot(_ctx.$slots, \"files-close-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"close-outline\" })\n            ])\n          ])\n        ])\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  });\n}\nvar RoomFiles = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$g = {\n  props: {\n    percentage: { type: Number, default: 0 },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"hover-audio-progress\", \"change-linehead\"],\n  data() {\n    return {\n      isMouseDown: false\n    };\n  },\n  methods: {\n    onMouseDown(ev) {\n      if (this.messageSelectionEnabled)\n        return;\n      this.isMouseDown = true;\n      const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n      this.$emit(\"change-linehead\", seekPos);\n      document.addEventListener(\"mousemove\", this.onMouseMove);\n      document.addEventListener(\"mouseup\", this.onMouseUp);\n    },\n    onMouseUp(ev) {\n      if (this.messageSelectionEnabled)\n        return;\n      this.isMouseDown = false;\n      document.removeEventListener(\"mouseup\", this.onMouseUp);\n      document.removeEventListener(\"mousemove\", this.onMouseMove);\n      const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n      this.$emit(\"change-linehead\", seekPos);\n    },\n    onMouseMove(ev) {\n      if (this.messageSelectionEnabled)\n        return;\n      const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n      this.$emit(\"change-linehead\", seekPos);\n    },\n    calculateLineHeadPosition(ev, element2) {\n      const progressWidth = element2.getBoundingClientRect().width;\n      const leftPosition = element2.getBoundingClientRect().left;\n      let pos = (ev.clientX - leftPosition) / progressWidth;\n      pos = pos < 0 ? 0 : pos;\n      pos = pos > 1 ? 1 : pos;\n      return pos;\n    }\n  }\n};\nconst _hoisted_1$g = { class: \"vac-player-progress\" };\nconst _hoisted_2$e = { class: \"vac-line-container\" };\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"div\", {\n    ref: \"progress\",\n    class: \"vac-player-bar\",\n    onMousedown: _cache[0] || (_cache[0] = (...args) => $options.onMouseDown && $options.onMouseDown(...args)),\n    onMouseover: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"hover-audio-progress\", true)),\n    onMouseout: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"hover-audio-progress\", false))\n  }, [\n    createBaseVNode(\"div\", _hoisted_1$g, [\n      createBaseVNode(\"div\", _hoisted_2$e, [\n        createBaseVNode(\"div\", {\n          class: \"vac-line-progress\",\n          style: normalizeStyle({ width: `${$props.percentage}%` })\n        }, null, 4),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-line-dot\", { \"vac-line-dot__active\": $data.isMouseDown }]),\n          style: normalizeStyle({ left: `${$props.percentage}%` })\n        }, null, 6)\n      ])\n    ])\n  ], 544);\n}\nvar AudioControl = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$g]]);\nconst _sfc_main$f = {\n  name: \"AudioPlayer\",\n  components: {\n    SvgIcon,\n    AudioControl\n  },\n  props: {\n    messageId: { type: [String, Number], default: null },\n    src: { type: String, default: null },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"hover-audio-progress\", \"update-progress-time\"],\n  data() {\n    return {\n      isPlaying: false,\n      duration: this.convertTimeMMSS(0),\n      playedTime: this.convertTimeMMSS(0),\n      progress: 0\n    };\n  },\n  computed: {\n    playerUniqId() {\n      return `audio-player${this.messageId}`;\n    },\n    audioSource() {\n      if (this.src)\n        return this.src;\n      this.resetProgress();\n      return null;\n    }\n  },\n  mounted() {\n    this.player = this.$el.querySelector(\"#\" + this.playerUniqId);\n    this.player.addEventListener(\"ended\", () => {\n      this.isPlaying = false;\n    });\n    this.player.addEventListener(\"loadeddata\", () => {\n      this.resetProgress();\n      this.duration = this.convertTimeMMSS(this.player.duration);\n      this.updateProgressTime();\n    });\n    this.player.addEventListener(\"timeupdate\", this.onTimeUpdate);\n  },\n  methods: {\n    convertTimeMMSS(seconds) {\n      return new Date(seconds * 1e3).toISOString().substr(14, 5);\n    },\n    playback() {\n      if (this.messageSelectionEnabled || !this.audioSource)\n        return;\n      if (this.isPlaying)\n        this.player.pause();\n      else\n        setTimeout(() => this.player.play());\n      this.isPlaying = !this.isPlaying;\n    },\n    resetProgress() {\n      if (this.isPlaying)\n        this.player.pause();\n      this.duration = this.convertTimeMMSS(0);\n      this.playedTime = this.convertTimeMMSS(0);\n      this.progress = 0;\n      this.isPlaying = false;\n      this.updateProgressTime();\n    },\n    onTimeUpdate() {\n      this.playedTime = this.convertTimeMMSS(this.player.currentTime);\n      this.progress = this.player.currentTime / this.player.duration * 100;\n      this.updateProgressTime();\n    },\n    onUpdateProgress(pos) {\n      if (pos)\n        this.player.currentTime = pos * this.player.duration;\n    },\n    updateProgressTime() {\n      this.$emit(\n        \"update-progress-time\",\n        this.progress > 1 ? this.playedTime : this.duration\n      );\n    }\n  }\n};\nconst _hoisted_1$f = { class: \"vac-audio-player\" };\nconst _hoisted_2$d = [\"id\", \"src\"];\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_audio_control = resolveComponent(\"audio-control\");\n  return openBlock(), createElementBlock(\"div\", null, [\n    createBaseVNode(\"div\", _hoisted_1$f, [\n      createBaseVNode(\"div\", {\n        class: \"vac-svg-button\",\n        onClick: _cache[0] || (_cache[0] = (...args) => $options.playback && $options.playback(...args))\n      }, [\n        $data.isPlaying ? renderSlot(_ctx.$slots, \"audio-pause-icon_\" + $props.messageId, { key: 0 }, () => [\n          createVNode(_component_svg_icon, { name: \"audio-pause\" })\n        ]) : renderSlot(_ctx.$slots, \"audio-play-icon_\" + $props.messageId, { key: 1 }, () => [\n          createVNode(_component_svg_icon, { name: \"audio-play\" })\n        ])\n      ]),\n      createVNode(_component_audio_control, {\n        percentage: $data.progress,\n        \"message-selection-enabled\": $props.messageSelectionEnabled,\n        onChangeLinehead: $options.onUpdateProgress,\n        onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"hover-audio-progress\", $event))\n      }, null, 8, [\"percentage\", \"message-selection-enabled\", \"onChangeLinehead\"]),\n      createBaseVNode(\"audio\", {\n        id: $options.playerUniqId,\n        src: $options.audioSource\n      }, null, 8, _hoisted_2$d)\n    ])\n  ]);\n}\nvar AudioPlayer = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$f]]);\nconst _sfc_main$e = {\n  name: \"RoomMessageReply\",\n  components: {\n    SvgIcon,\n    FormatMessage,\n    AudioPlayer\n  },\n  props: {\n    room: { type: Object, required: true },\n    messageReply: { type: Object, default: null },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true }\n  },\n  emits: [\"reset-message\"],\n  computed: {\n    firstFile() {\n      var _a, _b;\n      return ((_b = (_a = this.messageReply) == null ? void 0 : _a.files) == null ? void 0 : _b.length) ? this.messageReply.files[0] : {};\n    },\n    isImage() {\n      return isImageFile(this.firstFile);\n    },\n    isVideo() {\n      return isVideoFile(this.firstFile);\n    },\n    isAudio() {\n      return isAudioFile(this.firstFile);\n    },\n    isOtherFile() {\n      var _a, _b;\n      return ((_b = (_a = this.messageReply) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && !this.isAudio && !this.isVideo && !this.isImage;\n    }\n  }\n};\nconst _hoisted_1$e = {\n  key: 0,\n  class: \"vac-reply-container\"\n};\nconst _hoisted_2$c = { class: \"vac-reply-box\" };\nconst _hoisted_3$b = { class: \"vac-reply-info\" };\nconst _hoisted_4$b = { class: \"vac-reply-username\" };\nconst _hoisted_5$8 = { class: \"vac-reply-content\" };\nconst _hoisted_6$4 = [\"src\"];\nconst _hoisted_7$4 = {\n  key: 1,\n  controls: \"\",\n  class: \"vac-image-reply\"\n};\nconst _hoisted_8$2 = [\"src\"];\nconst _hoisted_9$2 = {\n  key: 3,\n  class: \"vac-image-reply vac-file-container\"\n};\nconst _hoisted_10$2 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_11$1 = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nconst _hoisted_12$1 = { class: \"vac-icon-reply\" };\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_format_message = resolveComponent(\"format-message\");\n  const _component_audio_player = resolveComponent(\"audio-player\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.messageReply ? (openBlock(), createElementBlock(\"div\", _hoisted_1$e, [\n        createBaseVNode(\"div\", _hoisted_2$c, [\n          createBaseVNode(\"div\", _hoisted_3$b, [\n            createBaseVNode(\"div\", _hoisted_4$b, toDisplayString($props.messageReply.username), 1),\n            createBaseVNode(\"div\", _hoisted_5$8, [\n              createVNode(_component_format_message, {\n                \"message-id\": $props.messageReply._id,\n                content: $props.messageReply.content,\n                users: $props.room.users,\n                \"text-formatting\": $props.textFormatting,\n                \"link-options\": $props.linkOptions,\n                reply: true\n              }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n            ])\n          ]),\n          $options.isImage ? (openBlock(), createElementBlock(\"img\", {\n            key: 0,\n            src: $options.firstFile.url,\n            class: \"vac-image-reply\"\n          }, null, 8, _hoisted_6$4)) : $options.isVideo ? (openBlock(), createElementBlock(\"video\", _hoisted_7$4, [\n            createBaseVNode(\"source\", {\n              src: $options.firstFile.url\n            }, null, 8, _hoisted_8$2)\n          ])) : $options.isAudio ? (openBlock(), createBlock(_component_audio_player, {\n            key: 2,\n            src: $options.firstFile.url,\n            \"message-selection-enabled\": false,\n            class: \"vac-audio-reply\"\n          }, createSlots({ _: 2 }, [\n            renderList(_ctx.$slots, (idx, name) => {\n              return {\n                name,\n                fn: withCtx((data) => [\n                  renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                ])\n              };\n            })\n          ]), 1032, [\"src\"])) : $options.isOtherFile ? (openBlock(), createElementBlock(\"div\", _hoisted_9$2, [\n            createBaseVNode(\"div\", null, [\n              renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n                createVNode(_component_svg_icon, { name: \"file\" })\n              ])\n            ]),\n            createBaseVNode(\"div\", _hoisted_10$2, toDisplayString($options.firstFile.name), 1),\n            $options.firstFile.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_11$1, toDisplayString($options.firstFile.extension), 1)) : createCommentVNode(\"\", true)\n          ])) : createCommentVNode(\"\", true)\n        ]),\n        createBaseVNode(\"div\", _hoisted_12$1, [\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button\",\n            onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"reset-message\"))\n          }, [\n            renderSlot(_ctx.$slots, \"reply-close-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"close-outline\" })\n            ])\n          ])\n        ])\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  });\n}\nvar RoomMessageReply = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$e]]);\nconst _sfc_main$d = {\n  name: \"RoomUsersTag\",\n  props: {\n    filteredUsersTag: { type: Array, required: true },\n    selectItem: { type: Boolean, default: null },\n    activeUpOrDown: { type: Number, default: null }\n  },\n  emits: [\"select-user-tag\", \"activate-item\"],\n  data() {\n    return {\n      activeItem: null\n    };\n  },\n  watch: {\n    filteredUsersTag(val, oldVal) {\n      if (!oldVal.length || val.length !== oldVal.length) {\n        this.activeItem = 0;\n      }\n    },\n    selectItem(val) {\n      if (val) {\n        this.$emit(\"select-user-tag\", this.filteredUsersTag[this.activeItem]);\n      }\n    },\n    activeUpOrDown() {\n      if (this.activeUpOrDown > 0 && this.activeItem < this.filteredUsersTag.length - 1) {\n        this.activeItem++;\n      } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n        this.activeItem--;\n      }\n      this.$emit(\"activate-item\");\n    }\n  }\n};\nconst _hoisted_1$d = {\n  key: 0,\n  class: \"vac-tags-container\"\n};\nconst _hoisted_2$b = [\"onMouseover\", \"onClick\"];\nconst _hoisted_3$a = { class: \"vac-tags-info\" };\nconst _hoisted_4$a = { class: \"vac-tags-username\" };\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.filteredUsersTag.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$d, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredUsersTag, (user, index) => {\n          return openBlock(), createElementBlock(\"div\", {\n            key: user._id,\n            class: normalizeClass([\"vac-tags-box\", { \"vac-tags-box-active\": index === $data.activeItem }]),\n            onMouseover: ($event) => $data.activeItem = index,\n            onClick: ($event) => _ctx.$emit(\"select-user-tag\", user)\n          }, [\n            createBaseVNode(\"div\", _hoisted_3$a, [\n              user.avatar ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: \"vac-avatar vac-tags-avatar\",\n                style: normalizeStyle({ \"background-image\": `url('${user.avatar}')` })\n              }, null, 4)) : createCommentVNode(\"\", true),\n              createBaseVNode(\"div\", _hoisted_4$a, toDisplayString(user.username), 1)\n            ])\n          ], 42, _hoisted_2$b);\n        }), 128))\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  });\n}\nvar RoomUsersTag = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$d]]);\nconst _sfc_main$c = {\n  name: \"RoomEmojis\",\n  props: {\n    filteredEmojis: { type: Array, required: true },\n    selectItem: { type: Boolean, default: null },\n    activeUpOrDown: { type: Number, default: null }\n  },\n  emits: [\"select-emoji\", \"activate-item\"],\n  data() {\n    return {\n      activeItem: null\n    };\n  },\n  watch: {\n    filteredEmojis(val, oldVal) {\n      if (!oldVal.length || val.length !== oldVal.length) {\n        this.activeItem = 0;\n      }\n    },\n    selectItem(val) {\n      if (val) {\n        this.$emit(\"select-emoji\", this.filteredEmojis[this.activeItem]);\n      }\n    },\n    activeUpOrDown() {\n      if (this.activeUpOrDown > 0 && this.activeItem < this.filteredEmojis.length - 1) {\n        this.activeItem++;\n      } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n        this.activeItem--;\n      }\n      this.$emit(\"activate-item\");\n    }\n  }\n};\nconst _hoisted_1$c = {\n  key: 0,\n  class: \"vac-emojis-container\"\n};\nconst _hoisted_2$a = [\"onMouseover\", \"onClick\"];\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.filteredEmojis.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$c, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredEmojis, (emoji, index) => {\n          return openBlock(), createElementBlock(\"div\", {\n            key: emoji,\n            class: normalizeClass([\"vac-emoji-element\", { \"vac-emoji-element-active\": index === $data.activeItem }]),\n            onMouseover: ($event) => $data.activeItem = index,\n            onClick: ($event) => _ctx.$emit(\"select-emoji\", emoji)\n          }, toDisplayString(emoji), 43, _hoisted_2$a);\n        }), 128))\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  });\n}\nvar RoomEmojis = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$c]]);\nconst _sfc_main$b = {\n  name: \"RoomTemplatesText\",\n  props: {\n    filteredTemplatesText: { type: Array, required: true },\n    selectItem: { type: Boolean, default: null },\n    activeUpOrDown: { type: Number, default: null }\n  },\n  emits: [\"select-template-text\", \"activate-item\"],\n  data() {\n    return {\n      activeItem: null\n    };\n  },\n  watch: {\n    filteredTemplatesText(val, oldVal) {\n      if (!oldVal.length || val.length !== oldVal.length) {\n        this.activeItem = 0;\n      }\n    },\n    selectItem(val) {\n      if (val) {\n        this.$emit(\n          \"select-template-text\",\n          this.filteredTemplatesText[this.activeItem]\n        );\n      }\n    },\n    activeUpOrDown() {\n      if (this.activeUpOrDown > 0 && this.activeItem < this.filteredTemplatesText.length - 1) {\n        this.activeItem++;\n      } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n        this.activeItem--;\n      }\n      this.$emit(\"activate-item\");\n    }\n  }\n};\nconst _hoisted_1$b = {\n  key: 0,\n  class: \"vac-template-container vac-app-box-shadow\"\n};\nconst _hoisted_2$9 = [\"onMouseover\", \"onClick\"];\nconst _hoisted_3$9 = { class: \"vac-template-info\" };\nconst _hoisted_4$9 = { class: \"vac-template-tag\" };\nconst _hoisted_5$7 = { class: \"vac-template-text\" };\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.filteredTemplatesText.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$b, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredTemplatesText, (template, index) => {\n          return openBlock(), createElementBlock(\"div\", {\n            key: index,\n            class: normalizeClass([\"vac-template-box\", { \"vac-template-active\": index === $data.activeItem }]),\n            onMouseover: ($event) => $data.activeItem = index,\n            onClick: ($event) => _ctx.$emit(\"select-template-text\", template)\n          }, [\n            createBaseVNode(\"div\", _hoisted_3$9, [\n              createBaseVNode(\"div\", _hoisted_4$9, \" /\" + toDisplayString(template.tag), 1),\n              createBaseVNode(\"div\", _hoisted_5$7, toDisplayString(template.text), 1)\n            ])\n          ], 42, _hoisted_2$9);\n        }), 128))\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  });\n}\nvar RoomTemplatesText = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$b]]);\nfunction new_byte$4(count) {\n  return new Int8Array(count);\n}\nfunction new_short(count) {\n  return new Int16Array(count);\n}\nfunction new_int$d(count) {\n  return new Int32Array(count);\n}\nfunction new_float$f(count) {\n  return new Float32Array(count);\n}\nfunction new_double$1(count) {\n  return new Float64Array(count);\n}\nfunction new_float_n$6(args) {\n  if (args.length == 1) {\n    return new_float$f(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_float_n$6(args));\n  }\n  return A;\n}\nfunction new_int_n$2(args) {\n  if (args.length == 1) {\n    return new_int$d(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_int_n$2(args));\n  }\n  return A;\n}\nfunction new_short_n$1(args) {\n  if (args.length == 1) {\n    return new_short(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_short_n$1(args));\n  }\n  return A;\n}\nfunction new_array_n$1(args) {\n  if (args.length == 1) {\n    return new Array(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_array_n$1(args));\n  }\n  return A;\n}\nvar Arrays$7 = {};\nArrays$7.fill = function(a, fromIndex, toIndex, val) {\n  if (arguments.length == 2) {\n    for (var i = 0; i < a.length; i++) {\n      a[i] = arguments[1];\n    }\n  } else {\n    for (var i = fromIndex; i < toIndex; i++) {\n      a[i] = val;\n    }\n  }\n};\nvar System$a = {};\nSystem$a.arraycopy = function(src, srcPos, dest, destPos, length) {\n  var srcEnd = srcPos + length;\n  while (srcPos < srcEnd)\n    dest[destPos++] = src[srcPos++];\n};\nSystem$a.out = {};\nSystem$a.out.println = function(message) {\n  console.log(message);\n};\nSystem$a.out.printf = function() {\n  console.log.apply(console, arguments);\n};\nvar Util$5 = {};\nUtil$5.SQRT2 = 1.4142135623730951;\nUtil$5.FAST_LOG10 = function(x) {\n  return Math.log10(x);\n};\nUtil$5.FAST_LOG10_X = function(x, y) {\n  return Math.log10(x) * y;\n};\nfunction ShortBlock$3(ordinal) {\n  this.ordinal = ordinal;\n}\nShortBlock$3.short_block_allowed = new ShortBlock$3(0);\nShortBlock$3.short_block_coupled = new ShortBlock$3(1);\nShortBlock$3.short_block_dispensed = new ShortBlock$3(2);\nShortBlock$3.short_block_forced = new ShortBlock$3(3);\nvar Float$2 = {};\nFloat$2.MAX_VALUE = 34028235e31;\nfunction VbrMode$7(ordinal) {\n  this.ordinal = ordinal;\n}\nVbrMode$7.vbr_off = new VbrMode$7(0);\nVbrMode$7.vbr_mt = new VbrMode$7(1);\nVbrMode$7.vbr_rh = new VbrMode$7(2);\nVbrMode$7.vbr_abr = new VbrMode$7(3);\nVbrMode$7.vbr_mtrh = new VbrMode$7(4);\nVbrMode$7.vbr_default = VbrMode$7.vbr_mtrh;\nvar assert$b = function(x) {\n};\nvar common = {\n  System: System$a,\n  VbrMode: VbrMode$7,\n  Float: Float$2,\n  ShortBlock: ShortBlock$3,\n  Util: Util$5,\n  Arrays: Arrays$7,\n  new_array_n: new_array_n$1,\n  new_byte: new_byte$4,\n  new_double: new_double$1,\n  new_float: new_float$f,\n  new_float_n: new_float_n$6,\n  new_int: new_int$d,\n  new_int_n: new_int_n$2,\n  new_short,\n  new_short_n: new_short_n$1,\n  assert: assert$b\n};\nvar System$9 = common.System;\nvar Util$4 = common.Util;\nvar Arrays$6 = common.Arrays;\nvar new_float$e = common.new_float;\nfunction NewMDCT() {\n  var enwindow = [\n    -477e-9 * 0.740951125354959 / 2384e-9,\n    103951e-9 * 0.740951125354959 / 2384e-9,\n    953674e-9 * 0.740951125354959 / 2384e-9,\n    2841473e-9 * 0.740951125354959 / 2384e-9,\n    0.035758972 * 0.740951125354959 / 2384e-9,\n    3401756e-9 * 0.740951125354959 / 2384e-9,\n    983715e-9 * 0.740951125354959 / 2384e-9,\n    99182e-9 * 0.740951125354959 / 2384e-9,\n    12398e-9 * 0.740951125354959 / 2384e-9,\n    191212e-9 * 0.740951125354959 / 2384e-9,\n    2283096e-9 * 0.740951125354959 / 2384e-9,\n    0.016994476 * 0.740951125354959 / 2384e-9,\n    -0.018756866 * 0.740951125354959 / 2384e-9,\n    -2630711e-9 * 0.740951125354959 / 2384e-9,\n    -247478e-9 * 0.740951125354959 / 2384e-9,\n    -14782e-9 * 0.740951125354959 / 2384e-9,\n    0.9063471690191471,\n    0.1960342806591213,\n    -477e-9 * 0.773010453362737 / 2384e-9,\n    105858e-9 * 0.773010453362737 / 2384e-9,\n    930786e-9 * 0.773010453362737 / 2384e-9,\n    2521515e-9 * 0.773010453362737 / 2384e-9,\n    0.035694122 * 0.773010453362737 / 2384e-9,\n    3643036e-9 * 0.773010453362737 / 2384e-9,\n    991821e-9 * 0.773010453362737 / 2384e-9,\n    96321e-9 * 0.773010453362737 / 2384e-9,\n    11444e-9 * 0.773010453362737 / 2384e-9,\n    165462e-9 * 0.773010453362737 / 2384e-9,\n    2110004e-9 * 0.773010453362737 / 2384e-9,\n    0.016112804 * 0.773010453362737 / 2384e-9,\n    -0.019634247 * 0.773010453362737 / 2384e-9,\n    -2803326e-9 * 0.773010453362737 / 2384e-9,\n    -277042e-9 * 0.773010453362737 / 2384e-9,\n    -16689e-9 * 0.773010453362737 / 2384e-9,\n    0.8206787908286602,\n    0.3901806440322567,\n    -477e-9 * 0.803207531480645 / 2384e-9,\n    107288e-9 * 0.803207531480645 / 2384e-9,\n    902653e-9 * 0.803207531480645 / 2384e-9,\n    2174854e-9 * 0.803207531480645 / 2384e-9,\n    0.035586357 * 0.803207531480645 / 2384e-9,\n    3858566e-9 * 0.803207531480645 / 2384e-9,\n    995159e-9 * 0.803207531480645 / 2384e-9,\n    9346e-8 * 0.803207531480645 / 2384e-9,\n    10014e-9 * 0.803207531480645 / 2384e-9,\n    14019e-8 * 0.803207531480645 / 2384e-9,\n    1937389e-9 * 0.803207531480645 / 2384e-9,\n    0.015233517 * 0.803207531480645 / 2384e-9,\n    -0.020506859 * 0.803207531480645 / 2384e-9,\n    -2974033e-9 * 0.803207531480645 / 2384e-9,\n    -30756e-8 * 0.803207531480645 / 2384e-9,\n    -1812e-8 * 0.803207531480645 / 2384e-9,\n    0.7416505462720353,\n    0.5805693545089249,\n    -477e-9 * 0.831469612302545 / 2384e-9,\n    108242e-9 * 0.831469612302545 / 2384e-9,\n    868797e-9 * 0.831469612302545 / 2384e-9,\n    1800537e-9 * 0.831469612302545 / 2384e-9,\n    0.0354352 * 0.831469612302545 / 2384e-9,\n    4049301e-9 * 0.831469612302545 / 2384e-9,\n    994205e-9 * 0.831469612302545 / 2384e-9,\n    90599e-9 * 0.831469612302545 / 2384e-9,\n    906e-8 * 0.831469612302545 / 2384e-9,\n    116348e-9 * 0.831469612302545 / 2384e-9,\n    1766682e-9 * 0.831469612302545 / 2384e-9,\n    0.014358521 * 0.831469612302545 / 2384e-9,\n    -0.021372318 * 0.831469612302545 / 2384e-9,\n    -314188e-8 * 0.831469612302545 / 2384e-9,\n    -339031e-9 * 0.831469612302545 / 2384e-9,\n    -1955e-8 * 0.831469612302545 / 2384e-9,\n    0.6681786379192989,\n    0.7653668647301797,\n    -477e-9 * 0.857728610000272 / 2384e-9,\n    108719e-9 * 0.857728610000272 / 2384e-9,\n    82922e-8 * 0.857728610000272 / 2384e-9,\n    1399517e-9 * 0.857728610000272 / 2384e-9,\n    0.035242081 * 0.857728610000272 / 2384e-9,\n    421524e-8 * 0.857728610000272 / 2384e-9,\n    989437e-9 * 0.857728610000272 / 2384e-9,\n    87261e-9 * 0.857728610000272 / 2384e-9,\n    8106e-9 * 0.857728610000272 / 2384e-9,\n    93937e-9 * 0.857728610000272 / 2384e-9,\n    1597881e-9 * 0.857728610000272 / 2384e-9,\n    0.013489246 * 0.857728610000272 / 2384e-9,\n    -0.022228718 * 0.857728610000272 / 2384e-9,\n    -3306866e-9 * 0.857728610000272 / 2384e-9,\n    -371456e-9 * 0.857728610000272 / 2384e-9,\n    -21458e-9 * 0.857728610000272 / 2384e-9,\n    0.5993769336819237,\n    0.9427934736519954,\n    -477e-9 * 0.881921264348355 / 2384e-9,\n    108719e-9 * 0.881921264348355 / 2384e-9,\n    78392e-8 * 0.881921264348355 / 2384e-9,\n    971317e-9 * 0.881921264348355 / 2384e-9,\n    0.035007 * 0.881921264348355 / 2384e-9,\n    4357815e-9 * 0.881921264348355 / 2384e-9,\n    980854e-9 * 0.881921264348355 / 2384e-9,\n    83923e-9 * 0.881921264348355 / 2384e-9,\n    7629e-9 * 0.881921264348355 / 2384e-9,\n    72956e-9 * 0.881921264348355 / 2384e-9,\n    1432419e-9 * 0.881921264348355 / 2384e-9,\n    0.012627602 * 0.881921264348355 / 2384e-9,\n    -0.02307415 * 0.881921264348355 / 2384e-9,\n    -3467083e-9 * 0.881921264348355 / 2384e-9,\n    -404358e-9 * 0.881921264348355 / 2384e-9,\n    -23365e-9 * 0.881921264348355 / 2384e-9,\n    0.5345111359507916,\n    1.111140466039205,\n    -954e-9 * 0.903989293123443 / 2384e-9,\n    108242e-9 * 0.903989293123443 / 2384e-9,\n    731945e-9 * 0.903989293123443 / 2384e-9,\n    515938e-9 * 0.903989293123443 / 2384e-9,\n    0.034730434 * 0.903989293123443 / 2384e-9,\n    4477024e-9 * 0.903989293123443 / 2384e-9,\n    968933e-9 * 0.903989293123443 / 2384e-9,\n    80585e-9 * 0.903989293123443 / 2384e-9,\n    6676e-9 * 0.903989293123443 / 2384e-9,\n    52929e-9 * 0.903989293123443 / 2384e-9,\n    1269817e-9 * 0.903989293123443 / 2384e-9,\n    0.011775017 * 0.903989293123443 / 2384e-9,\n    -0.023907185 * 0.903989293123443 / 2384e-9,\n    -3622532e-9 * 0.903989293123443 / 2384e-9,\n    -438213e-9 * 0.903989293123443 / 2384e-9,\n    -25272e-9 * 0.903989293123443 / 2384e-9,\n    0.4729647758913199,\n    1.268786568327291,\n    -954e-9 * 0.9238795325112867 / 2384e-9,\n    106812e-9 * 0.9238795325112867 / 2384e-9,\n    674248e-9 * 0.9238795325112867 / 2384e-9,\n    33379e-9 * 0.9238795325112867 / 2384e-9,\n    0.034412861 * 0.9238795325112867 / 2384e-9,\n    4573822e-9 * 0.9238795325112867 / 2384e-9,\n    954151e-9 * 0.9238795325112867 / 2384e-9,\n    76771e-9 * 0.9238795325112867 / 2384e-9,\n    6199e-9 * 0.9238795325112867 / 2384e-9,\n    34332e-9 * 0.9238795325112867 / 2384e-9,\n    1111031e-9 * 0.9238795325112867 / 2384e-9,\n    0.010933399 * 0.9238795325112867 / 2384e-9,\n    -0.024725437 * 0.9238795325112867 / 2384e-9,\n    -3771782e-9 * 0.9238795325112867 / 2384e-9,\n    -472546e-9 * 0.9238795325112867 / 2384e-9,\n    -27657e-9 * 0.9238795325112867 / 2384e-9,\n    0.41421356237309503,\n    1.414213562373095,\n    -954e-9 * 0.941544065183021 / 2384e-9,\n    105381e-9 * 0.941544065183021 / 2384e-9,\n    610352e-9 * 0.941544065183021 / 2384e-9,\n    -475883e-9 * 0.941544065183021 / 2384e-9,\n    0.03405571 * 0.941544065183021 / 2384e-9,\n    4649162e-9 * 0.941544065183021 / 2384e-9,\n    935555e-9 * 0.941544065183021 / 2384e-9,\n    73433e-9 * 0.941544065183021 / 2384e-9,\n    5245e-9 * 0.941544065183021 / 2384e-9,\n    17166e-9 * 0.941544065183021 / 2384e-9,\n    956535e-9 * 0.941544065183021 / 2384e-9,\n    0.010103703 * 0.941544065183021 / 2384e-9,\n    -0.025527 * 0.941544065183021 / 2384e-9,\n    -3914356e-9 * 0.941544065183021 / 2384e-9,\n    -507355e-9 * 0.941544065183021 / 2384e-9,\n    -30041e-9 * 0.941544065183021 / 2384e-9,\n    0.3578057213145241,\n    1.546020906725474,\n    -954e-9 * 0.956940335732209 / 2384e-9,\n    10252e-8 * 0.956940335732209 / 2384e-9,\n    539303e-9 * 0.956940335732209 / 2384e-9,\n    -1011848e-9 * 0.956940335732209 / 2384e-9,\n    0.033659935 * 0.956940335732209 / 2384e-9,\n    4703045e-9 * 0.956940335732209 / 2384e-9,\n    915051e-9 * 0.956940335732209 / 2384e-9,\n    70095e-9 * 0.956940335732209 / 2384e-9,\n    4768e-9 * 0.956940335732209 / 2384e-9,\n    954e-9 * 0.956940335732209 / 2384e-9,\n    806808e-9 * 0.956940335732209 / 2384e-9,\n    9287834e-9 * 0.956940335732209 / 2384e-9,\n    -0.026310921 * 0.956940335732209 / 2384e-9,\n    -4048824e-9 * 0.956940335732209 / 2384e-9,\n    -542164e-9 * 0.956940335732209 / 2384e-9,\n    -32425e-9 * 0.956940335732209 / 2384e-9,\n    0.3033466836073424,\n    1.66293922460509,\n    -1431e-9 * 0.970031253194544 / 2384e-9,\n    99182e-9 * 0.970031253194544 / 2384e-9,\n    462532e-9 * 0.970031253194544 / 2384e-9,\n    -1573563e-9 * 0.970031253194544 / 2384e-9,\n    0.033225536 * 0.970031253194544 / 2384e-9,\n    4737377e-9 * 0.970031253194544 / 2384e-9,\n    891685e-9 * 0.970031253194544 / 2384e-9,\n    6628e-8 * 0.970031253194544 / 2384e-9,\n    4292e-9 * 0.970031253194544 / 2384e-9,\n    -13828e-9 * 0.970031253194544 / 2384e-9,\n    66185e-8 * 0.970031253194544 / 2384e-9,\n    8487225e-9 * 0.970031253194544 / 2384e-9,\n    -0.02707386 * 0.970031253194544 / 2384e-9,\n    -4174709e-9 * 0.970031253194544 / 2384e-9,\n    -576973e-9 * 0.970031253194544 / 2384e-9,\n    -34809e-9 * 0.970031253194544 / 2384e-9,\n    0.2504869601913055,\n    1.76384252869671,\n    -1431e-9 * 0.98078528040323 / 2384e-9,\n    95367e-9 * 0.98078528040323 / 2384e-9,\n    378609e-9 * 0.98078528040323 / 2384e-9,\n    -2161503e-9 * 0.98078528040323 / 2384e-9,\n    0.032754898 * 0.98078528040323 / 2384e-9,\n    4752159e-9 * 0.98078528040323 / 2384e-9,\n    866413e-9 * 0.98078528040323 / 2384e-9,\n    62943e-9 * 0.98078528040323 / 2384e-9,\n    3815e-9 * 0.98078528040323 / 2384e-9,\n    -2718e-8 * 0.98078528040323 / 2384e-9,\n    522137e-9 * 0.98078528040323 / 2384e-9,\n    7703304e-9 * 0.98078528040323 / 2384e-9,\n    -0.027815342 * 0.98078528040323 / 2384e-9,\n    -4290581e-9 * 0.98078528040323 / 2384e-9,\n    -611782e-9 * 0.98078528040323 / 2384e-9,\n    -3767e-8 * 0.98078528040323 / 2384e-9,\n    0.198912367379658,\n    1.847759065022573,\n    -1907e-9 * 0.989176509964781 / 2384e-9,\n    90122e-9 * 0.989176509964781 / 2384e-9,\n    288486e-9 * 0.989176509964781 / 2384e-9,\n    -2774239e-9 * 0.989176509964781 / 2384e-9,\n    0.03224802 * 0.989176509964781 / 2384e-9,\n    4748821e-9 * 0.989176509964781 / 2384e-9,\n    838757e-9 * 0.989176509964781 / 2384e-9,\n    59605e-9 * 0.989176509964781 / 2384e-9,\n    3338e-9 * 0.989176509964781 / 2384e-9,\n    -39577e-9 * 0.989176509964781 / 2384e-9,\n    388145e-9 * 0.989176509964781 / 2384e-9,\n    6937027e-9 * 0.989176509964781 / 2384e-9,\n    -0.028532982 * 0.989176509964781 / 2384e-9,\n    -4395962e-9 * 0.989176509964781 / 2384e-9,\n    -646591e-9 * 0.989176509964781 / 2384e-9,\n    -40531e-9 * 0.989176509964781 / 2384e-9,\n    0.1483359875383474,\n    1.913880671464418,\n    -1907e-9 * 0.995184726672197 / 2384e-9,\n    844e-7 * 0.995184726672197 / 2384e-9,\n    191689e-9 * 0.995184726672197 / 2384e-9,\n    -3411293e-9 * 0.995184726672197 / 2384e-9,\n    0.03170681 * 0.995184726672197 / 2384e-9,\n    4728317e-9 * 0.995184726672197 / 2384e-9,\n    809669e-9 * 0.995184726672197 / 2384e-9,\n    5579e-8 * 0.995184726672197 / 2384e-9,\n    3338e-9 * 0.995184726672197 / 2384e-9,\n    -50545e-9 * 0.995184726672197 / 2384e-9,\n    259876e-9 * 0.995184726672197 / 2384e-9,\n    6189346e-9 * 0.995184726672197 / 2384e-9,\n    -0.029224873 * 0.995184726672197 / 2384e-9,\n    -4489899e-9 * 0.995184726672197 / 2384e-9,\n    -680923e-9 * 0.995184726672197 / 2384e-9,\n    -43392e-9 * 0.995184726672197 / 2384e-9,\n    0.09849140335716425,\n    1.961570560806461,\n    -2384e-9 * 0.998795456205172 / 2384e-9,\n    77724e-9 * 0.998795456205172 / 2384e-9,\n    88215e-9 * 0.998795456205172 / 2384e-9,\n    -4072189e-9 * 0.998795456205172 / 2384e-9,\n    0.031132698 * 0.998795456205172 / 2384e-9,\n    4691124e-9 * 0.998795456205172 / 2384e-9,\n    779152e-9 * 0.998795456205172 / 2384e-9,\n    52929e-9 * 0.998795456205172 / 2384e-9,\n    2861e-9 * 0.998795456205172 / 2384e-9,\n    -60558e-9 * 0.998795456205172 / 2384e-9,\n    137329e-9 * 0.998795456205172 / 2384e-9,\n    546217e-8 * 0.998795456205172 / 2384e-9,\n    -0.02989006 * 0.998795456205172 / 2384e-9,\n    -4570484e-9 * 0.998795456205172 / 2384e-9,\n    -714302e-9 * 0.998795456205172 / 2384e-9,\n    -46253e-9 * 0.998795456205172 / 2384e-9,\n    0.04912684976946725,\n    1.990369453344394,\n    0.035780907 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    0.017876148 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    3134727e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    2457142e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    971317e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    218868e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    101566e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    13828e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    0.030526638 / 2384e-9,\n    4638195e-9 / 2384e-9,\n    747204e-9 / 2384e-9,\n    49591e-9 / 2384e-9,\n    4756451e-9 / 2384e-9,\n    21458e-9 / 2384e-9,\n    -69618e-9 / 2384e-9\n  ];\n  var NS = 12;\n  var NL = 36;\n  var win = [\n    [\n      2382191739347913e-28,\n      6423305872147834e-28,\n      9400849094049688e-28,\n      1122435026096556e-27,\n      1183840321267481e-27,\n      1122435026096556e-27,\n      940084909404969e-27,\n      6423305872147839e-28,\n      2382191739347918e-28,\n      5456116108943412e-27,\n      4878985199565852e-27,\n      4240448995017367e-27,\n      3559909094758252e-27,\n      2858043359288075e-27,\n      2156177623817898e-27,\n      1475637723558783e-27,\n      8371015190102974e-28,\n      2599706096327376e-28,\n      -5456116108943412e-27,\n      -4878985199565852e-27,\n      -4240448995017367e-27,\n      -3559909094758252e-27,\n      -2858043359288076e-27,\n      -2156177623817898e-27,\n      -1475637723558783e-27,\n      -8371015190102975e-28,\n      -2599706096327376e-28,\n      -2382191739347923e-28,\n      -6423305872147843e-28,\n      -9400849094049696e-28,\n      -1122435026096556e-27,\n      -1183840321267481e-27,\n      -1122435026096556e-27,\n      -9400849094049694e-28,\n      -642330587214784e-27,\n      -2382191739347918e-28\n    ],\n    [\n      2382191739347913e-28,\n      6423305872147834e-28,\n      9400849094049688e-28,\n      1122435026096556e-27,\n      1183840321267481e-27,\n      1122435026096556e-27,\n      9400849094049688e-28,\n      6423305872147841e-28,\n      2382191739347918e-28,\n      5456116108943413e-27,\n      4878985199565852e-27,\n      4240448995017367e-27,\n      3559909094758253e-27,\n      2858043359288075e-27,\n      2156177623817898e-27,\n      1475637723558782e-27,\n      8371015190102975e-28,\n      2599706096327376e-28,\n      -5461314069809755e-27,\n      -4921085770524055e-27,\n      -4343405037091838e-27,\n      -3732668368707687e-27,\n      -3093523840190885e-27,\n      -2430835727329465e-27,\n      -1734679010007751e-27,\n      -974825365660928e-27,\n      -2797435120168326e-28,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      -2283748241799531e-28,\n      -4037858874020686e-28,\n      -2146547464825323e-28\n    ],\n    [\n      0.1316524975873958,\n      0.414213562373095,\n      0.7673269879789602,\n      1.091308501069271,\n      1.303225372841206,\n      1.56968557711749,\n      1.920982126971166,\n      2.414213562373094,\n      3.171594802363212,\n      4.510708503662055,\n      7.595754112725146,\n      22.90376554843115,\n      0.984807753012208,\n      0.6427876096865394,\n      0.3420201433256688,\n      0.9396926207859084,\n      -0.1736481776669303,\n      -0.7660444431189779,\n      0.8660254037844387,\n      0.5,\n      -0.5144957554275265,\n      -0.4717319685649723,\n      -0.3133774542039019,\n      -0.1819131996109812,\n      -0.09457419252642064,\n      -0.04096558288530405,\n      -0.01419856857247115,\n      -0.003699974673760037,\n      0.8574929257125442,\n      0.8817419973177052,\n      0.9496286491027329,\n      0.9833145924917901,\n      0.9955178160675857,\n      0.9991605581781475,\n      0.999899195244447,\n      0.9999931550702802\n    ],\n    [\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2283748241799531e-28,\n      4037858874020686e-28,\n      2146547464825323e-28,\n      5461314069809755e-27,\n      4921085770524055e-27,\n      4343405037091838e-27,\n      3732668368707687e-27,\n      3093523840190885e-27,\n      2430835727329466e-27,\n      1734679010007751e-27,\n      974825365660928e-27,\n      2797435120168326e-28,\n      -5456116108943413e-27,\n      -4878985199565852e-27,\n      -4240448995017367e-27,\n      -3559909094758253e-27,\n      -2858043359288075e-27,\n      -2156177623817898e-27,\n      -1475637723558782e-27,\n      -8371015190102975e-28,\n      -2599706096327376e-28,\n      -2382191739347913e-28,\n      -6423305872147834e-28,\n      -9400849094049688e-28,\n      -1122435026096556e-27,\n      -1183840321267481e-27,\n      -1122435026096556e-27,\n      -9400849094049688e-28,\n      -6423305872147841e-28,\n      -2382191739347918e-28\n    ]\n  ];\n  var tantab_l = win[Encoder.SHORT_TYPE];\n  var cx = win[Encoder.SHORT_TYPE];\n  var ca = win[Encoder.SHORT_TYPE];\n  var cs = win[Encoder.SHORT_TYPE];\n  var order = [\n    0,\n    1,\n    16,\n    17,\n    8,\n    9,\n    24,\n    25,\n    4,\n    5,\n    20,\n    21,\n    12,\n    13,\n    28,\n    29,\n    2,\n    3,\n    18,\n    19,\n    10,\n    11,\n    26,\n    27,\n    6,\n    7,\n    22,\n    23,\n    14,\n    15,\n    30,\n    31\n  ];\n  function window_subband(x1, x1Pos, a) {\n    var wp = 10;\n    var x2 = x1Pos + 238 - 14 - 286;\n    for (var i = -15; i < 0; i++) {\n      var w, s, t;\n      w = enwindow[wp + -10];\n      s = x1[x2 + -224] * w;\n      t = x1[x1Pos + 224] * w;\n      w = enwindow[wp + -9];\n      s += x1[x2 + -160] * w;\n      t += x1[x1Pos + 160] * w;\n      w = enwindow[wp + -8];\n      s += x1[x2 + -96] * w;\n      t += x1[x1Pos + 96] * w;\n      w = enwindow[wp + -7];\n      s += x1[x2 + -32] * w;\n      t += x1[x1Pos + 32] * w;\n      w = enwindow[wp + -6];\n      s += x1[x2 + 32] * w;\n      t += x1[x1Pos + -32] * w;\n      w = enwindow[wp + -5];\n      s += x1[x2 + 96] * w;\n      t += x1[x1Pos + -96] * w;\n      w = enwindow[wp + -4];\n      s += x1[x2 + 160] * w;\n      t += x1[x1Pos + -160] * w;\n      w = enwindow[wp + -3];\n      s += x1[x2 + 224] * w;\n      t += x1[x1Pos + -224] * w;\n      w = enwindow[wp + -2];\n      s += x1[x1Pos + -256] * w;\n      t -= x1[x2 + 256] * w;\n      w = enwindow[wp + -1];\n      s += x1[x1Pos + -192] * w;\n      t -= x1[x2 + 192] * w;\n      w = enwindow[wp + 0];\n      s += x1[x1Pos + -128] * w;\n      t -= x1[x2 + 128] * w;\n      w = enwindow[wp + 1];\n      s += x1[x1Pos + -64] * w;\n      t -= x1[x2 + 64] * w;\n      w = enwindow[wp + 2];\n      s += x1[x1Pos + 0] * w;\n      t -= x1[x2 + 0] * w;\n      w = enwindow[wp + 3];\n      s += x1[x1Pos + 64] * w;\n      t -= x1[x2 + -64] * w;\n      w = enwindow[wp + 4];\n      s += x1[x1Pos + 128] * w;\n      t -= x1[x2 + -128] * w;\n      w = enwindow[wp + 5];\n      s += x1[x1Pos + 192] * w;\n      t -= x1[x2 + -192] * w;\n      s *= enwindow[wp + 6];\n      w = t - s;\n      a[30 + i * 2] = t + s;\n      a[31 + i * 2] = enwindow[wp + 7] * w;\n      wp += 18;\n      x1Pos--;\n      x2++;\n    }\n    {\n      var s, t, u, v;\n      t = x1[x1Pos + -16] * enwindow[wp + -10];\n      s = x1[x1Pos + -32] * enwindow[wp + -2];\n      t += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n      s += x1[x1Pos + -96] * enwindow[wp + -1];\n      t += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n      s += x1[x1Pos + -160] * enwindow[wp + 0];\n      t += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n      s += x1[x1Pos + -224] * enwindow[wp + 1];\n      t += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n      s -= x1[x1Pos + 32] * enwindow[wp + 2];\n      t += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n      s -= x1[x1Pos + 96] * enwindow[wp + 3];\n      t += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n      s -= x1[x1Pos + 160] * enwindow[wp + 4];\n      t += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n      s -= x1[x1Pos + 224];\n      u = s - t;\n      v = s + t;\n      t = a[14];\n      s = a[15] - t;\n      a[31] = v + t;\n      a[30] = u + s;\n      a[15] = u - s;\n      a[14] = v - t;\n    }\n    {\n      var xr;\n      xr = a[28] - a[0];\n      a[0] += a[28];\n      a[28] = xr * enwindow[wp + -2 * 18 + 7];\n      xr = a[29] - a[1];\n      a[1] += a[29];\n      a[29] = xr * enwindow[wp + -2 * 18 + 7];\n      xr = a[26] - a[2];\n      a[2] += a[26];\n      a[26] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[27] - a[3];\n      a[3] += a[27];\n      a[27] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[24] - a[4];\n      a[4] += a[24];\n      a[24] = xr * enwindow[wp + -6 * 18 + 7];\n      xr = a[25] - a[5];\n      a[5] += a[25];\n      a[25] = xr * enwindow[wp + -6 * 18 + 7];\n      xr = a[22] - a[6];\n      a[6] += a[22];\n      a[22] = xr * Util$4.SQRT2;\n      xr = a[23] - a[7];\n      a[7] += a[23];\n      a[23] = xr * Util$4.SQRT2 - a[7];\n      a[7] -= a[6];\n      a[22] -= a[7];\n      a[23] -= a[22];\n      xr = a[6];\n      a[6] = a[31] - xr;\n      a[31] = a[31] + xr;\n      xr = a[7];\n      a[7] = a[30] - xr;\n      a[30] = a[30] + xr;\n      xr = a[22];\n      a[22] = a[15] - xr;\n      a[15] = a[15] + xr;\n      xr = a[23];\n      a[23] = a[14] - xr;\n      a[14] = a[14] + xr;\n      xr = a[20] - a[8];\n      a[8] += a[20];\n      a[20] = xr * enwindow[wp + -10 * 18 + 7];\n      xr = a[21] - a[9];\n      a[9] += a[21];\n      a[21] = xr * enwindow[wp + -10 * 18 + 7];\n      xr = a[18] - a[10];\n      a[10] += a[18];\n      a[18] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[19] - a[11];\n      a[11] += a[19];\n      a[19] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[16] - a[12];\n      a[12] += a[16];\n      a[16] = xr * enwindow[wp + -14 * 18 + 7];\n      xr = a[17] - a[13];\n      a[13] += a[17];\n      a[17] = xr * enwindow[wp + -14 * 18 + 7];\n      xr = -a[20] + a[24];\n      a[20] += a[24];\n      a[24] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = -a[21] + a[25];\n      a[21] += a[25];\n      a[25] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[4] - a[8];\n      a[4] += a[8];\n      a[8] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[5] - a[9];\n      a[5] += a[9];\n      a[9] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[0] - a[12];\n      a[0] += a[12];\n      a[12] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[1] - a[13];\n      a[1] += a[13];\n      a[13] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[16] - a[28];\n      a[16] += a[28];\n      a[28] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = -a[17] + a[29];\n      a[17] += a[29];\n      a[29] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = Util$4.SQRT2 * (a[2] - a[10]);\n      a[2] += a[10];\n      a[10] = xr;\n      xr = Util$4.SQRT2 * (a[3] - a[11]);\n      a[3] += a[11];\n      a[11] = xr;\n      xr = Util$4.SQRT2 * (-a[18] + a[26]);\n      a[18] += a[26];\n      a[26] = xr - a[18];\n      xr = Util$4.SQRT2 * (-a[19] + a[27]);\n      a[19] += a[27];\n      a[27] = xr - a[19];\n      xr = a[2];\n      a[19] -= a[3];\n      a[3] -= xr;\n      a[2] = a[31] - xr;\n      a[31] += xr;\n      xr = a[3];\n      a[11] -= a[19];\n      a[18] -= xr;\n      a[3] = a[30] - xr;\n      a[30] += xr;\n      xr = a[18];\n      a[27] -= a[11];\n      a[19] -= xr;\n      a[18] = a[15] - xr;\n      a[15] += xr;\n      xr = a[19];\n      a[10] -= xr;\n      a[19] = a[14] - xr;\n      a[14] += xr;\n      xr = a[10];\n      a[11] -= xr;\n      a[10] = a[23] - xr;\n      a[23] += xr;\n      xr = a[11];\n      a[26] -= xr;\n      a[11] = a[22] - xr;\n      a[22] += xr;\n      xr = a[26];\n      a[27] -= xr;\n      a[26] = a[7] - xr;\n      a[7] += xr;\n      xr = a[27];\n      a[27] = a[6] - xr;\n      a[6] += xr;\n      xr = Util$4.SQRT2 * (a[0] - a[4]);\n      a[0] += a[4];\n      a[4] = xr;\n      xr = Util$4.SQRT2 * (a[1] - a[5]);\n      a[1] += a[5];\n      a[5] = xr;\n      xr = Util$4.SQRT2 * (a[16] - a[20]);\n      a[16] += a[20];\n      a[20] = xr;\n      xr = Util$4.SQRT2 * (a[17] - a[21]);\n      a[17] += a[21];\n      a[21] = xr;\n      xr = -Util$4.SQRT2 * (a[8] - a[12]);\n      a[8] += a[12];\n      a[12] = xr - a[8];\n      xr = -Util$4.SQRT2 * (a[9] - a[13]);\n      a[9] += a[13];\n      a[13] = xr - a[9];\n      xr = -Util$4.SQRT2 * (a[25] - a[29]);\n      a[25] += a[29];\n      a[29] = xr - a[25];\n      xr = -Util$4.SQRT2 * (a[24] + a[28]);\n      a[24] -= a[28];\n      a[28] = xr - a[24];\n      xr = a[24] - a[16];\n      a[24] = xr;\n      xr = a[20] - xr;\n      a[20] = xr;\n      xr = a[28] - xr;\n      a[28] = xr;\n      xr = a[25] - a[17];\n      a[25] = xr;\n      xr = a[21] - xr;\n      a[21] = xr;\n      xr = a[29] - xr;\n      a[29] = xr;\n      xr = a[17] - a[1];\n      a[17] = xr;\n      xr = a[9] - xr;\n      a[9] = xr;\n      xr = a[25] - xr;\n      a[25] = xr;\n      xr = a[5] - xr;\n      a[5] = xr;\n      xr = a[21] - xr;\n      a[21] = xr;\n      xr = a[13] - xr;\n      a[13] = xr;\n      xr = a[29] - xr;\n      a[29] = xr;\n      xr = a[1] - a[0];\n      a[1] = xr;\n      xr = a[16] - xr;\n      a[16] = xr;\n      xr = a[17] - xr;\n      a[17] = xr;\n      xr = a[8] - xr;\n      a[8] = xr;\n      xr = a[9] - xr;\n      a[9] = xr;\n      xr = a[24] - xr;\n      a[24] = xr;\n      xr = a[25] - xr;\n      a[25] = xr;\n      xr = a[4] - xr;\n      a[4] = xr;\n      xr = a[5] - xr;\n      a[5] = xr;\n      xr = a[20] - xr;\n      a[20] = xr;\n      xr = a[21] - xr;\n      a[21] = xr;\n      xr = a[12] - xr;\n      a[12] = xr;\n      xr = a[13] - xr;\n      a[13] = xr;\n      xr = a[28] - xr;\n      a[28] = xr;\n      xr = a[29] - xr;\n      a[29] = xr;\n      xr = a[0];\n      a[0] += a[31];\n      a[31] -= xr;\n      xr = a[1];\n      a[1] += a[30];\n      a[30] -= xr;\n      xr = a[16];\n      a[16] += a[15];\n      a[15] -= xr;\n      xr = a[17];\n      a[17] += a[14];\n      a[14] -= xr;\n      xr = a[8];\n      a[8] += a[23];\n      a[23] -= xr;\n      xr = a[9];\n      a[9] += a[22];\n      a[22] -= xr;\n      xr = a[24];\n      a[24] += a[7];\n      a[7] -= xr;\n      xr = a[25];\n      a[25] += a[6];\n      a[6] -= xr;\n      xr = a[4];\n      a[4] += a[27];\n      a[27] -= xr;\n      xr = a[5];\n      a[5] += a[26];\n      a[26] -= xr;\n      xr = a[20];\n      a[20] += a[11];\n      a[11] -= xr;\n      xr = a[21];\n      a[21] += a[10];\n      a[10] -= xr;\n      xr = a[12];\n      a[12] += a[19];\n      a[19] -= xr;\n      xr = a[13];\n      a[13] += a[18];\n      a[18] -= xr;\n      xr = a[28];\n      a[28] += a[3];\n      a[3] -= xr;\n      xr = a[29];\n      a[29] += a[2];\n      a[2] -= xr;\n    }\n  }\n  function mdct_short(inout, inoutPos) {\n    for (var l = 0; l < 3; l++) {\n      var tc0, tc1, tc2, ts0, ts1, ts2;\n      ts0 = inout[inoutPos + 2 * 3] * win[Encoder.SHORT_TYPE][0] - inout[inoutPos + 5 * 3];\n      tc0 = inout[inoutPos + 0 * 3] * win[Encoder.SHORT_TYPE][2] - inout[inoutPos + 3 * 3];\n      tc1 = ts0 + tc0;\n      tc2 = ts0 - tc0;\n      ts0 = inout[inoutPos + 5 * 3] * win[Encoder.SHORT_TYPE][0] + inout[inoutPos + 2 * 3];\n      tc0 = inout[inoutPos + 3 * 3] * win[Encoder.SHORT_TYPE][2] + inout[inoutPos + 0 * 3];\n      ts1 = ts0 + tc0;\n      ts2 = -ts0 + tc0;\n      tc0 = (inout[inoutPos + 1 * 3] * win[Encoder.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2069978111953089e-26;\n      ts0 = (inout[inoutPos + 4 * 3] * win[Encoder.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2069978111953089e-26;\n      inout[inoutPos + 3 * 0] = tc1 * 190752519173728e-25 + tc0;\n      inout[inoutPos + 3 * 5] = -ts1 * 190752519173728e-25 + ts0;\n      tc2 = tc2 * 0.8660254037844387 * 1907525191737281e-26;\n      ts1 = ts1 * 0.5 * 1907525191737281e-26 + ts0;\n      inout[inoutPos + 3 * 1] = tc2 - ts1;\n      inout[inoutPos + 3 * 2] = tc2 + ts1;\n      tc1 = tc1 * 0.5 * 1907525191737281e-26 - tc0;\n      ts2 = ts2 * 0.8660254037844387 * 1907525191737281e-26;\n      inout[inoutPos + 3 * 3] = tc1 + ts2;\n      inout[inoutPos + 3 * 4] = tc1 - ts2;\n      inoutPos++;\n    }\n  }\n  function mdct_long(out, outPos, _in) {\n    var ct, st;\n    {\n      var tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n      tc1 = _in[17] - _in[9];\n      tc3 = _in[15] - _in[11];\n      tc4 = _in[14] - _in[12];\n      ts5 = _in[0] + _in[8];\n      ts6 = _in[1] + _in[7];\n      ts7 = _in[2] + _in[6];\n      ts8 = _in[3] + _in[5];\n      out[outPos + 17] = ts5 + ts7 - ts8 - (ts6 - _in[4]);\n      st = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n      ct = (tc1 - tc3 - tc4) * cx[12 + 6];\n      out[outPos + 5] = ct + st;\n      out[outPos + 6] = ct - st;\n      tc2 = (_in[16] - _in[10]) * cx[12 + 6];\n      ts6 = ts6 * cx[12 + 7] + _in[4];\n      ct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n      st = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n      out[outPos + 1] = ct + st;\n      out[outPos + 2] = ct - st;\n      ct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n      st = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n      out[outPos + 9] = ct + st;\n      out[outPos + 10] = ct - st;\n      ct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n      st = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n      out[outPos + 13] = ct + st;\n      out[outPos + 14] = ct - st;\n    }\n    {\n      var ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n      ts1 = _in[8] - _in[0];\n      ts3 = _in[6] - _in[2];\n      ts4 = _in[5] - _in[3];\n      tc5 = _in[17] + _in[9];\n      tc6 = _in[16] + _in[10];\n      tc7 = _in[15] + _in[11];\n      tc8 = _in[14] + _in[12];\n      out[outPos + 0] = tc5 + tc7 + tc8 + (tc6 + _in[13]);\n      ct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n      st = (ts1 - ts3 + ts4) * cx[12 + 6];\n      out[outPos + 11] = ct + st;\n      out[outPos + 12] = ct - st;\n      ts2 = (_in[7] - _in[1]) * cx[12 + 6];\n      tc6 = _in[13] - tc6 * cx[12 + 7];\n      ct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n      st = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n      out[outPos + 3] = ct + st;\n      out[outPos + 4] = ct - st;\n      ct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n      st = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n      out[outPos + 7] = ct + st;\n      out[outPos + 8] = ct - st;\n      ct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n      st = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n      out[outPos + 15] = ct + st;\n      out[outPos + 16] = ct - st;\n    }\n  }\n  this.mdct_sub48 = function(gfc, w0, w1) {\n    var wk = w0;\n    var wkPos = 286;\n    for (var ch = 0; ch < gfc.channels_out; ch++) {\n      for (var gr = 0; gr < gfc.mode_gr; gr++) {\n        var band;\n        var gi = gfc.l3_side.tt[gr][ch];\n        var mdct_enc = gi.xr;\n        var mdct_encPos = 0;\n        var samp = gfc.sb_sample[ch][1 - gr];\n        var sampPos = 0;\n        for (var k = 0; k < 18 / 2; k++) {\n          window_subband(wk, wkPos, samp[sampPos]);\n          window_subband(wk, wkPos + 32, samp[sampPos + 1]);\n          sampPos += 2;\n          wkPos += 64;\n          for (band = 1; band < 32; band += 2) {\n            samp[sampPos - 1][band] *= -1;\n          }\n        }\n        for (band = 0; band < 32; band++, mdct_encPos += 18) {\n          var type = gi.block_type;\n          var band0 = gfc.sb_sample[ch][gr];\n          var band1 = gfc.sb_sample[ch][1 - gr];\n          if (gi.mixed_block_flag != 0 && band < 2)\n            type = 0;\n          if (gfc.amp_filter[band] < 1e-12) {\n            Arrays$6.fill(mdct_enc, mdct_encPos + 0, mdct_encPos + 18, 0);\n          } else {\n            if (gfc.amp_filter[band] < 1) {\n              for (var k = 0; k < 18; k++) {\n                band1[k][order[band]] *= gfc.amp_filter[band];\n              }\n            }\n            if (type == Encoder.SHORT_TYPE) {\n              for (var k = -NS / 4; k < 0; k++) {\n                var w = win[Encoder.SHORT_TYPE][k + 3];\n                mdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]] * w - band0[8 - k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]] * w + band0[15 + k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]] * w - band0[14 - k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]] * w + band1[3 + k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]] * w - band1[2 - k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]] * w + band1[9 + k][order[band]];\n              }\n              mdct_short(mdct_enc, mdct_encPos);\n            } else {\n              var work = new_float$e(18);\n              for (var k = -NL / 4; k < 0; k++) {\n                var a, b;\n                a = win[type][k + 27] * band1[k + 9][order[band]] + win[type][k + 36] * band1[8 - k][order[band]];\n                b = win[type][k + 9] * band0[k + 9][order[band]] - win[type][k + 18] * band0[8 - k][order[band]];\n                work[k + 9] = a - b * tantab_l[3 + k + 9];\n                work[k + 18] = a * tantab_l[3 + k + 9] + b;\n              }\n              mdct_long(mdct_enc, mdct_encPos, work);\n            }\n          }\n          if (type != Encoder.SHORT_TYPE && band != 0) {\n            for (var k = 7; k >= 0; --k) {\n              var bu, bd;\n              bu = mdct_enc[mdct_encPos + k] * ca[20 + k] + mdct_enc[mdct_encPos + -1 - k] * cs[28 + k];\n              bd = mdct_enc[mdct_encPos + k] * cs[28 + k] - mdct_enc[mdct_encPos + -1 - k] * ca[20 + k];\n              mdct_enc[mdct_encPos + -1 - k] = bu;\n              mdct_enc[mdct_encPos + k] = bd;\n            }\n          }\n        }\n      }\n      wk = w1;\n      wkPos = 286;\n      if (gfc.mode_gr == 1) {\n        for (var i = 0; i < 18; i++) {\n          System$9.arraycopy(\n            gfc.sb_sample[ch][1][i],\n            0,\n            gfc.sb_sample[ch][0][i],\n            0,\n            32\n          );\n        }\n      }\n    }\n  };\n}\nvar System$8 = common.System;\nvar new_float$d = common.new_float;\nvar new_float_n$5 = common.new_float_n;\nfunction III_psy_xmin() {\n  this.l = new_float$d(Encoder.SBMAX_l);\n  this.s = new_float_n$5([Encoder.SBMAX_s, 3]);\n  var self2 = this;\n  this.assign = function(iii_psy_xmin) {\n    System$8.arraycopy(iii_psy_xmin.l, 0, self2.l, 0, Encoder.SBMAX_l);\n    for (var i = 0; i < Encoder.SBMAX_s; i++) {\n      for (var j = 0; j < 3; j++) {\n        self2.s[i][j] = iii_psy_xmin.s[i][j];\n      }\n    }\n  };\n}\nfunction III_psy_ratio() {\n  this.thm = new III_psy_xmin();\n  this.en = new III_psy_xmin();\n}\nfunction MPEGMode(ordinal) {\n  var _ordinal = ordinal;\n  this.ordinal = function() {\n    return _ordinal;\n  };\n}\nMPEGMode.STEREO = new MPEGMode(0);\nMPEGMode.JOINT_STEREO = new MPEGMode(1);\nMPEGMode.DUAL_CHANNEL = new MPEGMode(2);\nMPEGMode.MONO = new MPEGMode(3);\nMPEGMode.NOT_SET = new MPEGMode(4);\nvar System$7 = common.System;\nvar VbrMode$6 = common.VbrMode;\nvar new_array_n = common.new_array_n;\nvar new_float$c = common.new_float;\nvar new_float_n$4 = common.new_float_n;\nvar new_int$c = common.new_int;\nvar assert$a = common.assert;\nEncoder.ENCDELAY = 576;\nEncoder.POSTDELAY = 1152;\nEncoder.MDCTDELAY = 48;\nEncoder.FFTOFFSET = 224 + Encoder.MDCTDELAY;\nEncoder.DECDELAY = 528;\nEncoder.SBLIMIT = 32;\nEncoder.CBANDS = 64;\nEncoder.SBPSY_l = 21;\nEncoder.SBPSY_s = 12;\nEncoder.SBMAX_l = 22;\nEncoder.SBMAX_s = 13;\nEncoder.PSFB21 = 6;\nEncoder.PSFB12 = 6;\nEncoder.BLKSIZE = 1024;\nEncoder.HBLKSIZE = Encoder.BLKSIZE / 2 + 1;\nEncoder.BLKSIZE_s = 256;\nEncoder.HBLKSIZE_s = Encoder.BLKSIZE_s / 2 + 1;\nEncoder.NORM_TYPE = 0;\nEncoder.START_TYPE = 1;\nEncoder.SHORT_TYPE = 2;\nEncoder.STOP_TYPE = 3;\nEncoder.MPG_MD_LR_LR = 0;\nEncoder.MPG_MD_LR_I = 1;\nEncoder.MPG_MD_MS_LR = 2;\nEncoder.MPG_MD_MS_I = 3;\nEncoder.fircoef = [\n  -0.0207887 * 5,\n  -0.0378413 * 5,\n  -0.0432472 * 5,\n  -0.031183 * 5,\n  779609e-23 * 5,\n  0.0467745 * 5,\n  0.10091 * 5,\n  0.151365 * 5,\n  0.187098 * 5\n];\nfunction Encoder() {\n  var FFTOFFSET = Encoder.FFTOFFSET;\n  var MPG_MD_MS_LR = Encoder.MPG_MD_MS_LR;\n  var bs = null;\n  this.psy = null;\n  var psy = null;\n  var vbr = null;\n  var qupvt = null;\n  this.setModules = function(_bs, _psy, _qupvt, _vbr) {\n    bs = _bs;\n    this.psy = _psy;\n    psy = _psy;\n    vbr = _vbr;\n    qupvt = _qupvt;\n  };\n  var newMDCT = new NewMDCT();\n  function adjust_ATH(gfc) {\n    var gr2_max, max_pow;\n    if (gfc.ATH.useAdjust == 0) {\n      gfc.ATH.adjust = 1;\n      return;\n    }\n    max_pow = gfc.loudness_sq[0][0];\n    gr2_max = gfc.loudness_sq[1][0];\n    if (gfc.channels_out == 2) {\n      max_pow += gfc.loudness_sq[0][1];\n      gr2_max += gfc.loudness_sq[1][1];\n    } else {\n      max_pow += max_pow;\n      gr2_max += gr2_max;\n    }\n    if (gfc.mode_gr == 2) {\n      max_pow = Math.max(max_pow, gr2_max);\n    }\n    max_pow *= 0.5;\n    max_pow *= gfc.ATH.aaSensitivityP;\n    if (max_pow > 0.03125) {\n      if (gfc.ATH.adjust >= 1) {\n        gfc.ATH.adjust = 1;\n      } else {\n        if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n          gfc.ATH.adjust = gfc.ATH.adjustLimit;\n        }\n      }\n      gfc.ATH.adjustLimit = 1;\n    } else {\n      var adj_lim_new = 31.98 * max_pow + 625e-6;\n      if (gfc.ATH.adjust >= adj_lim_new) {\n        gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n        if (gfc.ATH.adjust < adj_lim_new) {\n          gfc.ATH.adjust = adj_lim_new;\n        }\n      } else {\n        if (gfc.ATH.adjustLimit >= adj_lim_new) {\n          gfc.ATH.adjust = adj_lim_new;\n        } else {\n          if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n            gfc.ATH.adjust = gfc.ATH.adjustLimit;\n          }\n        }\n      }\n      gfc.ATH.adjustLimit = adj_lim_new;\n    }\n  }\n  function updateStats(gfc) {\n    var gr, ch;\n    assert$a(gfc.bitrate_index >= 0 && gfc.bitrate_index < 16);\n    assert$a(gfc.mode_ext >= 0 && gfc.mode_ext < 4);\n    gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n    gfc.bitrate_stereoMode_Hist[15][4]++;\n    if (gfc.channels_out == 2) {\n      gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n      gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n    }\n    for (gr = 0; gr < gfc.mode_gr; ++gr) {\n      for (ch = 0; ch < gfc.channels_out; ++ch) {\n        var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n        if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n          bt = 4;\n        gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n        gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n        gfc.bitrate_blockType_Hist[15][bt]++;\n        gfc.bitrate_blockType_Hist[15][5]++;\n      }\n    }\n  }\n  function lame_encode_frame_init(gfp, inbuf) {\n    var gfc = gfp.internal_flags;\n    var ch, gr;\n    if (gfc.lame_encode_frame_init == 0) {\n      var i, j;\n      var primebuff0 = new_float$c(286 + 1152 + 576);\n      var primebuff1 = new_float$c(286 + 1152 + 576);\n      gfc.lame_encode_frame_init = 1;\n      for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n        if (i < 576 * gfc.mode_gr) {\n          primebuff0[i] = 0;\n          if (gfc.channels_out == 2)\n            primebuff1[i] = 0;\n        } else {\n          primebuff0[i] = inbuf[0][j];\n          if (gfc.channels_out == 2)\n            primebuff1[i] = inbuf[1][j];\n          ++j;\n        }\n      }\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          gfc.l3_side.tt[gr][ch].block_type = Encoder.SHORT_TYPE;\n        }\n      }\n      newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n      assert$a(gfc.mf_size >= Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET);\n      assert$a(gfc.mf_size >= 512 + gfp.framesize - 32);\n    }\n  }\n  this.lame_encode_mp3_frame = function(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n    var mp3count;\n    var masking_LR = new_array_n([2, 2]);\n    masking_LR[0][0] = new III_psy_ratio();\n    masking_LR[0][1] = new III_psy_ratio();\n    masking_LR[1][0] = new III_psy_ratio();\n    masking_LR[1][1] = new III_psy_ratio();\n    var masking_MS = new_array_n([2, 2]);\n    masking_MS[0][0] = new III_psy_ratio();\n    masking_MS[0][1] = new III_psy_ratio();\n    masking_MS[1][0] = new III_psy_ratio();\n    masking_MS[1][1] = new III_psy_ratio();\n    var masking;\n    var inbuf = [null, null];\n    var gfc = gfp.internal_flags;\n    var tot_ener = new_float_n$4([2, 4]);\n    var ms_ener_ratio = [0.5, 0.5];\n    var pe = [\n      [0, 0],\n      [0, 0]\n    ];\n    var pe_MS = [\n      [0, 0],\n      [0, 0]\n    ];\n    var pe_use;\n    var ch, gr;\n    inbuf[0] = inbuf_l;\n    inbuf[1] = inbuf_r;\n    if (gfc.lame_encode_frame_init == 0) {\n      lame_encode_frame_init(gfp, inbuf);\n    }\n    gfc.padding = 0;\n    if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n      gfc.slot_lag += gfp.out_samplerate;\n      gfc.padding = 1;\n    }\n    if (gfc.psymodel != 0) {\n      var ret;\n      var bufp = [null, null];\n      var bufpPos = 0;\n      var blocktype = new_int$c(2);\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          bufp[ch] = inbuf[ch];\n          bufpPos = 576 + gr * 576 - Encoder.FFTOFFSET;\n        }\n        if (gfp.VBR == VbrMode$6.vbr_mtrh || gfp.VBR == VbrMode$6.vbr_mt) {\n          ret = psy.L3psycho_anal_vbr(\n            gfp,\n            bufp,\n            bufpPos,\n            gr,\n            masking_LR,\n            masking_MS,\n            pe[gr],\n            pe_MS[gr],\n            tot_ener[gr],\n            blocktype\n          );\n        } else {\n          ret = psy.L3psycho_anal_ns(\n            gfp,\n            bufp,\n            bufpPos,\n            gr,\n            masking_LR,\n            masking_MS,\n            pe[gr],\n            pe_MS[gr],\n            tot_ener[gr],\n            blocktype\n          );\n        }\n        if (ret != 0)\n          return -4;\n        if (gfp.mode == MPEGMode.JOINT_STEREO) {\n          ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n          if (ms_ener_ratio[gr] > 0) {\n            ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n          }\n        }\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          var cod_info = gfc.l3_side.tt[gr][ch];\n          cod_info.block_type = blocktype[ch];\n          cod_info.mixed_block_flag = 0;\n        }\n      }\n    } else {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          gfc.l3_side.tt[gr][ch].block_type = Encoder.NORM_TYPE;\n          gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n          pe_MS[gr][ch] = pe[gr][ch] = 700;\n        }\n      }\n    }\n    adjust_ATH(gfc);\n    newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n    gfc.mode_ext = Encoder.MPG_MD_LR_LR;\n    if (gfp.force_ms) {\n      gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n    } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n      var sum_pe_MS = 0;\n      var sum_pe_LR = 0;\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          sum_pe_MS += pe_MS[gr][ch];\n          sum_pe_LR += pe[gr][ch];\n        }\n      }\n      if (sum_pe_MS <= 1 * sum_pe_LR) {\n        var gi0 = gfc.l3_side.tt[0];\n        var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n        if (gi0[0].block_type == gi0[1].block_type && gi1[0].block_type == gi1[1].block_type) {\n          gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n        }\n      }\n    }\n    if (gfc.mode_ext == MPG_MD_MS_LR) {\n      masking = masking_MS;\n      pe_use = pe_MS;\n    } else {\n      masking = masking_LR;\n      pe_use = pe;\n    }\n    if (gfp.analysis && gfc.pinfo != null) {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n          gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n          gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n          gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n          System$7.arraycopy(\n            gfc.l3_side.tt[gr][ch].xr,\n            0,\n            gfc.pinfo.xr[gr][ch],\n            0,\n            576\n          );\n          if (gfc.mode_ext == MPG_MD_MS_LR) {\n            gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n            System$7.arraycopy(\n              gfc.pinfo.energy[gr][ch + 2],\n              0,\n              gfc.pinfo.energy[gr][ch],\n              0,\n              gfc.pinfo.energy[gr][ch].length\n            );\n          }\n        }\n      }\n    }\n    if (gfp.VBR == VbrMode$6.vbr_off || gfp.VBR == VbrMode$6.vbr_abr) {\n      var i;\n      var f;\n      for (i = 0; i < 18; i++)\n        gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n      f = 0;\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++)\n          f += pe_use[gr][ch];\n      }\n      gfc.nsPsy.pefirbuf[18] = f;\n      f = gfc.nsPsy.pefirbuf[9];\n      for (i = 0; i < 9; i++) {\n        f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i]) * Encoder.fircoef[i];\n      }\n      f = 670 * 5 * gfc.mode_gr * gfc.channels_out / f;\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          pe_use[gr][ch] *= f;\n        }\n      }\n    }\n    gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n    bs.format_bitstream(gfp);\n    mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n    if (gfp.bWriteVbrTag)\n      vbr.addVbrFrame(gfp);\n    if (gfp.analysis && gfc.pinfo != null) {\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var j;\n        for (j = 0; j < FFTOFFSET; j++) {\n          gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j + gfp.framesize];\n        }\n        for (j = FFTOFFSET; j < 1600; j++) {\n          gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n        }\n      }\n      qupvt.set_frame_pinfo(gfp, masking);\n    }\n    updateStats(gfc);\n    return mp3count;\n  };\n}\nvar Util$3 = common.Util;\nvar new_float$b = common.new_float;\nfunction FFT() {\n  var window2 = new_float$b(Encoder.BLKSIZE);\n  var window_s = new_float$b(Encoder.BLKSIZE_s / 2);\n  var costab = [\n    0.9238795325112867,\n    0.3826834323650898,\n    0.9951847266721969,\n    0.0980171403295606,\n    0.9996988186962042,\n    0.02454122852291229,\n    0.9999811752826011,\n    0.006135884649154475\n  ];\n  function fht(fz, fzPos, n) {\n    var tri = 0;\n    var k4;\n    var fi;\n    var gi;\n    n <<= 1;\n    var fn = fzPos + n;\n    k4 = 4;\n    do {\n      var s1, c1;\n      var i, k1, k2, k3, kx;\n      kx = k4 >> 1;\n      k1 = k4;\n      k2 = k4 << 1;\n      k3 = k2 + k1;\n      k4 = k2 << 1;\n      fi = fzPos;\n      gi = fi + kx;\n      do {\n        var f0, f1, f2, f3;\n        f1 = fz[fi + 0] - fz[fi + k1];\n        f0 = fz[fi + 0] + fz[fi + k1];\n        f3 = fz[fi + k2] - fz[fi + k3];\n        f2 = fz[fi + k2] + fz[fi + k3];\n        fz[fi + k2] = f0 - f2;\n        fz[fi + 0] = f0 + f2;\n        fz[fi + k3] = f1 - f3;\n        fz[fi + k1] = f1 + f3;\n        f1 = fz[gi + 0] - fz[gi + k1];\n        f0 = fz[gi + 0] + fz[gi + k1];\n        f3 = Util$3.SQRT2 * fz[gi + k3];\n        f2 = Util$3.SQRT2 * fz[gi + k2];\n        fz[gi + k2] = f0 - f2;\n        fz[gi + 0] = f0 + f2;\n        fz[gi + k3] = f1 - f3;\n        fz[gi + k1] = f1 + f3;\n        gi += k4;\n        fi += k4;\n      } while (fi < fn);\n      c1 = costab[tri + 0];\n      s1 = costab[tri + 1];\n      for (i = 1; i < kx; i++) {\n        var c2, s2;\n        c2 = 1 - 2 * s1 * s1;\n        s2 = 2 * s1 * c1;\n        fi = fzPos + i;\n        gi = fzPos + k1 - i;\n        do {\n          var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n          b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n          a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n          f1 = fz[fi + 0] - a;\n          f0 = fz[fi + 0] + a;\n          g1 = fz[gi + 0] - b;\n          g0 = fz[gi + 0] + b;\n          b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n          a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n          f3 = fz[fi + k2] - a;\n          f2 = fz[fi + k2] + a;\n          g3 = fz[gi + k2] - b;\n          g2 = fz[gi + k2] + b;\n          b = s1 * f2 - c1 * g3;\n          a = c1 * f2 + s1 * g3;\n          fz[fi + k2] = f0 - a;\n          fz[fi + 0] = f0 + a;\n          fz[gi + k3] = g1 - b;\n          fz[gi + k1] = g1 + b;\n          b = c1 * g2 - s1 * f3;\n          a = s1 * g2 + c1 * f3;\n          fz[gi + k2] = g0 - a;\n          fz[gi + 0] = g0 + a;\n          fz[fi + k3] = f1 - b;\n          fz[fi + k1] = f1 + b;\n          gi += k4;\n          fi += k4;\n        } while (fi < fn);\n        c2 = c1;\n        c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n        s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n      }\n      tri += 2;\n    } while (k4 < n);\n  }\n  var rv_tbl = [\n    0,\n    128,\n    64,\n    192,\n    32,\n    160,\n    96,\n    224,\n    16,\n    144,\n    80,\n    208,\n    48,\n    176,\n    112,\n    240,\n    8,\n    136,\n    72,\n    200,\n    40,\n    168,\n    104,\n    232,\n    24,\n    152,\n    88,\n    216,\n    56,\n    184,\n    120,\n    248,\n    4,\n    132,\n    68,\n    196,\n    36,\n    164,\n    100,\n    228,\n    20,\n    148,\n    84,\n    212,\n    52,\n    180,\n    116,\n    244,\n    12,\n    140,\n    76,\n    204,\n    44,\n    172,\n    108,\n    236,\n    28,\n    156,\n    92,\n    220,\n    60,\n    188,\n    124,\n    252,\n    2,\n    130,\n    66,\n    194,\n    34,\n    162,\n    98,\n    226,\n    18,\n    146,\n    82,\n    210,\n    50,\n    178,\n    114,\n    242,\n    10,\n    138,\n    74,\n    202,\n    42,\n    170,\n    106,\n    234,\n    26,\n    154,\n    90,\n    218,\n    58,\n    186,\n    122,\n    250,\n    6,\n    134,\n    70,\n    198,\n    38,\n    166,\n    102,\n    230,\n    22,\n    150,\n    86,\n    214,\n    54,\n    182,\n    118,\n    246,\n    14,\n    142,\n    78,\n    206,\n    46,\n    174,\n    110,\n    238,\n    30,\n    158,\n    94,\n    222,\n    62,\n    190,\n    126,\n    254\n  ];\n  this.fft_short = function(gfc, x_real, chn, buffer, bufPos) {\n    for (var b = 0; b < 3; b++) {\n      var x = Encoder.BLKSIZE_s / 2;\n      var k = 65535 & 576 / 3 * (b + 1);\n      var j = Encoder.BLKSIZE_s / 8 - 1;\n      do {\n        var f0, f1, f2, f3, w;\n        var i = rv_tbl[j << 2] & 255;\n        f0 = window_s[i] * buffer[chn][bufPos + i + k];\n        w = window_s[127 - i] * buffer[chn][bufPos + i + k + 128];\n        f1 = f0 - w;\n        f0 = f0 + w;\n        f2 = window_s[i + 64] * buffer[chn][bufPos + i + k + 64];\n        w = window_s[63 - i] * buffer[chn][bufPos + i + k + 192];\n        f3 = f2 - w;\n        f2 = f2 + w;\n        x -= 4;\n        x_real[b][x + 0] = f0 + f2;\n        x_real[b][x + 2] = f0 - f2;\n        x_real[b][x + 1] = f1 + f3;\n        x_real[b][x + 3] = f1 - f3;\n        f0 = window_s[i + 1] * buffer[chn][bufPos + i + k + 1];\n        w = window_s[126 - i] * buffer[chn][bufPos + i + k + 129];\n        f1 = f0 - w;\n        f0 = f0 + w;\n        f2 = window_s[i + 65] * buffer[chn][bufPos + i + k + 65];\n        w = window_s[62 - i] * buffer[chn][bufPos + i + k + 193];\n        f3 = f2 - w;\n        f2 = f2 + w;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 0] = f0 + f2;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 2] = f0 - f2;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 1] = f1 + f3;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 3] = f1 - f3;\n      } while (--j >= 0);\n      fht(x_real[b], x, Encoder.BLKSIZE_s / 2);\n    }\n  };\n  this.fft_long = function(gfc, y, chn, buffer, bufPos) {\n    var jj = Encoder.BLKSIZE / 8 - 1;\n    var x = Encoder.BLKSIZE / 2;\n    do {\n      var f0, f1, f2, f3, w;\n      var i = rv_tbl[jj] & 255;\n      f0 = window2[i] * buffer[chn][bufPos + i];\n      w = window2[i + 512] * buffer[chn][bufPos + i + 512];\n      f1 = f0 - w;\n      f0 = f0 + w;\n      f2 = window2[i + 256] * buffer[chn][bufPos + i + 256];\n      w = window2[i + 768] * buffer[chn][bufPos + i + 768];\n      f3 = f2 - w;\n      f2 = f2 + w;\n      x -= 4;\n      y[x + 0] = f0 + f2;\n      y[x + 2] = f0 - f2;\n      y[x + 1] = f1 + f3;\n      y[x + 3] = f1 - f3;\n      f0 = window2[i + 1] * buffer[chn][bufPos + i + 1];\n      w = window2[i + 513] * buffer[chn][bufPos + i + 513];\n      f1 = f0 - w;\n      f0 = f0 + w;\n      f2 = window2[i + 257] * buffer[chn][bufPos + i + 257];\n      w = window2[i + 769] * buffer[chn][bufPos + i + 769];\n      f3 = f2 - w;\n      f2 = f2 + w;\n      y[x + Encoder.BLKSIZE / 2 + 0] = f0 + f2;\n      y[x + Encoder.BLKSIZE / 2 + 2] = f0 - f2;\n      y[x + Encoder.BLKSIZE / 2 + 1] = f1 + f3;\n      y[x + Encoder.BLKSIZE / 2 + 3] = f1 - f3;\n    } while (--jj >= 0);\n    fht(y, x, Encoder.BLKSIZE / 2);\n  };\n  this.init_fft = function(gfc) {\n    for (var i = 0; i < Encoder.BLKSIZE; i++) {\n      window2[i] = 0.42 - 0.5 * Math.cos(2 * Math.PI * (i + 0.5) / Encoder.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + 0.5) / Encoder.BLKSIZE);\n    }\n    for (var i = 0; i < Encoder.BLKSIZE_s / 2; i++) {\n      window_s[i] = 0.5 * (1 - Math.cos(2 * Math.PI * (i + 0.5) / Encoder.BLKSIZE_s));\n    }\n  };\n}\nvar VbrMode$5 = common.VbrMode;\nvar Float$1 = common.Float;\nvar ShortBlock$2 = common.ShortBlock;\nvar Util$2 = common.Util;\nvar Arrays$5 = common.Arrays;\nvar new_float$a = common.new_float;\nvar new_float_n$3 = common.new_float_n;\nvar new_int$b = common.new_int;\nvar assert$9 = common.assert;\nfunction PsyModel() {\n  var fft = new FFT();\n  var LOG10 = 2.302585092994046;\n  var rpelev = 2;\n  var rpelev2 = 16;\n  var rpelev_s = 2;\n  var rpelev2_s = 16;\n  var DELBARK = 0.34;\n  var VO_SCALE = 1 / (14752 * 14752) / (Encoder.BLKSIZE / 2);\n  var temporalmask_sustain_sec = 0.01;\n  var NS_PREECHO_ATT0 = 0.8;\n  var NS_PREECHO_ATT1 = 0.6;\n  var NS_PREECHO_ATT2 = 0.3;\n  var NS_MSFIX = 3.5;\n  var NSFIRLEN = 21;\n  var LN_TO_LOG10 = 0.2302585093;\n  function NON_LINEAR_SCALE_ENERGY(x) {\n    return x;\n  }\n  function psycho_loudness_approx(energy, gfc) {\n    var loudness_power = 0;\n    for (var i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n      loudness_power += energy[i] * gfc.ATH.eql_w[i];\n    }\n    loudness_power *= VO_SCALE;\n    return loudness_power;\n  }\n  function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n    var gfc = gfp.internal_flags;\n    if (chn < 2) {\n      fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n      fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n    } else if (chn == 2) {\n      for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n        var l = wsamp_l[wsamp_lPos + 0][j];\n        var r = wsamp_l[wsamp_lPos + 1][j];\n        wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$2.SQRT2 * 0.5;\n        wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$2.SQRT2 * 0.5;\n      }\n      for (var b = 2; b >= 0; --b) {\n        for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n          var l = wsamp_s[wsamp_sPos + 0][b][j];\n          var r = wsamp_s[wsamp_sPos + 1][b][j];\n          wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util$2.SQRT2 * 0.5;\n          wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util$2.SQRT2 * 0.5;\n        }\n      }\n    }\n    fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n    fftenergy[0] *= fftenergy[0];\n    for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n      var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n      var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n      fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n        (re * re + im * im) * 0.5\n      );\n    }\n    for (var b = 2; b >= 0; --b) {\n      fftenergy_s[b][0] = wsamp_s[wsamp_sPos + 0][b][0];\n      fftenergy_s[b][0] *= fftenergy_s[b][0];\n      for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n        var re = wsamp_s[wsamp_sPos + 0][b][Encoder.BLKSIZE_s / 2 - j];\n        var im = wsamp_s[wsamp_sPos + 0][b][Encoder.BLKSIZE_s / 2 + j];\n        fftenergy_s[b][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n          (re * re + im * im) * 0.5\n        );\n      }\n    }\n    {\n      var totalenergy = 0;\n      for (var j = 11; j < Encoder.HBLKSIZE; j++)\n        totalenergy += fftenergy[j];\n      gfc.tot_ener[chn] = totalenergy;\n    }\n    if (gfp.analysis) {\n      for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n        gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n        gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n      }\n      gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n    }\n    if (gfp.athaa_loudapprox == 2 && chn < 2) {\n      gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n      gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n    }\n  }\n  var I1LIMIT = 8;\n  var I2LIMIT = 23;\n  var MLIMIT = 15;\n  var ma_max_i1;\n  var ma_max_i2;\n  var ma_max_m;\n  var tab = [\n    1,\n    0.79433,\n    0.63096,\n    0.63096,\n    0.63096,\n    0.63096,\n    0.63096,\n    0.25119,\n    0.11749\n  ];\n  function init_mask_add_max_values() {\n    ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16);\n    ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16);\n    ma_max_m = Math.pow(10, MLIMIT / 10);\n  }\n  var table1 = [\n    3.3246 * 3.3246,\n    3.23837 * 3.23837,\n    3.15437 * 3.15437,\n    3.00412 * 3.00412,\n    2.86103 * 2.86103,\n    2.65407 * 2.65407,\n    2.46209 * 2.46209,\n    2.284 * 2.284,\n    2.11879 * 2.11879,\n    1.96552 * 1.96552,\n    1.82335 * 1.82335,\n    1.69146 * 1.69146,\n    1.56911 * 1.56911,\n    1.46658 * 1.46658,\n    1.37074 * 1.37074,\n    1.31036 * 1.31036,\n    1.25264 * 1.25264,\n    1.20648 * 1.20648,\n    1.16203 * 1.16203,\n    1.12765 * 1.12765,\n    1.09428 * 1.09428,\n    1.0659 * 1.0659,\n    1.03826 * 1.03826,\n    1.01895 * 1.01895,\n    1\n  ];\n  var table2 = [\n    1.33352 * 1.33352,\n    1.35879 * 1.35879,\n    1.38454 * 1.38454,\n    1.39497 * 1.39497,\n    1.40548 * 1.40548,\n    1.3537 * 1.3537,\n    1.30382 * 1.30382,\n    1.22321 * 1.22321,\n    1.14758 * 1.14758,\n    1\n  ];\n  var table3 = [\n    2.35364 * 2.35364,\n    2.29259 * 2.29259,\n    2.23313 * 2.23313,\n    2.12675 * 2.12675,\n    2.02545 * 2.02545,\n    1.87894 * 1.87894,\n    1.74303 * 1.74303,\n    1.61695 * 1.61695,\n    1.49999 * 1.49999,\n    1.39148 * 1.39148,\n    1.29083 * 1.29083,\n    1.19746 * 1.19746,\n    1.11084 * 1.11084,\n    1.03826 * 1.03826\n  ];\n  function mask_add(m1, m2, kk, b, gfc, shortblock) {\n    var ratio;\n    if (m2 > m1) {\n      if (m2 < m1 * ma_max_i2)\n        ratio = m2 / m1;\n      else\n        return m1 + m2;\n    } else {\n      if (m1 >= m2 * ma_max_i2)\n        return m1 + m2;\n      ratio = m1 / m2;\n    }\n    m1 += m2;\n    if (b + 3 <= 3 + 3) {\n      if (ratio >= ma_max_i1) {\n        return m1;\n      }\n      var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n      return m1 * table2[i];\n    }\n    var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n    if (shortblock != 0) {\n      m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n    } else {\n      m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n    }\n    if (m1 < ma_max_m * m2) {\n      if (m1 > m2) {\n        var f, r;\n        f = 1;\n        if (i <= 13)\n          f = table3[i];\n        r = Util$2.FAST_LOG10_X(m1 / m2, 10 / 15);\n        return m1 * ((table1[i] - f) * r + f);\n      }\n      if (i > 13)\n        return m1;\n      return m1 * table3[i];\n    }\n    return m1 * table1[i];\n  }\n  var table2_ = [\n    1.33352 * 1.33352,\n    1.35879 * 1.35879,\n    1.38454 * 1.38454,\n    1.39497 * 1.39497,\n    1.40548 * 1.40548,\n    1.3537 * 1.3537,\n    1.30382 * 1.30382,\n    1.22321 * 1.22321,\n    1.14758 * 1.14758,\n    1\n  ];\n  function vbrpsy_mask_add(m1, m2, b) {\n    var ratio;\n    if (m1 < 0) {\n      m1 = 0;\n    }\n    if (m2 < 0) {\n      m2 = 0;\n    }\n    if (m1 <= 0) {\n      return m2;\n    }\n    if (m2 <= 0) {\n      return m1;\n    }\n    if (m2 > m1) {\n      ratio = m2 / m1;\n    } else {\n      ratio = m1 / m2;\n    }\n    if (b >= -2 && b <= 2) {\n      if (ratio >= ma_max_i1) {\n        return m1 + m2;\n      } else {\n        var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n        return (m1 + m2) * table2_[i];\n      }\n    }\n    if (ratio < ma_max_i2) {\n      return m1 + m2;\n    }\n    if (m1 < m2) {\n      m1 = m2;\n    }\n    return m1;\n  }\n  function calc_interchannel_masking(gfp, ratio) {\n    var gfc = gfp.internal_flags;\n    if (gfc.channels_out > 1) {\n      for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n        var l = gfc.thm[0].l[sb];\n        var r = gfc.thm[1].l[sb];\n        gfc.thm[0].l[sb] += r * ratio;\n        gfc.thm[1].l[sb] += l * ratio;\n      }\n      for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n        for (var sblock = 0; sblock < 3; sblock++) {\n          var l = gfc.thm[0].s[sb][sblock];\n          var r = gfc.thm[1].s[sb][sblock];\n          gfc.thm[0].s[sb][sblock] += r * ratio;\n          gfc.thm[1].s[sb][sblock] += l * ratio;\n        }\n      }\n    }\n  }\n  function msfix1(gfc) {\n    for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n      if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb] || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb]) {\n        continue;\n      }\n      var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n      var rmid = Math.max(gfc.thm[2].l[sb], Math.min(gfc.thm[3].l[sb], mld));\n      mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n      var rside = Math.max(gfc.thm[3].l[sb], Math.min(gfc.thm[2].l[sb], mld));\n      gfc.thm[2].l[sb] = rmid;\n      gfc.thm[3].l[sb] = rside;\n    }\n    for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock] || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock]) {\n          continue;\n        }\n        var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n        var rmid = Math.max(\n          gfc.thm[2].s[sb][sblock],\n          Math.min(gfc.thm[3].s[sb][sblock], mld)\n        );\n        mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n        var rside = Math.max(\n          gfc.thm[3].s[sb][sblock],\n          Math.min(gfc.thm[2].s[sb][sblock], mld)\n        );\n        gfc.thm[2].s[sb][sblock] = rmid;\n        gfc.thm[3].s[sb][sblock] = rside;\n      }\n    }\n  }\n  function ns_msfix(gfc, msfix, athadjust) {\n    var msfix2 = msfix;\n    var athlower = Math.pow(10, athadjust);\n    msfix *= 2;\n    msfix2 *= 2;\n    for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n      var thmLR, thmM, thmS, ath;\n      ath = gfc.ATH.cb_l[gfc.bm_l[sb]] * athlower;\n      thmLR = Math.min(\n        Math.max(gfc.thm[0].l[sb], ath),\n        Math.max(gfc.thm[1].l[sb], ath)\n      );\n      thmM = Math.max(gfc.thm[2].l[sb], ath);\n      thmS = Math.max(gfc.thm[3].l[sb], ath);\n      if (thmLR * msfix < thmM + thmS) {\n        var f = thmLR * msfix2 / (thmM + thmS);\n        thmM *= f;\n        thmS *= f;\n      }\n      gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n      gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n    }\n    athlower *= Encoder.BLKSIZE_s / Encoder.BLKSIZE;\n    for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        var thmLR, thmM, thmS, ath;\n        ath = gfc.ATH.cb_s[gfc.bm_s[sb]] * athlower;\n        thmLR = Math.min(\n          Math.max(gfc.thm[0].s[sb][sblock], ath),\n          Math.max(gfc.thm[1].s[sb][sblock], ath)\n        );\n        thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n        thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n        if (thmLR * msfix < thmM + thmS) {\n          var f = thmLR * msfix / (thmM + thmS);\n          thmM *= f;\n          thmS *= f;\n        }\n        gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock], thmM);\n        gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock], thmS);\n      }\n    }\n  }\n  function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n    var sb, b;\n    var enn = 0;\n    var thmm = 0;\n    for (sb = b = 0; sb < Encoder.SBMAX_s; ++b, ++sb) {\n      var bo_s_sb = gfc.bo_s[sb];\n      var npart_s = gfc.npart_s;\n      var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n      while (b < b_lim) {\n        assert$9(eb[b] >= 0);\n        assert$9(thr[b] >= 0);\n        enn += eb[b];\n        thmm += thr[b];\n        b++;\n      }\n      gfc.en[chn].s[sb][sblock] = enn;\n      gfc.thm[chn].s[sb][sblock] = thmm;\n      if (b >= npart_s) {\n        ++sb;\n        break;\n      }\n      assert$9(eb[b] >= 0);\n      assert$9(thr[b] >= 0);\n      {\n        var w_curr = gfc.PSY.bo_s_weight[sb];\n        var w_next = 1 - w_curr;\n        enn = w_curr * eb[b];\n        thmm = w_curr * thr[b];\n        gfc.en[chn].s[sb][sblock] += enn;\n        gfc.thm[chn].s[sb][sblock] += thmm;\n        enn = w_next * eb[b];\n        thmm = w_next * thr[b];\n      }\n    }\n    for (; sb < Encoder.SBMAX_s; ++sb) {\n      gfc.en[chn].s[sb][sblock] = 0;\n      gfc.thm[chn].s[sb][sblock] = 0;\n    }\n  }\n  function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n    var sb, b;\n    var enn = 0;\n    var thmm = 0;\n    for (sb = b = 0; sb < Encoder.SBMAX_l; ++b, ++sb) {\n      var bo_l_sb = gfc.bo_l[sb];\n      var npart_l = gfc.npart_l;\n      var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n      while (b < b_lim) {\n        assert$9(eb[b] >= 0);\n        assert$9(thr[b] >= 0);\n        enn += eb[b];\n        thmm += thr[b];\n        b++;\n      }\n      gfc.en[chn].l[sb] = enn;\n      gfc.thm[chn].l[sb] = thmm;\n      if (b >= npart_l) {\n        ++sb;\n        break;\n      }\n      assert$9(eb[b] >= 0);\n      assert$9(thr[b] >= 0);\n      {\n        var w_curr = gfc.PSY.bo_l_weight[sb];\n        var w_next = 1 - w_curr;\n        enn = w_curr * eb[b];\n        thmm = w_curr * thr[b];\n        gfc.en[chn].l[sb] += enn;\n        gfc.thm[chn].l[sb] += thmm;\n        enn = w_next * eb[b];\n        thmm = w_next * thr[b];\n      }\n    }\n    for (; sb < Encoder.SBMAX_l; ++sb) {\n      gfc.en[chn].l[sb] = 0;\n      gfc.thm[chn].l[sb] = 0;\n    }\n  }\n  function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n    var gfc = gfp.internal_flags;\n    var j, b;\n    for (b = j = 0; b < gfc.npart_s; ++b) {\n      var ebb = 0;\n      var n = gfc.numlines_s[b];\n      for (var i = 0; i < n; ++i, ++j) {\n        var el = fftenergy_s[sblock][j];\n        ebb += el;\n      }\n      eb[b] = ebb;\n    }\n    assert$9(b == gfc.npart_s);\n    for (j = b = 0; b < gfc.npart_s; b++) {\n      var kk = gfc.s3ind_s[b][0];\n      var ecb = gfc.s3_ss[j++] * eb[kk];\n      ++kk;\n      while (kk <= gfc.s3ind_s[b][1]) {\n        ecb += gfc.s3_ss[j] * eb[kk];\n        ++j;\n        ++kk;\n      }\n      {\n        var x = rpelev_s * gfc.nb_s1[chn][b];\n        thr[b] = Math.min(ecb, x);\n      }\n      if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n        var x = rpelev2_s * gfc.nb_s2[chn][b];\n        var y = thr[b];\n        thr[b] = Math.min(x, y);\n      }\n      gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n      gfc.nb_s1[chn][b] = ecb;\n      assert$9(thr[b] >= 0);\n    }\n    for (; b <= Encoder.CBANDS; ++b) {\n      eb[b] = 0;\n      thr[b] = 0;\n    }\n  }\n  function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n    var gfc = gfp.internal_flags;\n    if (gfp.short_blocks == ShortBlock$2.short_block_coupled && !(uselongblock[0] != 0 && uselongblock[1] != 0)) {\n      uselongblock[0] = uselongblock[1] = 0;\n    }\n    for (var chn = 0; chn < gfc.channels_out; chn++) {\n      blocktype[chn] = Encoder.NORM_TYPE;\n      if (gfp.short_blocks == ShortBlock$2.short_block_dispensed) {\n        uselongblock[chn] = 1;\n      }\n      if (gfp.short_blocks == ShortBlock$2.short_block_forced) {\n        uselongblock[chn] = 0;\n      }\n      if (uselongblock[chn] != 0) {\n        assert$9(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n        if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) {\n          blocktype[chn] = Encoder.STOP_TYPE;\n        }\n      } else {\n        blocktype[chn] = Encoder.SHORT_TYPE;\n        if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.START_TYPE;\n        }\n        if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n        }\n      }\n      blocktype_d[chn] = gfc.blocktype_old[chn];\n      gfc.blocktype_old[chn] = blocktype[chn];\n    }\n  }\n  function NS_INTERP(x, y, r) {\n    if (r >= 1) {\n      return x;\n    }\n    if (r <= 0)\n      return y;\n    if (y > 0) {\n      return Math.pow(x / y, r) * y;\n    }\n    return 0;\n  }\n  var regcoef_s = [\n    11.8,\n    13.6,\n    17.2,\n    32,\n    46.5,\n    51.3,\n    57.5,\n    67.1,\n    71.5,\n    84.6,\n    97.6,\n    130\n  ];\n  function pecalc_s(mr, masking_lower) {\n    var pe_s = 1236.28 / 4;\n    for (var sb = 0; sb < Encoder.SBMAX_s - 1; sb++) {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        var thm = mr.thm.s[sb][sblock];\n        if (thm > 0) {\n          var x = thm * masking_lower;\n          var en = mr.en.s[sb][sblock];\n          if (en > x) {\n            if (en > x * 1e10) {\n              pe_s += regcoef_s[sb] * (10 * LOG10);\n            } else {\n              pe_s += regcoef_s[sb] * Util$2.FAST_LOG10(en / x);\n            }\n          }\n        }\n      }\n    }\n    return pe_s;\n  }\n  var regcoef_l = [\n    6.8,\n    5.8,\n    5.8,\n    6.4,\n    6.5,\n    9.9,\n    12.1,\n    14.4,\n    15,\n    18.9,\n    21.6,\n    26.9,\n    34.2,\n    40.2,\n    46.8,\n    56.5,\n    60.7,\n    73.9,\n    85.7,\n    93.4,\n    126.1\n  ];\n  function pecalc_l(mr, masking_lower) {\n    var pe_l = 1124.23 / 4;\n    for (var sb = 0; sb < Encoder.SBMAX_l - 1; sb++) {\n      var thm = mr.thm.l[sb];\n      if (thm > 0) {\n        var x = thm * masking_lower;\n        var en = mr.en.l[sb];\n        if (en > x) {\n          if (en > x * 1e10) {\n            pe_l += regcoef_l[sb] * (10 * LOG10);\n          } else {\n            pe_l += regcoef_l[sb] * Util$2.FAST_LOG10(en / x);\n          }\n        }\n      }\n    }\n    return pe_l;\n  }\n  function calc_energy(gfc, fftenergy, eb, max, avg) {\n    var b, j;\n    for (b = j = 0; b < gfc.npart_l; ++b) {\n      var ebb = 0;\n      var m = 0;\n      var i;\n      for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n        var el = fftenergy[j];\n        ebb += el;\n        if (m < el)\n          m = el;\n      }\n      eb[b] = ebb;\n      max[b] = m;\n      avg[b] = ebb * gfc.rnumlines_l[b];\n      assert$9(gfc.rnumlines_l[b] >= 0);\n      assert$9(eb[b] >= 0);\n      assert$9(max[b] >= 0);\n      assert$9(avg[b] >= 0);\n    }\n  }\n  function calc_mask_index_l(gfc, max, avg, mask_idx) {\n    var last_tab_entry = tab.length - 1;\n    var b = 0;\n    var a = avg[b] + avg[b + 1];\n    if (a > 0) {\n      var m = max[b];\n      if (m < max[b + 1])\n        m = max[b + 1];\n      assert$9(gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    for (b = 1; b < gfc.npart_l - 1; b++) {\n      a = avg[b - 1] + avg[b] + avg[b + 1];\n      if (a > 0) {\n        var m = max[b - 1];\n        if (m < max[b])\n          m = max[b];\n        if (m < max[b + 1])\n          m = max[b + 1];\n        assert$9(\n          gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1 > 0\n        );\n        a = 20 * (m * 3 - a) / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n        var k = 0 | a;\n        if (k > last_tab_entry)\n          k = last_tab_entry;\n        mask_idx[b] = k;\n      } else {\n        mask_idx[b] = 0;\n      }\n    }\n    assert$9(b == gfc.npart_l - 1);\n    a = avg[b - 1] + avg[b];\n    if (a > 0) {\n      var m = max[b - 1];\n      if (m < max[b])\n        m = max[b];\n      assert$9(gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    assert$9(b == gfc.npart_l - 1);\n  }\n  var fircoef = [\n    -865163e-23 * 2,\n    -851586e-8 * 2,\n    -674764e-23 * 2,\n    0.0209036 * 2,\n    -336639e-22 * 2,\n    -0.0438162 * 2,\n    -154175e-22 * 2,\n    0.0931738 * 2,\n    -552212e-22 * 2,\n    -0.313819 * 2\n  ];\n  this.L3psycho_anal_ns = function(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n    var gfc = gfp.internal_flags;\n    var wsamp_L = new_float_n$3([2, Encoder.BLKSIZE]);\n    var wsamp_S = new_float_n$3([2, 3, Encoder.BLKSIZE_s]);\n    var eb_l = new_float$a(Encoder.CBANDS + 1);\n    var eb_s = new_float$a(Encoder.CBANDS + 1);\n    var thr = new_float$a(Encoder.CBANDS + 2);\n    var blocktype = new_int$b(2);\n    var uselongblock = new_int$b(2);\n    var numchn, chn;\n    var b, i, j, k;\n    var sb, sblock;\n    var ns_hpfsmpl = new_float_n$3([2, 576]);\n    var pcfact;\n    var mask_idx_l = new_int$b(Encoder.CBANDS + 2);\n    var mask_idx_s = new_int$b(Encoder.CBANDS + 2);\n    Arrays$5.fill(mask_idx_s, 0);\n    numchn = gfc.channels_out;\n    if (gfp.mode == MPEGMode.JOINT_STEREO)\n      numchn = 4;\n    if (gfp.VBR == VbrMode$5.vbr_off) {\n      pcfact = gfc.ResvMax == 0 ? 0 : gfc.ResvSize / gfc.ResvMax * 0.5;\n    } else if (gfp.VBR == VbrMode$5.vbr_rh || gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt) {\n      pcfact = 0.6;\n    } else\n      pcfact = 1;\n    for (chn = 0; chn < gfc.channels_out; chn++) {\n      var firbuf2 = buffer[chn];\n      var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n      for (i = 0; i < 576; i++) {\n        var sum1, sum2;\n        sum1 = firbuf2[firbufPos + i + 10];\n        sum2 = 0;\n        for (j = 0; j < (NSFIRLEN - 1) / 2 - 1; j += 2) {\n          sum1 += fircoef[j] * (firbuf2[firbufPos + i + j] + firbuf2[firbufPos + i + NSFIRLEN - j]);\n          sum2 += fircoef[j + 1] * (firbuf2[firbufPos + i + j + 1] + firbuf2[firbufPos + i + NSFIRLEN - j - 1]);\n        }\n        ns_hpfsmpl[chn][i] = sum1 + sum2;\n      }\n      masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n      masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n      if (numchn > 2) {\n        masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n        masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n      }\n    }\n    for (chn = 0; chn < numchn; chn++) {\n      var wsamp_l;\n      var wsamp_s;\n      var en_subshort = new_float$a(12);\n      var en_short = [0, 0, 0, 0];\n      var attack_intensity = new_float$a(12);\n      var ns_uselongblock = 1;\n      var attackThreshold;\n      var max = new_float$a(Encoder.CBANDS);\n      var avg = new_float$a(Encoder.CBANDS);\n      var ns_attacks = [0, 0, 0, 0];\n      var fftenergy = new_float$a(Encoder.HBLKSIZE);\n      var fftenergy_s = new_float_n$3([3, Encoder.HBLKSIZE_s]);\n      assert$9(gfc.npart_s <= Encoder.CBANDS);\n      assert$9(gfc.npart_l <= Encoder.CBANDS);\n      for (i = 0; i < 3; i++) {\n        en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n        assert$9(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n        attack_intensity[i] = en_subshort[i] / gfc.nsPsy.last_en_subshort[chn][i + 4];\n        en_short[0] += en_subshort[i];\n      }\n      if (chn == 2) {\n        for (i = 0; i < 576; i++) {\n          var l, r;\n          l = ns_hpfsmpl[0][i];\n          r = ns_hpfsmpl[1][i];\n          ns_hpfsmpl[0][i] = l + r;\n          ns_hpfsmpl[1][i] = l - r;\n        }\n      }\n      {\n        var pf = ns_hpfsmpl[chn & 1];\n        var pfPos = 0;\n        for (i = 0; i < 9; i++) {\n          var pfe = pfPos + 576 / 9;\n          var p2 = 1;\n          for (; pfPos < pfe; pfPos++) {\n            if (p2 < Math.abs(pf[pfPos]))\n              p2 = Math.abs(pf[pfPos]);\n          }\n          gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p2;\n          en_short[1 + i / 3] += p2;\n          if (p2 > en_subshort[i + 3 - 2]) {\n            assert$9(en_subshort[i + 3 - 2] > 0);\n            p2 = p2 / en_subshort[i + 3 - 2];\n          } else if (en_subshort[i + 3 - 2] > p2 * 10) {\n            p2 = en_subshort[i + 3 - 2] / (p2 * 10);\n          } else\n            p2 = 0;\n          attack_intensity[i + 3] = p2;\n        }\n      }\n      if (gfp.analysis) {\n        var x = attack_intensity[0];\n        for (i = 1; i < 12; i++) {\n          if (x < attack_intensity[i])\n            x = attack_intensity[i];\n        }\n        gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n        gfc.pinfo.ers_save[chn] = x;\n      }\n      attackThreshold = chn == 3 ? gfc.nsPsy.attackthre_s : gfc.nsPsy.attackthre;\n      for (i = 0; i < 12; i++) {\n        if (ns_attacks[i / 3] == 0 && attack_intensity[i] > attackThreshold) {\n          ns_attacks[i / 3] = i % 3 + 1;\n        }\n      }\n      for (i = 1; i < 4; i++) {\n        var ratio;\n        if (en_short[i - 1] > en_short[i]) {\n          assert$9(en_short[i] > 0);\n          ratio = en_short[i - 1] / en_short[i];\n        } else {\n          assert$9(en_short[i - 1] > 0);\n          ratio = en_short[i] / en_short[i - 1];\n        }\n        if (ratio < 1.7) {\n          ns_attacks[i] = 0;\n          if (i == 1)\n            ns_attacks[0] = 0;\n        }\n      }\n      if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0) {\n        ns_attacks[0] = 0;\n      }\n      if (gfc.nsPsy.lastAttacks[chn] == 3 || ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3] != 0) {\n        ns_uselongblock = 0;\n        if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n          ns_attacks[1] = 0;\n        if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n          ns_attacks[2] = 0;\n        if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n          ns_attacks[3] = 0;\n      }\n      if (chn < 2) {\n        uselongblock[chn] = ns_uselongblock;\n      } else {\n        if (ns_uselongblock == 0) {\n          uselongblock[0] = uselongblock[1] = 0;\n        }\n      }\n      energy[chn] = gfc.tot_ener[chn];\n      wsamp_s = wsamp_S;\n      wsamp_l = wsamp_L;\n      compute_ffts(\n        gfp,\n        fftenergy,\n        fftenergy_s,\n        wsamp_l,\n        chn & 1,\n        wsamp_s,\n        chn & 1,\n        gr_out,\n        chn,\n        buffer,\n        bufPos\n      );\n      calc_energy(gfc, fftenergy, eb_l, max, avg);\n      calc_mask_index_l(gfc, max, avg, mask_idx_l);\n      for (sblock = 0; sblock < 3; sblock++) {\n        var enn, thmm;\n        compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n        convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n        for (sb = 0; sb < Encoder.SBMAX_s; sb++) {\n          thmm = gfc.thm[chn].s[sb][sblock];\n          thmm *= NS_PREECHO_ATT0;\n          if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n            var idx = sblock != 0 ? sblock - 1 : 2;\n            var p2 = NS_INTERP(\n              gfc.thm[chn].s[sb][idx],\n              thmm,\n              NS_PREECHO_ATT1 * pcfact\n            );\n            thmm = Math.min(thmm, p2);\n          }\n          if (ns_attacks[sblock] == 1) {\n            var idx = sblock != 0 ? sblock - 1 : 2;\n            var p2 = NS_INTERP(\n              gfc.thm[chn].s[sb][idx],\n              thmm,\n              NS_PREECHO_ATT2 * pcfact\n            );\n            thmm = Math.min(thmm, p2);\n          } else if (sblock != 0 && ns_attacks[sblock - 1] == 3 || sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3) {\n            var idx = sblock != 2 ? sblock + 1 : 0;\n            var p2 = NS_INTERP(\n              gfc.thm[chn].s[sb][idx],\n              thmm,\n              NS_PREECHO_ATT2 * pcfact\n            );\n            thmm = Math.min(thmm, p2);\n          }\n          enn = en_subshort[sblock * 3 + 3] + en_subshort[sblock * 3 + 4] + en_subshort[sblock * 3 + 5];\n          if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n            thmm *= 0.5;\n            if (en_subshort[sblock * 3 + 4] * 6 < enn)\n              thmm *= 0.5;\n          }\n          gfc.thm[chn].s[sb][sblock] = thmm;\n        }\n      }\n      gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n      k = 0;\n      {\n        for (b = 0; b < gfc.npart_l; b++) {\n          var kk = gfc.s3ind[b][0];\n          var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n          var ecb = gfc.s3_ll[k++] * eb2;\n          while (++kk <= gfc.s3ind[b][1]) {\n            eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n            ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b, gfc, 0);\n          }\n          ecb *= 0.158489319246111;\n          if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE)\n            thr[b] = ecb;\n          else {\n            thr[b] = NS_INTERP(\n              Math.min(\n                ecb,\n                Math.min(rpelev * gfc.nb_1[chn][b], rpelev2 * gfc.nb_2[chn][b])\n              ),\n              ecb,\n              pcfact\n            );\n          }\n          gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n          gfc.nb_1[chn][b] = ecb;\n        }\n      }\n      for (; b <= Encoder.CBANDS; ++b) {\n        eb_l[b] = 0;\n        thr[b] = 0;\n      }\n      convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n    }\n    if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n      if (gfp.interChRatio > 0) {\n        calc_interchannel_masking(gfp, gfp.interChRatio);\n      }\n    }\n    if (gfp.mode == MPEGMode.JOINT_STEREO) {\n      var msfix;\n      msfix1(gfc);\n      msfix = gfp.msfix;\n      if (Math.abs(msfix) > 0) {\n        ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n      }\n    }\n    block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n    for (chn = 0; chn < numchn; chn++) {\n      var ppe;\n      var ppePos = 0;\n      var type;\n      var mr;\n      if (chn > 1) {\n        ppe = percep_MS_entropy;\n        ppePos = -2;\n        type = Encoder.NORM_TYPE;\n        if (blocktype_d[0] == Encoder.SHORT_TYPE || blocktype_d[1] == Encoder.SHORT_TYPE) {\n          type = Encoder.SHORT_TYPE;\n        }\n        mr = masking_MS_ratio[gr_out][chn - 2];\n      } else {\n        ppe = percep_entropy;\n        ppePos = 0;\n        type = blocktype_d[chn];\n        mr = masking_ratio[gr_out][chn];\n      }\n      if (type == Encoder.SHORT_TYPE) {\n        ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n      } else\n        ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n      if (gfp.analysis)\n        gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n    }\n    return 0;\n  };\n  function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n    var gfc = gfp.internal_flags;\n    if (chn < 2) {\n      fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n    } else if (chn == 2) {\n      for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n        var l = wsamp_l[wsamp_lPos + 0][j];\n        var r = wsamp_l[wsamp_lPos + 1][j];\n        wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$2.SQRT2 * 0.5;\n        wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$2.SQRT2 * 0.5;\n      }\n    }\n    fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n    fftenergy[0] *= fftenergy[0];\n    for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n      var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n      var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n      fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n        (re * re + im * im) * 0.5\n      );\n    }\n    {\n      var totalenergy = 0;\n      for (var j = 11; j < Encoder.HBLKSIZE; j++)\n        totalenergy += fftenergy[j];\n      gfc.tot_ener[chn] = totalenergy;\n    }\n    if (gfp.analysis) {\n      for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n        gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n        gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n      }\n      gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n    }\n  }\n  function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n    var gfc = gfp.internal_flags;\n    if (sblock == 0 && chn < 2) {\n      fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n    }\n    if (chn == 2) {\n      for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n        var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n        var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n        wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util$2.SQRT2 * 0.5;\n        wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util$2.SQRT2 * 0.5;\n      }\n    }\n    fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n    fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n    for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n      var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 - j];\n      var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 + j];\n      fftenergy_s[sblock][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n        (re * re + im * im) * 0.5\n      );\n    }\n  }\n  function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n    var gfc = gfp.internal_flags;\n    if (gfp.athaa_loudapprox == 2 && chn < 2) {\n      gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n      gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n    }\n  }\n  var fircoef_ = [\n    -865163e-23 * 2,\n    -851586e-8 * 2,\n    -674764e-23 * 2,\n    0.0209036 * 2,\n    -336639e-22 * 2,\n    -0.0438162 * 2,\n    -154175e-22 * 2,\n    0.0931738 * 2,\n    -552212e-22 * 2,\n    -0.313819 * 2\n  ];\n  function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n    var ns_hpfsmpl = new_float_n$3([2, 576]);\n    var gfc = gfp.internal_flags;\n    var n_chn_out = gfc.channels_out;\n    var n_chn_psy = gfp.mode == MPEGMode.JOINT_STEREO ? 4 : n_chn_out;\n    for (var chn = 0; chn < n_chn_out; chn++) {\n      firbuf = buffer[chn];\n      var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n      for (var i = 0; i < 576; i++) {\n        var sum1, sum2;\n        sum1 = firbuf[firbufPos + i + 10];\n        sum2 = 0;\n        for (var j = 0; j < (NSFIRLEN - 1) / 2 - 1; j += 2) {\n          sum1 += fircoef_[j] * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i + NSFIRLEN - j]);\n          sum2 += fircoef_[j + 1] * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos + i + NSFIRLEN - j - 1]);\n        }\n        ns_hpfsmpl[chn][i] = sum1 + sum2;\n      }\n      masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n      masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n      if (n_chn_psy > 2) {\n        masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n        masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n      }\n    }\n    for (var chn = 0; chn < n_chn_psy; chn++) {\n      var attack_intensity = new_float$a(12);\n      var en_subshort = new_float$a(12);\n      var en_short = [0, 0, 0, 0];\n      var pf = ns_hpfsmpl[chn & 1];\n      var pfPos = 0;\n      var attackThreshold = chn == 3 ? gfc.nsPsy.attackthre_s : gfc.nsPsy.attackthre;\n      var ns_uselongblock = 1;\n      if (chn == 2) {\n        for (var i = 0, j = 576; j > 0; ++i, --j) {\n          var l = ns_hpfsmpl[0][i];\n          var r = ns_hpfsmpl[1][i];\n          ns_hpfsmpl[0][i] = l + r;\n          ns_hpfsmpl[1][i] = l - r;\n        }\n      }\n      for (var i = 0; i < 3; i++) {\n        en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n        assert$9(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n        attack_intensity[i] = en_subshort[i] / gfc.nsPsy.last_en_subshort[chn][i + 4];\n        en_short[0] += en_subshort[i];\n      }\n      for (var i = 0; i < 9; i++) {\n        var pfe = pfPos + 576 / 9;\n        var p2 = 1;\n        for (; pfPos < pfe; pfPos++) {\n          if (p2 < Math.abs(pf[pfPos]))\n            p2 = Math.abs(pf[pfPos]);\n        }\n        gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p2;\n        en_short[1 + i / 3] += p2;\n        if (p2 > en_subshort[i + 3 - 2]) {\n          assert$9(en_subshort[i + 3 - 2] > 0);\n          p2 = p2 / en_subshort[i + 3 - 2];\n        } else if (en_subshort[i + 3 - 2] > p2 * 10) {\n          p2 = en_subshort[i + 3 - 2] / (p2 * 10);\n        } else {\n          p2 = 0;\n        }\n        attack_intensity[i + 3] = p2;\n      }\n      for (var i = 0; i < 3; ++i) {\n        var enn = en_subshort[i * 3 + 3] + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n        var factor = 1;\n        if (en_subshort[i * 3 + 5] * 6 < enn) {\n          factor *= 0.5;\n          if (en_subshort[i * 3 + 4] * 6 < enn) {\n            factor *= 0.5;\n          }\n        }\n        sub_short_factor[chn][i] = factor;\n      }\n      if (gfp.analysis) {\n        var x = attack_intensity[0];\n        for (var i = 1; i < 12; i++) {\n          if (x < attack_intensity[i]) {\n            x = attack_intensity[i];\n          }\n        }\n        gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n        gfc.pinfo.ers_save[chn] = x;\n      }\n      for (var i = 0; i < 12; i++) {\n        if (ns_attacks[chn][i / 3] == 0 && attack_intensity[i] > attackThreshold) {\n          ns_attacks[chn][i / 3] = i % 3 + 1;\n        }\n      }\n      for (var i = 1; i < 4; i++) {\n        var u = en_short[i - 1];\n        var v = en_short[i];\n        var m = Math.max(u, v);\n        if (m < 4e4) {\n          if (u < 1.7 * v && v < 1.7 * u) {\n            if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n              ns_attacks[chn][0] = 0;\n            }\n            ns_attacks[chn][i] = 0;\n          }\n        }\n      }\n      if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n        ns_attacks[chn][0] = 0;\n      }\n      if (gfc.nsPsy.lastAttacks[chn] == 3 || ns_attacks[chn][0] + ns_attacks[chn][1] + ns_attacks[chn][2] + ns_attacks[chn][3] != 0) {\n        ns_uselongblock = 0;\n        if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n          ns_attacks[chn][1] = 0;\n        }\n        if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n          ns_attacks[chn][2] = 0;\n        }\n        if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n          ns_attacks[chn][3] = 0;\n        }\n      }\n      if (chn < 2) {\n        uselongblock[chn] = ns_uselongblock;\n      } else {\n        if (ns_uselongblock == 0) {\n          uselongblock[0] = uselongblock[1] = 0;\n        }\n      }\n      energy[chn] = gfc.tot_ener[chn];\n    }\n  }\n  function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n    if (sblock == 0) {\n      for (var b = 0; b < gfc.npart_s; b++) {\n        gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n        gfc.nb_s1[chn][b] = 0;\n      }\n    }\n  }\n  function vbrpsy_skip_masking_l(gfc, chn) {\n    for (var b = 0; b < gfc.npart_l; b++) {\n      gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n      gfc.nb_1[chn][b] = 0;\n    }\n  }\n  function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n    var last_tab_entry = tab.length - 1;\n    var b = 0;\n    var a = avg[b] + avg[b + 1];\n    if (a > 0) {\n      var m = max[b];\n      if (m < max[b + 1])\n        m = max[b + 1];\n      assert$9(gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    for (b = 1; b < gfc.npart_s - 1; b++) {\n      a = avg[b - 1] + avg[b] + avg[b + 1];\n      assert$9(b + 1 < gfc.npart_s);\n      if (a > 0) {\n        var m = max[b - 1];\n        if (m < max[b])\n          m = max[b];\n        if (m < max[b + 1])\n          m = max[b + 1];\n        assert$9(\n          gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1 > 0\n        );\n        a = 20 * (m * 3 - a) / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n        var k = 0 | a;\n        if (k > last_tab_entry)\n          k = last_tab_entry;\n        mask_idx[b] = k;\n      } else {\n        mask_idx[b] = 0;\n      }\n    }\n    assert$9(b == gfc.npart_s - 1);\n    a = avg[b - 1] + avg[b];\n    if (a > 0) {\n      var m = max[b - 1];\n      if (m < max[b])\n        m = max[b];\n      assert$9(gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    assert$9(b == gfc.npart_s - 1);\n  }\n  function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n    var gfc = gfp.internal_flags;\n    var max = new float[Encoder.CBANDS]();\n    var avg = new_float$a(Encoder.CBANDS);\n    var i, j, b;\n    var mask_idx_s = new int[Encoder.CBANDS]();\n    for (b = j = 0; b < gfc.npart_s; ++b) {\n      var ebb = 0;\n      var m = 0;\n      var n = gfc.numlines_s[b];\n      for (i = 0; i < n; ++i, ++j) {\n        var el = fftenergy_s[sblock][j];\n        ebb += el;\n        if (m < el)\n          m = el;\n      }\n      eb[b] = ebb;\n      max[b] = m;\n      avg[b] = ebb / n;\n      assert$9(avg[b] >= 0);\n    }\n    assert$9(b == gfc.npart_s);\n    for (; b < Encoder.CBANDS; ++b) {\n      max[b] = 0;\n      avg[b] = 0;\n    }\n    psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n    for (j = b = 0; b < gfc.npart_s; b++) {\n      var kk = gfc.s3ind_s[b][0];\n      var last = gfc.s3ind_s[b][1];\n      var dd, dd_n;\n      var x, ecb, avg_mask;\n      dd = mask_idx_s[kk];\n      dd_n = 1;\n      ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n      ++j;\n      ++kk;\n      while (kk <= last) {\n        dd += mask_idx_s[kk];\n        dd_n += 1;\n        x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n        ecb = vbrpsy_mask_add(ecb, x, kk - b);\n        ++j;\n        ++kk;\n      }\n      dd = (1 + 2 * dd) / (2 * dd_n);\n      avg_mask = tab[dd] * 0.5;\n      ecb *= avg_mask;\n      thr[b] = ecb;\n      gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n      gfc.nb_s1[chn][b] = ecb;\n      {\n        x = max[b];\n        x *= gfc.minval_s[b];\n        x *= avg_mask;\n        if (thr[b] > x) {\n          thr[b] = x;\n        }\n      }\n      if (gfc.masking_lower > 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      if (thr[b] > eb[b]) {\n        thr[b] = eb[b];\n      }\n      if (gfc.masking_lower < 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      assert$9(thr[b] >= 0);\n    }\n    for (; b < Encoder.CBANDS; ++b) {\n      eb[b] = 0;\n      thr[b] = 0;\n    }\n  }\n  function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n    var max = new_float$a(Encoder.CBANDS);\n    var avg = new_float$a(Encoder.CBANDS);\n    var mask_idx_l = new_int$b(Encoder.CBANDS + 2);\n    var b;\n    calc_energy(gfc, fftenergy, eb_l, max, avg);\n    calc_mask_index_l(gfc, max, avg, mask_idx_l);\n    var k = 0;\n    for (b = 0; b < gfc.npart_l; b++) {\n      var x, ecb, avg_mask, t;\n      var kk = gfc.s3ind[b][0];\n      var last = gfc.s3ind[b][1];\n      var dd = 0;\n      var dd_n = 0;\n      dd = mask_idx_l[kk];\n      dd_n += 1;\n      ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n      ++k;\n      ++kk;\n      while (kk <= last) {\n        dd += mask_idx_l[kk];\n        dd_n += 1;\n        x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n        t = vbrpsy_mask_add(ecb, x, kk - b);\n        ecb = t;\n        ++k;\n        ++kk;\n      }\n      dd = (1 + 2 * dd) / (2 * dd_n);\n      avg_mask = tab[dd] * 0.5;\n      ecb *= avg_mask;\n      if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n        var ecb_limit = rpelev * gfc.nb_1[chn][b];\n        if (ecb_limit > 0) {\n          thr[b] = Math.min(ecb, ecb_limit);\n        } else {\n          thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n        }\n      } else {\n        var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n        var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n        var ecb_limit;\n        if (ecb_limit_2 <= 0) {\n          ecb_limit_2 = ecb;\n        }\n        if (ecb_limit_1 <= 0) {\n          ecb_limit_1 = ecb;\n        }\n        if (gfc.blocktype_old[chn & 1] == Encoder.NORM_TYPE) {\n          ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n        } else {\n          ecb_limit = ecb_limit_1;\n        }\n        thr[b] = Math.min(ecb, ecb_limit);\n      }\n      gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n      gfc.nb_1[chn][b] = ecb;\n      {\n        x = max[b];\n        x *= gfc.minval_l[b];\n        x *= avg_mask;\n        if (thr[b] > x) {\n          thr[b] = x;\n        }\n      }\n      if (gfc.masking_lower > 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      if (thr[b] > eb_l[b]) {\n        thr[b] = eb_l[b];\n      }\n      if (gfc.masking_lower < 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      assert$9(thr[b] >= 0);\n    }\n    for (; b < Encoder.CBANDS; ++b) {\n      eb_l[b] = 0;\n      thr[b] = 0;\n    }\n  }\n  function vbrpsy_compute_block_type(gfp, uselongblock) {\n    var gfc = gfp.internal_flags;\n    if (gfp.short_blocks == ShortBlock$2.short_block_coupled && !(uselongblock[0] != 0 && uselongblock[1] != 0)) {\n      uselongblock[0] = uselongblock[1] = 0;\n    }\n    for (var chn = 0; chn < gfc.channels_out; chn++) {\n      if (gfp.short_blocks == ShortBlock$2.short_block_dispensed) {\n        uselongblock[chn] = 1;\n      }\n      if (gfp.short_blocks == ShortBlock$2.short_block_forced) {\n        uselongblock[chn] = 0;\n      }\n    }\n  }\n  function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n    var gfc = gfp.internal_flags;\n    for (var chn = 0; chn < gfc.channels_out; chn++) {\n      var blocktype = Encoder.NORM_TYPE;\n      if (uselongblock[chn] != 0) {\n        assert$9(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n        if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) {\n          blocktype = Encoder.STOP_TYPE;\n        }\n      } else {\n        blocktype = Encoder.SHORT_TYPE;\n        if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.START_TYPE;\n        }\n        if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n        }\n      }\n      blocktype_d[chn] = gfc.blocktype_old[chn];\n      gfc.blocktype_old[chn] = blocktype;\n    }\n  }\n  function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n    var msfix2 = msfix * 2;\n    var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n    var rside, rmid;\n    for (var b = 0; b < n; ++b) {\n      var ebM = eb[2][b];\n      var ebS = eb[3][b];\n      var thmL = thr[0][b];\n      var thmR = thr[1][b];\n      var thmM = thr[2][b];\n      var thmS = thr[3][b];\n      if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n        var mld_m = cb_mld[b] * ebS;\n        var mld_s = cb_mld[b] * ebM;\n        rmid = Math.max(thmM, Math.min(thmS, mld_m));\n        rside = Math.max(thmS, Math.min(thmM, mld_s));\n      } else {\n        rmid = thmM;\n        rside = thmS;\n      }\n      if (msfix > 0) {\n        var thmLR, thmMS;\n        var ath = ath_cb[b] * athlower;\n        thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n        thmM = Math.max(rmid, ath);\n        thmS = Math.max(rside, ath);\n        thmMS = thmM + thmS;\n        if (thmMS > 0 && thmLR * msfix2 < thmMS) {\n          var f = thmLR * msfix2 / thmMS;\n          thmM *= f;\n          thmS *= f;\n        }\n        rmid = Math.min(thmM, rmid);\n        rside = Math.min(thmS, rside);\n      }\n      if (rmid > ebM) {\n        rmid = ebM;\n      }\n      if (rside > ebS) {\n        rside = ebS;\n      }\n      thr[2][b] = rmid;\n      thr[3][b] = rside;\n    }\n  }\n  this.L3psycho_anal_vbr = function(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n    var gfc = gfp.internal_flags;\n    var wsamp_l;\n    var wsamp_s;\n    var fftenergy = new_float$a(Encoder.HBLKSIZE);\n    var fftenergy_s = new_float_n$3([3, Encoder.HBLKSIZE_s]);\n    var wsamp_L = new_float_n$3([2, Encoder.BLKSIZE]);\n    var wsamp_S = new_float_n$3([2, 3, Encoder.BLKSIZE_s]);\n    var eb = new_float_n$3([4, Encoder.CBANDS]);\n    var thr = new_float_n$3([4, Encoder.CBANDS]);\n    var sub_short_factor = new_float_n$3([4, 3]);\n    var pcfact = 0.6;\n    var ns_attacks = [\n      [0, 0, 0, 0],\n      [0, 0, 0, 0],\n      [0, 0, 0, 0],\n      [0, 0, 0, 0]\n    ];\n    var uselongblock = new_int$b(2);\n    var n_chn_psy = gfp.mode == MPEGMode.JOINT_STEREO ? 4 : gfc.channels_out;\n    vbrpsy_attack_detection(\n      gfp,\n      buffer,\n      bufPos,\n      gr_out,\n      masking_ratio,\n      masking_MS_ratio,\n      energy,\n      sub_short_factor,\n      ns_attacks,\n      uselongblock\n    );\n    vbrpsy_compute_block_type(gfp, uselongblock);\n    {\n      for (var chn = 0; chn < n_chn_psy; chn++) {\n        var ch01 = chn & 1;\n        wsamp_l = wsamp_L;\n        vbrpsy_compute_fft_l(\n          gfp,\n          buffer,\n          bufPos,\n          chn,\n          gr_out,\n          fftenergy,\n          wsamp_l,\n          ch01\n        );\n        vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy);\n        if (uselongblock[ch01] != 0) {\n          vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn], chn);\n        } else {\n          vbrpsy_skip_masking_l(gfc, chn);\n        }\n      }\n      if (uselongblock[0] + uselongblock[1] == 2) {\n        if (gfp.mode == MPEGMode.JOINT_STEREO) {\n          vbrpsy_compute_MS_thresholds(\n            eb,\n            thr,\n            gfc.mld_cb_l,\n            gfc.ATH.cb_l,\n            gfp.ATHlower * gfc.ATH.adjust,\n            gfp.msfix,\n            gfc.npart_l\n          );\n        }\n      }\n      for (var chn = 0; chn < n_chn_psy; chn++) {\n        var ch01 = chn & 1;\n        if (uselongblock[ch01] != 0) {\n          convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n        }\n      }\n    }\n    {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        for (var chn = 0; chn < n_chn_psy; ++chn) {\n          var ch01 = chn & 1;\n          if (uselongblock[ch01] != 0) {\n            vbrpsy_skip_masking_s(gfc, chn, sblock);\n          } else {\n            wsamp_s = wsamp_S;\n            vbrpsy_compute_fft_s(\n              gfp,\n              buffer,\n              bufPos,\n              chn,\n              sblock,\n              fftenergy_s,\n              wsamp_s,\n              ch01\n            );\n            vbrpsy_compute_masking_s(\n              gfp,\n              fftenergy_s,\n              eb[chn],\n              thr[chn],\n              chn,\n              sblock\n            );\n          }\n        }\n        if (uselongblock[0] + uselongblock[1] == 0) {\n          if (gfp.mode == MPEGMode.JOINT_STEREO) {\n            vbrpsy_compute_MS_thresholds(\n              eb,\n              thr,\n              gfc.mld_cb_s,\n              gfc.ATH.cb_s,\n              gfp.ATHlower * gfc.ATH.adjust,\n              gfp.msfix,\n              gfc.npart_s\n            );\n          }\n        }\n        for (var chn = 0; chn < n_chn_psy; ++chn) {\n          var ch01 = chn & 1;\n          if (uselongblock[ch01] == 0) {\n            convert_partition2scalefac_s(gfc, eb[chn], thr[chn], chn, sblock);\n          }\n        }\n      }\n      for (var chn = 0; chn < n_chn_psy; chn++) {\n        var ch01 = chn & 1;\n        if (uselongblock[ch01] != 0) {\n          continue;\n        }\n        for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n          var new_thmm = new_float$a(3);\n          for (var sblock = 0; sblock < 3; sblock++) {\n            var thmm = gfc.thm[chn].s[sb][sblock];\n            thmm *= NS_PREECHO_ATT0;\n            if (ns_attacks[chn][sblock] >= 2 || ns_attacks[chn][sblock + 1] == 1) {\n              var idx = sblock != 0 ? sblock - 1 : 2;\n              var p2 = NS_INTERP(\n                gfc.thm[chn].s[sb][idx],\n                thmm,\n                NS_PREECHO_ATT1 * pcfact\n              );\n              thmm = Math.min(thmm, p2);\n            } else if (ns_attacks[chn][sblock] == 1) {\n              var idx = sblock != 0 ? sblock - 1 : 2;\n              var p2 = NS_INTERP(\n                gfc.thm[chn].s[sb][idx],\n                thmm,\n                NS_PREECHO_ATT2 * pcfact\n              );\n              thmm = Math.min(thmm, p2);\n            } else if (sblock != 0 && ns_attacks[chn][sblock - 1] == 3 || sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3) {\n              var idx = sblock != 2 ? sblock + 1 : 0;\n              var p2 = NS_INTERP(\n                gfc.thm[chn].s[sb][idx],\n                thmm,\n                NS_PREECHO_ATT2 * pcfact\n              );\n              thmm = Math.min(thmm, p2);\n            }\n            thmm *= sub_short_factor[chn][sblock];\n            new_thmm[sblock] = thmm;\n          }\n          for (var sblock = 0; sblock < 3; sblock++) {\n            gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n          }\n        }\n      }\n    }\n    for (var chn = 0; chn < n_chn_psy; chn++) {\n      gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n    }\n    vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n    for (var chn = 0; chn < n_chn_psy; chn++) {\n      var ppe;\n      var ppePos;\n      var type;\n      var mr;\n      if (chn > 1) {\n        ppe = percep_MS_entropy;\n        ppePos = -2;\n        type = Encoder.NORM_TYPE;\n        if (blocktype_d[0] == Encoder.SHORT_TYPE || blocktype_d[1] == Encoder.SHORT_TYPE) {\n          type = Encoder.SHORT_TYPE;\n        }\n        mr = masking_MS_ratio[gr_out][chn - 2];\n      } else {\n        ppe = percep_entropy;\n        ppePos = 0;\n        type = blocktype_d[chn];\n        mr = masking_ratio[gr_out][chn];\n      }\n      if (type == Encoder.SHORT_TYPE) {\n        ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n      } else {\n        ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n      }\n      if (gfp.analysis) {\n        gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n      }\n    }\n    return 0;\n  };\n  function s3_func_x(bark, hf_slope) {\n    var tempx = bark;\n    var tempy;\n    if (tempx >= 0) {\n      tempy = -tempx * 27;\n    } else {\n      tempy = tempx * hf_slope;\n    }\n    if (tempy <= -72) {\n      return 0;\n    }\n    return Math.exp(tempy * LN_TO_LOG10);\n  }\n  function norm_s3_func_x(hf_slope) {\n    var lim_a = 0;\n    var lim_b = 0;\n    {\n      var x = 0;\n      var l;\n      var h2;\n      for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n        ;\n      l = x;\n      h2 = 0;\n      while (Math.abs(h2 - l) > 1e-12) {\n        x = (h2 + l) / 2;\n        if (s3_func_x(x, hf_slope) > 0) {\n          h2 = x;\n        } else {\n          l = x;\n        }\n      }\n      lim_a = l;\n    }\n    {\n      var x = 0;\n      var l;\n      var h2;\n      for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n        ;\n      l = 0;\n      h2 = x;\n      while (Math.abs(h2 - l) > 1e-12) {\n        x = (h2 + l) / 2;\n        if (s3_func_x(x, hf_slope) > 0) {\n          l = x;\n        } else {\n          h2 = x;\n        }\n      }\n      lim_b = h2;\n    }\n    {\n      var sum = 0;\n      var m = 1e3;\n      var i;\n      for (i = 0; i <= m; ++i) {\n        var x = lim_a + i * (lim_b - lim_a) / m;\n        var y = s3_func_x(x, hf_slope);\n        sum += y;\n      }\n      {\n        var norm = (m + 1) / (sum * (lim_b - lim_a));\n        return norm;\n      }\n    }\n  }\n  function s3_func(bark) {\n    var tempx, x, tempy, temp;\n    tempx = bark;\n    if (tempx >= 0)\n      tempx *= 3;\n    else\n      tempx *= 1.5;\n    if (tempx >= 0.5 && tempx <= 2.5) {\n      temp = tempx - 0.5;\n      x = 8 * (temp * temp - 2 * temp);\n    } else\n      x = 0;\n    tempx += 0.474;\n    tempy = 15.811389 + 7.5 * tempx - 17.5 * Math.sqrt(1 + tempx * tempx);\n    if (tempy <= -60)\n      return 0;\n    tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n    tempx /= 0.6609193;\n    return tempx;\n  }\n  function freq2bark(freq) {\n    if (freq < 0)\n      freq = 0;\n    freq = freq * 1e-3;\n    return 13 * Math.atan(0.76 * freq) + 3.5 * Math.atan(freq * freq / (7.5 * 7.5));\n  }\n  function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n    var b_frq = new_float$a(Encoder.CBANDS + 1);\n    var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n    var partition = new_int$b(Encoder.HBLKSIZE);\n    var i;\n    sfreq /= blksize;\n    var j = 0;\n    var ni = 0;\n    for (i = 0; i < Encoder.CBANDS; i++) {\n      var bark1;\n      var j2;\n      bark1 = freq2bark(sfreq * j);\n      b_frq[i] = sfreq * j;\n      for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK && j2 <= blksize / 2; j2++)\n        ;\n      numlines[i] = j2 - j;\n      ni = i + 1;\n      while (j < j2) {\n        partition[j++] = i;\n      }\n      if (j > blksize / 2) {\n        j = blksize / 2;\n        ++i;\n        break;\n      }\n    }\n    b_frq[i] = sfreq * j;\n    for (var sfb = 0; sfb < sbmax; sfb++) {\n      var i1, i2, start, end;\n      var arg;\n      start = scalepos[sfb];\n      end = scalepos[sfb + 1];\n      i1 = 0 | Math.floor(0.5 + deltafreq * (start - 0.5));\n      if (i1 < 0)\n        i1 = 0;\n      i2 = 0 | Math.floor(0.5 + deltafreq * (end - 0.5));\n      if (i2 > blksize / 2)\n        i2 = blksize / 2;\n      bm[sfb] = (partition[i1] + partition[i2]) / 2;\n      bo[sfb] = partition[i2];\n      var f_tmp = sample_freq_frac * end;\n      bo_w[sfb] = (f_tmp - b_frq[bo[sfb]]) / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n      if (bo_w[sfb] < 0) {\n        bo_w[sfb] = 0;\n      } else {\n        if (bo_w[sfb] > 1) {\n          bo_w[sfb] = 1;\n        }\n      }\n      arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n      arg = Math.min(arg, 15.5) / 15.5;\n      mld[sfb] = Math.pow(10, 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n    }\n    j = 0;\n    for (var k = 0; k < ni; k++) {\n      var w = numlines[k];\n      var bark1, bark2;\n      bark1 = freq2bark(sfreq * j);\n      bark2 = freq2bark(sfreq * (j + w - 1));\n      bval[k] = 0.5 * (bark1 + bark2);\n      bark1 = freq2bark(sfreq * (j - 0.5));\n      bark2 = freq2bark(sfreq * (j + w - 0.5));\n      bval_width[k] = bark2 - bark1;\n      j += w;\n    }\n    return ni;\n  }\n  function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n    var s3 = new_float_n$3([Encoder.CBANDS, Encoder.CBANDS]);\n    var j;\n    var numberOfNoneZero = 0;\n    if (use_old_s3) {\n      for (var i = 0; i < npart; i++) {\n        for (j = 0; j < npart; j++) {\n          var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n          s3[i][j] = v * norm[i];\n        }\n      }\n    } else {\n      for (j = 0; j < npart; j++) {\n        var hf_slope = 15 + Math.min(21 / bval[j], 12);\n        var s3_x_norm = norm_s3_func_x(hf_slope);\n        for (var i = 0; i < npart; i++) {\n          var v = s3_x_norm * s3_func_x(bval[i] - bval[j], hf_slope) * bval_width[j];\n          s3[i][j] = v * norm[i];\n        }\n      }\n    }\n    for (var i = 0; i < npart; i++) {\n      for (j = 0; j < npart; j++) {\n        if (s3[i][j] > 0)\n          break;\n      }\n      s3ind[i][0] = j;\n      for (j = npart - 1; j > 0; j--) {\n        if (s3[i][j] > 0)\n          break;\n      }\n      s3ind[i][1] = j;\n      numberOfNoneZero += s3ind[i][1] - s3ind[i][0] + 1;\n    }\n    var p2 = new_float$a(numberOfNoneZero);\n    var k = 0;\n    for (var i = 0; i < npart; i++) {\n      for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n        p2[k++] = s3[i][j];\n    }\n    return p2;\n  }\n  function stereo_demask(f) {\n    var arg = freq2bark(f);\n    arg = Math.min(arg, 15.5) / 15.5;\n    return Math.pow(10, 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n  }\n  this.psymodel_init = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var i;\n    var useOldS3 = true;\n    var bvl_a = 13;\n    var bvl_b = 24;\n    var snr_l_a = 0;\n    var snr_l_b = 0;\n    var snr_s_a = -8.25;\n    var snr_s_b = -4.5;\n    var bval = new_float$a(Encoder.CBANDS);\n    var bval_width = new_float$a(Encoder.CBANDS);\n    var norm = new_float$a(Encoder.CBANDS);\n    var sfreq = gfp.out_samplerate;\n    switch (gfp.experimentalZ) {\n      default:\n      case 0:\n        useOldS3 = true;\n        break;\n      case 1:\n        useOldS3 = !(gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt);\n        break;\n      case 2:\n        useOldS3 = false;\n        break;\n      case 3:\n        bvl_a = 8;\n        snr_l_a = -1.75;\n        snr_l_b = -0.0125;\n        snr_s_a = -8.25;\n        snr_s_b = -2.25;\n        break;\n    }\n    gfc.ms_ener_ratio_old = 0.25;\n    gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder.NORM_TYPE;\n    for (i = 0; i < 4; ++i) {\n      for (var j = 0; j < Encoder.CBANDS; ++j) {\n        gfc.nb_1[i][j] = 1e20;\n        gfc.nb_2[i][j] = 1e20;\n        gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1;\n      }\n      for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n        gfc.en[i].l[sb] = 1e20;\n        gfc.thm[i].l[sb] = 1e20;\n      }\n      for (var j = 0; j < 3; ++j) {\n        for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n          gfc.en[i].s[sb][j] = 1e20;\n          gfc.thm[i].s[sb][j] = 1e20;\n        }\n        gfc.nsPsy.lastAttacks[i] = 0;\n      }\n      for (var j = 0; j < 9; j++)\n        gfc.nsPsy.last_en_subshort[i][j] = 10;\n    }\n    gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0;\n    gfc.npart_l = init_numline(\n      gfc.numlines_l,\n      gfc.bo_l,\n      gfc.bm_l,\n      bval,\n      bval_width,\n      gfc.mld_l,\n      gfc.PSY.bo_l_weight,\n      sfreq,\n      Encoder.BLKSIZE,\n      gfc.scalefac_band.l,\n      Encoder.BLKSIZE / (2 * 576),\n      Encoder.SBMAX_l\n    );\n    assert$9(gfc.npart_l < Encoder.CBANDS);\n    for (i = 0; i < gfc.npart_l; i++) {\n      var snr = snr_l_a;\n      if (bval[i] >= bvl_a) {\n        snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n      }\n      norm[i] = Math.pow(10, snr / 10);\n      if (gfc.numlines_l[i] > 0) {\n        gfc.rnumlines_l[i] = 1 / gfc.numlines_l[i];\n      } else {\n        gfc.rnumlines_l[i] = 0;\n      }\n    }\n    gfc.s3_ll = init_s3_values(\n      gfc.s3ind,\n      gfc.npart_l,\n      bval,\n      bval_width,\n      norm,\n      useOldS3\n    );\n    var j = 0;\n    for (i = 0; i < gfc.npart_l; i++) {\n      var x;\n      x = Float$1.MAX_VALUE;\n      for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n        var freq = sfreq * j / (1e3 * Encoder.BLKSIZE);\n        var level;\n        level = this.ATHformula(freq * 1e3, gfp) - 20;\n        level = Math.pow(10, 0.1 * level);\n        level *= gfc.numlines_l[i];\n        if (x > level)\n          x = level;\n      }\n      gfc.ATH.cb_l[i] = x;\n      x = -20 + bval[i] * 20 / 10;\n      if (x > 6) {\n        x = 100;\n      }\n      if (x < -15) {\n        x = -15;\n      }\n      x -= 8;\n      gfc.minval_l[i] = Math.pow(10, x / 10) * gfc.numlines_l[i];\n    }\n    gfc.npart_s = init_numline(\n      gfc.numlines_s,\n      gfc.bo_s,\n      gfc.bm_s,\n      bval,\n      bval_width,\n      gfc.mld_s,\n      gfc.PSY.bo_s_weight,\n      sfreq,\n      Encoder.BLKSIZE_s,\n      gfc.scalefac_band.s,\n      Encoder.BLKSIZE_s / (2 * 192),\n      Encoder.SBMAX_s\n    );\n    assert$9(gfc.npart_s < Encoder.CBANDS);\n    j = 0;\n    for (i = 0; i < gfc.npart_s; i++) {\n      var x;\n      var snr = snr_s_a;\n      if (bval[i] >= bvl_a) {\n        snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n      }\n      norm[i] = Math.pow(10, snr / 10);\n      x = Float$1.MAX_VALUE;\n      for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n        var freq = sfreq * j / (1e3 * Encoder.BLKSIZE_s);\n        var level;\n        level = this.ATHformula(freq * 1e3, gfp) - 20;\n        level = Math.pow(10, 0.1 * level);\n        level *= gfc.numlines_s[i];\n        if (x > level)\n          x = level;\n      }\n      gfc.ATH.cb_s[i] = x;\n      x = -7 + bval[i] * 7 / 12;\n      if (bval[i] > 12) {\n        x *= 1 + Math.log(1 + x) * 3.1;\n      }\n      if (bval[i] < 12) {\n        x *= 1 + Math.log(1 - x) * 2.3;\n      }\n      if (x < -15) {\n        x = -15;\n      }\n      x -= 8;\n      gfc.minval_s[i] = Math.pow(10, x / 10) * gfc.numlines_s[i];\n    }\n    gfc.s3_ss = init_s3_values(\n      gfc.s3ind_s,\n      gfc.npart_s,\n      bval,\n      bval_width,\n      norm,\n      useOldS3\n    );\n    init_mask_add_max_values();\n    fft.init_fft(gfc);\n    gfc.decay = Math.exp(\n      -1 * LOG10 / (temporalmask_sustain_sec * sfreq / 192)\n    );\n    {\n      var msfix;\n      msfix = NS_MSFIX;\n      if ((gfp.exp_nspsytune & 2) != 0)\n        msfix = 1;\n      if (Math.abs(gfp.msfix) > 0)\n        msfix = gfp.msfix;\n      gfp.msfix = msfix;\n      for (var b = 0; b < gfc.npart_l; b++) {\n        if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n          gfc.s3ind[b][1] = gfc.npart_l - 1;\n      }\n    }\n    var frame_duration = 576 * gfc.mode_gr / sfreq;\n    gfc.ATH.decay = Math.pow(10, -12 / 10 * frame_duration);\n    gfc.ATH.adjust = 0.01;\n    gfc.ATH.adjustLimit = 1;\n    assert$9(gfc.bo_l[Encoder.SBMAX_l - 1] <= gfc.npart_l);\n    assert$9(gfc.bo_s[Encoder.SBMAX_s - 1] <= gfc.npart_s);\n    if (gfp.ATHtype != -1) {\n      var freq;\n      var freq_inc = gfp.out_samplerate / Encoder.BLKSIZE;\n      var eql_balance = 0;\n      freq = 0;\n      for (i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n        freq += freq_inc;\n        gfc.ATH.eql_w[i] = 1 / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n        eql_balance += gfc.ATH.eql_w[i];\n      }\n      eql_balance = 1 / eql_balance;\n      for (i = Encoder.BLKSIZE / 2; --i >= 0; ) {\n        gfc.ATH.eql_w[i] *= eql_balance;\n      }\n    }\n    {\n      for (var b = j = 0; b < gfc.npart_s; ++b) {\n        for (i = 0; i < gfc.numlines_s[b]; ++i) {\n          ++j;\n        }\n      }\n      for (var b = j = 0; b < gfc.npart_l; ++b) {\n        for (i = 0; i < gfc.numlines_l[b]; ++i) {\n          ++j;\n        }\n      }\n    }\n    j = 0;\n    for (i = 0; i < gfc.npart_l; i++) {\n      var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1 * Encoder.BLKSIZE);\n      gfc.mld_cb_l[i] = stereo_demask(freq);\n      j += gfc.numlines_l[i];\n    }\n    for (; i < Encoder.CBANDS; ++i) {\n      gfc.mld_cb_l[i] = 1;\n    }\n    j = 0;\n    for (i = 0; i < gfc.npart_s; i++) {\n      var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1 * Encoder.BLKSIZE_s);\n      gfc.mld_cb_s[i] = stereo_demask(freq);\n      j += gfc.numlines_s[i];\n    }\n    for (; i < Encoder.CBANDS; ++i) {\n      gfc.mld_cb_s[i] = 1;\n    }\n    return 0;\n  };\n  function ATHformula_GB(f, value) {\n    if (f < -0.3)\n      f = 3410;\n    f /= 1e3;\n    f = Math.max(0.1, f);\n    var ath = 3.64 * Math.pow(f, -0.8) - 6.8 * Math.exp(-0.6 * Math.pow(f - 3.4, 2)) + 6 * Math.exp(-0.15 * Math.pow(f - 8.7, 2)) + (0.6 + 0.04 * value) * 1e-3 * Math.pow(f, 4);\n    return ath;\n  }\n  this.ATHformula = function(f, gfp) {\n    var ath;\n    switch (gfp.ATHtype) {\n      case 0:\n        ath = ATHformula_GB(f, 9);\n        break;\n      case 1:\n        ath = ATHformula_GB(f, -1);\n        break;\n      case 2:\n        ath = ATHformula_GB(f, 0);\n        break;\n      case 3:\n        ath = ATHformula_GB(f, 1) + 6;\n        break;\n      case 4:\n        ath = ATHformula_GB(f, gfp.ATHcurve);\n        break;\n      default:\n        ath = ATHformula_GB(f, 0);\n        break;\n    }\n    return ath;\n  };\n}\nfunction LameGlobalFlags() {\n  this.class_id = 0;\n  this.num_samples = 0;\n  this.num_channels = 0;\n  this.in_samplerate = 0;\n  this.out_samplerate = 0;\n  this.scale = 0;\n  this.scale_left = 0;\n  this.scale_right = 0;\n  this.analysis = false;\n  this.bWriteVbrTag = false;\n  this.decode_only = false;\n  this.quality = 0;\n  this.mode = MPEGMode.STEREO;\n  this.force_ms = false;\n  this.free_format = false;\n  this.findReplayGain = false;\n  this.decode_on_the_fly = false;\n  this.write_id3tag_automatic = false;\n  this.brate = 0;\n  this.compression_ratio = 0;\n  this.copyright = 0;\n  this.original = 0;\n  this.extension = 0;\n  this.emphasis = 0;\n  this.error_protection = 0;\n  this.strict_ISO = false;\n  this.disable_reservoir = false;\n  this.quant_comp = 0;\n  this.quant_comp_short = 0;\n  this.experimentalY = false;\n  this.experimentalZ = 0;\n  this.exp_nspsytune = 0;\n  this.preset = 0;\n  this.VBR = null;\n  this.VBR_q_frac = 0;\n  this.VBR_q = 0;\n  this.VBR_mean_bitrate_kbps = 0;\n  this.VBR_min_bitrate_kbps = 0;\n  this.VBR_max_bitrate_kbps = 0;\n  this.VBR_hard_min = 0;\n  this.lowpassfreq = 0;\n  this.highpassfreq = 0;\n  this.lowpasswidth = 0;\n  this.highpasswidth = 0;\n  this.maskingadjust = 0;\n  this.maskingadjust_short = 0;\n  this.ATHonly = false;\n  this.ATHshort = false;\n  this.noATH = false;\n  this.ATHtype = 0;\n  this.ATHcurve = 0;\n  this.ATHlower = 0;\n  this.athaa_type = 0;\n  this.athaa_loudapprox = 0;\n  this.athaa_sensitivity = 0;\n  this.short_blocks = null;\n  this.useTemporal = false;\n  this.interChRatio = 0;\n  this.msfix = 0;\n  this.tune = false;\n  this.tune_value_a = 0;\n  this.version = 0;\n  this.encoder_delay = 0;\n  this.encoder_padding = 0;\n  this.framesize = 0;\n  this.frameNum = 0;\n  this.lame_allocated_gfp = 0;\n  this.internal_flags = null;\n}\nvar L3Side$1 = {};\nL3Side$1.SFBMAX = Encoder.SBMAX_s * 3;\nvar new_float$9 = common.new_float;\nvar new_int$a = common.new_int;\nfunction GrInfo() {\n  this.xr = new_float$9(576);\n  this.l3_enc = new_int$a(576);\n  this.scalefac = new_int$a(L3Side$1.SFBMAX);\n  this.xrpow_max = 0;\n  this.part2_3_length = 0;\n  this.big_values = 0;\n  this.count1 = 0;\n  this.global_gain = 0;\n  this.scalefac_compress = 0;\n  this.block_type = 0;\n  this.mixed_block_flag = 0;\n  this.table_select = new_int$a(3);\n  this.subblock_gain = new_int$a(3 + 1);\n  this.region0_count = 0;\n  this.region1_count = 0;\n  this.preflag = 0;\n  this.scalefac_scale = 0;\n  this.count1table_select = 0;\n  this.part2_length = 0;\n  this.sfb_lmax = 0;\n  this.sfb_smin = 0;\n  this.psy_lmax = 0;\n  this.sfbmax = 0;\n  this.psymax = 0;\n  this.sfbdivide = 0;\n  this.width = new_int$a(L3Side$1.SFBMAX);\n  this.window = new_int$a(L3Side$1.SFBMAX);\n  this.count1bits = 0;\n  this.sfb_partition_table = null;\n  this.slen = new_int$a(4);\n  this.max_nonzero_coeff = 0;\n  var self2 = this;\n  function clone_int(array) {\n    return new Int32Array(array);\n  }\n  function clone_float(array) {\n    return new Float32Array(array);\n  }\n  this.assign = function(other) {\n    self2.xr = clone_float(other.xr);\n    self2.l3_enc = clone_int(other.l3_enc);\n    self2.scalefac = clone_int(other.scalefac);\n    self2.xrpow_max = other.xrpow_max;\n    self2.part2_3_length = other.part2_3_length;\n    self2.big_values = other.big_values;\n    self2.count1 = other.count1;\n    self2.global_gain = other.global_gain;\n    self2.scalefac_compress = other.scalefac_compress;\n    self2.block_type = other.block_type;\n    self2.mixed_block_flag = other.mixed_block_flag;\n    self2.table_select = clone_int(other.table_select);\n    self2.subblock_gain = clone_int(other.subblock_gain);\n    self2.region0_count = other.region0_count;\n    self2.region1_count = other.region1_count;\n    self2.preflag = other.preflag;\n    self2.scalefac_scale = other.scalefac_scale;\n    self2.count1table_select = other.count1table_select;\n    self2.part2_length = other.part2_length;\n    self2.sfb_lmax = other.sfb_lmax;\n    self2.sfb_smin = other.sfb_smin;\n    self2.psy_lmax = other.psy_lmax;\n    self2.sfbmax = other.sfbmax;\n    self2.psymax = other.psymax;\n    self2.sfbdivide = other.sfbdivide;\n    self2.width = clone_int(other.width);\n    self2.window = clone_int(other.window);\n    self2.count1bits = other.count1bits;\n    self2.sfb_partition_table = other.sfb_partition_table.slice(0);\n    self2.slen = clone_int(other.slen);\n    self2.max_nonzero_coeff = other.max_nonzero_coeff;\n  };\n}\nvar new_int$9 = common.new_int;\nfunction IIISideInfo() {\n  this.tt = [\n    [null, null],\n    [null, null]\n  ];\n  this.main_data_begin = 0;\n  this.private_bits = 0;\n  this.resvDrain_pre = 0;\n  this.resvDrain_post = 0;\n  this.scfsi = [new_int$9(4), new_int$9(4)];\n  for (var gr = 0; gr < 2; gr++) {\n    for (var ch = 0; ch < 2; ch++) {\n      this.tt[gr][ch] = new GrInfo();\n    }\n  }\n}\nvar System$6 = common.System;\nvar new_int$8 = common.new_int;\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n  this.l = new_int$8(1 + Encoder.SBMAX_l);\n  this.s = new_int$8(1 + Encoder.SBMAX_s);\n  this.psfb21 = new_int$8(1 + Encoder.PSFB21);\n  this.psfb12 = new_int$8(1 + Encoder.PSFB12);\n  var l = this.l;\n  var s = this.s;\n  if (arguments.length == 4) {\n    this.arrL = arguments[0];\n    this.arrS = arguments[1];\n    this.arr21 = arguments[2];\n    this.arr12 = arguments[3];\n    System$6.arraycopy(\n      this.arrL,\n      0,\n      l,\n      0,\n      Math.min(this.arrL.length, this.l.length)\n    );\n    System$6.arraycopy(\n      this.arrS,\n      0,\n      s,\n      0,\n      Math.min(this.arrS.length, this.s.length)\n    );\n    System$6.arraycopy(\n      this.arr21,\n      0,\n      this.psfb21,\n      0,\n      Math.min(this.arr21.length, this.psfb21.length)\n    );\n    System$6.arraycopy(\n      this.arr12,\n      0,\n      this.psfb12,\n      0,\n      Math.min(this.arr12.length, this.psfb12.length)\n    );\n  }\n}\nvar new_float$8 = common.new_float;\nvar new_float_n$2 = common.new_float_n;\nvar new_int$7 = common.new_int;\nfunction NsPsy() {\n  this.last_en_subshort = new_float_n$2([4, 9]);\n  this.lastAttacks = new_int$7(4);\n  this.pefirbuf = new_float$8(19);\n  this.longfact = new_float$8(Encoder.SBMAX_l);\n  this.shortfact = new_float$8(Encoder.SBMAX_s);\n  this.attackthre = 0;\n  this.attackthre_s = 0;\n}\nfunction VBRSeekInfo() {\n  this.sum = 0;\n  this.seen = 0;\n  this.want = 0;\n  this.pos = 0;\n  this.size = 0;\n  this.bag = null;\n  this.nVbrNumFrames = 0;\n  this.nBytesWritten = 0;\n  this.TotalFrameSize = 0;\n}\nvar new_byte$3 = common.new_byte;\nvar new_double = common.new_double;\nvar new_float$7 = common.new_float;\nvar new_float_n$1 = common.new_float_n;\nvar new_int$6 = common.new_int;\nvar new_int_n$1 = common.new_int_n;\nLameInternalFlags$1.MFSIZE = 3 * 1152 + Encoder.ENCDELAY - Encoder.MDCTDELAY;\nLameInternalFlags$1.MAX_HEADER_BUF = 256;\nLameInternalFlags$1.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags$1.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags$1.BPC = 320;\nfunction LameInternalFlags$1() {\n  var MAX_HEADER_LEN = 40;\n  this.Class_ID = 0;\n  this.lame_encode_frame_init = 0;\n  this.iteration_init_init = 0;\n  this.fill_buffer_resample_init = 0;\n  this.mfbuf = new_float_n$1([2, LameInternalFlags$1.MFSIZE]);\n  this.mode_gr = 0;\n  this.channels_in = 0;\n  this.channels_out = 0;\n  this.resample_ratio = 0;\n  this.mf_samples_to_encode = 0;\n  this.mf_size = 0;\n  this.VBR_min_bitrate = 0;\n  this.VBR_max_bitrate = 0;\n  this.bitrate_index = 0;\n  this.samplerate_index = 0;\n  this.mode_ext = 0;\n  this.lowpass1 = 0;\n  this.lowpass2 = 0;\n  this.highpass1 = 0;\n  this.highpass2 = 0;\n  this.noise_shaping = 0;\n  this.noise_shaping_amp = 0;\n  this.substep_shaping = 0;\n  this.psymodel = 0;\n  this.noise_shaping_stop = 0;\n  this.subblock_gain = 0;\n  this.use_best_huffman = 0;\n  this.full_outer_loop = 0;\n  this.l3_side = new IIISideInfo();\n  this.ms_ratio = new_float$7(2);\n  this.padding = 0;\n  this.frac_SpF = 0;\n  this.slot_lag = 0;\n  this.tag_spec = null;\n  this.nMusicCRC = 0;\n  this.OldValue = new_int$6(2);\n  this.CurrentStep = new_int$6(2);\n  this.masking_lower = 0;\n  this.bv_scf = new_int$6(576);\n  this.pseudohalf = new_int$6(L3Side$1.SFBMAX);\n  this.sfb21_extra = false;\n  this.inbuf_old = new Array(2);\n  this.blackfilt = new Array(2 * LameInternalFlags$1.BPC + 1);\n  this.itime = new_double(2);\n  this.sideinfo_len = 0;\n  this.sb_sample = new_float_n$1([2, 2, 18, Encoder.SBLIMIT]);\n  this.amp_filter = new_float$7(32);\n  function Header() {\n    this.write_timing = 0;\n    this.ptr = 0;\n    this.buf = new_byte$3(MAX_HEADER_LEN);\n  }\n  this.header = new Array(LameInternalFlags$1.MAX_HEADER_BUF);\n  this.h_ptr = 0;\n  this.w_ptr = 0;\n  this.ancillary_flag = 0;\n  this.ResvSize = 0;\n  this.ResvMax = 0;\n  this.scalefac_band = new ScaleFac();\n  this.minval_l = new_float$7(Encoder.CBANDS);\n  this.minval_s = new_float$7(Encoder.CBANDS);\n  this.nb_1 = new_float_n$1([4, Encoder.CBANDS]);\n  this.nb_2 = new_float_n$1([4, Encoder.CBANDS]);\n  this.nb_s1 = new_float_n$1([4, Encoder.CBANDS]);\n  this.nb_s2 = new_float_n$1([4, Encoder.CBANDS]);\n  this.s3_ss = null;\n  this.s3_ll = null;\n  this.decay = 0;\n  this.thm = new Array(4);\n  this.en = new Array(4);\n  this.tot_ener = new_float$7(4);\n  this.loudness_sq = new_float_n$1([2, 2]);\n  this.loudness_sq_save = new_float$7(2);\n  this.mld_l = new_float$7(Encoder.SBMAX_l);\n  this.mld_s = new_float$7(Encoder.SBMAX_s);\n  this.bm_l = new_int$6(Encoder.SBMAX_l);\n  this.bo_l = new_int$6(Encoder.SBMAX_l);\n  this.bm_s = new_int$6(Encoder.SBMAX_s);\n  this.bo_s = new_int$6(Encoder.SBMAX_s);\n  this.npart_l = 0;\n  this.npart_s = 0;\n  this.s3ind = new_int_n$1([Encoder.CBANDS, 2]);\n  this.s3ind_s = new_int_n$1([Encoder.CBANDS, 2]);\n  this.numlines_s = new_int$6(Encoder.CBANDS);\n  this.numlines_l = new_int$6(Encoder.CBANDS);\n  this.rnumlines_l = new_float$7(Encoder.CBANDS);\n  this.mld_cb_l = new_float$7(Encoder.CBANDS);\n  this.mld_cb_s = new_float$7(Encoder.CBANDS);\n  this.numlines_s_num1 = 0;\n  this.numlines_l_num1 = 0;\n  this.pe = new_float$7(4);\n  this.ms_ratio_s_old = 0;\n  this.ms_ratio_l_old = 0;\n  this.ms_ener_ratio_old = 0;\n  this.blocktype_old = new_int$6(2);\n  this.nsPsy = new NsPsy();\n  this.VBR_seek_table = new VBRSeekInfo();\n  this.ATH = null;\n  this.PSY = null;\n  this.nogap_total = 0;\n  this.nogap_current = 0;\n  this.decode_on_the_fly = true;\n  this.findReplayGain = true;\n  this.findPeakSample = true;\n  this.PeakSample = 0;\n  this.RadioGain = 0;\n  this.AudiophileGain = 0;\n  this.rgdata = null;\n  this.noclipGainChange = 0;\n  this.noclipScale = 0;\n  this.bitrate_stereoMode_Hist = new_int_n$1([16, 4 + 1]);\n  this.bitrate_blockType_Hist = new_int_n$1([16, 4 + 1 + 1]);\n  this.pinfo = null;\n  this.hip = null;\n  this.in_buffer_nsamples = 0;\n  this.in_buffer_0 = null;\n  this.in_buffer_1 = null;\n  this.iteration_loop = null;\n  for (var i = 0; i < this.en.length; i++) {\n    this.en[i] = new III_psy_xmin();\n  }\n  for (var i = 0; i < this.thm.length; i++) {\n    this.thm[i] = new III_psy_xmin();\n  }\n  for (var i = 0; i < this.header.length; i++) {\n    this.header[i] = new Header();\n  }\n}\nvar new_float$6 = common.new_float;\nfunction ATH() {\n  this.useAdjust = 0;\n  this.aaSensitivityP = 0;\n  this.adjust = 0;\n  this.adjustLimit = 0;\n  this.decay = 0;\n  this.floor = 0;\n  this.l = new_float$6(Encoder.SBMAX_l);\n  this.s = new_float$6(Encoder.SBMAX_s);\n  this.psfb21 = new_float$6(Encoder.PSFB21);\n  this.psfb12 = new_float$6(Encoder.PSFB12);\n  this.cb_l = new_float$6(Encoder.CBANDS);\n  this.cb_s = new_float$6(Encoder.CBANDS);\n  this.eql_w = new_float$6(Encoder.BLKSIZE / 2);\n}\nvar System$5 = common.System;\nvar Arrays$4 = common.Arrays;\nGainAnalysis$1.STEPS_per_dB = 100;\nGainAnalysis$1.MAX_dB = 120;\nGainAnalysis$1.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis$1.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.YULE_ORDER = 10;\nGainAnalysis$1.MAX_ORDER = GainAnalysis$1.YULE_ORDER;\nGainAnalysis$1.MAX_SAMP_FREQ = 48e3;\nGainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis$1.MAX_SAMPLES_PER_WINDOW = GainAnalysis$1.MAX_SAMP_FREQ * GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR / GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR + 1;\nfunction GainAnalysis$1() {\n  var PINK_REF = 64.82;\n  var RMS_PERCENTILE = 0.95;\n  var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR;\n  var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR;\n  var ABYule = [\n    [\n      0.038575994352,\n      -3.84664617118067,\n      -0.02160367184185,\n      7.81501653005538,\n      -0.00123395316851,\n      -11.34170355132042,\n      -9291677959e-14,\n      13.05504219327545,\n      -0.01655260341619,\n      -12.28759895145294,\n      0.02161526843274,\n      9.4829380631979,\n      -0.02074045215285,\n      -5.87257861775999,\n      0.00594298065125,\n      2.75465861874613,\n      0.00306428023191,\n      -0.86984376593551,\n      12025322027e-14,\n      0.13919314567432,\n      0.00288463683916\n    ],\n    [\n      0.0541865640643,\n      -3.47845948550071,\n      -0.02911007808948,\n      6.36317777566148,\n      -0.00848709379851,\n      -8.54751527471874,\n      -0.00851165645469,\n      9.4769360780128,\n      -0.00834990904936,\n      -8.81498681370155,\n      0.02245293253339,\n      6.85401540936998,\n      -0.02596338512915,\n      -4.39470996079559,\n      0.01624864962975,\n      2.19611684890774,\n      -0.00240879051584,\n      -0.75104302451432,\n      0.00674613682247,\n      0.13149317958808,\n      -0.00187763777362\n    ],\n    [\n      0.15457299681924,\n      -2.37898834973084,\n      -0.09331049056315,\n      2.84868151156327,\n      -0.06247880153653,\n      -2.64577170229825,\n      0.02163541888798,\n      2.23697657451713,\n      -0.05588393329856,\n      -1.67148153367602,\n      0.04781476674921,\n      1.00595954808547,\n      0.00222312597743,\n      -0.45953458054983,\n      0.03174092540049,\n      0.16378164858596,\n      -0.01390589421898,\n      -0.05032077717131,\n      0.00651420667831,\n      0.0234789740702,\n      -0.00881362733839\n    ],\n    [\n      0.30296907319327,\n      -1.61273165137247,\n      -0.22613988682123,\n      1.0797749225997,\n      -0.08587323730772,\n      -0.2565625775407,\n      0.03282930172664,\n      -0.1627671912044,\n      -0.00915702933434,\n      -0.22638893773906,\n      -0.02364141202522,\n      0.39120800788284,\n      -0.00584456039913,\n      -0.22138138954925,\n      0.06276101321749,\n      0.04500235387352,\n      -828086748e-14,\n      0.02005851806501,\n      0.00205861885564,\n      0.00302439095741,\n      -0.02950134983287\n    ],\n    [\n      0.33642304856132,\n      -1.49858979367799,\n      -0.2557224142557,\n      0.87350271418188,\n      -0.11828570177555,\n      0.12205022308084,\n      0.11921148675203,\n      -0.80774944671438,\n      -0.07834489609479,\n      0.47854794562326,\n      -0.0046997791438,\n      -0.12453458140019,\n      -0.0058950022444,\n      -0.04067510197014,\n      0.05724228140351,\n      0.08333755284107,\n      0.00832043980773,\n      -0.04237348025746,\n      -0.0163538138454,\n      0.02977207319925,\n      -0.0176017656815\n    ],\n    [\n      0.4491525660845,\n      -0.62820619233671,\n      -0.14351757464547,\n      0.29661783706366,\n      -0.22784394429749,\n      -0.372563729424,\n      -0.01419140100551,\n      0.00213767857124,\n      0.04078262797139,\n      -0.42029820170918,\n      -0.12398163381748,\n      0.22199650564824,\n      0.04097565135648,\n      0.00613424350682,\n      0.10478503600251,\n      0.06747620744683,\n      -0.01863887810927,\n      0.05784820375801,\n      -0.03193428438915,\n      0.03222754072173,\n      0.00541907748707\n    ],\n    [\n      0.56619470757641,\n      -1.04800335126349,\n      -0.75464456939302,\n      0.29156311971249,\n      0.1624213774223,\n      -0.26806001042947,\n      0.16744243493672,\n      0.00819999645858,\n      -0.18901604199609,\n      0.45054734505008,\n      0.3093178284183,\n      -0.33032403314006,\n      -0.27562961986224,\n      0.0673936833311,\n      0.00647310677246,\n      -0.04784254229033,\n      0.08647503780351,\n      0.01639907836189,\n      -0.0378898455484,\n      0.01807364323573,\n      -0.00588215443421\n    ],\n    [\n      0.58100494960553,\n      -0.51035327095184,\n      -0.53174909058578,\n      -0.31863563325245,\n      -0.14289799034253,\n      -0.20256413484477,\n      0.17520704835522,\n      0.1472815413433,\n      0.02377945217615,\n      0.38952639978999,\n      0.15558449135573,\n      -0.23313271880868,\n      -0.25344790059353,\n      -0.05246019024463,\n      0.01628462406333,\n      -0.02505961724053,\n      0.06920467763959,\n      0.02442357316099,\n      -0.03721611395801,\n      0.01818801111503,\n      -0.00749618797172\n    ],\n    [\n      0.53648789255105,\n      -0.2504987195602,\n      -0.42163034350696,\n      -0.43193942311114,\n      -0.00275953611929,\n      -0.03424681017675,\n      0.04267842219415,\n      -0.04678328784242,\n      -0.10214864179676,\n      0.26408300200955,\n      0.14590772289388,\n      0.15113130533216,\n      -0.02459864859345,\n      -0.17556493366449,\n      -0.11202315195388,\n      -0.18823009262115,\n      -0.04060034127,\n      0.05477720428674,\n      0.0478866554818,\n      0.0470440968812,\n      -0.02217936801134\n    ]\n  ];\n  var ABButter = [\n    [\n      0.98621192462708,\n      -1.97223372919527,\n      -1.97242384925416,\n      0.97261396931306,\n      0.98621192462708\n    ],\n    [\n      0.98500175787242,\n      -1.96977855582618,\n      -1.97000351574484,\n      0.9702284756635,\n      0.98500175787242\n    ],\n    [\n      0.97938932735214,\n      -1.95835380975398,\n      -1.95877865470428,\n      0.95920349965459,\n      0.97938932735214\n    ],\n    [\n      0.97531843204928,\n      -1.95002759149878,\n      -1.95063686409857,\n      0.95124613669835,\n      0.97531843204928\n    ],\n    [\n      0.97316523498161,\n      -1.94561023566527,\n      -1.94633046996323,\n      0.94705070426118,\n      0.97316523498161\n    ],\n    [\n      0.96454515552826,\n      -1.92783286977036,\n      -1.92909031105652,\n      0.93034775234268,\n      0.96454515552826\n    ],\n    [\n      0.96009142950541,\n      -1.91858953033784,\n      -1.92018285901082,\n      0.92177618768381,\n      0.96009142950541\n    ],\n    [\n      0.95856916599601,\n      -1.9154210807478,\n      -1.91713833199203,\n      0.91885558323625,\n      0.95856916599601\n    ],\n    [\n      0.94597685600279,\n      -1.88903307939452,\n      -1.89195371200558,\n      0.89487434461664,\n      0.94597685600279\n    ]\n  ];\n  function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n    while (nSamples-- != 0) {\n      output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0] - output[outputPos - 1] * kernel[1] + input[inputPos - 1] * kernel[2] - output[outputPos - 2] * kernel[3] + input[inputPos - 2] * kernel[4] - output[outputPos - 3] * kernel[5] + input[inputPos - 3] * kernel[6] - output[outputPos - 4] * kernel[7] + input[inputPos - 4] * kernel[8] - output[outputPos - 5] * kernel[9] + input[inputPos - 5] * kernel[10] - output[outputPos - 6] * kernel[11] + input[inputPos - 6] * kernel[12] - output[outputPos - 7] * kernel[13] + input[inputPos - 7] * kernel[14] - output[outputPos - 8] * kernel[15] + input[inputPos - 8] * kernel[16] - output[outputPos - 9] * kernel[17] + input[inputPos - 9] * kernel[18] - output[outputPos - 10] * kernel[19] + input[inputPos - 10] * kernel[20];\n      ++outputPos;\n      ++inputPos;\n    }\n  }\n  function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n    while (nSamples-- != 0) {\n      output[outputPos] = input[inputPos + 0] * kernel[0] - output[outputPos - 1] * kernel[1] + input[inputPos - 1] * kernel[2] - output[outputPos - 2] * kernel[3] + input[inputPos - 2] * kernel[4];\n      ++outputPos;\n      ++inputPos;\n    }\n  }\n  function ResetSampleFrequency(rgData, samplefreq) {\n    for (var i = 0; i < MAX_ORDER; i++) {\n      rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0;\n    }\n    switch (0 | samplefreq) {\n      case 48e3:\n        rgData.reqindex = 0;\n        break;\n      case 44100:\n        rgData.reqindex = 1;\n        break;\n      case 32e3:\n        rgData.reqindex = 2;\n        break;\n      case 24e3:\n        rgData.reqindex = 3;\n        break;\n      case 22050:\n        rgData.reqindex = 4;\n        break;\n      case 16e3:\n        rgData.reqindex = 5;\n        break;\n      case 12e3:\n        rgData.reqindex = 6;\n        break;\n      case 11025:\n        rgData.reqindex = 7;\n        break;\n      case 8e3:\n        rgData.reqindex = 8;\n        break;\n      default:\n        return INIT_GAIN_ANALYSIS_ERROR;\n    }\n    rgData.sampleWindow = 0 | (samplefreq * RMS_WINDOW_TIME_NUMERATOR + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR;\n    rgData.lsum = 0;\n    rgData.rsum = 0;\n    rgData.totsamp = 0;\n    Arrays$4.ill(rgData.A, 0);\n    return INIT_GAIN_ANALYSIS_OK;\n  }\n  this.InitGainAnalysis = function(rgData, samplefreq) {\n    if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n      return INIT_GAIN_ANALYSIS_ERROR;\n    }\n    rgData.linpre = MAX_ORDER;\n    rgData.rinpre = MAX_ORDER;\n    rgData.lstep = MAX_ORDER;\n    rgData.rstep = MAX_ORDER;\n    rgData.lout = MAX_ORDER;\n    rgData.rout = MAX_ORDER;\n    Arrays$4.fill(rgData.B, 0);\n    return INIT_GAIN_ANALYSIS_OK;\n  };\n  function fsqr(d) {\n    return d * d;\n  }\n  this.AnalyzeSamples = function(rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples, num_channels) {\n    var curleft;\n    var curleftBase;\n    var curright;\n    var currightBase;\n    var batchsamples;\n    var cursamples;\n    var cursamplepos;\n    if (num_samples == 0)\n      return GAIN_ANALYSIS_OK;\n    cursamplepos = 0;\n    batchsamples = num_samples;\n    switch (num_channels) {\n      case 1:\n        right_samples = left_samples;\n        right_samplesPos = left_samplesPos;\n        break;\n      case 2:\n        break;\n      default:\n        return GAIN_ANALYSIS_ERROR;\n    }\n    if (num_samples < MAX_ORDER) {\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos,\n        rgData.linprebuf,\n        MAX_ORDER,\n        num_samples\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos,\n        rgData.rinprebuf,\n        MAX_ORDER,\n        num_samples\n      );\n    } else {\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos,\n        rgData.linprebuf,\n        MAX_ORDER,\n        MAX_ORDER\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos,\n        rgData.rinprebuf,\n        MAX_ORDER,\n        MAX_ORDER\n      );\n    }\n    while (batchsamples > 0) {\n      cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow - rgData.totsamp : batchsamples;\n      if (cursamplepos < MAX_ORDER) {\n        curleft = rgData.linpre + cursamplepos;\n        curleftBase = rgData.linprebuf;\n        curright = rgData.rinpre + cursamplepos;\n        currightBase = rgData.rinprebuf;\n        if (cursamples > MAX_ORDER - cursamplepos) {\n          cursamples = MAX_ORDER - cursamplepos;\n        }\n      } else {\n        curleft = left_samplesPos + cursamplepos;\n        curleftBase = left_samples;\n        curright = right_samplesPos + cursamplepos;\n        currightBase = right_samples;\n      }\n      filterYule(\n        curleftBase,\n        curleft,\n        rgData.lstepbuf,\n        rgData.lstep + rgData.totsamp,\n        cursamples,\n        ABYule[rgData.reqindex]\n      );\n      filterYule(\n        currightBase,\n        curright,\n        rgData.rstepbuf,\n        rgData.rstep + rgData.totsamp,\n        cursamples,\n        ABYule[rgData.reqindex]\n      );\n      filterButter(\n        rgData.lstepbuf,\n        rgData.lstep + rgData.totsamp,\n        rgData.loutbuf,\n        rgData.lout + rgData.totsamp,\n        cursamples,\n        ABButter[rgData.reqindex]\n      );\n      filterButter(\n        rgData.rstepbuf,\n        rgData.rstep + rgData.totsamp,\n        rgData.routbuf,\n        rgData.rout + rgData.totsamp,\n        cursamples,\n        ABButter[rgData.reqindex]\n      );\n      curleft = rgData.lout + rgData.totsamp;\n      curleftBase = rgData.loutbuf;\n      curright = rgData.rout + rgData.totsamp;\n      currightBase = rgData.routbuf;\n      var i = cursamples % 8;\n      while (i-- != 0) {\n        rgData.lsum += fsqr(curleftBase[curleft++]);\n        rgData.rsum += fsqr(currightBase[curright++]);\n      }\n      i = cursamples / 8;\n      while (i-- != 0) {\n        rgData.lsum += fsqr(curleftBase[curleft + 0]) + fsqr(curleftBase[curleft + 1]) + fsqr(curleftBase[curleft + 2]) + fsqr(curleftBase[curleft + 3]) + fsqr(curleftBase[curleft + 4]) + fsqr(curleftBase[curleft + 5]) + fsqr(curleftBase[curleft + 6]) + fsqr(curleftBase[curleft + 7]);\n        curleft += 8;\n        rgData.rsum += fsqr(currightBase[curright + 0]) + fsqr(currightBase[curright + 1]) + fsqr(currightBase[curright + 2]) + fsqr(currightBase[curright + 3]) + fsqr(currightBase[curright + 4]) + fsqr(currightBase[curright + 5]) + fsqr(currightBase[curright + 6]) + fsqr(currightBase[curright + 7]);\n        curright += 8;\n      }\n      batchsamples -= cursamples;\n      cursamplepos += cursamples;\n      rgData.totsamp += cursamples;\n      if (rgData.totsamp == rgData.sampleWindow) {\n        var val = GainAnalysis$1.STEPS_per_dB * 10 * Math.log10(\n          (rgData.lsum + rgData.rsum) / rgData.totsamp * 0.5 + 1e-37\n        );\n        var ival = val <= 0 ? 0 : 0 | val;\n        if (ival >= rgData.A.length)\n          ival = rgData.A.length - 1;\n        rgData.A[ival]++;\n        rgData.lsum = rgData.rsum = 0;\n        System$5.arraycopy(\n          rgData.loutbuf,\n          rgData.totsamp,\n          rgData.loutbuf,\n          0,\n          MAX_ORDER\n        );\n        System$5.arraycopy(\n          rgData.routbuf,\n          rgData.totsamp,\n          rgData.routbuf,\n          0,\n          MAX_ORDER\n        );\n        System$5.arraycopy(\n          rgData.lstepbuf,\n          rgData.totsamp,\n          rgData.lstepbuf,\n          0,\n          MAX_ORDER\n        );\n        System$5.arraycopy(\n          rgData.rstepbuf,\n          rgData.totsamp,\n          rgData.rstepbuf,\n          0,\n          MAX_ORDER\n        );\n        rgData.totsamp = 0;\n      }\n      if (rgData.totsamp > rgData.sampleWindow) {\n        return GAIN_ANALYSIS_ERROR;\n      }\n    }\n    if (num_samples < MAX_ORDER) {\n      System$5.arraycopy(\n        rgData.linprebuf,\n        num_samples,\n        rgData.linprebuf,\n        0,\n        MAX_ORDER - num_samples\n      );\n      System$5.arraycopy(\n        rgData.rinprebuf,\n        num_samples,\n        rgData.rinprebuf,\n        0,\n        MAX_ORDER - num_samples\n      );\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos,\n        rgData.linprebuf,\n        MAX_ORDER - num_samples,\n        num_samples\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos,\n        rgData.rinprebuf,\n        MAX_ORDER - num_samples,\n        num_samples\n      );\n    } else {\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos + num_samples - MAX_ORDER,\n        rgData.linprebuf,\n        0,\n        MAX_ORDER\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos + num_samples - MAX_ORDER,\n        rgData.rinprebuf,\n        0,\n        MAX_ORDER\n      );\n    }\n    return GAIN_ANALYSIS_OK;\n  };\n  function analyzeResult(Array2, len) {\n    var i;\n    var elems = 0;\n    for (i = 0; i < len; i++)\n      elems += Array2[i];\n    if (elems == 0)\n      return GAIN_NOT_ENOUGH_SAMPLES;\n    var upper = 0 | Math.ceil(elems * (1 - RMS_PERCENTILE));\n    for (i = len; i-- > 0; ) {\n      if ((upper -= Array2[i]) <= 0)\n        break;\n    }\n    return PINK_REF - i / GainAnalysis$1.STEPS_per_dB;\n  }\n  this.GetTitleGain = function(rgData) {\n    var retval = analyzeResult(rgData.A, rgData.A.length);\n    for (var i = 0; i < rgData.A.length; i++) {\n      rgData.B[i] += rgData.A[i];\n      rgData.A[i] = 0;\n    }\n    for (var i = 0; i < MAX_ORDER; i++) {\n      rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0;\n    }\n    rgData.totsamp = 0;\n    rgData.lsum = rgData.rsum = 0;\n    return retval;\n  };\n}\nvar new_float$5 = common.new_float;\nvar new_int$5 = common.new_int;\nfunction ReplayGain() {\n  this.linprebuf = new_float$5(void 0 * 2);\n  this.linpre = 0;\n  this.lstepbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.lstep = 0;\n  this.loutbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.lout = 0;\n  this.rinprebuf = new_float$5(void 0 * 2);\n  this.rinpre = 0;\n  this.rstepbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.rstep = 0;\n  this.routbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.rout = 0;\n  this.sampleWindow = 0;\n  this.totsamp = 0;\n  this.lsum = 0;\n  this.rsum = 0;\n  this.freqindex = 0;\n  this.first = 0;\n  this.A = new_int$5(0 | void 0 * void 0);\n  this.B = new_int$5(0 | void 0 * void 0);\n}\nfunction MeanBits$1(meanBits) {\n  this.bits = meanBits;\n}\nvar new_float$4 = common.new_float;\nvar new_int$4 = common.new_int;\nvar assert$8 = common.assert;\nfunction CBRNewIterationLoop(_quantize) {\n  var quantize = _quantize;\n  this.quantize = quantize;\n  this.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n    var gfc = gfp.internal_flags;\n    var l3_xmin = new_float$4(L3Side$1.SFBMAX);\n    var xrpow = new_float$4(576);\n    var targ_bits = new_int$4(2);\n    var mean_bits = 0;\n    var max_bits;\n    var l3_side = gfc.l3_side;\n    var mb = new MeanBits$1(mean_bits);\n    this.quantize.rv.ResvFrameBegin(gfp, mb);\n    mean_bits = mb.bits;\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      max_bits = this.quantize.qupvt.on_pe(\n        gfp,\n        pe,\n        targ_bits,\n        mean_bits,\n        gr,\n        gr\n      );\n      if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n        this.quantize.ms_convert(gfc.l3_side, gr);\n        this.quantize.qupvt.reduce_side(\n          targ_bits,\n          ms_ener_ratio[gr],\n          mean_bits,\n          max_bits\n        );\n      }\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        var adjust, masking_lower_db;\n        var cod_info = l3_side.tt[gr][ch];\n        if (cod_info.block_type != Encoder.SHORT_TYPE) {\n          adjust = 0;\n          masking_lower_db = gfc.PSY.mask_adjust - adjust;\n        } else {\n          adjust = 0;\n          masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n        }\n        gfc.masking_lower = Math.pow(10, masking_lower_db * 0.1);\n        this.quantize.init_outer_loop(gfc, cod_info);\n        if (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n          this.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, l3_xmin);\n          this.quantize.outer_loop(\n            gfp,\n            cod_info,\n            l3_xmin,\n            xrpow,\n            ch,\n            targ_bits[ch]\n          );\n        }\n        this.quantize.iteration_finish_one(gfc, gr, ch);\n        assert$8(\n          cod_info.part2_3_length <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL\n        );\n        assert$8(cod_info.part2_3_length <= targ_bits[ch]);\n      }\n    }\n    this.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n  };\n}\nfunction HuffCodeTab(len, max, tab, hl) {\n  this.xlen = len;\n  this.linmax = max;\n  this.table = tab;\n  this.hlen = hl;\n}\nvar Tables$1 = {};\nTables$1.t1HB = [1, 1, 1, 0];\nTables$1.t2HB = [1, 2, 1, 3, 1, 1, 3, 2, 0];\nTables$1.t3HB = [3, 2, 1, 1, 1, 1, 3, 2, 0];\nTables$1.t5HB = [1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0];\nTables$1.t6HB = [7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0];\nTables$1.t7HB = [\n  1,\n  2,\n  10,\n  19,\n  16,\n  10,\n  3,\n  3,\n  7,\n  10,\n  5,\n  3,\n  11,\n  4,\n  13,\n  17,\n  8,\n  4,\n  12,\n  11,\n  18,\n  15,\n  11,\n  2,\n  7,\n  6,\n  9,\n  14,\n  3,\n  1,\n  6,\n  4,\n  5,\n  3,\n  2,\n  0\n];\nTables$1.t8HB = [\n  3,\n  4,\n  6,\n  18,\n  12,\n  5,\n  5,\n  1,\n  2,\n  16,\n  9,\n  3,\n  7,\n  3,\n  5,\n  14,\n  7,\n  3,\n  19,\n  17,\n  15,\n  13,\n  10,\n  4,\n  13,\n  5,\n  8,\n  11,\n  5,\n  1,\n  12,\n  4,\n  4,\n  1,\n  1,\n  0\n];\nTables$1.t9HB = [\n  7,\n  5,\n  9,\n  14,\n  15,\n  7,\n  6,\n  4,\n  5,\n  5,\n  6,\n  7,\n  7,\n  6,\n  8,\n  8,\n  8,\n  5,\n  15,\n  6,\n  9,\n  10,\n  5,\n  1,\n  11,\n  7,\n  9,\n  6,\n  4,\n  1,\n  14,\n  4,\n  6,\n  2,\n  6,\n  0\n];\nTables$1.t10HB = [\n  1,\n  2,\n  10,\n  23,\n  35,\n  30,\n  12,\n  17,\n  3,\n  3,\n  8,\n  12,\n  18,\n  21,\n  12,\n  7,\n  11,\n  9,\n  15,\n  21,\n  32,\n  40,\n  19,\n  6,\n  14,\n  13,\n  22,\n  34,\n  46,\n  23,\n  18,\n  7,\n  20,\n  19,\n  33,\n  47,\n  27,\n  22,\n  9,\n  3,\n  31,\n  22,\n  41,\n  26,\n  21,\n  20,\n  5,\n  3,\n  14,\n  13,\n  10,\n  11,\n  16,\n  6,\n  5,\n  1,\n  9,\n  8,\n  7,\n  8,\n  4,\n  4,\n  2,\n  0\n];\nTables$1.t11HB = [\n  3,\n  4,\n  10,\n  24,\n  34,\n  33,\n  21,\n  15,\n  5,\n  3,\n  4,\n  10,\n  32,\n  17,\n  11,\n  10,\n  11,\n  7,\n  13,\n  18,\n  30,\n  31,\n  20,\n  5,\n  25,\n  11,\n  19,\n  59,\n  27,\n  18,\n  12,\n  5,\n  35,\n  33,\n  31,\n  58,\n  30,\n  16,\n  7,\n  5,\n  28,\n  26,\n  32,\n  19,\n  17,\n  15,\n  8,\n  14,\n  14,\n  12,\n  9,\n  13,\n  14,\n  9,\n  4,\n  1,\n  11,\n  4,\n  6,\n  6,\n  6,\n  3,\n  2,\n  0\n];\nTables$1.t12HB = [\n  9,\n  6,\n  16,\n  33,\n  41,\n  39,\n  38,\n  26,\n  7,\n  5,\n  6,\n  9,\n  23,\n  16,\n  26,\n  11,\n  17,\n  7,\n  11,\n  14,\n  21,\n  30,\n  10,\n  7,\n  17,\n  10,\n  15,\n  12,\n  18,\n  28,\n  14,\n  5,\n  32,\n  13,\n  22,\n  19,\n  18,\n  16,\n  9,\n  5,\n  40,\n  17,\n  31,\n  29,\n  17,\n  13,\n  4,\n  2,\n  27,\n  12,\n  11,\n  15,\n  10,\n  7,\n  4,\n  1,\n  27,\n  12,\n  8,\n  12,\n  6,\n  3,\n  1,\n  0\n];\nTables$1.t13HB = [\n  1,\n  5,\n  14,\n  21,\n  34,\n  51,\n  46,\n  71,\n  42,\n  52,\n  68,\n  52,\n  67,\n  44,\n  43,\n  19,\n  3,\n  4,\n  12,\n  19,\n  31,\n  26,\n  44,\n  33,\n  31,\n  24,\n  32,\n  24,\n  31,\n  35,\n  22,\n  14,\n  15,\n  13,\n  23,\n  36,\n  59,\n  49,\n  77,\n  65,\n  29,\n  40,\n  30,\n  40,\n  27,\n  33,\n  42,\n  16,\n  22,\n  20,\n  37,\n  61,\n  56,\n  79,\n  73,\n  64,\n  43,\n  76,\n  56,\n  37,\n  26,\n  31,\n  25,\n  14,\n  35,\n  16,\n  60,\n  57,\n  97,\n  75,\n  114,\n  91,\n  54,\n  73,\n  55,\n  41,\n  48,\n  53,\n  23,\n  24,\n  58,\n  27,\n  50,\n  96,\n  76,\n  70,\n  93,\n  84,\n  77,\n  58,\n  79,\n  29,\n  74,\n  49,\n  41,\n  17,\n  47,\n  45,\n  78,\n  74,\n  115,\n  94,\n  90,\n  79,\n  69,\n  83,\n  71,\n  50,\n  59,\n  38,\n  36,\n  15,\n  72,\n  34,\n  56,\n  95,\n  92,\n  85,\n  91,\n  90,\n  86,\n  73,\n  77,\n  65,\n  51,\n  44,\n  43,\n  42,\n  43,\n  20,\n  30,\n  44,\n  55,\n  78,\n  72,\n  87,\n  78,\n  61,\n  46,\n  54,\n  37,\n  30,\n  20,\n  16,\n  53,\n  25,\n  41,\n  37,\n  44,\n  59,\n  54,\n  81,\n  66,\n  76,\n  57,\n  54,\n  37,\n  18,\n  39,\n  11,\n  35,\n  33,\n  31,\n  57,\n  42,\n  82,\n  72,\n  80,\n  47,\n  58,\n  55,\n  21,\n  22,\n  26,\n  38,\n  22,\n  53,\n  25,\n  23,\n  38,\n  70,\n  60,\n  51,\n  36,\n  55,\n  26,\n  34,\n  23,\n  27,\n  14,\n  9,\n  7,\n  34,\n  32,\n  28,\n  39,\n  49,\n  75,\n  30,\n  52,\n  48,\n  40,\n  52,\n  28,\n  18,\n  17,\n  9,\n  5,\n  45,\n  21,\n  34,\n  64,\n  56,\n  50,\n  49,\n  45,\n  31,\n  19,\n  12,\n  15,\n  10,\n  7,\n  6,\n  3,\n  48,\n  23,\n  20,\n  39,\n  36,\n  35,\n  53,\n  21,\n  16,\n  23,\n  13,\n  10,\n  6,\n  1,\n  4,\n  2,\n  16,\n  15,\n  17,\n  27,\n  25,\n  20,\n  29,\n  11,\n  17,\n  12,\n  16,\n  8,\n  1,\n  1,\n  0,\n  1\n];\nTables$1.t15HB = [\n  7,\n  12,\n  18,\n  53,\n  47,\n  76,\n  124,\n  108,\n  89,\n  123,\n  108,\n  119,\n  107,\n  81,\n  122,\n  63,\n  13,\n  5,\n  16,\n  27,\n  46,\n  36,\n  61,\n  51,\n  42,\n  70,\n  52,\n  83,\n  65,\n  41,\n  59,\n  36,\n  19,\n  17,\n  15,\n  24,\n  41,\n  34,\n  59,\n  48,\n  40,\n  64,\n  50,\n  78,\n  62,\n  80,\n  56,\n  33,\n  29,\n  28,\n  25,\n  43,\n  39,\n  63,\n  55,\n  93,\n  76,\n  59,\n  93,\n  72,\n  54,\n  75,\n  50,\n  29,\n  52,\n  22,\n  42,\n  40,\n  67,\n  57,\n  95,\n  79,\n  72,\n  57,\n  89,\n  69,\n  49,\n  66,\n  46,\n  27,\n  77,\n  37,\n  35,\n  66,\n  58,\n  52,\n  91,\n  74,\n  62,\n  48,\n  79,\n  63,\n  90,\n  62,\n  40,\n  38,\n  125,\n  32,\n  60,\n  56,\n  50,\n  92,\n  78,\n  65,\n  55,\n  87,\n  71,\n  51,\n  73,\n  51,\n  70,\n  30,\n  109,\n  53,\n  49,\n  94,\n  88,\n  75,\n  66,\n  122,\n  91,\n  73,\n  56,\n  42,\n  64,\n  44,\n  21,\n  25,\n  90,\n  43,\n  41,\n  77,\n  73,\n  63,\n  56,\n  92,\n  77,\n  66,\n  47,\n  67,\n  48,\n  53,\n  36,\n  20,\n  71,\n  34,\n  67,\n  60,\n  58,\n  49,\n  88,\n  76,\n  67,\n  106,\n  71,\n  54,\n  38,\n  39,\n  23,\n  15,\n  109,\n  53,\n  51,\n  47,\n  90,\n  82,\n  58,\n  57,\n  48,\n  72,\n  57,\n  41,\n  23,\n  27,\n  62,\n  9,\n  86,\n  42,\n  40,\n  37,\n  70,\n  64,\n  52,\n  43,\n  70,\n  55,\n  42,\n  25,\n  29,\n  18,\n  11,\n  11,\n  118,\n  68,\n  30,\n  55,\n  50,\n  46,\n  74,\n  65,\n  49,\n  39,\n  24,\n  16,\n  22,\n  13,\n  14,\n  7,\n  91,\n  44,\n  39,\n  38,\n  34,\n  63,\n  52,\n  45,\n  31,\n  52,\n  28,\n  19,\n  14,\n  8,\n  9,\n  3,\n  123,\n  60,\n  58,\n  53,\n  47,\n  43,\n  32,\n  22,\n  37,\n  24,\n  17,\n  12,\n  15,\n  10,\n  2,\n  1,\n  71,\n  37,\n  34,\n  30,\n  28,\n  20,\n  17,\n  26,\n  21,\n  16,\n  10,\n  6,\n  8,\n  6,\n  2,\n  0\n];\nTables$1.t16HB = [\n  1,\n  5,\n  14,\n  44,\n  74,\n  63,\n  110,\n  93,\n  172,\n  149,\n  138,\n  242,\n  225,\n  195,\n  376,\n  17,\n  3,\n  4,\n  12,\n  20,\n  35,\n  62,\n  53,\n  47,\n  83,\n  75,\n  68,\n  119,\n  201,\n  107,\n  207,\n  9,\n  15,\n  13,\n  23,\n  38,\n  67,\n  58,\n  103,\n  90,\n  161,\n  72,\n  127,\n  117,\n  110,\n  209,\n  206,\n  16,\n  45,\n  21,\n  39,\n  69,\n  64,\n  114,\n  99,\n  87,\n  158,\n  140,\n  252,\n  212,\n  199,\n  387,\n  365,\n  26,\n  75,\n  36,\n  68,\n  65,\n  115,\n  101,\n  179,\n  164,\n  155,\n  264,\n  246,\n  226,\n  395,\n  382,\n  362,\n  9,\n  66,\n  30,\n  59,\n  56,\n  102,\n  185,\n  173,\n  265,\n  142,\n  253,\n  232,\n  400,\n  388,\n  378,\n  445,\n  16,\n  111,\n  54,\n  52,\n  100,\n  184,\n  178,\n  160,\n  133,\n  257,\n  244,\n  228,\n  217,\n  385,\n  366,\n  715,\n  10,\n  98,\n  48,\n  91,\n  88,\n  165,\n  157,\n  148,\n  261,\n  248,\n  407,\n  397,\n  372,\n  380,\n  889,\n  884,\n  8,\n  85,\n  84,\n  81,\n  159,\n  156,\n  143,\n  260,\n  249,\n  427,\n  401,\n  392,\n  383,\n  727,\n  713,\n  708,\n  7,\n  154,\n  76,\n  73,\n  141,\n  131,\n  256,\n  245,\n  426,\n  406,\n  394,\n  384,\n  735,\n  359,\n  710,\n  352,\n  11,\n  139,\n  129,\n  67,\n  125,\n  247,\n  233,\n  229,\n  219,\n  393,\n  743,\n  737,\n  720,\n  885,\n  882,\n  439,\n  4,\n  243,\n  120,\n  118,\n  115,\n  227,\n  223,\n  396,\n  746,\n  742,\n  736,\n  721,\n  712,\n  706,\n  223,\n  436,\n  6,\n  202,\n  224,\n  222,\n  218,\n  216,\n  389,\n  386,\n  381,\n  364,\n  888,\n  443,\n  707,\n  440,\n  437,\n  1728,\n  4,\n  747,\n  211,\n  210,\n  208,\n  370,\n  379,\n  734,\n  723,\n  714,\n  1735,\n  883,\n  877,\n  876,\n  3459,\n  865,\n  2,\n  377,\n  369,\n  102,\n  187,\n  726,\n  722,\n  358,\n  711,\n  709,\n  866,\n  1734,\n  871,\n  3458,\n  870,\n  434,\n  0,\n  12,\n  10,\n  7,\n  11,\n  10,\n  17,\n  11,\n  9,\n  13,\n  12,\n  10,\n  7,\n  5,\n  3,\n  1,\n  3\n];\nTables$1.t24HB = [\n  15,\n  13,\n  46,\n  80,\n  146,\n  262,\n  248,\n  434,\n  426,\n  669,\n  653,\n  649,\n  621,\n  517,\n  1032,\n  88,\n  14,\n  12,\n  21,\n  38,\n  71,\n  130,\n  122,\n  216,\n  209,\n  198,\n  327,\n  345,\n  319,\n  297,\n  279,\n  42,\n  47,\n  22,\n  41,\n  74,\n  68,\n  128,\n  120,\n  221,\n  207,\n  194,\n  182,\n  340,\n  315,\n  295,\n  541,\n  18,\n  81,\n  39,\n  75,\n  70,\n  134,\n  125,\n  116,\n  220,\n  204,\n  190,\n  178,\n  325,\n  311,\n  293,\n  271,\n  16,\n  147,\n  72,\n  69,\n  135,\n  127,\n  118,\n  112,\n  210,\n  200,\n  188,\n  352,\n  323,\n  306,\n  285,\n  540,\n  14,\n  263,\n  66,\n  129,\n  126,\n  119,\n  114,\n  214,\n  202,\n  192,\n  180,\n  341,\n  317,\n  301,\n  281,\n  262,\n  12,\n  249,\n  123,\n  121,\n  117,\n  113,\n  215,\n  206,\n  195,\n  185,\n  347,\n  330,\n  308,\n  291,\n  272,\n  520,\n  10,\n  435,\n  115,\n  111,\n  109,\n  211,\n  203,\n  196,\n  187,\n  353,\n  332,\n  313,\n  298,\n  283,\n  531,\n  381,\n  17,\n  427,\n  212,\n  208,\n  205,\n  201,\n  193,\n  186,\n  177,\n  169,\n  320,\n  303,\n  286,\n  268,\n  514,\n  377,\n  16,\n  335,\n  199,\n  197,\n  191,\n  189,\n  181,\n  174,\n  333,\n  321,\n  305,\n  289,\n  275,\n  521,\n  379,\n  371,\n  11,\n  668,\n  184,\n  183,\n  179,\n  175,\n  344,\n  331,\n  314,\n  304,\n  290,\n  277,\n  530,\n  383,\n  373,\n  366,\n  10,\n  652,\n  346,\n  171,\n  168,\n  164,\n  318,\n  309,\n  299,\n  287,\n  276,\n  263,\n  513,\n  375,\n  368,\n  362,\n  6,\n  648,\n  322,\n  316,\n  312,\n  307,\n  302,\n  292,\n  284,\n  269,\n  261,\n  512,\n  376,\n  370,\n  364,\n  359,\n  4,\n  620,\n  300,\n  296,\n  294,\n  288,\n  282,\n  273,\n  266,\n  515,\n  380,\n  374,\n  369,\n  365,\n  361,\n  357,\n  2,\n  1033,\n  280,\n  278,\n  274,\n  267,\n  264,\n  259,\n  382,\n  378,\n  372,\n  367,\n  363,\n  360,\n  358,\n  356,\n  0,\n  43,\n  20,\n  19,\n  17,\n  15,\n  13,\n  11,\n  9,\n  7,\n  6,\n  4,\n  7,\n  5,\n  3,\n  1,\n  3\n];\nTables$1.t32HB = [\n  1 << 0,\n  5 << 1,\n  4 << 1,\n  5 << 2,\n  6 << 1,\n  5 << 2,\n  4 << 2,\n  4 << 3,\n  7 << 1,\n  3 << 2,\n  6 << 2,\n  0 << 3,\n  7 << 2,\n  2 << 3,\n  3 << 3,\n  1 << 4\n];\nTables$1.t33HB = [\n  15 << 0,\n  14 << 1,\n  13 << 1,\n  12 << 2,\n  11 << 1,\n  10 << 2,\n  9 << 2,\n  8 << 3,\n  7 << 1,\n  6 << 2,\n  5 << 2,\n  4 << 3,\n  3 << 2,\n  2 << 3,\n  1 << 3,\n  0 << 4\n];\nTables$1.t1l = [1, 4, 3, 5];\nTables$1.t2l = [1, 4, 7, 4, 5, 7, 6, 7, 8];\nTables$1.t3l = [2, 3, 7, 4, 4, 7, 6, 7, 8];\nTables$1.t5l = [1, 4, 7, 8, 4, 5, 8, 9, 7, 8, 9, 10, 8, 8, 9, 10];\nTables$1.t6l = [3, 4, 6, 8, 4, 4, 6, 7, 5, 6, 7, 8, 7, 7, 8, 9];\nTables$1.t7l = [\n  1,\n  4,\n  7,\n  9,\n  9,\n  10,\n  4,\n  6,\n  8,\n  9,\n  9,\n  10,\n  7,\n  7,\n  9,\n  10,\n  10,\n  11,\n  8,\n  9,\n  10,\n  11,\n  11,\n  11,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12\n];\nTables$1.t8l = [\n  2,\n  4,\n  7,\n  9,\n  9,\n  10,\n  4,\n  4,\n  6,\n  10,\n  10,\n  10,\n  7,\n  6,\n  8,\n  10,\n  10,\n  11,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  9,\n  9,\n  10,\n  11,\n  12,\n  12,\n  10,\n  10,\n  11,\n  11,\n  13,\n  13\n];\nTables$1.t9l = [\n  3,\n  4,\n  6,\n  7,\n  9,\n  10,\n  4,\n  5,\n  6,\n  7,\n  8,\n  10,\n  5,\n  6,\n  7,\n  8,\n  9,\n  10,\n  7,\n  7,\n  8,\n  9,\n  9,\n  10,\n  8,\n  8,\n  9,\n  9,\n  10,\n  11,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11\n];\nTables$1.t10l = [\n  1,\n  4,\n  7,\n  9,\n  10,\n  10,\n  10,\n  11,\n  4,\n  6,\n  8,\n  9,\n  10,\n  11,\n  10,\n  10,\n  7,\n  8,\n  9,\n  10,\n  11,\n  12,\n  11,\n  11,\n  8,\n  9,\n  10,\n  11,\n  12,\n  12,\n  11,\n  12,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  12,\n  13,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  10,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13\n];\nTables$1.t11l = [\n  2,\n  4,\n  6,\n  8,\n  9,\n  10,\n  9,\n  10,\n  4,\n  5,\n  6,\n  8,\n  10,\n  10,\n  9,\n  10,\n  6,\n  7,\n  8,\n  9,\n  10,\n  11,\n  10,\n  10,\n  8,\n  8,\n  9,\n  11,\n  10,\n  12,\n  10,\n  11,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  11,\n  12,\n  9,\n  10,\n  11,\n  12,\n  12,\n  13,\n  12,\n  13,\n  9,\n  9,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  9,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  12\n];\nTables$1.t12l = [\n  4,\n  4,\n  6,\n  8,\n  9,\n  10,\n  10,\n  10,\n  4,\n  5,\n  6,\n  7,\n  9,\n  9,\n  10,\n  10,\n  6,\n  6,\n  7,\n  8,\n  9,\n  10,\n  9,\n  10,\n  7,\n  7,\n  8,\n  8,\n  9,\n  10,\n  10,\n  10,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  10,\n  11,\n  9,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12\n];\nTables$1.t13l = [\n  1,\n  5,\n  7,\n  8,\n  9,\n  10,\n  10,\n  11,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  4,\n  6,\n  8,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  13,\n  14,\n  14,\n  14,\n  7,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  15,\n  15,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  15,\n  15,\n  9,\n  9,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  16,\n  10,\n  10,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  13,\n  15,\n  15,\n  16,\n  16,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  16,\n  11,\n  11,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  18,\n  18,\n  10,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  17,\n  17,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  15,\n  14,\n  15,\n  15,\n  16,\n  16,\n  16,\n  18,\n  17,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  14,\n  15,\n  16,\n  15,\n  16,\n  17,\n  18,\n  19,\n  12,\n  12,\n  12,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  17,\n  17,\n  17,\n  18,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  14,\n  15,\n  16,\n  16,\n  17,\n  17,\n  17,\n  18,\n  18,\n  18,\n  13,\n  13,\n  14,\n  15,\n  15,\n  15,\n  16,\n  16,\n  16,\n  16,\n  16,\n  17,\n  18,\n  17,\n  18,\n  18,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  17,\n  16,\n  16,\n  19,\n  17,\n  17,\n  17,\n  19,\n  18,\n  18,\n  13,\n  14,\n  15,\n  16,\n  16,\n  16,\n  17,\n  16,\n  17,\n  17,\n  18,\n  18,\n  21,\n  20,\n  21,\n  18\n];\nTables$1.t15l = [\n  3,\n  5,\n  6,\n  8,\n  8,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  14,\n  5,\n  5,\n  7,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  6,\n  7,\n  7,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  7,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  9,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  10,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  15,\n  14,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  12,\n  12,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  14,\n  15,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15\n];\nTables$1.t16_5l = [\n  1,\n  5,\n  7,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  11,\n  4,\n  6,\n  8,\n  9,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  14,\n  13,\n  14,\n  11,\n  7,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  12,\n  9,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  13,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  12,\n  10,\n  10,\n  11,\n  11,\n  12,\n  13,\n  13,\n  14,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  13,\n  11,\n  11,\n  11,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  13,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  17,\n  13,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  16,\n  16,\n  13,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  15,\n  16,\n  15,\n  14,\n  12,\n  13,\n  12,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  17,\n  17,\n  16,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  15,\n  16,\n  14,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  16,\n  16,\n  16,\n  16,\n  18,\n  14,\n  15,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  16,\n  16,\n  18,\n  17,\n  17,\n  17,\n  19,\n  17,\n  14,\n  14,\n  15,\n  13,\n  14,\n  16,\n  16,\n  15,\n  16,\n  16,\n  17,\n  18,\n  17,\n  19,\n  17,\n  16,\n  14,\n  11,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  14,\n  14,\n  14,\n  12\n];\nTables$1.t16l = [\n  1,\n  5,\n  7,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  10,\n  4,\n  6,\n  8,\n  9,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  14,\n  13,\n  14,\n  10,\n  7,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  11,\n  9,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  12,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  11,\n  10,\n  10,\n  11,\n  11,\n  12,\n  13,\n  13,\n  14,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  12,\n  11,\n  11,\n  11,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  12,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  17,\n  12,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  16,\n  16,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  15,\n  16,\n  15,\n  13,\n  12,\n  13,\n  12,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  17,\n  17,\n  16,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  15,\n  16,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  16,\n  16,\n  16,\n  16,\n  18,\n  13,\n  15,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  16,\n  16,\n  18,\n  17,\n  17,\n  17,\n  19,\n  17,\n  13,\n  14,\n  15,\n  13,\n  14,\n  16,\n  16,\n  15,\n  16,\n  16,\n  17,\n  18,\n  17,\n  19,\n  17,\n  16,\n  13,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10\n];\nTables$1.t24l = [\n  4,\n  5,\n  7,\n  8,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  10,\n  5,\n  6,\n  7,\n  8,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  10,\n  7,\n  7,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  9,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  9,\n  9,\n  9,\n  9,\n  10,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  9,\n  10,\n  9,\n  10,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  9,\n  10,\n  10,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  9,\n  11,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  10,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  10,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  10,\n  12,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  10,\n  12,\n  12,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  10,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10,\n  13,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  10,\n  10,\n  10,\n  10,\n  6\n];\nTables$1.t32l = [\n  1 + 0,\n  4 + 1,\n  4 + 1,\n  5 + 2,\n  4 + 1,\n  6 + 2,\n  5 + 2,\n  6 + 3,\n  4 + 1,\n  5 + 2,\n  5 + 2,\n  6 + 3,\n  5 + 2,\n  6 + 3,\n  6 + 3,\n  6 + 4\n];\nTables$1.t33l = [\n  4 + 0,\n  4 + 1,\n  4 + 1,\n  4 + 2,\n  4 + 1,\n  4 + 2,\n  4 + 2,\n  4 + 3,\n  4 + 1,\n  4 + 2,\n  4 + 2,\n  4 + 3,\n  4 + 2,\n  4 + 3,\n  4 + 3,\n  4 + 4\n];\nTables$1.ht = [\n  new HuffCodeTab(0, 0, null, null),\n  new HuffCodeTab(2, 0, Tables$1.t1HB, Tables$1.t1l),\n  new HuffCodeTab(3, 0, Tables$1.t2HB, Tables$1.t2l),\n  new HuffCodeTab(3, 0, Tables$1.t3HB, Tables$1.t3l),\n  new HuffCodeTab(0, 0, null, null),\n  new HuffCodeTab(4, 0, Tables$1.t5HB, Tables$1.t5l),\n  new HuffCodeTab(4, 0, Tables$1.t6HB, Tables$1.t6l),\n  new HuffCodeTab(6, 0, Tables$1.t7HB, Tables$1.t7l),\n  new HuffCodeTab(6, 0, Tables$1.t8HB, Tables$1.t8l),\n  new HuffCodeTab(6, 0, Tables$1.t9HB, Tables$1.t9l),\n  new HuffCodeTab(8, 0, Tables$1.t10HB, Tables$1.t10l),\n  new HuffCodeTab(8, 0, Tables$1.t11HB, Tables$1.t11l),\n  new HuffCodeTab(8, 0, Tables$1.t12HB, Tables$1.t12l),\n  new HuffCodeTab(16, 0, Tables$1.t13HB, Tables$1.t13l),\n  new HuffCodeTab(0, 0, null, Tables$1.t16_5l),\n  new HuffCodeTab(16, 0, Tables$1.t15HB, Tables$1.t15l),\n  new HuffCodeTab(1, 1, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(2, 3, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(3, 7, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(4, 15, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(6, 63, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(8, 255, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(10, 1023, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(13, 8191, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(4, 15, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(5, 31, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(6, 63, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(7, 127, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(8, 255, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(9, 511, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(11, 2047, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(13, 8191, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(0, 0, Tables$1.t32HB, Tables$1.t32l),\n  new HuffCodeTab(0, 0, Tables$1.t33HB, Tables$1.t33l)\n];\nTables$1.largetbl = [\n  65540,\n  327685,\n  458759,\n  589832,\n  655369,\n  655370,\n  720906,\n  720907,\n  786443,\n  786444,\n  786444,\n  851980,\n  851980,\n  851980,\n  917517,\n  655370,\n  262149,\n  393222,\n  524295,\n  589832,\n  655369,\n  720906,\n  720906,\n  720907,\n  786443,\n  786443,\n  786444,\n  851980,\n  917516,\n  851980,\n  917516,\n  655370,\n  458759,\n  524295,\n  589832,\n  655369,\n  720905,\n  720906,\n  786442,\n  786443,\n  851979,\n  786443,\n  851979,\n  851980,\n  851980,\n  917516,\n  917517,\n  720905,\n  589832,\n  589832,\n  655369,\n  720905,\n  720906,\n  786442,\n  786442,\n  786443,\n  851979,\n  851979,\n  917515,\n  917516,\n  917516,\n  983052,\n  983052,\n  786441,\n  655369,\n  655369,\n  720905,\n  720906,\n  786442,\n  786442,\n  851978,\n  851979,\n  851979,\n  917515,\n  917516,\n  917516,\n  983052,\n  983052,\n  983053,\n  720905,\n  655370,\n  655369,\n  720906,\n  720906,\n  786442,\n  851978,\n  851979,\n  917515,\n  851979,\n  917515,\n  917516,\n  983052,\n  983052,\n  983052,\n  1048588,\n  786441,\n  720906,\n  720906,\n  720906,\n  786442,\n  851978,\n  851979,\n  851979,\n  851979,\n  917515,\n  917516,\n  917516,\n  917516,\n  983052,\n  983052,\n  1048589,\n  786441,\n  720907,\n  720906,\n  786442,\n  786442,\n  851979,\n  851979,\n  851979,\n  917515,\n  917516,\n  983052,\n  983052,\n  983052,\n  983052,\n  1114125,\n  1114125,\n  786442,\n  720907,\n  786443,\n  786443,\n  851979,\n  851979,\n  851979,\n  917515,\n  917515,\n  983051,\n  983052,\n  983052,\n  983052,\n  1048588,\n  1048589,\n  1048589,\n  786442,\n  786443,\n  786443,\n  786443,\n  851979,\n  851979,\n  917515,\n  917515,\n  983052,\n  983052,\n  983052,\n  983052,\n  1048588,\n  983053,\n  1048589,\n  983053,\n  851978,\n  786444,\n  851979,\n  786443,\n  851979,\n  917515,\n  917516,\n  917516,\n  917516,\n  983052,\n  1048588,\n  1048588,\n  1048589,\n  1114125,\n  1114125,\n  1048589,\n  786442,\n  851980,\n  851980,\n  851979,\n  851979,\n  917515,\n  917516,\n  983052,\n  1048588,\n  1048588,\n  1048588,\n  1048588,\n  1048589,\n  1048589,\n  983053,\n  1048589,\n  851978,\n  851980,\n  917516,\n  917516,\n  917516,\n  917516,\n  983052,\n  983052,\n  983052,\n  983052,\n  1114124,\n  1048589,\n  1048589,\n  1048589,\n  1048589,\n  1179661,\n  851978,\n  983052,\n  917516,\n  917516,\n  917516,\n  983052,\n  983052,\n  1048588,\n  1048588,\n  1048589,\n  1179661,\n  1114125,\n  1114125,\n  1114125,\n  1245197,\n  1114125,\n  851978,\n  917517,\n  983052,\n  851980,\n  917516,\n  1048588,\n  1048588,\n  983052,\n  1048589,\n  1048589,\n  1114125,\n  1179661,\n  1114125,\n  1245197,\n  1114125,\n  1048589,\n  851978,\n  655369,\n  655369,\n  655369,\n  720905,\n  720905,\n  786441,\n  786441,\n  786441,\n  851977,\n  851977,\n  851977,\n  851978,\n  851978,\n  851978,\n  851978,\n  655366\n];\nTables$1.table23 = [\n  65538,\n  262147,\n  458759,\n  262148,\n  327684,\n  458759,\n  393222,\n  458759,\n  524296\n];\nTables$1.table56 = [\n  65539,\n  262148,\n  458758,\n  524296,\n  262148,\n  327684,\n  524294,\n  589831,\n  458757,\n  524294,\n  589831,\n  655368,\n  524295,\n  524295,\n  589832,\n  655369\n];\nTables$1.bitrate_table = [\n  [\n    0,\n    8,\n    16,\n    24,\n    32,\n    40,\n    48,\n    56,\n    64,\n    80,\n    96,\n    112,\n    128,\n    144,\n    160,\n    -1\n  ],\n  [\n    0,\n    32,\n    40,\n    48,\n    56,\n    64,\n    80,\n    96,\n    112,\n    128,\n    160,\n    192,\n    224,\n    256,\n    320,\n    -1\n  ],\n  [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1]\n];\nTables$1.samplerate_table = [\n  [22050, 24e3, 16e3, -1],\n  [44100, 48e3, 32e3, -1],\n  [11025, 12e3, 8e3, -1]\n];\nTables$1.scfsi_band = [0, 6, 11, 16, 21];\nvar VbrMode$4 = common.VbrMode;\nvar Float = common.Float;\nvar Util$1 = common.Util;\nvar new_float$3 = common.new_float;\nvar new_int$3 = common.new_int;\nvar assert$7 = common.assert;\nQuantizePVT.Q_MAX = 256 + 1;\nQuantizePVT.Q_MAX2 = 116;\nQuantizePVT.LARGE_BITS = 1e5;\nQuantizePVT.IXMAX_VAL = 8206;\nfunction QuantizePVT() {\n  var tak = null;\n  var rv = null;\n  var psy = null;\n  this.setModules = function(_tk, _rv, _psy) {\n    tak = _tk;\n    rv = _rv;\n    psy = _psy;\n  };\n  function POW20(x) {\n    return pow20[x + QuantizePVT.Q_MAX2];\n  }\n  this.IPOW20 = function(x) {\n    return ipow20[x];\n  };\n  var DBL_EPSILON = 2220446049250313e-31;\n  var IXMAX_VAL = QuantizePVT.IXMAX_VAL;\n  var PRECALC_SIZE = IXMAX_VAL + 2;\n  var Q_MAX = QuantizePVT.Q_MAX;\n  var Q_MAX2 = QuantizePVT.Q_MAX2;\n  var NSATHSCALE = 100;\n  this.nr_of_sfb_block = [\n    [\n      [6, 5, 5, 5],\n      [9, 9, 9, 9],\n      [6, 9, 9, 9]\n    ],\n    [\n      [6, 5, 7, 3],\n      [9, 9, 12, 6],\n      [6, 9, 12, 6]\n    ],\n    [\n      [11, 10, 0, 0],\n      [18, 18, 0, 0],\n      [15, 18, 0, 0]\n    ],\n    [\n      [7, 7, 7, 0],\n      [12, 12, 12, 0],\n      [6, 15, 12, 0]\n    ],\n    [\n      [6, 6, 6, 3],\n      [12, 9, 9, 6],\n      [6, 12, 9, 6]\n    ],\n    [\n      [8, 8, 5, 0],\n      [15, 12, 9, 0],\n      [6, 18, 9, 0]\n    ]\n  ];\n  var pretab = [\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    1,\n    1,\n    1,\n    1,\n    2,\n    2,\n    3,\n    3,\n    3,\n    2,\n    0\n  ];\n  this.pretab = pretab;\n  this.sfBandIndex = [\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        114,\n        136,\n        162,\n        194,\n        232,\n        278,\n        332,\n        394,\n        464,\n        540,\n        576\n      ],\n      [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        4,\n        8,\n        12,\n        16,\n        20,\n        24,\n        30,\n        36,\n        44,\n        52,\n        62,\n        74,\n        90,\n        110,\n        134,\n        162,\n        196,\n        238,\n        288,\n        342,\n        418,\n        576\n      ],\n      [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        4,\n        8,\n        12,\n        16,\n        20,\n        24,\n        30,\n        36,\n        42,\n        50,\n        60,\n        72,\n        88,\n        106,\n        128,\n        156,\n        190,\n        230,\n        276,\n        330,\n        384,\n        576\n      ],\n      [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        4,\n        8,\n        12,\n        16,\n        20,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        82,\n        102,\n        126,\n        156,\n        194,\n        240,\n        296,\n        364,\n        448,\n        550,\n        576\n      ],\n      [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [\n        0 / 3,\n        12 / 3,\n        24 / 3,\n        36 / 3,\n        54 / 3,\n        78 / 3,\n        108 / 3,\n        144 / 3,\n        186 / 3,\n        240 / 3,\n        312 / 3,\n        402 / 3,\n        522 / 3,\n        576 / 3\n      ],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [\n        0 / 3,\n        12 / 3,\n        24 / 3,\n        36 / 3,\n        54 / 3,\n        78 / 3,\n        108 / 3,\n        144 / 3,\n        186 / 3,\n        240 / 3,\n        312 / 3,\n        402 / 3,\n        522 / 3,\n        576 / 3\n      ],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        12,\n        24,\n        36,\n        48,\n        60,\n        72,\n        88,\n        108,\n        132,\n        160,\n        192,\n        232,\n        280,\n        336,\n        400,\n        476,\n        566,\n        568,\n        570,\n        572,\n        574,\n        576\n      ],\n      [\n        0 / 3,\n        24 / 3,\n        48 / 3,\n        72 / 3,\n        108 / 3,\n        156 / 3,\n        216 / 3,\n        288 / 3,\n        372 / 3,\n        480 / 3,\n        486 / 3,\n        492 / 3,\n        498 / 3,\n        576 / 3\n      ],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    )\n  ];\n  var pow20 = new_float$3(Q_MAX + Q_MAX2 + 1);\n  var ipow20 = new_float$3(Q_MAX);\n  var pow43 = new_float$3(PRECALC_SIZE);\n  var adj43 = new_float$3(PRECALC_SIZE);\n  this.adj43 = adj43;\n  function ATHmdct(gfp, f) {\n    var ath = psy.ATHformula(f, gfp);\n    ath -= NSATHSCALE;\n    ath = Math.pow(10, ath / 10 + gfp.ATHlower);\n    return ath;\n  }\n  function compute_ath(gfp) {\n    var ATH_l = gfp.internal_flags.ATH.l;\n    var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n    var ATH_s = gfp.internal_flags.ATH.s;\n    var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n    var gfc = gfp.internal_flags;\n    var samp_freq = gfp.out_samplerate;\n    for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n      var start = gfc.scalefac_band.l[sfb];\n      var end = gfc.scalefac_band.l[sfb + 1];\n      ATH_l[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 576);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n      }\n    }\n    for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n      var start = gfc.scalefac_band.psfb21[sfb];\n      var end = gfc.scalefac_band.psfb21[sfb + 1];\n      ATH_psfb21[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 576);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n      }\n    }\n    for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n      var start = gfc.scalefac_band.s[sfb];\n      var end = gfc.scalefac_band.s[sfb + 1];\n      ATH_s[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 192);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n      }\n      ATH_s[sfb] *= gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb];\n    }\n    for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n      var start = gfc.scalefac_band.psfb12[sfb];\n      var end = gfc.scalefac_band.psfb12[sfb + 1];\n      ATH_psfb12[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 192);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n      }\n      ATH_psfb12[sfb] *= gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12];\n    }\n    if (gfp.noATH) {\n      for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n        ATH_l[sfb] = 1e-20;\n      }\n      for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n        ATH_psfb21[sfb] = 1e-20;\n      }\n      for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n        ATH_s[sfb] = 1e-20;\n      }\n      for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n        ATH_psfb12[sfb] = 1e-20;\n      }\n    }\n    gfc.ATH.floor = 10 * Math.log10(ATHmdct(gfp, -1));\n  }\n  this.iteration_init = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var l3_side = gfc.l3_side;\n    var i;\n    if (gfc.iteration_init_init == 0) {\n      gfc.iteration_init_init = 1;\n      l3_side.main_data_begin = 0;\n      compute_ath(gfp);\n      pow43[0] = 0;\n      for (i = 1; i < PRECALC_SIZE; i++)\n        pow43[i] = Math.pow(i, 4 / 3);\n      for (i = 0; i < PRECALC_SIZE - 1; i++) {\n        adj43[i] = i + 1 - Math.pow(0.5 * (pow43[i] + pow43[i + 1]), 0.75);\n      }\n      adj43[i] = 0.5;\n      for (i = 0; i < Q_MAX; i++)\n        ipow20[i] = Math.pow(2, (i - 210) * -0.1875);\n      for (i = 0; i <= Q_MAX + Q_MAX2; i++) {\n        pow20[i] = Math.pow(2, (i - 210 - Q_MAX2) * 0.25);\n      }\n      tak.huffman_init(gfc);\n      {\n        var bass, alto, treble, sfb21;\n        i = gfp.exp_nspsytune >> 2 & 63;\n        if (i >= 32)\n          i -= 64;\n        bass = Math.pow(10, i / 4 / 10);\n        i = gfp.exp_nspsytune >> 8 & 63;\n        if (i >= 32)\n          i -= 64;\n        alto = Math.pow(10, i / 4 / 10);\n        i = gfp.exp_nspsytune >> 14 & 63;\n        if (i >= 32)\n          i -= 64;\n        treble = Math.pow(10, i / 4 / 10);\n        i = gfp.exp_nspsytune >> 20 & 63;\n        if (i >= 32)\n          i -= 64;\n        sfb21 = treble * Math.pow(10, i / 4 / 10);\n        for (i = 0; i < Encoder.SBMAX_l; i++) {\n          var f;\n          if (i <= 6)\n            f = bass;\n          else if (i <= 13)\n            f = alto;\n          else if (i <= 20)\n            f = treble;\n          else\n            f = sfb21;\n          gfc.nsPsy.longfact[i] = f;\n        }\n        for (i = 0; i < Encoder.SBMAX_s; i++) {\n          var f;\n          if (i <= 5)\n            f = bass;\n          else if (i <= 10)\n            f = alto;\n          else if (i <= 11)\n            f = treble;\n          else\n            f = sfb21;\n          gfc.nsPsy.shortfact[i] = f;\n        }\n      }\n    }\n  };\n  this.on_pe = function(gfp, pe, targ_bits, mean_bits, gr, cbr) {\n    var gfc = gfp.internal_flags;\n    var tbits = 0;\n    var bits;\n    var add_bits = new_int$3(2);\n    var ch;\n    var mb = new MeanBits$1(tbits);\n    var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n    tbits = mb.bits;\n    var max_bits = tbits + extra_bits;\n    if (max_bits > LameInternalFlags$1.MAX_BITS_PER_GRANULE) {\n      max_bits = LameInternalFlags$1.MAX_BITS_PER_GRANULE;\n    }\n    for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n      targ_bits[ch] = Math.min(\n        LameInternalFlags$1.MAX_BITS_PER_CHANNEL,\n        tbits / gfc.channels_out\n      );\n      add_bits[ch] = 0 | targ_bits[ch] * pe[gr][ch] / 700 - targ_bits[ch];\n      if (add_bits[ch] > mean_bits * 3 / 4)\n        add_bits[ch] = mean_bits * 3 / 4;\n      if (add_bits[ch] < 0)\n        add_bits[ch] = 0;\n      if (add_bits[ch] + targ_bits[ch] > LameInternalFlags$1.MAX_BITS_PER_CHANNEL) {\n        add_bits[ch] = Math.max(\n          0,\n          LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[ch]\n        );\n      }\n      bits += add_bits[ch];\n    }\n    if (bits > extra_bits) {\n      for (ch = 0; ch < gfc.channels_out; ++ch) {\n        add_bits[ch] = extra_bits * add_bits[ch] / bits;\n      }\n    }\n    for (ch = 0; ch < gfc.channels_out; ++ch) {\n      targ_bits[ch] += add_bits[ch];\n      extra_bits -= add_bits[ch];\n    }\n    for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n      bits += targ_bits[ch];\n    }\n    if (bits > LameInternalFlags$1.MAX_BITS_PER_GRANULE) {\n      var sum = 0;\n      for (ch = 0; ch < gfc.channels_out; ++ch) {\n        targ_bits[ch] *= LameInternalFlags$1.MAX_BITS_PER_GRANULE;\n        targ_bits[ch] /= bits;\n        sum += targ_bits[ch];\n      }\n    }\n    return max_bits;\n  };\n  this.reduce_side = function(targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n    assert$7(\n      targ_bits[0] + targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_GRANULE\n    );\n    var fac = 0.33 * (0.5 - ms_ener_ratio) / 0.5;\n    if (fac < 0)\n      fac = 0;\n    if (fac > 0.5)\n      fac = 0.5;\n    var move_bits = 0 | fac * 0.5 * (targ_bits[0] + targ_bits[1]);\n    if (move_bits > LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n      move_bits = LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[0];\n    }\n    if (move_bits < 0)\n      move_bits = 0;\n    if (targ_bits[1] >= 125) {\n      if (targ_bits[1] - move_bits > 125) {\n        if (targ_bits[0] < mean_bits)\n          targ_bits[0] += move_bits;\n        targ_bits[1] -= move_bits;\n      } else {\n        targ_bits[0] += targ_bits[1] - 125;\n        targ_bits[1] = 125;\n      }\n    }\n    move_bits = targ_bits[0] + targ_bits[1];\n    if (move_bits > max_bits) {\n      targ_bits[0] = max_bits * targ_bits[0] / move_bits;\n      targ_bits[1] = max_bits * targ_bits[1] / move_bits;\n    }\n    assert$7(targ_bits[0] <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL);\n    assert$7(targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL);\n    assert$7(\n      targ_bits[0] + targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_GRANULE\n    );\n  };\n  this.athAdjust = function(a, x, athFloor) {\n    var o = 90.30873362;\n    var p2 = 94.82444863;\n    var u = Util$1.FAST_LOG10_X(x, 10);\n    var v = a * a;\n    var w = 0;\n    u -= athFloor;\n    if (v > 1e-20)\n      w = 1 + Util$1.FAST_LOG10_X(v, 10 / o);\n    if (w < 0)\n      w = 0;\n    u *= w;\n    u += athFloor + o - p2;\n    return Math.pow(10, 0.1 * u);\n  };\n  this.calc_xmin = function(gfp, ratio, cod_info, pxmin) {\n    var pxminPos = 0;\n    var gfc = gfp.internal_flags;\n    var gsfb;\n    var j = 0;\n    var ath_over = 0;\n    var ATH2 = gfc.ATH;\n    var xr = cod_info.xr;\n    var enable_athaa_fix = gfp.VBR == VbrMode$4.vbr_mtrh ? 1 : 0;\n    var masking_lower = gfc.masking_lower;\n    if (gfp.VBR == VbrMode$4.vbr_mtrh || gfp.VBR == VbrMode$4.vbr_mt) {\n      masking_lower = 1;\n    }\n    for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n      var en0, xmin;\n      var rh1, rh2;\n      var width, l;\n      if (gfp.VBR == VbrMode$4.vbr_rh || gfp.VBR == VbrMode$4.vbr_mtrh) {\n        xmin = athAdjust(ATH2.adjust, ATH2.l[gsfb], ATH2.floor);\n      } else\n        xmin = ATH2.adjust * ATH2.l[gsfb];\n      width = cod_info.width[gsfb];\n      rh1 = xmin / width;\n      rh2 = DBL_EPSILON;\n      l = width >> 1;\n      en0 = 0;\n      do {\n        var xa, xb;\n        xa = xr[j] * xr[j];\n        en0 += xa;\n        rh2 += xa < rh1 ? xa : rh1;\n        j++;\n        xb = xr[j] * xr[j];\n        en0 += xb;\n        rh2 += xb < rh1 ? xb : rh1;\n        j++;\n      } while (--l > 0);\n      if (en0 > xmin)\n        ath_over++;\n      if (gsfb == Encoder.SBPSY_l) {\n        var x = xmin * gfc.nsPsy.longfact[gsfb];\n        if (rh2 < x) {\n          rh2 = x;\n        }\n      }\n      if (enable_athaa_fix != 0) {\n        xmin = rh2;\n      }\n      if (!gfp.ATHonly) {\n        var e = ratio.en.l[gsfb];\n        if (e > 0) {\n          var x;\n          x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n          if (enable_athaa_fix != 0)\n            x *= gfc.nsPsy.longfact[gsfb];\n          if (xmin < x)\n            xmin = x;\n        }\n      }\n      if (enable_athaa_fix != 0)\n        pxmin[pxminPos++] = xmin;\n      else\n        pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n    }\n    var max_nonzero = 575;\n    if (cod_info.block_type != Encoder.SHORT_TYPE) {\n      var k = 576;\n      while (k-- != 0 && BitStream$1.EQ(xr[k], 0)) {\n        max_nonzero = k;\n      }\n    }\n    cod_info.max_nonzero_coeff = max_nonzero;\n    for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n      var width, b;\n      var tmpATH;\n      if (gfp.VBR == VbrMode$4.vbr_rh || gfp.VBR == VbrMode$4.vbr_mtrh) {\n        tmpATH = athAdjust(ATH2.adjust, ATH2.s[sfb], ATH2.floor);\n      } else\n        tmpATH = ATH2.adjust * ATH2.s[sfb];\n      width = cod_info.width[gsfb];\n      for (b = 0; b < 3; b++) {\n        var en0 = 0;\n        var xmin;\n        var rh1, rh2;\n        var l = width >> 1;\n        rh1 = tmpATH / width;\n        rh2 = DBL_EPSILON;\n        do {\n          var xa, xb;\n          xa = xr[j] * xr[j];\n          en0 += xa;\n          rh2 += xa < rh1 ? xa : rh1;\n          j++;\n          xb = xr[j] * xr[j];\n          en0 += xb;\n          rh2 += xb < rh1 ? xb : rh1;\n          j++;\n        } while (--l > 0);\n        if (en0 > tmpATH)\n          ath_over++;\n        if (sfb == Encoder.SBPSY_s) {\n          var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n          if (rh2 < x) {\n            rh2 = x;\n          }\n        }\n        if (enable_athaa_fix != 0)\n          xmin = rh2;\n        else\n          xmin = tmpATH;\n        if (!gfp.ATHonly && !gfp.ATHshort) {\n          var e = ratio.en.s[sfb][b];\n          if (e > 0) {\n            var x;\n            x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n            if (enable_athaa_fix != 0)\n              x *= gfc.nsPsy.shortfact[sfb];\n            if (xmin < x)\n              xmin = x;\n          }\n        }\n        if (enable_athaa_fix != 0)\n          pxmin[pxminPos++] = xmin;\n        else\n          pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n      }\n      if (gfp.useTemporal) {\n        if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1]) {\n          pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1]) * gfc.decay;\n        }\n        if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2]) {\n          pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2]) * gfc.decay;\n        }\n      }\n    }\n    return ath_over;\n  };\n  function StartLine(j) {\n    this.s = j;\n  }\n  this.calc_noise_core = function(cod_info, startline, l, step) {\n    var noise = 0;\n    var j = startline.s;\n    var ix = cod_info.l3_enc;\n    if (j > cod_info.count1) {\n      while (l-- != 0) {\n        var temp;\n        temp = cod_info.xr[j];\n        j++;\n        noise += temp * temp;\n        temp = cod_info.xr[j];\n        j++;\n        noise += temp * temp;\n      }\n    } else if (j > cod_info.big_values) {\n      var ix01 = new_float$3(2);\n      ix01[0] = 0;\n      ix01[1] = step;\n      while (l-- != 0) {\n        var temp;\n        temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n        j++;\n        noise += temp * temp;\n        temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n        j++;\n        noise += temp * temp;\n      }\n    } else {\n      while (l-- != 0) {\n        var temp;\n        temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n        j++;\n        noise += temp * temp;\n        temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n        j++;\n        noise += temp * temp;\n      }\n    }\n    startline.s = j;\n    return noise;\n  };\n  this.calc_noise = function(cod_info, l3_xmin, distort, res, prev_noise) {\n    var distortPos = 0;\n    var l3_xminPos = 0;\n    var sfb;\n    var l;\n    var over = 0;\n    var over_noise_db = 0;\n    var tot_noise_db = 0;\n    var max_noise = -20;\n    var j = 0;\n    var scalefac = cod_info.scalefac;\n    var scalefacPos = 0;\n    res.over_SSD = 0;\n    for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n      var s = cod_info.global_gain - (scalefac[scalefacPos++] + (cod_info.preflag != 0 ? pretab[sfb] : 0) << cod_info.scalefac_scale + 1) - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n      var noise = 0;\n      if (prev_noise != null && prev_noise.step[sfb] == s) {\n        noise = prev_noise.noise[sfb];\n        j += cod_info.width[sfb];\n        distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n        noise = prev_noise.noise_log[sfb];\n      } else {\n        var step = POW20(s);\n        l = cod_info.width[sfb] >> 1;\n        if (j + cod_info.width[sfb] > cod_info.max_nonzero_coeff) {\n          var usefullsize;\n          usefullsize = cod_info.max_nonzero_coeff - j + 1;\n          if (usefullsize > 0)\n            l = usefullsize >> 1;\n          else\n            l = 0;\n        }\n        var sl = new StartLine(j);\n        noise = this.calc_noise_core(cod_info, sl, l, step);\n        j = sl.s;\n        if (prev_noise != null) {\n          prev_noise.step[sfb] = s;\n          prev_noise.noise[sfb] = noise;\n        }\n        noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n        noise = Util$1.FAST_LOG10(Math.max(noise, 1e-20));\n        if (prev_noise != null) {\n          prev_noise.noise_log[sfb] = noise;\n        }\n      }\n      if (prev_noise != null) {\n        prev_noise.global_gain = cod_info.global_gain;\n      }\n      tot_noise_db += noise;\n      if (noise > 0) {\n        var tmp;\n        tmp = Math.max(0 | noise * 10 + 0.5, 1);\n        res.over_SSD += tmp * tmp;\n        over++;\n        over_noise_db += noise;\n      }\n      max_noise = Math.max(max_noise, noise);\n    }\n    res.over_count = over;\n    res.tot_noise = tot_noise_db;\n    res.over_noise = over_noise_db;\n    res.max_noise = max_noise;\n    return over;\n  };\n  this.set_pinfo = function(gfp, cod_info, ratio, gr, ch) {\n    var gfc = gfp.internal_flags;\n    var sfb, sfb2;\n    var l;\n    var en0, en1;\n    var ifqstep = cod_info.scalefac_scale == 0 ? 0.5 : 1;\n    var scalefac = cod_info.scalefac;\n    var l3_xmin = new_float$3(L3Side.SFBMAX);\n    var xfsf = new_float$3(L3Side.SFBMAX);\n    var noise = new CalcNoiseResult();\n    calc_xmin(gfp, ratio, cod_info, l3_xmin);\n    calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n    var j = 0;\n    sfb2 = cod_info.sfb_lmax;\n    if (cod_info.block_type != Encoder.SHORT_TYPE && cod_info.mixed_block_flag == 0) {\n      sfb2 = 22;\n    }\n    for (sfb = 0; sfb < sfb2; sfb++) {\n      var start = gfc.scalefac_band.l[sfb];\n      var end = gfc.scalefac_band.l[sfb + 1];\n      var bw = end - start;\n      for (en0 = 0; j < end; j++)\n        en0 += cod_info.xr[j] * cod_info.xr[j];\n      en0 /= bw;\n      en1 = 1e15;\n      gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n      gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n      if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n        en0 = en0 / ratio.en.l[sfb];\n      else\n        en0 = 0;\n      gfc.pinfo.thr[gr][ch][sfb] = en1 * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n      gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n      if (cod_info.preflag != 0 && sfb >= 11) {\n        gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n      }\n      if (sfb < Encoder.SBPSY_l) {\n        assert$7(scalefac[sfb] >= 0);\n        gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n      }\n    }\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      sfb2 = sfb;\n      for (sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n        var start = gfc.scalefac_band.s[sfb];\n        var end = gfc.scalefac_band.s[sfb + 1];\n        var bw = end - start;\n        for (var i = 0; i < 3; i++) {\n          for (en0 = 0, l = start; l < end; l++) {\n            en0 += cod_info.xr[j] * cod_info.xr[j];\n            j++;\n          }\n          en0 = Math.max(en0 / bw, 1e-20);\n          en1 = 1e15;\n          gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n          gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2] * xfsf[sfb2] / bw;\n          if (ratio.en.s[sfb][i] > 0)\n            en0 = en0 / ratio.en.s[sfb][i];\n          else\n            en0 = 0;\n          if (gfp.ATHonly || gfp.ATHshort)\n            en0 = 0;\n          gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1 * Math.max(en0 * ratio.thm.s[sfb][i], gfc.ATH.s[sfb]);\n          gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2 * cod_info.subblock_gain[i];\n          if (sfb < Encoder.SBPSY_s) {\n            gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep * scalefac[sfb2];\n          }\n          sfb2++;\n        }\n      }\n    }\n    gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n    gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length + cod_info.part2_length;\n    gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n    gfc.pinfo.over[gr][ch] = noise.over_count;\n    gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10;\n    gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10;\n    gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10;\n    gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n  };\n}\nvar System$4 = common.System;\nvar Arrays$3 = common.Arrays;\nvar new_int$2 = common.new_int;\nvar assert$6 = common.assert;\nfunction Takehiro() {\n  var qupvt = null;\n  this.qupvt = null;\n  this.setModules = function(_qupvt) {\n    this.qupvt = _qupvt;\n    qupvt = _qupvt;\n  };\n  function Bits(b) {\n    this.bits = 0 | b;\n  }\n  var subdv_table = [\n    [0, 0],\n    [0, 0],\n    [0, 0],\n    [0, 0],\n    [0, 0],\n    [0, 1],\n    [1, 1],\n    [1, 1],\n    [1, 2],\n    [2, 2],\n    [2, 3],\n    [2, 3],\n    [3, 4],\n    [3, 4],\n    [3, 4],\n    [4, 5],\n    [4, 5],\n    [4, 6],\n    [5, 6],\n    [5, 6],\n    [5, 7],\n    [6, 7],\n    [6, 7]\n  ];\n  function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n    var compareval0 = (1 - 0.4054) / istep;\n    l = l >> 1;\n    while (l-- != 0) {\n      ix[ixPos++] = compareval0 > xr[xrPos++] ? 0 : 1;\n      ix[ixPos++] = compareval0 > xr[xrPos++] ? 0 : 1;\n    }\n  }\n  function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n    l = l >> 1;\n    var remaining = l % 2;\n    l = l >> 1;\n    while (l-- != 0) {\n      var x0, x1, x2, x3;\n      var rx0, rx1, rx2, rx3;\n      x0 = xr[xrPos++] * istep;\n      x1 = xr[xrPos++] * istep;\n      rx0 = 0 | x0;\n      x2 = xr[xrPos++] * istep;\n      rx1 = 0 | x1;\n      x3 = xr[xrPos++] * istep;\n      rx2 = 0 | x2;\n      x0 += qupvt.adj43[rx0];\n      rx3 = 0 | x3;\n      x1 += qupvt.adj43[rx1];\n      ix[ixPos++] = 0 | x0;\n      x2 += qupvt.adj43[rx2];\n      ix[ixPos++] = 0 | x1;\n      x3 += qupvt.adj43[rx3];\n      ix[ixPos++] = 0 | x2;\n      ix[ixPos++] = 0 | x3;\n    }\n    if (remaining != 0) {\n      var x0, x1;\n      var rx0, rx1;\n      x0 = xr[xrPos++] * istep;\n      x1 = xr[xrPos++] * istep;\n      rx0 = 0 | x0;\n      rx1 = 0 | x1;\n      x0 += qupvt.adj43[rx0];\n      x1 += qupvt.adj43[rx1];\n      ix[ixPos++] = 0 | x0;\n      ix[ixPos++] = 0 | x1;\n    }\n  }\n  function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n    var sfb;\n    var sfbmax;\n    var j = 0;\n    var prev_data_use;\n    var accumulate = 0;\n    var accumulate01 = 0;\n    var xpPos = 0;\n    var iData = pi;\n    var iDataPos = 0;\n    var acc_iData = iData;\n    var acc_iDataPos = 0;\n    var acc_xp = xp;\n    var acc_xpPos = 0;\n    prev_data_use = prevNoise != null && codInfo.global_gain == prevNoise.global_gain;\n    if (codInfo.block_type == Encoder.SHORT_TYPE)\n      sfbmax = 38;\n    else\n      sfbmax = 21;\n    for (sfb = 0; sfb <= sfbmax; sfb++) {\n      var step = -1;\n      if (prev_data_use || codInfo.block_type == Encoder.NORM_TYPE) {\n        step = codInfo.global_gain - (codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb] : 0) << codInfo.scalefac_scale + 1) - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n      }\n      assert$6(codInfo.width[sfb] >= 0);\n      if (prev_data_use && prevNoise.step[sfb] == step) {\n        if (accumulate != 0) {\n          quantize_lines_xrpow(\n            accumulate,\n            istep,\n            acc_xp,\n            acc_xpPos,\n            acc_iData,\n            acc_iDataPos\n          );\n          accumulate = 0;\n        }\n        if (accumulate01 != 0) {\n          quantize_lines_xrpow_01(\n            accumulate01,\n            istep,\n            acc_xp,\n            acc_xpPos,\n            acc_iData,\n            acc_iDataPos\n          );\n          accumulate01 = 0;\n        }\n      } else {\n        var l = codInfo.width[sfb];\n        if (j + codInfo.width[sfb] > codInfo.max_nonzero_coeff) {\n          var usefullsize;\n          usefullsize = codInfo.max_nonzero_coeff - j + 1;\n          Arrays$3.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n          l = usefullsize;\n          if (l < 0) {\n            l = 0;\n          }\n          sfb = sfbmax + 1;\n        }\n        if (accumulate == 0 && accumulate01 == 0) {\n          acc_iData = iData;\n          acc_iDataPos = iDataPos;\n          acc_xp = xp;\n          acc_xpPos = xpPos;\n        }\n        if (prevNoise != null && prevNoise.sfb_count1 > 0 && sfb >= prevNoise.sfb_count1 && prevNoise.step[sfb] > 0 && step >= prevNoise.step[sfb]) {\n          if (accumulate != 0) {\n            quantize_lines_xrpow(\n              accumulate,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate = 0;\n            acc_iData = iData;\n            acc_iDataPos = iDataPos;\n            acc_xp = xp;\n            acc_xpPos = xpPos;\n          }\n          accumulate01 += l;\n        } else {\n          if (accumulate01 != 0) {\n            quantize_lines_xrpow_01(\n              accumulate01,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate01 = 0;\n            acc_iData = iData;\n            acc_iDataPos = iDataPos;\n            acc_xp = xp;\n            acc_xpPos = xpPos;\n          }\n          accumulate += l;\n        }\n        if (l <= 0) {\n          if (accumulate01 != 0) {\n            quantize_lines_xrpow_01(\n              accumulate01,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate01 = 0;\n          }\n          if (accumulate != 0) {\n            quantize_lines_xrpow(\n              accumulate,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate = 0;\n          }\n          break;\n        }\n      }\n      if (sfb <= sfbmax) {\n        iDataPos += codInfo.width[sfb];\n        xpPos += codInfo.width[sfb];\n        j += codInfo.width[sfb];\n      }\n    }\n    if (accumulate != 0) {\n      quantize_lines_xrpow(\n        accumulate,\n        istep,\n        acc_xp,\n        acc_xpPos,\n        acc_iData,\n        acc_iDataPos\n      );\n      accumulate = 0;\n    }\n    if (accumulate01 != 0) {\n      quantize_lines_xrpow_01(\n        accumulate01,\n        istep,\n        acc_xp,\n        acc_xpPos,\n        acc_iData,\n        acc_iDataPos\n      );\n      accumulate01 = 0;\n    }\n  }\n  function ix_max(ix, ixPos, endPos) {\n    var max1 = 0;\n    var max2 = 0;\n    do {\n      var x1 = ix[ixPos++];\n      var x2 = ix[ixPos++];\n      if (max1 < x1)\n        max1 = x1;\n      if (max2 < x2)\n        max2 = x2;\n    } while (ixPos < endPos);\n    if (max1 < max2)\n      max1 = max2;\n    return max1;\n  }\n  function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n    var linbits = Tables$1.ht[t1].xlen * 65536 + Tables$1.ht[t2].xlen;\n    var sum = 0;\n    var sum2;\n    do {\n      var x = ix[ixPos++];\n      var y = ix[ixPos++];\n      if (x != 0) {\n        if (x > 14) {\n          x = 15;\n          sum += linbits;\n        }\n        x *= 16;\n      }\n      if (y != 0) {\n        if (y > 14) {\n          y = 15;\n          sum += linbits;\n        }\n        x += y;\n      }\n      sum += Tables$1.largetbl[x];\n    } while (ixPos < end);\n    sum2 = sum & 65535;\n    sum >>= 16;\n    if (sum > sum2) {\n      sum = sum2;\n      t1 = t2;\n    }\n    s.bits += sum;\n    return t1;\n  }\n  function count_bit_noESC(ix, ixPos, end, s) {\n    var sum1 = 0;\n    var hlen1 = Tables$1.ht[1].hlen;\n    do {\n      var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n      ixPos += 2;\n      sum1 += hlen1[x];\n    } while (ixPos < end);\n    s.bits += sum1;\n    return 1;\n  }\n  function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n    var sum = 0;\n    var sum2;\n    var xlen = Tables$1.ht[t1].xlen;\n    var hlen;\n    if (t1 == 2)\n      hlen = Tables$1.table23;\n    else\n      hlen = Tables$1.table56;\n    do {\n      var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n      ixPos += 2;\n      sum += hlen[x];\n    } while (ixPos < end);\n    sum2 = sum & 65535;\n    sum >>= 16;\n    if (sum > sum2) {\n      sum = sum2;\n      t1++;\n    }\n    s.bits += sum;\n    return t1;\n  }\n  function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n    var sum1 = 0;\n    var sum2 = 0;\n    var sum3 = 0;\n    var xlen = Tables$1.ht[t1].xlen;\n    var hlen1 = Tables$1.ht[t1].hlen;\n    var hlen2 = Tables$1.ht[t1 + 1].hlen;\n    var hlen3 = Tables$1.ht[t1 + 2].hlen;\n    do {\n      var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n      ixPos += 2;\n      sum1 += hlen1[x];\n      sum2 += hlen2[x];\n      sum3 += hlen3[x];\n    } while (ixPos < end);\n    var t = t1;\n    if (sum1 > sum2) {\n      sum1 = sum2;\n      t++;\n    }\n    if (sum1 > sum3) {\n      sum1 = sum3;\n      t = t1 + 2;\n    }\n    s.bits += sum1;\n    return t;\n  }\n  var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13];\n  function choose_table(ix, ixPos, endPos, s) {\n    var max = ix_max(ix, ixPos, endPos);\n    switch (max) {\n      case 0:\n        return max;\n      case 1:\n        return count_bit_noESC(ix, ixPos, endPos, s);\n      case 2:\n      case 3:\n        return count_bit_noESC_from2(\n          ix,\n          ixPos,\n          endPos,\n          huf_tbl_noESC[max - 1],\n          s\n        );\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 9:\n      case 10:\n      case 11:\n      case 12:\n      case 13:\n      case 14:\n      case 15:\n        return count_bit_noESC_from3(\n          ix,\n          ixPos,\n          endPos,\n          huf_tbl_noESC[max - 1],\n          s\n        );\n      default:\n        if (max > QuantizePVT.IXMAX_VAL) {\n          s.bits = QuantizePVT.LARGE_BITS;\n          return -1;\n        }\n        max -= 15;\n        var choice2;\n        for (choice2 = 24; choice2 < 32; choice2++) {\n          if (Tables$1.ht[choice2].linmax >= max) {\n            break;\n          }\n        }\n        var choice;\n        for (choice = choice2 - 8; choice < 24; choice++) {\n          if (Tables$1.ht[choice].linmax >= max) {\n            break;\n          }\n        }\n        return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n    }\n  }\n  this.noquant_count_bits = function(gfc, gi, prev_noise) {\n    var ix = gi.l3_enc;\n    var i = Math.min(576, gi.max_nonzero_coeff + 2 >> 1 << 1);\n    if (prev_noise != null)\n      prev_noise.sfb_count1 = 0;\n    for (; i > 1; i -= 2)\n      if ((ix[i - 1] | ix[i - 2]) != 0)\n        break;\n    gi.count1 = i;\n    var a1 = 0;\n    var a2 = 0;\n    for (; i > 3; i -= 4) {\n      var p2;\n      if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 2147483647) > 1) {\n        break;\n      }\n      p2 = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n      a1 += Tables$1.t32l[p2];\n      a2 += Tables$1.t33l[p2];\n    }\n    var bits = a1;\n    gi.count1table_select = 0;\n    if (a1 > a2) {\n      bits = a2;\n      gi.count1table_select = 1;\n    }\n    gi.count1bits = bits;\n    gi.big_values = i;\n    if (i == 0)\n      return bits;\n    if (gi.block_type == Encoder.SHORT_TYPE) {\n      a1 = 3 * gfc.scalefac_band.s[3];\n      if (a1 > gi.big_values)\n        a1 = gi.big_values;\n      a2 = gi.big_values;\n    } else if (gi.block_type == Encoder.NORM_TYPE) {\n      a1 = gi.region0_count = gfc.bv_scf[i - 2];\n      a2 = gi.region1_count = gfc.bv_scf[i - 1];\n      a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n      a1 = gfc.scalefac_band.l[a1 + 1];\n      if (a2 < i) {\n        var bi = new Bits(bits);\n        gi.table_select[2] = choose_table(ix, a2, i, bi);\n        bits = bi.bits;\n      }\n    } else {\n      gi.region0_count = 7;\n      gi.region1_count = Encoder.SBMAX_l - 1 - 7 - 1;\n      a1 = gfc.scalefac_band.l[7 + 1];\n      a2 = i;\n      if (a1 > a2) {\n        a1 = a2;\n      }\n    }\n    a1 = Math.min(a1, i);\n    a2 = Math.min(a2, i);\n    if (a1 > 0) {\n      var bi = new Bits(bits);\n      gi.table_select[0] = choose_table(ix, 0, a1, bi);\n      bits = bi.bits;\n    }\n    if (a1 < a2) {\n      var bi = new Bits(bits);\n      gi.table_select[1] = choose_table(ix, a1, a2, bi);\n      bits = bi.bits;\n    }\n    if (gfc.use_best_huffman == 2) {\n      gi.part2_3_length = bits;\n      best_huffman_divide(gfc, gi);\n      bits = gi.part2_3_length;\n    }\n    if (prev_noise != null) {\n      if (gi.block_type == Encoder.NORM_TYPE) {\n        var sfb = 0;\n        while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n          sfb++;\n        }\n        prev_noise.sfb_count1 = sfb;\n      }\n    }\n    return bits;\n  };\n  this.count_bits = function(gfc, xr, gi, prev_noise) {\n    var ix = gi.l3_enc;\n    var w = QuantizePVT.IXMAX_VAL / qupvt.IPOW20(gi.global_gain);\n    if (gi.xrpow_max > w)\n      return QuantizePVT.LARGE_BITS;\n    quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n    if ((gfc.substep_shaping & 2) != 0) {\n      var j = 0;\n      var gain = gi.global_gain + gi.scalefac_scale;\n      var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n      for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n        var width = gi.width[sfb];\n        if (gfc.pseudohalf[sfb] == 0) {\n          j += width;\n        } else {\n          var k;\n          for (k = j, j += width; k < j; ++k) {\n            ix[k] = xr[k] >= roundfac ? ix[k] : 0;\n          }\n        }\n      }\n    }\n    return this.noquant_count_bits(gfc, gi, prev_noise);\n  };\n  function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n    var bigv = cod_info.big_values;\n    for (var r0 = 0; r0 <= 7 + 15; r0++) {\n      r01_bits[r0] = QuantizePVT.LARGE_BITS;\n    }\n    for (var r0 = 0; r0 < 16; r0++) {\n      var a1 = gfc.scalefac_band.l[r0 + 1];\n      if (a1 >= bigv)\n        break;\n      var r0bits = 0;\n      var bi = new Bits(r0bits);\n      var r0t = choose_table(ix, 0, a1, bi);\n      r0bits = bi.bits;\n      for (var r1 = 0; r1 < 8; r1++) {\n        var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n        if (a2 >= bigv)\n          break;\n        var bits = r0bits;\n        bi = new Bits(bits);\n        var r1t = choose_table(ix, a1, a2, bi);\n        bits = bi.bits;\n        if (r01_bits[r0 + r1] > bits) {\n          r01_bits[r0 + r1] = bits;\n          r01_div[r0 + r1] = r0;\n          r0_tbl[r0 + r1] = r0t;\n          r1_tbl[r0 + r1] = r1t;\n        }\n      }\n    }\n  }\n  function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n    var bigv = cod_info2.big_values;\n    for (var r2 = 2; r2 < Encoder.SBMAX_l + 1; r2++) {\n      var a2 = gfc.scalefac_band.l[r2];\n      if (a2 >= bigv)\n        break;\n      var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n      if (gi.part2_3_length <= bits)\n        break;\n      var bi = new Bits(bits);\n      var r2t = choose_table(ix, a2, bigv, bi);\n      bits = bi.bits;\n      if (gi.part2_3_length <= bits)\n        continue;\n      gi.assign(cod_info2);\n      gi.part2_3_length = bits;\n      gi.region0_count = r01_div[r2 - 2];\n      gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n      gi.table_select[0] = r0_tbl[r2 - 2];\n      gi.table_select[1] = r1_tbl[r2 - 2];\n      gi.table_select[2] = r2t;\n    }\n  }\n  this.best_huffman_divide = function(gfc, gi) {\n    var cod_info2 = new GrInfo();\n    var ix = gi.l3_enc;\n    var r01_bits = new_int$2(7 + 15 + 1);\n    var r01_div = new_int$2(7 + 15 + 1);\n    var r0_tbl = new_int$2(7 + 15 + 1);\n    var r1_tbl = new_int$2(7 + 15 + 1);\n    if (gi.block_type == Encoder.SHORT_TYPE && gfc.mode_gr == 1)\n      return;\n    cod_info2.assign(gi);\n    if (gi.block_type == Encoder.NORM_TYPE) {\n      recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n      recalc_divide_sub(\n        gfc,\n        cod_info2,\n        gi,\n        ix,\n        r01_bits,\n        r01_div,\n        r0_tbl,\n        r1_tbl\n      );\n    }\n    var i = cod_info2.big_values;\n    if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n      return;\n    i = gi.count1 + 2;\n    if (i > 576)\n      return;\n    cod_info2.assign(gi);\n    cod_info2.count1 = i;\n    var a1 = 0;\n    var a2 = 0;\n    for (; i > cod_info2.big_values; i -= 4) {\n      var p2 = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n      a1 += Tables$1.t32l[p2];\n      a2 += Tables$1.t33l[p2];\n    }\n    cod_info2.big_values = i;\n    cod_info2.count1table_select = 0;\n    if (a1 > a2) {\n      a1 = a2;\n      cod_info2.count1table_select = 1;\n    }\n    cod_info2.count1bits = a1;\n    if (cod_info2.block_type == Encoder.NORM_TYPE) {\n      recalc_divide_sub(\n        gfc,\n        cod_info2,\n        gi,\n        ix,\n        r01_bits,\n        r01_div,\n        r0_tbl,\n        r1_tbl\n      );\n    } else {\n      cod_info2.part2_3_length = a1;\n      a1 = gfc.scalefac_band.l[7 + 1];\n      if (a1 > i) {\n        a1 = i;\n      }\n      if (a1 > 0) {\n        var bi = new Bits(cod_info2.part2_3_length);\n        cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n        cod_info2.part2_3_length = bi.bits;\n      }\n      if (i > a1) {\n        var bi = new Bits(cod_info2.part2_3_length);\n        cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n        cod_info2.part2_3_length = bi.bits;\n      }\n      if (gi.part2_3_length > cod_info2.part2_3_length)\n        gi.assign(cod_info2);\n    }\n  };\n  var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n  var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n  var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n  var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n  Takehiro.slen1_tab = slen1_tab;\n  Takehiro.slen2_tab = slen2_tab;\n  function scfsi_calc(ch, l3_side) {\n    var sfb;\n    var gi = l3_side.tt[1][ch];\n    var g0 = l3_side.tt[0][ch];\n    for (var i = 0; i < Tables$1.scfsi_band.length - 1; i++) {\n      for (sfb = Tables$1.scfsi_band[i]; sfb < Tables$1.scfsi_band[i + 1]; sfb++) {\n        if (g0.scalefac[sfb] != gi.scalefac[sfb] && gi.scalefac[sfb] >= 0)\n          break;\n      }\n      if (sfb == Tables$1.scfsi_band[i + 1]) {\n        for (sfb = Tables$1.scfsi_band[i]; sfb < Tables$1.scfsi_band[i + 1]; sfb++) {\n          gi.scalefac[sfb] = -1;\n        }\n        l3_side.scfsi[ch][i] = 1;\n      }\n    }\n    var s1 = 0;\n    var c1 = 0;\n    for (sfb = 0; sfb < 11; sfb++) {\n      if (gi.scalefac[sfb] == -1)\n        continue;\n      c1++;\n      if (s1 < gi.scalefac[sfb])\n        s1 = gi.scalefac[sfb];\n    }\n    var s2 = 0;\n    var c2 = 0;\n    for (; sfb < Encoder.SBPSY_l; sfb++) {\n      if (gi.scalefac[sfb] == -1)\n        continue;\n      c2++;\n      if (s2 < gi.scalefac[sfb])\n        s2 = gi.scalefac[sfb];\n    }\n    for (var i = 0; i < 16; i++) {\n      if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n        var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n        if (gi.part2_length > c) {\n          gi.part2_length = c;\n          gi.scalefac_compress = i;\n        }\n      }\n    }\n  }\n  this.best_scalefac_store = function(gfc, gr, ch, l3_side) {\n    var gi = l3_side.tt[gr][ch];\n    var sfb, i, j, l;\n    var recalc = 0;\n    j = 0;\n    for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n      var width = gi.width[sfb];\n      j += width;\n      for (l = -width; l < 0; l++) {\n        if (gi.l3_enc[l + j] != 0)\n          break;\n      }\n      if (l == 0)\n        gi.scalefac[sfb] = recalc = -2;\n    }\n    if (gi.scalefac_scale == 0 && gi.preflag == 0) {\n      var s = 0;\n      for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n        if (gi.scalefac[sfb] > 0)\n          s |= gi.scalefac[sfb];\n      }\n      if ((s & 1) == 0 && s != 0) {\n        for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n          if (gi.scalefac[sfb] > 0)\n            gi.scalefac[sfb] >>= 1;\n        }\n        gi.scalefac_scale = recalc = 1;\n      }\n    }\n    if (gi.preflag == 0 && gi.block_type != Encoder.SHORT_TYPE && gfc.mode_gr == 2) {\n      for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n        if (gi.scalefac[sfb] < qupvt.pretab[sfb] && gi.scalefac[sfb] != -2) {\n          break;\n        }\n      }\n      if (sfb == Encoder.SBPSY_l) {\n        for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n          if (gi.scalefac[sfb] > 0)\n            gi.scalefac[sfb] -= qupvt.pretab[sfb];\n        }\n        gi.preflag = recalc = 1;\n      }\n    }\n    for (i = 0; i < 4; i++)\n      l3_side.scfsi[ch][i] = 0;\n    if (gfc.mode_gr == 2 && gr == 1 && l3_side.tt[0][ch].block_type != Encoder.SHORT_TYPE && l3_side.tt[1][ch].block_type != Encoder.SHORT_TYPE) {\n      scfsi_calc(ch, l3_side);\n      recalc = 0;\n    }\n    for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n      if (gi.scalefac[sfb] == -2) {\n        gi.scalefac[sfb] = 0;\n      }\n    }\n    if (recalc != 0) {\n      if (gfc.mode_gr == 2) {\n        this.scale_bitcount(gi);\n      } else {\n        this.scale_bitcount_lsf(gfc, gi);\n      }\n    }\n  };\n  function all_scalefactors_not_negative(scalefac, n) {\n    for (var i = 0; i < n; ++i) {\n      if (scalefac[i] < 0)\n        return false;\n    }\n    return true;\n  }\n  var scale_short = [\n    0,\n    18,\n    36,\n    54,\n    54,\n    36,\n    54,\n    72,\n    54,\n    72,\n    90,\n    72,\n    90,\n    108,\n    108,\n    126\n  ];\n  var scale_mixed = [\n    0,\n    18,\n    36,\n    54,\n    51,\n    35,\n    53,\n    71,\n    52,\n    70,\n    88,\n    69,\n    87,\n    105,\n    104,\n    122\n  ];\n  var scale_long = [\n    0,\n    10,\n    20,\n    30,\n    33,\n    21,\n    31,\n    41,\n    32,\n    42,\n    52,\n    43,\n    53,\n    63,\n    64,\n    74\n  ];\n  this.scale_bitcount = function(cod_info) {\n    var k;\n    var sfb;\n    var max_slen1 = 0;\n    var max_slen2 = 0;\n    var tab;\n    var scalefac = cod_info.scalefac;\n    assert$6(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      tab = scale_short;\n      if (cod_info.mixed_block_flag != 0)\n        tab = scale_mixed;\n    } else {\n      tab = scale_long;\n      if (cod_info.preflag == 0) {\n        for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n          if (scalefac[sfb] < qupvt.pretab[sfb])\n            break;\n        }\n        if (sfb == Encoder.SBPSY_l) {\n          cod_info.preflag = 1;\n          for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n            scalefac[sfb] -= qupvt.pretab[sfb];\n          }\n        }\n      }\n    }\n    for (sfb = 0; sfb < cod_info.sfbdivide; sfb++) {\n      if (max_slen1 < scalefac[sfb])\n        max_slen1 = scalefac[sfb];\n    }\n    for (; sfb < cod_info.sfbmax; sfb++) {\n      if (max_slen2 < scalefac[sfb])\n        max_slen2 = scalefac[sfb];\n    }\n    cod_info.part2_length = QuantizePVT.LARGE_BITS;\n    for (k = 0; k < 16; k++) {\n      if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] && cod_info.part2_length > tab[k]) {\n        cod_info.part2_length = tab[k];\n        cod_info.scalefac_compress = k;\n      }\n    }\n    return cod_info.part2_length == QuantizePVT.LARGE_BITS;\n  };\n  var max_range_sfac_tab = [\n    [15, 15, 7, 7],\n    [15, 15, 7, 0],\n    [7, 3, 0, 0],\n    [15, 31, 31, 0],\n    [7, 7, 7, 0],\n    [3, 3, 0, 0]\n  ];\n  this.scale_bitcount_lsf = function(gfc, cod_info) {\n    var table_number, row_in_table, partition, nr_sfb, window2;\n    var over;\n    var i, sfb;\n    var max_sfac = new_int$2(4);\n    var scalefac = cod_info.scalefac;\n    if (cod_info.preflag != 0)\n      table_number = 2;\n    else\n      table_number = 0;\n    for (i = 0; i < 4; i++)\n      max_sfac[i] = 0;\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      row_in_table = 1;\n      var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n      for (sfb = 0, partition = 0; partition < 4; partition++) {\n        nr_sfb = partition_table[partition] / 3;\n        for (i = 0; i < nr_sfb; i++, sfb++) {\n          for (window2 = 0; window2 < 3; window2++) {\n            if (scalefac[sfb * 3 + window2] > max_sfac[partition]) {\n              max_sfac[partition] = scalefac[sfb * 3 + window2];\n            }\n          }\n        }\n      }\n    } else {\n      row_in_table = 0;\n      var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n      for (sfb = 0, partition = 0; partition < 4; partition++) {\n        nr_sfb = partition_table[partition];\n        for (i = 0; i < nr_sfb; i++, sfb++) {\n          if (scalefac[sfb] > max_sfac[partition]) {\n            max_sfac[partition] = scalefac[sfb];\n          }\n        }\n      }\n    }\n    for (over = false, partition = 0; partition < 4; partition++) {\n      if (max_sfac[partition] > max_range_sfac_tab[table_number][partition]) {\n        over = true;\n      }\n    }\n    if (!over) {\n      var slen1, slen2, slen3, slen4;\n      cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n      for (partition = 0; partition < 4; partition++) {\n        cod_info.slen[partition] = log2tab[max_sfac[partition]];\n      }\n      slen1 = cod_info.slen[0];\n      slen2 = cod_info.slen[1];\n      slen3 = cod_info.slen[2];\n      slen4 = cod_info.slen[3];\n      switch (table_number) {\n        case 0:\n          cod_info.scalefac_compress = (slen1 * 5 + slen2 << 4) + (slen3 << 2) + slen4;\n          break;\n        case 1:\n          cod_info.scalefac_compress = 400 + (slen1 * 5 + slen2 << 2) + slen3;\n          break;\n        case 2:\n          cod_info.scalefac_compress = 500 + slen1 * 3 + slen2;\n          break;\n        default:\n          System$4.err.printf(\"intensity stereo not implemented yet\\n\");\n          break;\n      }\n    }\n    if (!over) {\n      assert$6(cod_info.sfb_partition_table != null);\n      cod_info.part2_length = 0;\n      for (partition = 0; partition < 4; partition++) {\n        cod_info.part2_length += cod_info.slen[partition] * cod_info.sfb_partition_table[partition];\n      }\n    }\n    return over;\n  };\n  var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4];\n  this.huffman_init = function(gfc) {\n    for (var i = 2; i <= 576; i += 2) {\n      var scfb_anz = 0;\n      var bv_index;\n      while (gfc.scalefac_band.l[++scfb_anz] < i)\n        ;\n      bv_index = subdv_table[scfb_anz][0];\n      while (gfc.scalefac_band.l[bv_index + 1] > i)\n        bv_index--;\n      if (bv_index < 0) {\n        bv_index = subdv_table[scfb_anz][0];\n      }\n      gfc.bv_scf[i - 2] = bv_index;\n      bv_index = subdv_table[scfb_anz][1];\n      while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i) {\n        bv_index--;\n      }\n      if (bv_index < 0) {\n        bv_index = subdv_table[scfb_anz][1];\n      }\n      gfc.bv_scf[i - 1] = bv_index;\n    }\n  };\n}\nvar System$3 = common.System;\nvar Arrays$2 = common.Arrays;\nvar new_byte$2 = common.new_byte;\nvar new_float_n = common.new_float_n;\nvar new_int$1 = common.new_int;\nvar assert$5 = common.assert;\nBitStream$1.EQ = function(a, b) {\n  return Math.abs(a) > Math.abs(b) ? Math.abs(a - b) <= Math.abs(a) * 1e-6 : Math.abs(a - b) <= Math.abs(b) * 1e-6;\n};\nBitStream$1.NEQ = function(a, b) {\n  return !BitStream$1.EQ(a, b);\n};\nfunction BitStream$1() {\n  var self2 = this;\n  var CRC16_POLYNOMIAL = 32773;\n  var ga = null;\n  var mpg = null;\n  var ver = null;\n  var vbr = null;\n  this.setModules = function(_ga, _mpg, _ver, _vbr) {\n    ga = _ga;\n    mpg = _mpg;\n    ver = _ver;\n    vbr = _vbr;\n  };\n  var buf = null;\n  var totbit = 0;\n  var bufByteIdx = 0;\n  var bufBitIdx = 0;\n  this.getframebits = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var bit_rate;\n    if (gfc.bitrate_index != 0) {\n      bit_rate = Tables$1.bitrate_table[gfp.version][gfc.bitrate_index];\n    } else\n      bit_rate = gfp.brate;\n    var bytes = 0 | (gfp.version + 1) * 72e3 * bit_rate / gfp.out_samplerate + gfc.padding;\n    return 8 * bytes;\n  };\n  function putheader_bits(gfc) {\n    System$3.arraycopy(\n      gfc.header[gfc.w_ptr].buf,\n      0,\n      buf,\n      bufByteIdx,\n      gfc.sideinfo_len\n    );\n    bufByteIdx += gfc.sideinfo_len;\n    totbit += gfc.sideinfo_len * 8;\n    gfc.w_ptr = gfc.w_ptr + 1 & LameInternalFlags$1.MAX_HEADER_BUF - 1;\n  }\n  function putbits2(gfc, val, j) {\n    while (j > 0) {\n      var k;\n      if (bufBitIdx == 0) {\n        bufBitIdx = 8;\n        bufByteIdx++;\n        assert$5(gfc.header[gfc.w_ptr].write_timing >= totbit);\n        if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n          putheader_bits(gfc);\n        }\n        buf[bufByteIdx] = 0;\n      }\n      k = Math.min(j, bufBitIdx);\n      j -= k;\n      bufBitIdx -= k;\n      buf[bufByteIdx] |= val >> j << bufBitIdx;\n      totbit += k;\n    }\n  }\n  function putbits_noheaders(gfc, val, j) {\n    while (j > 0) {\n      var k;\n      if (bufBitIdx == 0) {\n        bufBitIdx = 8;\n        bufByteIdx++;\n        buf[bufByteIdx] = 0;\n      }\n      k = Math.min(j, bufBitIdx);\n      j -= k;\n      bufBitIdx -= k;\n      buf[bufByteIdx] |= val >> j << bufBitIdx;\n      totbit += k;\n    }\n  }\n  function drain_into_ancillary(gfp, remainingBits) {\n    var gfc = gfp.internal_flags;\n    var i;\n    if (remainingBits >= 8) {\n      putbits2(gfc, 76, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 8) {\n      putbits2(gfc, 65, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 8) {\n      putbits2(gfc, 77, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 8) {\n      putbits2(gfc, 69, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 32) {\n      var version2 = ver.getLameShortVersion();\n      if (remainingBits >= 32) {\n        for (i = 0; i < version2.length && remainingBits >= 8; ++i) {\n          remainingBits -= 8;\n          putbits2(gfc, version2.charAt(i), 8);\n        }\n      }\n    }\n    for (; remainingBits >= 1; remainingBits -= 1) {\n      putbits2(gfc, gfc.ancillary_flag, 1);\n      gfc.ancillary_flag ^= !gfp.disable_reservoir ? 1 : 0;\n    }\n  }\n  function writeheader(gfc, val, j) {\n    var ptr = gfc.header[gfc.h_ptr].ptr;\n    while (j > 0) {\n      var k = Math.min(j, 8 - (ptr & 7));\n      j -= k;\n      gfc.header[gfc.h_ptr].buf[ptr >> 3] |= val >> j << 8 - (ptr & 7) - k;\n      ptr += k;\n    }\n    gfc.header[gfc.h_ptr].ptr = ptr;\n  }\n  function CRC_update(value, crc) {\n    value <<= 8;\n    for (var i = 0; i < 8; i++) {\n      value <<= 1;\n      crc <<= 1;\n      if (((crc ^ value) & 65536) != 0)\n        crc ^= CRC16_POLYNOMIAL;\n    }\n    return crc;\n  }\n  this.CRC_writeheader = function(gfc, header) {\n    var crc = 65535;\n    crc = CRC_update(header[2] & 255, crc);\n    crc = CRC_update(header[3] & 255, crc);\n    for (var i = 6; i < gfc.sideinfo_len; i++) {\n      crc = CRC_update(header[i] & 255, crc);\n    }\n    header[4] = byte(crc >> 8);\n    header[5] = byte(crc & 255);\n  };\n  function encodeSideInfo2(gfp, bitsPerFrame) {\n    var gfc = gfp.internal_flags;\n    var l3_side;\n    var gr, ch;\n    l3_side = gfc.l3_side;\n    gfc.header[gfc.h_ptr].ptr = 0;\n    Arrays$2.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n    if (gfp.out_samplerate < 16e3)\n      writeheader(gfc, 4094, 12);\n    else\n      writeheader(gfc, 4095, 12);\n    writeheader(gfc, gfp.version, 1);\n    writeheader(gfc, 4 - 3, 2);\n    writeheader(gfc, !gfp.error_protection ? 1 : 0, 1);\n    writeheader(gfc, gfc.bitrate_index, 4);\n    writeheader(gfc, gfc.samplerate_index, 2);\n    writeheader(gfc, gfc.padding, 1);\n    writeheader(gfc, gfp.extension, 1);\n    writeheader(gfc, gfp.mode.ordinal(), 2);\n    writeheader(gfc, gfc.mode_ext, 2);\n    writeheader(gfc, gfp.copyright, 1);\n    writeheader(gfc, gfp.original, 1);\n    writeheader(gfc, gfp.emphasis, 2);\n    if (gfp.error_protection) {\n      writeheader(gfc, 0, 16);\n    }\n    if (gfp.version == 1) {\n      assert$5(l3_side.main_data_begin >= 0);\n      writeheader(gfc, l3_side.main_data_begin, 9);\n      if (gfc.channels_out == 2)\n        writeheader(gfc, l3_side.private_bits, 3);\n      else\n        writeheader(gfc, l3_side.private_bits, 5);\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var band;\n        for (band = 0; band < 4; band++) {\n          writeheader(gfc, l3_side.scfsi[ch][band], 1);\n        }\n      }\n      for (gr = 0; gr < 2; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          var gi = l3_side.tt[gr][ch];\n          writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n          writeheader(gfc, gi.big_values / 2, 9);\n          writeheader(gfc, gi.global_gain, 8);\n          writeheader(gfc, gi.scalefac_compress, 4);\n          if (gi.block_type != Encoder.NORM_TYPE) {\n            writeheader(gfc, 1, 1);\n            writeheader(gfc, gi.block_type, 2);\n            writeheader(gfc, gi.mixed_block_flag, 1);\n            if (gi.table_select[0] == 14)\n              gi.table_select[0] = 16;\n            writeheader(gfc, gi.table_select[0], 5);\n            if (gi.table_select[1] == 14)\n              gi.table_select[1] = 16;\n            writeheader(gfc, gi.table_select[1], 5);\n            writeheader(gfc, gi.subblock_gain[0], 3);\n            writeheader(gfc, gi.subblock_gain[1], 3);\n            writeheader(gfc, gi.subblock_gain[2], 3);\n          } else {\n            writeheader(gfc, 0, 1);\n            if (gi.table_select[0] == 14)\n              gi.table_select[0] = 16;\n            writeheader(gfc, gi.table_select[0], 5);\n            if (gi.table_select[1] == 14)\n              gi.table_select[1] = 16;\n            writeheader(gfc, gi.table_select[1], 5);\n            if (gi.table_select[2] == 14)\n              gi.table_select[2] = 16;\n            writeheader(gfc, gi.table_select[2], 5);\n            assert$5(gi.region0_count >= 0 && gi.region0_count < 16);\n            assert$5(gi.region1_count >= 0 && gi.region1_count < 8);\n            writeheader(gfc, gi.region0_count, 4);\n            writeheader(gfc, gi.region1_count, 3);\n          }\n          writeheader(gfc, gi.preflag, 1);\n          writeheader(gfc, gi.scalefac_scale, 1);\n          writeheader(gfc, gi.count1table_select, 1);\n        }\n      }\n    } else {\n      assert$5(l3_side.main_data_begin >= 0);\n      writeheader(gfc, l3_side.main_data_begin, 8);\n      writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n      gr = 0;\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var gi = l3_side.tt[gr][ch];\n        writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n        writeheader(gfc, gi.big_values / 2, 9);\n        writeheader(gfc, gi.global_gain, 8);\n        writeheader(gfc, gi.scalefac_compress, 9);\n        if (gi.block_type != Encoder.NORM_TYPE) {\n          writeheader(gfc, 1, 1);\n          writeheader(gfc, gi.block_type, 2);\n          writeheader(gfc, gi.mixed_block_flag, 1);\n          if (gi.table_select[0] == 14)\n            gi.table_select[0] = 16;\n          writeheader(gfc, gi.table_select[0], 5);\n          if (gi.table_select[1] == 14)\n            gi.table_select[1] = 16;\n          writeheader(gfc, gi.table_select[1], 5);\n          writeheader(gfc, gi.subblock_gain[0], 3);\n          writeheader(gfc, gi.subblock_gain[1], 3);\n          writeheader(gfc, gi.subblock_gain[2], 3);\n        } else {\n          writeheader(gfc, 0, 1);\n          if (gi.table_select[0] == 14)\n            gi.table_select[0] = 16;\n          writeheader(gfc, gi.table_select[0], 5);\n          if (gi.table_select[1] == 14)\n            gi.table_select[1] = 16;\n          writeheader(gfc, gi.table_select[1], 5);\n          if (gi.table_select[2] == 14)\n            gi.table_select[2] = 16;\n          writeheader(gfc, gi.table_select[2], 5);\n          assert$5(gi.region0_count >= 0 && gi.region0_count < 16);\n          assert$5(gi.region1_count >= 0 && gi.region1_count < 8);\n          writeheader(gfc, gi.region0_count, 4);\n          writeheader(gfc, gi.region1_count, 3);\n        }\n        writeheader(gfc, gi.scalefac_scale, 1);\n        writeheader(gfc, gi.count1table_select, 1);\n      }\n    }\n    if (gfp.error_protection) {\n      CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n    }\n    {\n      var old = gfc.h_ptr;\n      assert$5(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n      gfc.h_ptr = old + 1 & LameInternalFlags$1.MAX_HEADER_BUF - 1;\n      gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing + bitsPerFrame;\n      if (gfc.h_ptr == gfc.w_ptr) {\n        System$3.err.println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n      }\n    }\n  }\n  function huffman_coder_count1(gfc, gi) {\n    var h2 = Tables$1.ht[gi.count1table_select + 32];\n    var i;\n    var bits = 0;\n    var ix = gi.big_values;\n    var xr = gi.big_values;\n    assert$5(gi.count1table_select < 2);\n    for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n      var huffbits = 0;\n      var p2 = 0;\n      var v;\n      v = gi.l3_enc[ix + 0];\n      if (v != 0) {\n        p2 += 8;\n        if (gi.xr[xr + 0] < 0)\n          huffbits++;\n      }\n      v = gi.l3_enc[ix + 1];\n      if (v != 0) {\n        p2 += 4;\n        huffbits *= 2;\n        if (gi.xr[xr + 1] < 0)\n          huffbits++;\n      }\n      v = gi.l3_enc[ix + 2];\n      if (v != 0) {\n        p2 += 2;\n        huffbits *= 2;\n        if (gi.xr[xr + 2] < 0)\n          huffbits++;\n      }\n      v = gi.l3_enc[ix + 3];\n      if (v != 0) {\n        p2++;\n        huffbits *= 2;\n        if (gi.xr[xr + 3] < 0)\n          huffbits++;\n      }\n      ix += 4;\n      xr += 4;\n      putbits2(gfc, huffbits + h2.table[p2], h2.hlen[p2]);\n      bits += h2.hlen[p2];\n    }\n    return bits;\n  }\n  function Huffmancode(gfc, tableindex, start, end, gi) {\n    var h2 = Tables$1.ht[tableindex];\n    var bits = 0;\n    if (tableindex == 0)\n      return bits;\n    for (var i = start; i < end; i += 2) {\n      var cbits = 0;\n      var xbits = 0;\n      var linbits = h2.xlen;\n      var xlen = h2.xlen;\n      var ext = 0;\n      var x1 = gi.l3_enc[i];\n      var x2 = gi.l3_enc[i + 1];\n      if (x1 != 0) {\n        if (gi.xr[i] < 0)\n          ext++;\n        cbits--;\n      }\n      if (tableindex > 15) {\n        if (x1 > 14) {\n          var linbits_x1 = x1 - 15;\n          assert$5(linbits_x1 <= h2.linmax);\n          ext |= linbits_x1 << 1;\n          xbits = linbits;\n          x1 = 15;\n        }\n        if (x2 > 14) {\n          var linbits_x2 = x2 - 15;\n          assert$5(linbits_x2 <= h2.linmax);\n          ext <<= linbits;\n          ext |= linbits_x2;\n          xbits += linbits;\n          x2 = 15;\n        }\n        xlen = 16;\n      }\n      if (x2 != 0) {\n        ext <<= 1;\n        if (gi.xr[i + 1] < 0)\n          ext++;\n        cbits--;\n      }\n      x1 = x1 * xlen + x2;\n      xbits -= cbits;\n      cbits += h2.hlen[x1];\n      putbits2(gfc, h2.table[x1], cbits);\n      putbits2(gfc, ext, xbits);\n      bits += cbits + xbits;\n    }\n    return bits;\n  }\n  function ShortHuffmancodebits(gfc, gi) {\n    var region1Start = 3 * gfc.scalefac_band.s[3];\n    if (region1Start > gi.big_values)\n      region1Start = gi.big_values;\n    var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n    bits += Huffmancode(\n      gfc,\n      gi.table_select[1],\n      region1Start,\n      gi.big_values,\n      gi\n    );\n    return bits;\n  }\n  function LongHuffmancodebits(gfc, gi) {\n    var bigvalues, bits;\n    var region1Start, region2Start;\n    bigvalues = gi.big_values;\n    var i = gi.region0_count + 1;\n    assert$5(i < gfc.scalefac_band.l.length);\n    region1Start = gfc.scalefac_band.l[i];\n    i += gi.region1_count + 1;\n    assert$5(i < gfc.scalefac_band.l.length);\n    region2Start = gfc.scalefac_band.l[i];\n    if (region1Start > bigvalues)\n      region1Start = bigvalues;\n    if (region2Start > bigvalues)\n      region2Start = bigvalues;\n    bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n    bits += Huffmancode(gfc, gi.table_select[1], region1Start, region2Start, gi);\n    bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues, gi);\n    return bits;\n  }\n  function writeMainData(gfp) {\n    var gr;\n    var ch;\n    var sfb;\n    var data_bits;\n    var tot_bits = 0;\n    var gfc = gfp.internal_flags;\n    var l3_side = gfc.l3_side;\n    if (gfp.version == 1) {\n      for (gr = 0; gr < 2; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          var gi = l3_side.tt[gr][ch];\n          var slen1 = Takehiro.slen1_tab[gi.scalefac_compress];\n          var slen2 = Takehiro.slen2_tab[gi.scalefac_compress];\n          data_bits = 0;\n          for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n            if (gi.scalefac[sfb] == -1)\n              continue;\n            putbits2(gfc, gi.scalefac[sfb], slen1);\n            data_bits += slen1;\n          }\n          for (; sfb < gi.sfbmax; sfb++) {\n            if (gi.scalefac[sfb] == -1)\n              continue;\n            putbits2(gfc, gi.scalefac[sfb], slen2);\n            data_bits += slen2;\n          }\n          assert$5(data_bits == gi.part2_length);\n          if (gi.block_type == Encoder.SHORT_TYPE) {\n            data_bits += ShortHuffmancodebits(gfc, gi);\n          } else {\n            data_bits += LongHuffmancodebits(gfc, gi);\n          }\n          data_bits += huffman_coder_count1(gfc, gi);\n          assert$5(data_bits == gi.part2_3_length + gi.part2_length);\n          tot_bits += data_bits;\n        }\n      }\n    } else {\n      gr = 0;\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var gi = l3_side.tt[gr][ch];\n        var i;\n        var sfb_partition;\n        var scale_bits = 0;\n        assert$5(gi.sfb_partition_table != null);\n        data_bits = 0;\n        sfb = 0;\n        sfb_partition = 0;\n        if (gi.block_type == Encoder.SHORT_TYPE) {\n          for (; sfb_partition < 4; sfb_partition++) {\n            var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n            var slen = gi.slen[sfb_partition];\n            for (i = 0; i < sfbs; i++, sfb++) {\n              putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n              putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n              putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n              scale_bits += 3 * slen;\n            }\n          }\n          data_bits += ShortHuffmancodebits(gfc, gi);\n        } else {\n          for (; sfb_partition < 4; sfb_partition++) {\n            var sfbs = gi.sfb_partition_table[sfb_partition];\n            var slen = gi.slen[sfb_partition];\n            for (i = 0; i < sfbs; i++, sfb++) {\n              putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n              scale_bits += slen;\n            }\n          }\n          data_bits += LongHuffmancodebits(gfc, gi);\n        }\n        data_bits += huffman_coder_count1(gfc, gi);\n        assert$5(data_bits == gi.part2_3_length);\n        assert$5(scale_bits == gi.part2_length);\n        tot_bits += scale_bits + data_bits;\n      }\n    }\n    return tot_bits;\n  }\n  function TotalBytes() {\n    this.total = 0;\n  }\n  function compute_flushbits(gfp, total_bytes_output) {\n    var gfc = gfp.internal_flags;\n    var flushbits, remaining_headers;\n    var bitsPerFrame;\n    var last_ptr, first_ptr;\n    first_ptr = gfc.w_ptr;\n    last_ptr = gfc.h_ptr - 1;\n    if (last_ptr == -1)\n      last_ptr = LameInternalFlags$1.MAX_HEADER_BUF - 1;\n    flushbits = gfc.header[last_ptr].write_timing - totbit;\n    total_bytes_output.total = flushbits;\n    if (flushbits >= 0) {\n      remaining_headers = 1 + last_ptr - first_ptr;\n      if (last_ptr < first_ptr) {\n        remaining_headers = 1 + last_ptr - first_ptr + LameInternalFlags$1.MAX_HEADER_BUF;\n      }\n      flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n    }\n    bitsPerFrame = self2.getframebits(gfp);\n    flushbits += bitsPerFrame;\n    total_bytes_output.total += bitsPerFrame;\n    if (total_bytes_output.total % 8 != 0) {\n      total_bytes_output.total = 1 + total_bytes_output.total / 8;\n    } else\n      total_bytes_output.total = total_bytes_output.total / 8;\n    total_bytes_output.total += bufByteIdx + 1;\n    if (flushbits < 0) {\n      System$3.err.println(\"strange error flushing buffer ... \\n\");\n    }\n    return flushbits;\n  }\n  this.flush_bitstream = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var l3_side;\n    var flushbits;\n    var last_ptr = gfc.h_ptr - 1;\n    if (last_ptr == -1)\n      last_ptr = LameInternalFlags$1.MAX_HEADER_BUF - 1;\n    l3_side = gfc.l3_side;\n    if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n      return;\n    drain_into_ancillary(gfp, flushbits);\n    assert$5(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n    gfc.ResvSize = 0;\n    l3_side.main_data_begin = 0;\n    if (gfc.findReplayGain) {\n      var RadioGain = ga.GetTitleGain(gfc.rgdata);\n      assert$5(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n      gfc.RadioGain = Math.floor(RadioGain * 10 + 0.5) | 0;\n    }\n    if (gfc.findPeakSample) {\n      gfc.noclipGainChange = Math.ceil(Math.log10(gfc.PeakSample / 32767) * 20 * 10) | 0;\n      if (gfc.noclipGainChange > 0) {\n        if (EQ(gfp.scale, 1) || EQ(gfp.scale, 0)) {\n          gfc.noclipScale = Math.floor(32767 / gfc.PeakSample * 100) / 100;\n        } else {\n          gfc.noclipScale = -1;\n        }\n      } else {\n        gfc.noclipScale = -1;\n      }\n    }\n  };\n  this.add_dummy_byte = function(gfp, val, n) {\n    var gfc = gfp.internal_flags;\n    var i;\n    while (n-- > 0) {\n      putbits_noheaders(gfc, val, 8);\n      for (i = 0; i < LameInternalFlags$1.MAX_HEADER_BUF; ++i) {\n        gfc.header[i].write_timing += 8;\n      }\n    }\n  };\n  this.format_bitstream = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var l3_side;\n    l3_side = gfc.l3_side;\n    var bitsPerFrame = this.getframebits(gfp);\n    drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n    encodeSideInfo2(gfp, bitsPerFrame);\n    var bits = 8 * gfc.sideinfo_len;\n    bits += writeMainData(gfp);\n    drain_into_ancillary(gfp, l3_side.resvDrain_post);\n    bits += l3_side.resvDrain_post;\n    l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n    if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n      System$3.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n    }\n    if (l3_side.main_data_begin * 8 != gfc.ResvSize) {\n      System$3.err.printf(\n        \"bit reservoir error: \\nl3_side.main_data_begin: %d \\nResvoir size:             %d \\nresv drain (post)         %d \\nresv drain (pre)          %d \\nheader and sideinfo:      %d \\ndata bits:                %d \\ntotal bits:               %d (remainder: %d) \\nbitsperframe:             %d \\n\",\n        8 * l3_side.main_data_begin,\n        gfc.ResvSize,\n        l3_side.resvDrain_post,\n        l3_side.resvDrain_pre,\n        8 * gfc.sideinfo_len,\n        bits - l3_side.resvDrain_post - 8 * gfc.sideinfo_len,\n        bits,\n        bits % 8,\n        bitsPerFrame\n      );\n      System$3.err.println(\n        \"This is a fatal error.  It has several possible causes:\"\n      );\n      System$3.err.println(\n        \"90%%  LAME compiled with buggy version of gcc using advanced optimizations\"\n      );\n      System$3.err.println(\" 9%%  Your system is overclocked\");\n      System$3.err.println(\" 1%%  bug in LAME encoding library\");\n      gfc.ResvSize = l3_side.main_data_begin * 8;\n    }\n    if (totbit > 1e9) {\n      var i;\n      for (i = 0; i < LameInternalFlags$1.MAX_HEADER_BUF; ++i) {\n        gfc.header[i].write_timing -= totbit;\n      }\n      totbit = 0;\n    }\n    return 0;\n  };\n  this.copy_buffer = function(gfc, buffer, bufferPos, size2, mp3data) {\n    var minimum = bufByteIdx + 1;\n    if (minimum <= 0)\n      return 0;\n    if (size2 != 0 && minimum > size2) {\n      return -1;\n    }\n    System$3.arraycopy(buf, 0, buffer, bufferPos, minimum);\n    bufByteIdx = -1;\n    bufBitIdx = 0;\n    if (mp3data != 0) {\n      var crc = new_int$1(1);\n      crc[0] = gfc.nMusicCRC;\n      vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n      gfc.nMusicCRC = crc[0];\n      if (minimum > 0) {\n        gfc.VBR_seek_table.nBytesWritten += minimum;\n      }\n      if (gfc.decode_on_the_fly) {\n        var pcm_buf = new_float_n([2, 1152]);\n        var mp3_in = minimum;\n        var samples_out = -1;\n        var i;\n        while (samples_out != 0) {\n          samples_out = mpg.hip_decode1_unclipped(\n            gfc.hip,\n            buffer,\n            bufferPos,\n            mp3_in,\n            pcm_buf[0],\n            pcm_buf[1]\n          );\n          mp3_in = 0;\n          if (samples_out == -1) {\n            samples_out = 0;\n          }\n          if (samples_out > 0) {\n            if (gfc.findPeakSample) {\n              for (i = 0; i < samples_out; i++) {\n                if (pcm_buf[0][i] > gfc.PeakSample) {\n                  gfc.PeakSample = pcm_buf[0][i];\n                } else if (-pcm_buf[0][i] > gfc.PeakSample) {\n                  gfc.PeakSample = -pcm_buf[0][i];\n                }\n              }\n              if (gfc.channels_out > 1) {\n                for (i = 0; i < samples_out; i++) {\n                  if (pcm_buf[1][i] > gfc.PeakSample) {\n                    gfc.PeakSample = pcm_buf[1][i];\n                  } else if (-pcm_buf[1][i] > gfc.PeakSample) {\n                    gfc.PeakSample = -pcm_buf[1][i];\n                  }\n                }\n              }\n            }\n            if (gfc.findReplayGain) {\n              if (ga.AnalyzeSamples(\n                gfc.rgdata,\n                pcm_buf[0],\n                0,\n                pcm_buf[1],\n                0,\n                samples_out,\n                gfc.channels_out\n              ) == GainAnalysis.GAIN_ANALYSIS_ERROR) {\n                return -6;\n              }\n            }\n          }\n        }\n      }\n    }\n    return minimum;\n  };\n  this.init_bit_stream_w = function(gfc) {\n    buf = new_byte$2(Lame$1.LAME_MAXMP3BUFFER);\n    gfc.h_ptr = gfc.w_ptr = 0;\n    gfc.header[gfc.h_ptr].write_timing = 0;\n    bufByteIdx = -1;\n    bufBitIdx = 0;\n    totbit = 0;\n  };\n}\nvar System$2 = common.System;\nvar VbrMode$3 = common.VbrMode;\nvar ShortBlock$1 = common.ShortBlock;\nvar new_float$2 = common.new_float;\nvar new_int_n = common.new_int_n;\nvar new_short_n = common.new_short_n;\nvar assert$4 = common.assert;\nfunction Lame$1() {\n  var self2 = this;\n  var LAME_MAXALBUMART = 128 * 1024;\n  Lame$1.V9 = 410;\n  Lame$1.V8 = 420;\n  Lame$1.V7 = 430;\n  Lame$1.V6 = 440;\n  Lame$1.V5 = 450;\n  Lame$1.V4 = 460;\n  Lame$1.V3 = 470;\n  Lame$1.V2 = 480;\n  Lame$1.V1 = 490;\n  Lame$1.V0 = 500;\n  Lame$1.R3MIX = 1e3;\n  Lame$1.STANDARD = 1001;\n  Lame$1.EXTREME = 1002;\n  Lame$1.INSANE = 1003;\n  Lame$1.STANDARD_FAST = 1004;\n  Lame$1.EXTREME_FAST = 1005;\n  Lame$1.MEDIUM = 1006;\n  Lame$1.MEDIUM_FAST = 1007;\n  var LAME_MAXMP3BUFFER = 16384 + LAME_MAXALBUMART;\n  Lame$1.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n  var ga;\n  var bs;\n  var p2;\n  var qupvt;\n  var qu;\n  var psy = new PsyModel();\n  var vbr;\n  var id3;\n  var mpglib;\n  this.enc = new Encoder();\n  this.setModules = function(_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n    ga = _ga;\n    bs = _bs;\n    p2 = _p;\n    qupvt = _qupvt;\n    qu = _qu;\n    vbr = _vbr;\n    id3 = _id3;\n    mpglib = _mpglib;\n    this.enc.setModules(bs, psy, qupvt, vbr);\n  };\n  function PSY() {\n    this.mask_adjust = 0;\n    this.mask_adjust_short = 0;\n    this.bo_l_weight = new_float$2(Encoder.SBMAX_l);\n    this.bo_s_weight = new_float$2(Encoder.SBMAX_s);\n  }\n  function LowPassHighPass() {\n    this.lowerlimit = 0;\n  }\n  function BandPass(bitrate, lPass) {\n    this.lowpass = lPass;\n  }\n  var LAME_ID = 4294479419;\n  function lame_init_old(gfp) {\n    var gfc;\n    gfp.class_id = LAME_ID;\n    gfc = gfp.internal_flags = new LameInternalFlags$1();\n    gfp.mode = MPEGMode.NOT_SET;\n    gfp.original = 1;\n    gfp.in_samplerate = 44100;\n    gfp.num_channels = 2;\n    gfp.num_samples = -1;\n    gfp.bWriteVbrTag = true;\n    gfp.quality = -1;\n    gfp.short_blocks = null;\n    gfc.subblock_gain = -1;\n    gfp.lowpassfreq = 0;\n    gfp.highpassfreq = 0;\n    gfp.lowpasswidth = -1;\n    gfp.highpasswidth = -1;\n    gfp.VBR = VbrMode$3.vbr_off;\n    gfp.VBR_q = 4;\n    gfp.ATHcurve = -1;\n    gfp.VBR_mean_bitrate_kbps = 128;\n    gfp.VBR_min_bitrate_kbps = 0;\n    gfp.VBR_max_bitrate_kbps = 0;\n    gfp.VBR_hard_min = 0;\n    gfc.VBR_min_bitrate = 1;\n    gfc.VBR_max_bitrate = 13;\n    gfp.quant_comp = -1;\n    gfp.quant_comp_short = -1;\n    gfp.msfix = -1;\n    gfc.resample_ratio = 1;\n    gfc.OldValue[0] = 180;\n    gfc.OldValue[1] = 180;\n    gfc.CurrentStep[0] = 4;\n    gfc.CurrentStep[1] = 4;\n    gfc.masking_lower = 1;\n    gfc.nsPsy.attackthre = -1;\n    gfc.nsPsy.attackthre_s = -1;\n    gfp.scale = -1;\n    gfp.athaa_type = -1;\n    gfp.ATHtype = -1;\n    gfp.athaa_loudapprox = -1;\n    gfp.athaa_sensitivity = 0;\n    gfp.useTemporal = null;\n    gfp.interChRatio = -1;\n    gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n    gfp.encoder_padding = 0;\n    gfc.mf_size = Encoder.ENCDELAY - Encoder.MDCTDELAY;\n    gfp.findReplayGain = false;\n    gfp.decode_on_the_fly = false;\n    gfc.decode_on_the_fly = false;\n    gfc.findReplayGain = false;\n    gfc.findPeakSample = false;\n    gfc.RadioGain = 0;\n    gfc.AudiophileGain = 0;\n    gfc.noclipGainChange = 0;\n    gfc.noclipScale = -1;\n    gfp.preset = 0;\n    gfp.write_id3tag_automatic = true;\n    return 0;\n  }\n  this.lame_init = function() {\n    var gfp = new LameGlobalFlags();\n    lame_init_old(gfp);\n    gfp.lame_allocated_gfp = 1;\n    return gfp;\n  };\n  function filter_coef(x) {\n    if (x > 1)\n      return 0;\n    if (x <= 0)\n      return 1;\n    return Math.cos(Math.PI / 2 * x);\n  }\n  this.nearestBitrateFullIndex = function(bitrate) {\n    var full_bitrate_table = [\n      8,\n      16,\n      24,\n      32,\n      40,\n      48,\n      56,\n      64,\n      80,\n      96,\n      112,\n      128,\n      160,\n      192,\n      224,\n      256,\n      320\n    ];\n    var lower_range = 0;\n    var lower_range_kbps = 0;\n    var upper_range = 0;\n    var upper_range_kbps = 0;\n    upper_range_kbps = full_bitrate_table[16];\n    upper_range = 16;\n    lower_range_kbps = full_bitrate_table[16];\n    lower_range = 16;\n    for (var b = 0; b < 16; b++) {\n      if (Math.max(bitrate, full_bitrate_table[b + 1]) != bitrate) {\n        upper_range_kbps = full_bitrate_table[b + 1];\n        upper_range = b + 1;\n        lower_range_kbps = full_bitrate_table[b];\n        lower_range = b;\n        break;\n      }\n    }\n    if (upper_range_kbps - bitrate > bitrate - lower_range_kbps) {\n      return lower_range;\n    }\n    return upper_range;\n  };\n  function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n    var suggested_samplefreq = 44100;\n    if (input_samplefreq >= 48e3)\n      suggested_samplefreq = 48e3;\n    else if (input_samplefreq >= 44100)\n      suggested_samplefreq = 44100;\n    else if (input_samplefreq >= 32e3)\n      suggested_samplefreq = 32e3;\n    else if (input_samplefreq >= 24e3)\n      suggested_samplefreq = 24e3;\n    else if (input_samplefreq >= 22050)\n      suggested_samplefreq = 22050;\n    else if (input_samplefreq >= 16e3)\n      suggested_samplefreq = 16e3;\n    else if (input_samplefreq >= 12e3)\n      suggested_samplefreq = 12e3;\n    else if (input_samplefreq >= 11025)\n      suggested_samplefreq = 11025;\n    else if (input_samplefreq >= 8e3)\n      suggested_samplefreq = 8e3;\n    if (lowpassfreq == -1)\n      return suggested_samplefreq;\n    if (lowpassfreq <= 15960)\n      suggested_samplefreq = 44100;\n    if (lowpassfreq <= 15250)\n      suggested_samplefreq = 32e3;\n    if (lowpassfreq <= 11220)\n      suggested_samplefreq = 24e3;\n    if (lowpassfreq <= 9970)\n      suggested_samplefreq = 22050;\n    if (lowpassfreq <= 7230)\n      suggested_samplefreq = 16e3;\n    if (lowpassfreq <= 5420)\n      suggested_samplefreq = 12e3;\n    if (lowpassfreq <= 4510)\n      suggested_samplefreq = 11025;\n    if (lowpassfreq <= 3970)\n      suggested_samplefreq = 8e3;\n    if (input_samplefreq < suggested_samplefreq) {\n      if (input_samplefreq > 44100) {\n        return 48e3;\n      }\n      if (input_samplefreq > 32e3) {\n        return 44100;\n      }\n      if (input_samplefreq > 24e3) {\n        return 32e3;\n      }\n      if (input_samplefreq > 22050) {\n        return 24e3;\n      }\n      if (input_samplefreq > 16e3) {\n        return 22050;\n      }\n      if (input_samplefreq > 12e3) {\n        return 16e3;\n      }\n      if (input_samplefreq > 11025) {\n        return 12e3;\n      }\n      if (input_samplefreq > 8e3) {\n        return 11025;\n      }\n      return 8e3;\n    }\n    return suggested_samplefreq;\n  }\n  function SmpFrqIndex(sample_freq, gpf) {\n    switch (sample_freq) {\n      case 44100:\n        gpf.version = 1;\n        return 0;\n      case 48e3:\n        gpf.version = 1;\n        return 1;\n      case 32e3:\n        gpf.version = 1;\n        return 2;\n      case 22050:\n        gpf.version = 0;\n        return 0;\n      case 24e3:\n        gpf.version = 0;\n        return 1;\n      case 16e3:\n        gpf.version = 0;\n        return 2;\n      case 11025:\n        gpf.version = 0;\n        return 0;\n      case 12e3:\n        gpf.version = 0;\n        return 1;\n      case 8e3:\n        gpf.version = 0;\n        return 2;\n      default:\n        gpf.version = 0;\n        return -1;\n    }\n  }\n  function FindNearestBitrate(bRate, version2, samplerate) {\n    if (samplerate < 16e3)\n      version2 = 2;\n    var bitrate = Tables$1.bitrate_table[version2][1];\n    for (var i = 2; i <= 14; i++) {\n      if (Tables$1.bitrate_table[version2][i] > 0) {\n        if (Math.abs(Tables$1.bitrate_table[version2][i] - bRate) < Math.abs(bitrate - bRate)) {\n          bitrate = Tables$1.bitrate_table[version2][i];\n        }\n      }\n    }\n    return bitrate;\n  }\n  function BitrateIndex(bRate, version2, samplerate) {\n    if (samplerate < 16e3)\n      version2 = 2;\n    for (var i = 0; i <= 14; i++) {\n      if (Tables$1.bitrate_table[version2][i] > 0) {\n        if (Tables$1.bitrate_table[version2][i] == bRate) {\n          return i;\n        }\n      }\n    }\n    return -1;\n  }\n  function optimum_bandwidth(lh, bitrate) {\n    var freq_map = [\n      new BandPass(8, 2e3),\n      new BandPass(16, 3700),\n      new BandPass(24, 3900),\n      new BandPass(32, 5500),\n      new BandPass(40, 7e3),\n      new BandPass(48, 7500),\n      new BandPass(56, 1e4),\n      new BandPass(64, 11e3),\n      new BandPass(80, 13500),\n      new BandPass(96, 15100),\n      new BandPass(112, 15600),\n      new BandPass(128, 17e3),\n      new BandPass(160, 17500),\n      new BandPass(192, 18600),\n      new BandPass(224, 19400),\n      new BandPass(256, 19700),\n      new BandPass(320, 20500)\n    ];\n    var table_index = self2.nearestBitrateFullIndex(bitrate);\n    lh.lowerlimit = freq_map[table_index].lowpass;\n  }\n  function lame_init_params_ppflt(gfp) {\n    var gfc = gfp.internal_flags;\n    var lowpass_band = 32;\n    var highpass_band = -1;\n    if (gfc.lowpass1 > 0) {\n      var minband = 999;\n      for (var band = 0; band <= 31; band++) {\n        var freq = band / 31;\n        if (freq >= gfc.lowpass2) {\n          lowpass_band = Math.min(lowpass_band, band);\n        }\n        if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n          minband = Math.min(minband, band);\n        }\n      }\n      if (minband == 999) {\n        gfc.lowpass1 = (lowpass_band - 0.75) / 31;\n      } else {\n        gfc.lowpass1 = (minband - 0.75) / 31;\n      }\n      gfc.lowpass2 = lowpass_band / 31;\n    }\n    if (gfc.highpass2 > 0) {\n      if (gfc.highpass2 < 0.9 * (0.75 / 31)) {\n        gfc.highpass1 = 0;\n        gfc.highpass2 = 0;\n        System$2.err.println(\n          \"Warning: highpass filter disabled.  highpass frequency too small\\n\"\n        );\n      }\n    }\n    if (gfc.highpass2 > 0) {\n      var maxband = -1;\n      for (var band = 0; band <= 31; band++) {\n        var freq = band / 31;\n        if (freq <= gfc.highpass1) {\n          highpass_band = Math.max(highpass_band, band);\n        }\n        if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n          maxband = Math.max(maxband, band);\n        }\n      }\n      gfc.highpass1 = highpass_band / 31;\n      if (maxband == -1) {\n        gfc.highpass2 = (highpass_band + 0.75) / 31;\n      } else {\n        gfc.highpass2 = (maxband + 0.75) / 31;\n      }\n    }\n    for (var band = 0; band < 32; band++) {\n      var fc1, fc2;\n      var freq = band / 31;\n      if (gfc.highpass2 > gfc.highpass1) {\n        fc1 = filter_coef(\n          (gfc.highpass2 - freq) / (gfc.highpass2 - gfc.highpass1 + 1e-20)\n        );\n      } else {\n        fc1 = 1;\n      }\n      if (gfc.lowpass2 > gfc.lowpass1) {\n        fc2 = filter_coef(\n          (freq - gfc.lowpass1) / (gfc.lowpass2 - gfc.lowpass1 + 1e-20)\n        );\n      } else {\n        fc2 = 1;\n      }\n      gfc.amp_filter[band] = fc1 * fc2;\n    }\n  }\n  function lame_init_qval(gfp) {\n    var gfc = gfp.internal_flags;\n    switch (gfp.quality) {\n      default:\n      case 9:\n        gfc.psymodel = 0;\n        gfc.noise_shaping = 0;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 8:\n        gfp.quality = 7;\n      case 7:\n        gfc.psymodel = 1;\n        gfc.noise_shaping = 0;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 6:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 5:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 4:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 3:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 1;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 2:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        if (gfc.substep_shaping == 0)\n          gfc.substep_shaping = 2;\n        gfc.noise_shaping_amp = 1;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 1:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        if (gfc.substep_shaping == 0)\n          gfc.substep_shaping = 2;\n        gfc.noise_shaping_amp = 2;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 0:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        if (gfc.substep_shaping == 0)\n          gfc.substep_shaping = 2;\n        gfc.noise_shaping_amp = 2;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n    }\n  }\n  function lame_init_bitstream(gfp) {\n    var gfc = gfp.internal_flags;\n    gfp.frameNum = 0;\n    if (gfp.write_id3tag_automatic) {\n      id3.id3tag_write_v2(gfp);\n    }\n    gfc.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n    gfc.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n    gfc.PeakSample = 0;\n    if (gfp.bWriteVbrTag)\n      vbr.InitVbrTag(gfp);\n  }\n  this.lame_init_params = function(gfp) {\n    var gfc = gfp.internal_flags;\n    gfc.Class_ID = 0;\n    if (gfc.ATH == null)\n      gfc.ATH = new ATH();\n    if (gfc.PSY == null)\n      gfc.PSY = new PSY();\n    if (gfc.rgdata == null)\n      gfc.rgdata = new ReplayGain();\n    gfc.channels_in = gfp.num_channels;\n    if (gfc.channels_in == 1)\n      gfp.mode = MPEGMode.MONO;\n    gfc.channels_out = gfp.mode == MPEGMode.MONO ? 1 : 2;\n    gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n    if (gfp.mode == MPEGMode.MONO)\n      gfp.force_ms = false;\n    if (gfp.VBR == VbrMode$3.vbr_off && gfp.VBR_mean_bitrate_kbps != 128 && gfp.brate == 0) {\n      gfp.brate = gfp.VBR_mean_bitrate_kbps;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off || gfp.VBR == VbrMode$3.vbr_mtrh || gfp.VBR == VbrMode$3.vbr_mt)\n      ;\n    else {\n      gfp.free_format = false;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off && gfp.brate == 0) {\n      if (BitStream$1.EQ(gfp.compression_ratio, 0))\n        gfp.compression_ratio = 11.025;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off && gfp.compression_ratio > 0) {\n      if (gfp.out_samplerate == 0) {\n        gfp.out_samplerate = map2MP3Frequency(int(0.97 * gfp.in_samplerate));\n      }\n      gfp.brate = 0 | gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.compression_ratio);\n      gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n      if (!gfp.free_format) {\n        gfp.brate = FindNearestBitrate(\n          gfp.brate,\n          gfp.version,\n          gfp.out_samplerate\n        );\n      }\n    }\n    if (gfp.out_samplerate != 0) {\n      if (gfp.out_samplerate < 16e3) {\n        gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n        gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 64);\n      } else if (gfp.out_samplerate < 32e3) {\n        gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n        gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 160);\n      } else {\n        gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 32);\n        gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n      }\n    }\n    if (gfp.lowpassfreq == 0) {\n      var lowpass = 16e3;\n      switch (gfp.VBR) {\n        case VbrMode$3.vbr_off: {\n          var lh = new LowPassHighPass();\n          optimum_bandwidth(lh, gfp.brate);\n          lowpass = lh.lowerlimit;\n          break;\n        }\n        case VbrMode$3.vbr_abr: {\n          var lh = new LowPassHighPass();\n          optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n          lowpass = lh.lowerlimit;\n          break;\n        }\n        case VbrMode$3.vbr_rh: {\n          var x = [\n            19500,\n            19e3,\n            18600,\n            18e3,\n            17500,\n            16e3,\n            15600,\n            14900,\n            12500,\n            1e4,\n            3950\n          ];\n          if (gfp.VBR_q >= 0 && gfp.VBR_q <= 9) {\n            var a = x[gfp.VBR_q];\n            var b = x[gfp.VBR_q + 1];\n            var m = gfp.VBR_q_frac;\n            lowpass = linear_int(a, b, m);\n          } else {\n            lowpass = 19500;\n          }\n          break;\n        }\n        default: {\n          var x = [\n            19500,\n            19e3,\n            18500,\n            18e3,\n            17500,\n            16500,\n            15500,\n            14500,\n            12500,\n            9500,\n            3950\n          ];\n          if (gfp.VBR_q >= 0 && gfp.VBR_q <= 9) {\n            var a = x[gfp.VBR_q];\n            var b = x[gfp.VBR_q + 1];\n            var m = gfp.VBR_q_frac;\n            lowpass = linear_int(a, b, m);\n          } else {\n            lowpass = 19500;\n          }\n        }\n      }\n      if (gfp.mode == MPEGMode.MONO && (gfp.VBR == VbrMode$3.vbr_off || gfp.VBR == VbrMode$3.vbr_abr)) {\n        lowpass *= 1.5;\n      }\n      gfp.lowpassfreq = lowpass | 0;\n    }\n    if (gfp.out_samplerate == 0) {\n      if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n        gfp.lowpassfreq = gfp.in_samplerate / 2;\n      }\n      gfp.out_samplerate = optimum_samplefreq(\n        gfp.lowpassfreq | 0,\n        gfp.in_samplerate\n      );\n    }\n    gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n    gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n    if (gfp.VBR == VbrMode$3.vbr_off) {\n      gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.brate);\n    }\n    if (gfp.VBR == VbrMode$3.vbr_abr) {\n      gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.VBR_mean_bitrate_kbps);\n    }\n    if (!gfp.bWriteVbrTag) {\n      gfp.findReplayGain = false;\n      gfp.decode_on_the_fly = false;\n      gfc.findPeakSample = false;\n    }\n    gfc.findReplayGain = gfp.findReplayGain;\n    gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n    if (gfc.decode_on_the_fly)\n      gfc.findPeakSample = true;\n    if (gfc.findReplayGain) {\n      if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n        gfp.internal_flags = null;\n        return -6;\n      }\n    }\n    if (gfc.decode_on_the_fly && !gfp.decode_only) {\n      if (gfc.hip != null) {\n        mpglib.hip_decode_exit(gfc.hip);\n      }\n      gfc.hip = mpglib.hip_decode_init();\n    }\n    gfc.mode_gr = gfp.out_samplerate <= 24e3 ? 1 : 2;\n    gfp.framesize = 576 * gfc.mode_gr;\n    gfp.encoder_delay = Encoder.ENCDELAY;\n    gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n    switch (gfp.VBR) {\n      case VbrMode$3.vbr_mt:\n      case VbrMode$3.vbr_rh:\n      case VbrMode$3.vbr_mtrh:\n        {\n          var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, 15, 16.5];\n          gfp.compression_ratio = cmp[gfp.VBR_q];\n        }\n        break;\n      case VbrMode$3.vbr_abr:\n        gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.VBR_mean_bitrate_kbps);\n        break;\n      default:\n        gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.brate);\n        break;\n    }\n    if (gfp.mode == MPEGMode.NOT_SET) {\n      gfp.mode = MPEGMode.JOINT_STEREO;\n    }\n    if (gfp.highpassfreq > 0) {\n      gfc.highpass1 = 2 * gfp.highpassfreq;\n      if (gfp.highpasswidth >= 0) {\n        gfc.highpass2 = 2 * (gfp.highpassfreq + gfp.highpasswidth);\n      } else {\n        gfc.highpass2 = (1 + 0) * 2 * gfp.highpassfreq;\n      }\n      gfc.highpass1 /= gfp.out_samplerate;\n      gfc.highpass2 /= gfp.out_samplerate;\n    } else {\n      gfc.highpass1 = 0;\n      gfc.highpass2 = 0;\n    }\n    if (gfp.lowpassfreq > 0) {\n      gfc.lowpass2 = 2 * gfp.lowpassfreq;\n      if (gfp.lowpasswidth >= 0) {\n        gfc.lowpass1 = 2 * (gfp.lowpassfreq - gfp.lowpasswidth);\n        if (gfc.lowpass1 < 0)\n          gfc.lowpass1 = 0;\n      } else {\n        gfc.lowpass1 = (1 - 0) * 2 * gfp.lowpassfreq;\n      }\n      gfc.lowpass1 /= gfp.out_samplerate;\n      gfc.lowpass2 /= gfp.out_samplerate;\n    } else {\n      gfc.lowpass1 = 0;\n      gfc.lowpass2 = 0;\n    }\n    lame_init_params_ppflt(gfp);\n    gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n    if (gfc.samplerate_index < 0) {\n      gfp.internal_flags = null;\n      return -1;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off) {\n      if (gfp.free_format) {\n        gfc.bitrate_index = 0;\n      } else {\n        gfp.brate = FindNearestBitrate(\n          gfp.brate,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        gfc.bitrate_index = BitrateIndex(\n          gfp.brate,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        if (gfc.bitrate_index <= 0) {\n          gfp.internal_flags = null;\n          return -1;\n        }\n      }\n    } else {\n      gfc.bitrate_index = 1;\n    }\n    if (gfp.analysis)\n      gfp.bWriteVbrTag = false;\n    if (gfc.pinfo != null)\n      gfp.bWriteVbrTag = false;\n    bs.init_bit_stream_w(gfc);\n    var j = gfc.samplerate_index + 3 * gfp.version + 6 * (gfp.out_samplerate < 16e3 ? 1 : 0);\n    for (var i = 0; i < Encoder.SBMAX_l + 1; i++) {\n      gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n    }\n    for (var i = 0; i < Encoder.PSFB21 + 1; i++) {\n      var size2 = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21]) / Encoder.PSFB21;\n      var start = gfc.scalefac_band.l[21] + i * size2;\n      gfc.scalefac_band.psfb21[i] = start;\n    }\n    gfc.scalefac_band.psfb21[Encoder.PSFB21] = 576;\n    for (var i = 0; i < Encoder.SBMAX_s + 1; i++) {\n      gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n    }\n    for (var i = 0; i < Encoder.PSFB12 + 1; i++) {\n      var size2 = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) / Encoder.PSFB12;\n      var start = gfc.scalefac_band.s[12] + i * size2;\n      gfc.scalefac_band.psfb12[i] = start;\n    }\n    gfc.scalefac_band.psfb12[Encoder.PSFB12] = 192;\n    if (gfp.version == 1) {\n      gfc.sideinfo_len = gfc.channels_out == 1 ? 4 + 17 : 4 + 32;\n    } else\n      gfc.sideinfo_len = gfc.channels_out == 1 ? 4 + 9 : 4 + 17;\n    if (gfp.error_protection)\n      gfc.sideinfo_len += 2;\n    lame_init_bitstream(gfp);\n    gfc.Class_ID = LAME_ID;\n    {\n      var k;\n      for (k = 0; k < 19; k++) {\n        gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n      }\n      if (gfp.ATHtype == -1)\n        gfp.ATHtype = 4;\n    }\n    assert$4(gfp.VBR_q <= 9);\n    assert$4(gfp.VBR_q >= 0);\n    switch (gfp.VBR) {\n      case VbrMode$3.vbr_mt:\n        gfp.VBR = VbrMode$3.vbr_mtrh;\n      case VbrMode$3.vbr_mtrh: {\n        if (gfp.useTemporal == null) {\n          gfp.useTemporal = false;\n        }\n        p2.apply_preset(gfp, 500 - gfp.VBR_q * 10, 0);\n        if (gfp.quality < 0)\n          gfp.quality = LAME_DEFAULT_QUALITY;\n        if (gfp.quality < 5)\n          gfp.quality = 0;\n        if (gfp.quality > 5)\n          gfp.quality = 5;\n        gfc.PSY.mask_adjust = gfp.maskingadjust;\n        gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n        if (gfp.experimentalY)\n          gfc.sfb21_extra = false;\n        else\n          gfc.sfb21_extra = gfp.out_samplerate > 44e3;\n        gfc.iteration_loop = new VBRNewIterationLoop(qu);\n        break;\n      }\n      case VbrMode$3.vbr_rh: {\n        p2.apply_preset(gfp, 500 - gfp.VBR_q * 10, 0);\n        gfc.PSY.mask_adjust = gfp.maskingadjust;\n        gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n        if (gfp.experimentalY)\n          gfc.sfb21_extra = false;\n        else\n          gfc.sfb21_extra = gfp.out_samplerate > 44e3;\n        if (gfp.quality > 6)\n          gfp.quality = 6;\n        if (gfp.quality < 0)\n          gfp.quality = LAME_DEFAULT_QUALITY;\n        gfc.iteration_loop = new VBROldIterationLoop(qu);\n        break;\n      }\n      default: {\n        var vbrmode;\n        gfc.sfb21_extra = false;\n        if (gfp.quality < 0)\n          gfp.quality = LAME_DEFAULT_QUALITY;\n        vbrmode = gfp.VBR;\n        if (vbrmode == VbrMode$3.vbr_off)\n          gfp.VBR_mean_bitrate_kbps = gfp.brate;\n        p2.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n        gfp.VBR = vbrmode;\n        gfc.PSY.mask_adjust = gfp.maskingadjust;\n        gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n        if (vbrmode == VbrMode$3.vbr_off) {\n          gfc.iteration_loop = new CBRNewIterationLoop(qu);\n        } else {\n          gfc.iteration_loop = new ABRIterationLoop(qu);\n        }\n        break;\n      }\n    }\n    assert$4(gfp.scale >= 0);\n    if (gfp.VBR != VbrMode$3.vbr_off) {\n      gfc.VBR_min_bitrate = 1;\n      gfc.VBR_max_bitrate = 14;\n      if (gfp.out_samplerate < 16e3)\n        gfc.VBR_max_bitrate = 8;\n      if (gfp.VBR_min_bitrate_kbps != 0) {\n        gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n          gfp.VBR_min_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        gfc.VBR_min_bitrate = BitrateIndex(\n          gfp.VBR_min_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        if (gfc.VBR_min_bitrate < 0)\n          return -1;\n      }\n      if (gfp.VBR_max_bitrate_kbps != 0) {\n        gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n          gfp.VBR_max_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        gfc.VBR_max_bitrate = BitrateIndex(\n          gfp.VBR_max_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        if (gfc.VBR_max_bitrate < 0)\n          return -1;\n      }\n      gfp.VBR_min_bitrate_kbps = Tables$1.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n      gfp.VBR_max_bitrate_kbps = Tables$1.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n      gfp.VBR_mean_bitrate_kbps = Math.min(\n        Tables$1.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n        gfp.VBR_mean_bitrate_kbps\n      );\n      gfp.VBR_mean_bitrate_kbps = Math.max(\n        Tables$1.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n        gfp.VBR_mean_bitrate_kbps\n      );\n    }\n    if (gfp.tune) {\n      gfc.PSY.mask_adjust += gfp.tune_value_a;\n      gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n    }\n    lame_init_qval(gfp);\n    assert$4(gfp.scale >= 0);\n    if (gfp.athaa_type < 0)\n      gfc.ATH.useAdjust = 3;\n    else\n      gfc.ATH.useAdjust = gfp.athaa_type;\n    gfc.ATH.aaSensitivityP = Math.pow(10, gfp.athaa_sensitivity / -10);\n    if (gfp.short_blocks == null) {\n      gfp.short_blocks = ShortBlock$1.short_block_allowed;\n    }\n    if (gfp.short_blocks == ShortBlock$1.short_block_allowed && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n      gfp.short_blocks = ShortBlock$1.short_block_coupled;\n    }\n    if (gfp.quant_comp < 0)\n      gfp.quant_comp = 1;\n    if (gfp.quant_comp_short < 0)\n      gfp.quant_comp_short = 0;\n    if (gfp.msfix < 0)\n      gfp.msfix = 0;\n    gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n    if (gfp.internal_flags.nsPsy.attackthre < 0) {\n      gfp.internal_flags.nsPsy.attackthre = PsyModel.NSATTACKTHRE;\n    }\n    if (gfp.internal_flags.nsPsy.attackthre_s < 0) {\n      gfp.internal_flags.nsPsy.attackthre_s = PsyModel.NSATTACKTHRE_S;\n    }\n    assert$4(gfp.scale >= 0);\n    if (gfp.scale < 0)\n      gfp.scale = 1;\n    if (gfp.ATHtype < 0)\n      gfp.ATHtype = 4;\n    if (gfp.ATHcurve < 0)\n      gfp.ATHcurve = 4;\n    if (gfp.athaa_loudapprox < 0)\n      gfp.athaa_loudapprox = 2;\n    if (gfp.interChRatio < 0)\n      gfp.interChRatio = 0;\n    if (gfp.useTemporal == null)\n      gfp.useTemporal = true;\n    gfc.slot_lag = gfc.frac_SpF = 0;\n    if (gfp.VBR == VbrMode$3.vbr_off) {\n      gfc.slot_lag = gfc.frac_SpF = (gfp.version + 1) * 72e3 * gfp.brate % gfp.out_samplerate | 0;\n    }\n    qupvt.iteration_init(gfp);\n    psy.psymodel_init(gfp);\n    assert$4(gfp.scale >= 0);\n    return 0;\n  };\n  function update_inbuffer_size(gfc, nsamples) {\n    if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n      gfc.in_buffer_0 = new_float$2(nsamples);\n      gfc.in_buffer_1 = new_float$2(nsamples);\n      gfc.in_buffer_nsamples = nsamples;\n    }\n  }\n  this.lame_encode_flush = function(gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n    var gfc = gfp.internal_flags;\n    var buffer = new_short_n([2, 1152]);\n    var imp3 = 0;\n    var mp3count;\n    var mp3buffer_size_remaining;\n    var end_padding;\n    var frames_left;\n    var samples_to_encode = gfc.mf_samples_to_encode - Encoder.POSTDELAY;\n    var mf_needed = calcNeeded(gfp);\n    if (gfc.mf_samples_to_encode < 1) {\n      return 0;\n    }\n    mp3count = 0;\n    if (gfp.in_samplerate != gfp.out_samplerate) {\n      samples_to_encode += 16 * gfp.out_samplerate / gfp.in_samplerate;\n    }\n    end_padding = gfp.framesize - samples_to_encode % gfp.framesize;\n    if (end_padding < 576)\n      end_padding += gfp.framesize;\n    gfp.encoder_padding = end_padding;\n    frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n    while (frames_left > 0 && imp3 >= 0) {\n      var bunch = mf_needed - gfc.mf_size;\n      var frame_num = gfp.frameNum;\n      bunch *= gfp.in_samplerate;\n      bunch /= gfp.out_samplerate;\n      if (bunch > 1152)\n        bunch = 1152;\n      if (bunch < 1)\n        bunch = 1;\n      mp3buffer_size_remaining = mp3buffer_size - mp3count;\n      if (mp3buffer_size == 0)\n        mp3buffer_size_remaining = 0;\n      imp3 = this.lame_encode_buffer(\n        gfp,\n        buffer[0],\n        buffer[1],\n        bunch,\n        mp3buffer,\n        mp3bufferPos,\n        mp3buffer_size_remaining\n      );\n      mp3bufferPos += imp3;\n      mp3count += imp3;\n      frames_left -= frame_num != gfp.frameNum ? 1 : 0;\n    }\n    gfc.mf_samples_to_encode = 0;\n    if (imp3 < 0) {\n      return imp3;\n    }\n    mp3buffer_size_remaining = mp3buffer_size - mp3count;\n    if (mp3buffer_size == 0)\n      mp3buffer_size_remaining = 0;\n    bs.flush_bitstream(gfp);\n    imp3 = bs.copy_buffer(\n      gfc,\n      mp3buffer,\n      mp3bufferPos,\n      mp3buffer_size_remaining,\n      1\n    );\n    if (imp3 < 0) {\n      return imp3;\n    }\n    mp3bufferPos += imp3;\n    mp3count += imp3;\n    mp3buffer_size_remaining = mp3buffer_size - mp3count;\n    if (mp3buffer_size == 0)\n      mp3buffer_size_remaining = 0;\n    if (gfp.write_id3tag_automatic) {\n      id3.id3tag_write_v1(gfp);\n      imp3 = bs.copy_buffer(\n        gfc,\n        mp3buffer,\n        mp3bufferPos,\n        mp3buffer_size_remaining,\n        0\n      );\n      if (imp3 < 0) {\n        return imp3;\n      }\n      mp3count += imp3;\n    }\n    return mp3count;\n  };\n  this.lame_encode_buffer = function(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n    var gfc = gfp.internal_flags;\n    var in_buffer = [null, null];\n    if (gfc.Class_ID != LAME_ID)\n      return -3;\n    if (nsamples == 0)\n      return 0;\n    update_inbuffer_size(gfc, nsamples);\n    in_buffer[0] = gfc.in_buffer_0;\n    in_buffer[1] = gfc.in_buffer_1;\n    for (var i = 0; i < nsamples; i++) {\n      in_buffer[0][i] = buffer_l[i];\n      if (gfc.channels_in > 1)\n        in_buffer[1][i] = buffer_r[i];\n    }\n    return lame_encode_buffer_sample(\n      gfp,\n      in_buffer[0],\n      in_buffer[1],\n      nsamples,\n      mp3buf,\n      mp3bufPos,\n      mp3buf_size\n    );\n  };\n  function calcNeeded(gfp) {\n    var mf_needed = Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET;\n    mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n    return mf_needed;\n  }\n  function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n    var gfc = gfp.internal_flags;\n    var mp3size = 0;\n    var ret;\n    var i;\n    var ch;\n    var mf_needed;\n    var mp3out;\n    var mfbuf = [null, null];\n    var in_buffer = [null, null];\n    if (gfc.Class_ID != LAME_ID)\n      return -3;\n    if (nsamples == 0)\n      return 0;\n    mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n    if (mp3out < 0)\n      return mp3out;\n    mp3bufPos += mp3out;\n    mp3size += mp3out;\n    in_buffer[0] = buffer_l;\n    in_buffer[1] = buffer_r;\n    if (BitStream$1.NEQ(gfp.scale, 0) && BitStream$1.NEQ(gfp.scale, 1)) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[0][i] *= gfp.scale;\n        if (gfc.channels_out == 2)\n          in_buffer[1][i] *= gfp.scale;\n      }\n    }\n    if (BitStream$1.NEQ(gfp.scale_left, 0) && BitStream$1.NEQ(gfp.scale_left, 1)) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[0][i] *= gfp.scale_left;\n      }\n    }\n    if (BitStream$1.NEQ(gfp.scale_right, 0) && BitStream$1.NEQ(gfp.scale_right, 1)) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[1][i] *= gfp.scale_right;\n      }\n    }\n    if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[0][i] = 0.5 * (in_buffer[0][i] + in_buffer[1][i]);\n        in_buffer[1][i] = 0;\n      }\n    }\n    mf_needed = calcNeeded(gfp);\n    mfbuf[0] = gfc.mfbuf[0];\n    mfbuf[1] = gfc.mfbuf[1];\n    var in_bufferPos = 0;\n    while (nsamples > 0) {\n      var in_buffer_ptr = [null, null];\n      var n_in = 0;\n      var n_out = 0;\n      in_buffer_ptr[0] = in_buffer[0];\n      in_buffer_ptr[1] = in_buffer[1];\n      var inOut = new InOut();\n      fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples, inOut);\n      n_in = inOut.n_in;\n      n_out = inOut.n_out;\n      if (gfc.findReplayGain && !gfc.decode_on_the_fly) {\n        if (ga.AnalyzeSamples(\n          gfc.rgdata,\n          mfbuf[0],\n          gfc.mf_size,\n          mfbuf[1],\n          gfc.mf_size,\n          n_out,\n          gfc.channels_out\n        ) == GainAnalysis.GAIN_ANALYSIS_ERROR) {\n          return -6;\n        }\n      }\n      nsamples -= n_in;\n      in_bufferPos += n_in;\n      if (gfc.channels_out == 2)\n        ;\n      gfc.mf_size += n_out;\n      assert$4(gfc.mf_size <= LameInternalFlags$1.MFSIZE);\n      if (gfc.mf_samples_to_encode < 1) {\n        gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n      }\n      gfc.mf_samples_to_encode += n_out;\n      if (gfc.mf_size >= mf_needed) {\n        var buf_size = mp3buf_size - mp3size;\n        if (mp3buf_size == 0)\n          buf_size = 0;\n        ret = lame_encode_frame(\n          gfp,\n          mfbuf[0],\n          mfbuf[1],\n          mp3buf,\n          mp3bufPos,\n          buf_size\n        );\n        if (ret < 0)\n          return ret;\n        mp3bufPos += ret;\n        mp3size += ret;\n        gfc.mf_size -= gfp.framesize;\n        gfc.mf_samples_to_encode -= gfp.framesize;\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          for (i = 0; i < gfc.mf_size; i++) {\n            mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n          }\n        }\n      }\n    }\n    return mp3size;\n  }\n  function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n    var ret = self2.enc.lame_encode_mp3_frame(\n      gfp,\n      inbuf_l,\n      inbuf_r,\n      mp3buf,\n      mp3bufPos,\n      mp3buf_size\n    );\n    gfp.frameNum++;\n    return ret;\n  }\n  function InOut() {\n    this.n_in = 0;\n    this.n_out = 0;\n  }\n  function NumUsed() {\n    this.num_used = 0;\n  }\n  function gcd(i, j) {\n    return j != 0 ? gcd(j, i % j) : i;\n  }\n  function blackman(x, fcn, l) {\n    var wcn = Math.PI * fcn;\n    x /= l;\n    if (x < 0)\n      x = 0;\n    if (x > 1)\n      x = 1;\n    var x2 = x - 0.5;\n    var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n    if (Math.abs(x2) < 1e-9)\n      return wcn / Math.PI;\n    else\n      return bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2);\n  }\n  function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n    var gfc = gfp.internal_flags;\n    var i;\n    var j = 0;\n    var k;\n    var bpc = gfp.out_samplerate / gcd(gfp.out_samplerate, gfp.in_samplerate);\n    if (bpc > LameInternalFlags$1.BPC)\n      bpc = LameInternalFlags$1.BPC;\n    var intratio = Math.abs(gfc.resample_ratio - Math.floor(0.5 + gfc.resample_ratio)) < 1e-4 ? 1 : 0;\n    var fcn = 1 / gfc.resample_ratio;\n    if (fcn > 1)\n      fcn = 1;\n    var filter_l = 31;\n    if (filter_l % 2 == 0)\n      --filter_l;\n    filter_l += intratio;\n    var BLACKSIZE = filter_l + 1;\n    if (gfc.fill_buffer_resample_init == 0) {\n      gfc.inbuf_old[0] = new_float$2(BLACKSIZE);\n      gfc.inbuf_old[1] = new_float$2(BLACKSIZE);\n      for (i = 0; i <= 2 * bpc; ++i)\n        gfc.blackfilt[i] = new_float$2(BLACKSIZE);\n      gfc.itime[0] = 0;\n      gfc.itime[1] = 0;\n      for (j = 0; j <= 2 * bpc; j++) {\n        var sum = 0;\n        var offset = (j - bpc) / (2 * bpc);\n        for (i = 0; i <= filter_l; i++) {\n          sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn, filter_l);\n        }\n        for (i = 0; i <= filter_l; i++)\n          gfc.blackfilt[j][i] /= sum;\n      }\n      gfc.fill_buffer_resample_init = 1;\n    }\n    var inbuf_old = gfc.inbuf_old[ch];\n    for (k = 0; k < desired_len; k++) {\n      var time0;\n      var joff;\n      time0 = k * gfc.resample_ratio;\n      j = 0 | Math.floor(time0 - gfc.itime[ch]);\n      if (filter_l + j - filter_l / 2 >= len)\n        break;\n      var offset = time0 - gfc.itime[ch] - (j + 0.5 * (filter_l % 2));\n      joff = 0 | Math.floor(offset * 2 * bpc + bpc + 0.5);\n      var xvalue = 0;\n      for (i = 0; i <= filter_l; ++i) {\n        var j2 = 0 | i + j - filter_l / 2;\n        var y;\n        y = j2 < 0 ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos + j2];\n        xvalue += y * gfc.blackfilt[joff][i];\n      }\n      outbuf[outbufPos + k] = xvalue;\n    }\n    num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n    gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n    if (num_used.num_used >= BLACKSIZE) {\n      for (i = 0; i < BLACKSIZE; i++) {\n        inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i - BLACKSIZE];\n      }\n    } else {\n      var n_shift = BLACKSIZE - num_used.num_used;\n      for (i = 0; i < n_shift; ++i) {\n        inbuf_old[i] = inbuf_old[i + num_used.num_used];\n      }\n      for (j = 0; i < BLACKSIZE; ++i, ++j) {\n        inbuf_old[i] = inbuf[in_bufferPos + j];\n      }\n      assert$4(j == num_used.num_used);\n    }\n    return k;\n  }\n  function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n    var gfc = gfp.internal_flags;\n    if (gfc.resample_ratio < 0.9999 || gfc.resample_ratio > 1.0001) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        var numUsed = new NumUsed();\n        io.n_out = fill_buffer_resample(\n          gfp,\n          mfbuf[ch],\n          gfc.mf_size,\n          gfp.framesize,\n          in_buffer[ch],\n          in_bufferPos,\n          nsamples,\n          numUsed,\n          ch\n        );\n        io.n_in = numUsed.num_used;\n      }\n    } else {\n      io.n_out = Math.min(gfp.framesize, nsamples);\n      io.n_in = io.n_out;\n      for (var i = 0; i < io.n_out; ++i) {\n        mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n        if (gfc.channels_out == 2) {\n          mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n        }\n      }\n    }\n  }\n}\nvar VbrMode$2 = common.VbrMode;\nfunction Presets() {\n  function VBRPresets(qual, comp, compS, y, shThreshold, shThresholdS, adj, adjShort, lower, curve, sens, inter, joint, mod, fix) {\n    this.vbr_q = qual;\n    this.quant_comp = comp;\n    this.quant_comp_s = compS;\n    this.expY = y;\n    this.st_lrm = shThreshold;\n    this.st_s = shThresholdS;\n    this.masking_adj = adj;\n    this.masking_adj_short = adjShort;\n    this.ath_lower = lower;\n    this.ath_curve = curve;\n    this.ath_sensitivity = sens;\n    this.interch = inter;\n    this.safejoint = joint;\n    this.sfb21mod = mod;\n    this.msfix = fix;\n  }\n  function ABRPresets(kbps, comp, compS, joint, fix, shThreshold, shThresholdS, bass, sc, mask, lower, curve, interCh, sfScale) {\n    this.quant_comp = comp;\n    this.quant_comp_s = compS;\n    this.safejoint = joint;\n    this.nsmsfix = fix;\n    this.st_lrm = shThreshold;\n    this.st_s = shThresholdS;\n    this.nsbass = bass;\n    this.scale = sc;\n    this.masking_adj = mask;\n    this.ath_lower = lower;\n    this.ath_curve = curve;\n    this.interch = interCh;\n    this.sfscale = sfScale;\n  }\n  var lame;\n  this.setModules = function(_lame) {\n    lame = _lame;\n  };\n  var vbr_old_switch_map = [\n    new VBRPresets(\n      0,\n      9,\n      9,\n      0,\n      5.2,\n      125,\n      -4.2,\n      -6.3,\n      4.8,\n      1,\n      0,\n      0,\n      2,\n      21,\n      0.97\n    ),\n    new VBRPresets(\n      1,\n      9,\n      9,\n      0,\n      5.3,\n      125,\n      -3.6,\n      -5.6,\n      4.5,\n      1.5,\n      0,\n      0,\n      2,\n      21,\n      1.35\n    ),\n    new VBRPresets(\n      2,\n      9,\n      9,\n      0,\n      5.6,\n      125,\n      -2.2,\n      -3.5,\n      2.8,\n      2,\n      0,\n      0,\n      2,\n      21,\n      1.49\n    ),\n    new VBRPresets(\n      3,\n      9,\n      9,\n      1,\n      5.8,\n      130,\n      -1.8,\n      -2.8,\n      2.6,\n      3,\n      -4,\n      0,\n      2,\n      20,\n      1.64\n    ),\n    new VBRPresets(\n      4,\n      9,\n      9,\n      1,\n      6,\n      135,\n      -0.7,\n      -1.1,\n      1.1,\n      3.5,\n      -8,\n      0,\n      2,\n      0,\n      1.79\n    ),\n    new VBRPresets(\n      5,\n      9,\n      9,\n      1,\n      6.4,\n      140,\n      0.5,\n      0.4,\n      -7.5,\n      4,\n      -12,\n      2e-4,\n      0,\n      0,\n      1.95\n    ),\n    new VBRPresets(\n      6,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      0.67,\n      0.65,\n      -14.7,\n      6.5,\n      -19,\n      4e-4,\n      0,\n      0,\n      2.3\n    ),\n    new VBRPresets(\n      7,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      0.8,\n      0.75,\n      -19.7,\n      8,\n      -22,\n      6e-4,\n      0,\n      0,\n      2.7\n    ),\n    new VBRPresets(\n      8,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      1.2,\n      1.15,\n      -27.5,\n      10,\n      -23,\n      7e-4,\n      0,\n      0,\n      0\n    ),\n    new VBRPresets(\n      9,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      1.6,\n      1.6,\n      -36,\n      11,\n      -25,\n      8e-4,\n      0,\n      0,\n      0\n    ),\n    new VBRPresets(\n      10,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      2,\n      2,\n      -36,\n      12,\n      -25,\n      8e-4,\n      0,\n      0,\n      0\n    )\n  ];\n  var vbr_psy_switch_map = [\n    new VBRPresets(\n      0,\n      9,\n      9,\n      0,\n      4.2,\n      25,\n      -7,\n      -4,\n      7.5,\n      1,\n      0,\n      0,\n      2,\n      26,\n      0.97\n    ),\n    new VBRPresets(\n      1,\n      9,\n      9,\n      0,\n      4.2,\n      25,\n      -5.6,\n      -3.6,\n      4.5,\n      1.5,\n      0,\n      0,\n      2,\n      21,\n      1.35\n    ),\n    new VBRPresets(2, 9, 9, 0, 4.2, 25, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n    new VBRPresets(\n      3,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      -3.4,\n      -1.25,\n      1.1,\n      3,\n      -4,\n      0,\n      2,\n      15,\n      1.64\n    ),\n    new VBRPresets(4, 9, 9, 1, 4.2, 25, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n    new VBRPresets(\n      5,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      -1,\n      1.65,\n      -7.7,\n      4,\n      -12,\n      2e-4,\n      0,\n      0,\n      1.95\n    ),\n    new VBRPresets(\n      6,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      -0,\n      2.47,\n      -7.7,\n      6.5,\n      -19,\n      4e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      7,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      0.5,\n      2,\n      -14.5,\n      8,\n      -22,\n      6e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      8,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      1,\n      2.4,\n      -22,\n      10,\n      -23,\n      7e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      9,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      1.5,\n      2.95,\n      -30,\n      11,\n      -25,\n      8e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      10,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      2,\n      2.95,\n      -36,\n      12,\n      -30,\n      8e-4,\n      0,\n      0,\n      2\n    )\n  ];\n  function apply_vbr_preset(gfp, a, enforce) {\n    var vbr_preset = gfp.VBR == VbrMode$2.vbr_rh ? vbr_old_switch_map : vbr_psy_switch_map;\n    var x = gfp.VBR_q_frac;\n    var p2 = vbr_preset[a];\n    var q = vbr_preset[a + 1];\n    var set2 = p2;\n    p2.st_lrm = p2.st_lrm + x * (q.st_lrm - p2.st_lrm);\n    p2.st_s = p2.st_s + x * (q.st_s - p2.st_s);\n    p2.masking_adj = p2.masking_adj + x * (q.masking_adj - p2.masking_adj);\n    p2.masking_adj_short = p2.masking_adj_short + x * (q.masking_adj_short - p2.masking_adj_short);\n    p2.ath_lower = p2.ath_lower + x * (q.ath_lower - p2.ath_lower);\n    p2.ath_curve = p2.ath_curve + x * (q.ath_curve - p2.ath_curve);\n    p2.ath_sensitivity = p2.ath_sensitivity + x * (q.ath_sensitivity - p2.ath_sensitivity);\n    p2.interch = p2.interch + x * (q.interch - p2.interch);\n    p2.msfix = p2.msfix + x * (q.msfix - p2.msfix);\n    lame_set_VBR_q(gfp, set2.vbr_q);\n    if (enforce != 0)\n      gfp.quant_comp = set2.quant_comp;\n    else if (!(Math.abs(gfp.quant_comp - -1) > 0)) {\n      gfp.quant_comp = set2.quant_comp;\n    }\n    if (enforce != 0)\n      gfp.quant_comp_short = set2.quant_comp_s;\n    else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) {\n      gfp.quant_comp_short = set2.quant_comp_s;\n    }\n    if (set2.expY != 0) {\n      gfp.experimentalY = set2.expY != 0;\n    }\n    if (enforce != 0)\n      gfp.internal_flags.nsPsy.attackthre = set2.st_lrm;\n    else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre = set2.st_lrm;\n    }\n    if (enforce != 0)\n      gfp.internal_flags.nsPsy.attackthre_s = set2.st_s;\n    else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre_s = set2.st_s;\n    }\n    if (enforce != 0)\n      gfp.maskingadjust = set2.masking_adj;\n    else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) {\n      gfp.maskingadjust = set2.masking_adj;\n    }\n    if (enforce != 0)\n      gfp.maskingadjust_short = set2.masking_adj_short;\n    else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n      gfp.maskingadjust_short = set2.masking_adj_short;\n    }\n    if (enforce != 0)\n      gfp.ATHlower = -set2.ath_lower / 10;\n    else if (!(Math.abs(-gfp.ATHlower * 10 - 0) > 0)) {\n      gfp.ATHlower = -set2.ath_lower / 10;\n    }\n    if (enforce != 0)\n      gfp.ATHcurve = set2.ath_curve;\n    else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n      gfp.ATHcurve = set2.ath_curve;\n    if (enforce != 0)\n      gfp.athaa_sensitivity = set2.ath_sensitivity;\n    else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0)) {\n      gfp.athaa_sensitivity = set2.ath_sensitivity;\n    }\n    if (set2.interch > 0) {\n      if (enforce != 0)\n        gfp.interChRatio = set2.interch;\n      else if (!(Math.abs(gfp.interChRatio - -1) > 0)) {\n        gfp.interChRatio = set2.interch;\n      }\n    }\n    if (set2.safejoint > 0) {\n      gfp.exp_nspsytune = gfp.exp_nspsytune | set2.safejoint;\n    }\n    if (set2.sfb21mod > 0) {\n      gfp.exp_nspsytune = gfp.exp_nspsytune | set2.sfb21mod << 20;\n    }\n    if (enforce != 0)\n      gfp.msfix = set2.msfix;\n    else if (!(Math.abs(gfp.msfix - -1) > 0))\n      gfp.msfix = set2.msfix;\n    if (enforce == 0) {\n      gfp.VBR_q = a;\n      gfp.VBR_q_frac = x;\n    }\n  }\n  var abr_switch_map = [\n    new ABRPresets(\n      8,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -30,\n      11,\n      12e-4,\n      1\n    ),\n    new ABRPresets(\n      16,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -25,\n      11,\n      1e-3,\n      1\n    ),\n    new ABRPresets(\n      24,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -20,\n      11,\n      1e-3,\n      1\n    ),\n    new ABRPresets(\n      32,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -15,\n      11,\n      1e-3,\n      1\n    ),\n    new ABRPresets(\n      40,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -10,\n      11,\n      9e-4,\n      1\n    ),\n    new ABRPresets(\n      48,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -10,\n      11,\n      9e-4,\n      1\n    ),\n    new ABRPresets(\n      56,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -6,\n      11,\n      8e-4,\n      1\n    ),\n    new ABRPresets(\n      64,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -2,\n      11,\n      8e-4,\n      1\n    ),\n    new ABRPresets(\n      80,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      0,\n      8,\n      7e-4,\n      1\n    ),\n    new ABRPresets(\n      96,\n      9,\n      9,\n      0,\n      2.5,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      1,\n      5.5,\n      6e-4,\n      1\n    ),\n    new ABRPresets(\n      112,\n      9,\n      9,\n      0,\n      2.25,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      2,\n      4.5,\n      5e-4,\n      1\n    ),\n    new ABRPresets(\n      128,\n      9,\n      9,\n      0,\n      1.95,\n      6.4,\n      140,\n      0,\n      0.95,\n      0,\n      3,\n      4,\n      2e-4,\n      1\n    ),\n    new ABRPresets(\n      160,\n      9,\n      9,\n      1,\n      1.79,\n      6,\n      135,\n      0,\n      0.95,\n      -2,\n      5,\n      3.5,\n      0,\n      1\n    ),\n    new ABRPresets(\n      192,\n      9,\n      9,\n      1,\n      1.49,\n      5.6,\n      125,\n      0,\n      0.97,\n      -4,\n      7,\n      3,\n      0,\n      0\n    ),\n    new ABRPresets(\n      224,\n      9,\n      9,\n      1,\n      1.25,\n      5.2,\n      125,\n      0,\n      0.98,\n      -6,\n      9,\n      2,\n      0,\n      0\n    ),\n    new ABRPresets(\n      256,\n      9,\n      9,\n      1,\n      0.97,\n      5.2,\n      125,\n      0,\n      1,\n      -8,\n      10,\n      1,\n      0,\n      0\n    ),\n    new ABRPresets(\n      320,\n      9,\n      9,\n      1,\n      0.9,\n      5.2,\n      125,\n      0,\n      1,\n      -10,\n      12,\n      0,\n      0,\n      0\n    )\n  ];\n  function apply_abr_preset(gfp, preset, enforce) {\n    var actual_bitrate = preset;\n    var r = lame.nearestBitrateFullIndex(preset);\n    gfp.VBR = VbrMode$2.vbr_abr;\n    gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n    gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n    gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n    gfp.brate = gfp.VBR_mean_bitrate_kbps;\n    if (gfp.VBR_mean_bitrate_kbps > 320) {\n      gfp.disable_reservoir = true;\n    }\n    if (abr_switch_map[r].safejoint > 0) {\n      gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n    }\n    if (abr_switch_map[r].sfscale > 0) {\n      gfp.internal_flags.noise_shaping = 2;\n    }\n    if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n      var k = int(abr_switch_map[r].nsbass * 4);\n      if (k < 0)\n        k += 64;\n      gfp.exp_nspsytune = gfp.exp_nspsytune | k << 2;\n    }\n    if (enforce != 0)\n      gfp.quant_comp = abr_switch_map[r].quant_comp;\n    else if (!(Math.abs(gfp.quant_comp - -1) > 0)) {\n      gfp.quant_comp = abr_switch_map[r].quant_comp;\n    }\n    if (enforce != 0)\n      gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n    else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) {\n      gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n    }\n    if (enforce != 0)\n      gfp.msfix = abr_switch_map[r].nsmsfix;\n    else if (!(Math.abs(gfp.msfix - -1) > 0)) {\n      gfp.msfix = abr_switch_map[r].nsmsfix;\n    }\n    if (enforce != 0) {\n      gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n    } else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n    }\n    if (enforce != 0) {\n      gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n    } else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n    }\n    if (enforce != 0)\n      gfp.scale = abr_switch_map[r].scale;\n    else if (!(Math.abs(gfp.scale - -1) > 0)) {\n      gfp.scale = abr_switch_map[r].scale;\n    }\n    if (enforce != 0)\n      gfp.maskingadjust = abr_switch_map[r].masking_adj;\n    else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) {\n      gfp.maskingadjust = abr_switch_map[r].masking_adj;\n    }\n    if (abr_switch_map[r].masking_adj > 0) {\n      if (enforce != 0) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 0.9;\n      } else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 0.9;\n      }\n    } else {\n      if (enforce != 0) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 1.1;\n      } else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 1.1;\n      }\n    }\n    if (enforce != 0)\n      gfp.ATHlower = -abr_switch_map[r].ath_lower / 10;\n    else if (!(Math.abs(-gfp.ATHlower * 10 - 0) > 0)) {\n      gfp.ATHlower = -abr_switch_map[r].ath_lower / 10;\n    }\n    if (enforce != 0)\n      gfp.ATHcurve = abr_switch_map[r].ath_curve;\n    else if (!(Math.abs(gfp.ATHcurve - -1) > 0)) {\n      gfp.ATHcurve = abr_switch_map[r].ath_curve;\n    }\n    if (enforce != 0)\n      gfp.interChRatio = abr_switch_map[r].interch;\n    else if (!(Math.abs(gfp.interChRatio - -1) > 0)) {\n      gfp.interChRatio = abr_switch_map[r].interch;\n    }\n    return preset;\n  }\n  this.apply_preset = function(gfp, preset, enforce) {\n    switch (preset) {\n      case Lame$1.R3MIX: {\n        preset = Lame$1.V3;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.MEDIUM: {\n        preset = Lame$1.V4;\n        gfp.VBR = VbrMode$2.vbr_rh;\n        break;\n      }\n      case Lame$1.MEDIUM_FAST: {\n        preset = Lame$1.V4;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.STANDARD: {\n        preset = Lame$1.V2;\n        gfp.VBR = VbrMode$2.vbr_rh;\n        break;\n      }\n      case Lame$1.STANDARD_FAST: {\n        preset = Lame$1.V2;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.EXTREME: {\n        preset = Lame$1.V0;\n        gfp.VBR = VbrMode$2.vbr_rh;\n        break;\n      }\n      case Lame$1.EXTREME_FAST: {\n        preset = Lame$1.V0;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.INSANE: {\n        preset = 320;\n        gfp.preset = preset;\n        apply_abr_preset(gfp, preset, enforce);\n        gfp.VBR = VbrMode$2.vbr_off;\n        return preset;\n      }\n    }\n    gfp.preset = preset;\n    {\n      switch (preset) {\n        case Lame$1.V9:\n          apply_vbr_preset(gfp, 9, enforce);\n          return preset;\n        case Lame$1.V8:\n          apply_vbr_preset(gfp, 8, enforce);\n          return preset;\n        case Lame$1.V7:\n          apply_vbr_preset(gfp, 7, enforce);\n          return preset;\n        case Lame$1.V6:\n          apply_vbr_preset(gfp, 6, enforce);\n          return preset;\n        case Lame$1.V5:\n          apply_vbr_preset(gfp, 5, enforce);\n          return preset;\n        case Lame$1.V4:\n          apply_vbr_preset(gfp, 4, enforce);\n          return preset;\n        case Lame$1.V3:\n          apply_vbr_preset(gfp, 3, enforce);\n          return preset;\n        case Lame$1.V2:\n          apply_vbr_preset(gfp, 2, enforce);\n          return preset;\n        case Lame$1.V1:\n          apply_vbr_preset(gfp, 1, enforce);\n          return preset;\n        case Lame$1.V0:\n          apply_vbr_preset(gfp, 0, enforce);\n          return preset;\n      }\n    }\n    if (preset >= 8 && preset <= 320) {\n      return apply_abr_preset(gfp, preset, enforce);\n    }\n    gfp.preset = 0;\n    return preset;\n  };\n  function lame_set_VBR_q(gfp, VBR_q) {\n    var ret = 0;\n    if (VBR_q < 0) {\n      ret = -1;\n      VBR_q = 0;\n    }\n    if (VBR_q > 9) {\n      ret = -1;\n      VBR_q = 9;\n    }\n    gfp.VBR_q = VBR_q;\n    gfp.VBR_q_frac = 0;\n    return ret;\n  }\n}\nfunction VBRQuantize() {\n  this.setModules = function(_qupvt, _tk) {\n  };\n}\nfunction CalcNoiseResult$1() {\n  this.over_noise = 0;\n  this.tot_noise = 0;\n  this.max_noise = 0;\n  this.over_count = 0;\n  this.over_SSD = 0;\n  this.bits = 0;\n}\nvar new_float$1 = common.new_float;\nvar new_int = common.new_int;\nfunction CalcNoiseData() {\n  this.global_gain = 0;\n  this.sfb_count1 = 0;\n  this.step = new_int(39);\n  this.noise = new_float$1(39);\n  this.noise_log = new_float$1(39);\n}\nvar System$1 = common.System;\nvar VbrMode$1 = common.VbrMode;\nvar Util = common.Util;\nvar Arrays$1 = common.Arrays;\nvar new_float = common.new_float;\nvar assert$3 = common.assert;\nfunction Quantize() {\n  var bs;\n  this.rv = null;\n  var rv;\n  this.qupvt = null;\n  var qupvt;\n  var vbr = new VBRQuantize();\n  var tk;\n  this.setModules = function(_bs, _rv, _qupvt, _tk) {\n    bs = _bs;\n    rv = _rv;\n    this.rv = _rv;\n    qupvt = _qupvt;\n    this.qupvt = _qupvt;\n    tk = _tk;\n    vbr.setModules(qupvt, tk);\n  };\n  this.ms_convert = function(l3_side, gr) {\n    for (var i = 0; i < 576; ++i) {\n      var l = l3_side.tt[gr][0].xr[i];\n      var r = l3_side.tt[gr][1].xr[i];\n      l3_side.tt[gr][0].xr[i] = (l + r) * (Util.SQRT2 * 0.5);\n      l3_side.tt[gr][1].xr[i] = (l - r) * (Util.SQRT2 * 0.5);\n    }\n  };\n  function init_xrpow_core(cod_info, xrpow, upper, sum) {\n    sum = 0;\n    for (var i = 0; i <= upper; ++i) {\n      var tmp = Math.abs(cod_info.xr[i]);\n      sum += tmp;\n      xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n      if (xrpow[i] > cod_info.xrpow_max)\n        cod_info.xrpow_max = xrpow[i];\n    }\n    return sum;\n  }\n  this.init_xrpow = function(gfc, cod_info, xrpow) {\n    var sum = 0;\n    var upper = 0 | cod_info.max_nonzero_coeff;\n    cod_info.xrpow_max = 0;\n    Arrays$1.fill(xrpow, upper, 576, 0);\n    sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n    if (sum > 1e-20) {\n      var j = 0;\n      if ((gfc.substep_shaping & 2) != 0)\n        j = 1;\n      for (var i = 0; i < cod_info.psymax; i++)\n        gfc.pseudohalf[i] = j;\n      return true;\n    }\n    Arrays$1.fill(cod_info.l3_enc, 0, 576, 0);\n    return false;\n  };\n  function psfb21_analogsilence(gfc, cod_info) {\n    var ath = gfc.ATH;\n    var xr = cod_info.xr;\n    if (cod_info.block_type != Encoder.SHORT_TYPE) {\n      var stop = false;\n      for (var gsfb = Encoder.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n        var start = gfc.scalefac_band.psfb21[gsfb];\n        var end = gfc.scalefac_band.psfb21[gsfb + 1];\n        var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb], ath.floor);\n        if (gfc.nsPsy.longfact[21] > 1e-12)\n          ath21 *= gfc.nsPsy.longfact[21];\n        for (var j = end - 1; j >= start; j--) {\n          if (Math.abs(xr[j]) < ath21)\n            xr[j] = 0;\n          else {\n            stop = true;\n            break;\n          }\n        }\n      }\n    } else {\n      for (var block = 0; block < 3; block++) {\n        var stop = false;\n        for (var gsfb = Encoder.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n          var start = gfc.scalefac_band.s[12] * 3 + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) * block + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n          var end = start + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n          var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb], ath.floor);\n          if (gfc.nsPsy.shortfact[12] > 1e-12)\n            ath12 *= gfc.nsPsy.shortfact[12];\n          for (var j = end - 1; j >= start; j--) {\n            if (Math.abs(xr[j]) < ath12)\n              xr[j] = 0;\n            else {\n              stop = true;\n              break;\n            }\n          }\n        }\n      }\n    }\n  }\n  this.init_outer_loop = function(gfc, cod_info) {\n    cod_info.part2_3_length = 0;\n    cod_info.big_values = 0;\n    cod_info.count1 = 0;\n    cod_info.global_gain = 210;\n    cod_info.scalefac_compress = 0;\n    cod_info.table_select[0] = 0;\n    cod_info.table_select[1] = 0;\n    cod_info.table_select[2] = 0;\n    cod_info.subblock_gain[0] = 0;\n    cod_info.subblock_gain[1] = 0;\n    cod_info.subblock_gain[2] = 0;\n    cod_info.subblock_gain[3] = 0;\n    cod_info.region0_count = 0;\n    cod_info.region1_count = 0;\n    cod_info.preflag = 0;\n    cod_info.scalefac_scale = 0;\n    cod_info.count1table_select = 0;\n    cod_info.part2_length = 0;\n    cod_info.sfb_lmax = Encoder.SBPSY_l;\n    cod_info.sfb_smin = Encoder.SBPSY_s;\n    cod_info.psy_lmax = gfc.sfb21_extra ? Encoder.SBMAX_l : Encoder.SBPSY_l;\n    cod_info.psymax = cod_info.psy_lmax;\n    cod_info.sfbmax = cod_info.sfb_lmax;\n    cod_info.sfbdivide = 11;\n    for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n      cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1] - gfc.scalefac_band.l[sfb];\n      cod_info.window[sfb] = 3;\n    }\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      var ixwork = new_float(576);\n      cod_info.sfb_smin = 0;\n      cod_info.sfb_lmax = 0;\n      if (cod_info.mixed_block_flag != 0) {\n        cod_info.sfb_smin = 3;\n        cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n      }\n      cod_info.psymax = cod_info.sfb_lmax + 3 * ((gfc.sfb21_extra ? Encoder.SBMAX_s : Encoder.SBPSY_s) - cod_info.sfb_smin);\n      cod_info.sfbmax = cod_info.sfb_lmax + 3 * (Encoder.SBPSY_s - cod_info.sfb_smin);\n      cod_info.sfbdivide = cod_info.sfbmax - 18;\n      cod_info.psy_lmax = cod_info.sfb_lmax;\n      var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n      System$1.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n      for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n        var start = gfc.scalefac_band.s[sfb];\n        var end = gfc.scalefac_band.s[sfb + 1];\n        for (var window2 = 0; window2 < 3; window2++) {\n          for (var l = start; l < end; l++) {\n            cod_info.xr[ix++] = ixwork[3 * l + window2];\n          }\n        }\n      }\n      var j = cod_info.sfb_lmax;\n      for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n        cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb];\n        cod_info.window[j] = 0;\n        cod_info.window[j + 1] = 1;\n        cod_info.window[j + 2] = 2;\n        j += 3;\n      }\n    }\n    cod_info.count1bits = 0;\n    cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n    cod_info.slen[0] = 0;\n    cod_info.slen[1] = 0;\n    cod_info.slen[2] = 0;\n    cod_info.slen[3] = 0;\n    cod_info.max_nonzero_coeff = 575;\n    Arrays$1.fill(cod_info.scalefac, 0);\n    psfb21_analogsilence(gfc, cod_info);\n  };\n  function BinSearchDirection(ordinal) {\n    this.ordinal = ordinal;\n  }\n  BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n  BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n  BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n  function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n    var nBits;\n    var CurrentStep = gfc.CurrentStep[ch];\n    var flagGoneOver = false;\n    var start = gfc.OldValue[ch];\n    var Direction = BinSearchDirection.BINSEARCH_NONE;\n    cod_info.global_gain = start;\n    desired_rate -= cod_info.part2_length;\n    for (; ; ) {\n      var step;\n      nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n      if (CurrentStep == 1 || nBits == desired_rate)\n        break;\n      if (nBits > desired_rate) {\n        if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n          flagGoneOver = true;\n        if (flagGoneOver)\n          CurrentStep /= 2;\n        Direction = BinSearchDirection.BINSEARCH_UP;\n        step = CurrentStep;\n      } else {\n        if (Direction == BinSearchDirection.BINSEARCH_UP)\n          flagGoneOver = true;\n        if (flagGoneOver)\n          CurrentStep /= 2;\n        Direction = BinSearchDirection.BINSEARCH_DOWN;\n        step = -CurrentStep;\n      }\n      cod_info.global_gain += step;\n      if (cod_info.global_gain < 0) {\n        cod_info.global_gain = 0;\n        flagGoneOver = true;\n      }\n      if (cod_info.global_gain > 255) {\n        cod_info.global_gain = 255;\n        flagGoneOver = true;\n      }\n    }\n    assert$3(cod_info.global_gain >= 0);\n    assert$3(cod_info.global_gain < 256);\n    while (nBits > desired_rate && cod_info.global_gain < 255) {\n      cod_info.global_gain++;\n      nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n    }\n    gfc.CurrentStep[ch] = start - cod_info.global_gain >= 4 ? 4 : 2;\n    gfc.OldValue[ch] = cod_info.global_gain;\n    cod_info.part2_3_length = nBits;\n    return nBits;\n  }\n  this.trancate_smallspectrums = function(gfc, gi, l3_xmin, work) {\n    var distort = new_float(L3Side$1.SFBMAX);\n    if ((gfc.substep_shaping & 4) == 0 && gi.block_type == Encoder.SHORT_TYPE || (gfc.substep_shaping & 128) != 0) {\n      return;\n    }\n    qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult$1(), null);\n    for (var j = 0; j < 576; j++) {\n      var xr = 0;\n      if (gi.l3_enc[j] != 0)\n        xr = Math.abs(gi.xr[j]);\n      work[j] = xr;\n    }\n    var j = 0;\n    var sfb = 8;\n    if (gi.block_type == Encoder.SHORT_TYPE)\n      sfb = 6;\n    do {\n      var allowedNoise, trancateThreshold;\n      var nsame, start;\n      var width = gi.width[sfb];\n      j += width;\n      if (distort[sfb] >= 1)\n        continue;\n      Arrays$1.sort(work, j - width, width);\n      if (BitStream.EQ(work[j - 1], 0))\n        continue;\n      allowedNoise = (1 - distort[sfb]) * l3_xmin[sfb];\n      trancateThreshold = 0;\n      start = 0;\n      do {\n        var noise;\n        for (nsame = 1; start + nsame < width; nsame++) {\n          if (BitStream.NEQ(\n            work[start + j - width],\n            work[start + j + nsame - width]\n          )) {\n            break;\n          }\n        }\n        noise = work[start + j - width] * work[start + j - width] * nsame;\n        if (allowedNoise < noise) {\n          if (start != 0)\n            trancateThreshold = work[start + j - width - 1];\n          break;\n        }\n        allowedNoise -= noise;\n        start += nsame;\n      } while (start < width);\n      if (BitStream.EQ(trancateThreshold, 0))\n        continue;\n      do {\n        if (Math.abs(gi.xr[j - width]) <= trancateThreshold) {\n          gi.l3_enc[j - width] = 0;\n        }\n      } while (--width > 0);\n    } while (++sfb < gi.psymax);\n    gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n  };\n  function loop_break(cod_info) {\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      if (cod_info.scalefac[sfb] + cod_info.subblock_gain[cod_info.window[sfb]] == 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  function penalties(noise) {\n    return Util.FAST_LOG10(0.368 + 0.632 * noise * noise * noise);\n  }\n  function get_klemm_noise(distort, gi) {\n    var klemm_noise = 1e-37;\n    for (var sfb = 0; sfb < gi.psymax; sfb++) {\n      klemm_noise += penalties(distort[sfb]);\n    }\n    return Math.max(1e-20, klemm_noise);\n  }\n  function quant_compare(quant_comp, best, calc, gi, distort) {\n    var better;\n    switch (quant_comp) {\n      default:\n      case 9: {\n        if (best.over_count > 0) {\n          better = calc.over_SSD <= best.over_SSD;\n          if (calc.over_SSD == best.over_SSD)\n            better = calc.bits < best.bits;\n        } else {\n          better = calc.max_noise < 0 && calc.max_noise * 10 + calc.bits <= best.max_noise * 10 + best.bits;\n        }\n        break;\n      }\n      case 0:\n        better = calc.over_count < best.over_count || calc.over_count == best.over_count && calc.over_noise < best.over_noise || calc.over_count == best.over_count && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise;\n        break;\n      case 8:\n        calc.max_noise = get_klemm_noise(distort, gi);\n      case 1:\n        better = calc.max_noise < best.max_noise;\n        break;\n      case 2:\n        better = calc.tot_noise < best.tot_noise;\n        break;\n      case 3:\n        better = calc.tot_noise < best.tot_noise && calc.max_noise < best.max_noise;\n        break;\n      case 4:\n        better = calc.max_noise <= 0 && best.max_noise > 0.2 || calc.max_noise <= 0 && best.max_noise < 0 && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise || calc.max_noise <= 0 && best.max_noise > 0 && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise + best.over_noise || calc.max_noise > 0 && best.max_noise > -0.05 && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise + calc.over_noise < best.tot_noise + best.over_noise || calc.max_noise > 0 && best.max_noise > -0.1 && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise + calc.over_noise + calc.over_noise < best.tot_noise + best.over_noise + best.over_noise;\n        break;\n      case 5:\n        better = calc.over_noise < best.over_noise || BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise;\n        break;\n      case 6:\n        better = calc.over_noise < best.over_noise || BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || BitStream.EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise);\n        break;\n      case 7:\n        better = calc.over_count < best.over_count || calc.over_noise < best.over_noise;\n        break;\n    }\n    if (best.over_count == 0) {\n      better = better && calc.bits < best.bits;\n    }\n    return better;\n  }\n  function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n    var gfc = gfp.internal_flags;\n    var ifqstep34;\n    if (cod_info.scalefac_scale == 0) {\n      ifqstep34 = 1.2968395546510096;\n    } else {\n      ifqstep34 = 1.6817928305074292;\n    }\n    var trigger2 = 0;\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      if (trigger2 < distort[sfb])\n        trigger2 = distort[sfb];\n    }\n    var noise_shaping_amp = gfc.noise_shaping_amp;\n    if (noise_shaping_amp == 3) {\n      if (bRefine)\n        noise_shaping_amp = 2;\n      else\n        noise_shaping_amp = 1;\n    }\n    switch (noise_shaping_amp) {\n      case 2:\n        break;\n      case 1:\n        if (trigger2 > 1)\n          trigger2 = Math.pow(trigger2, 0.5);\n        else\n          trigger2 *= 0.95;\n        break;\n      case 0:\n      default:\n        if (trigger2 > 1)\n          trigger2 = 1;\n        else\n          trigger2 *= 0.95;\n        break;\n    }\n    var j = 0;\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      var width = cod_info.width[sfb];\n      var l;\n      j += width;\n      if (distort[sfb] < trigger2)\n        continue;\n      if ((gfc.substep_shaping & 2) != 0) {\n        gfc.pseudohalf[sfb] = gfc.pseudohalf[sfb] == 0 ? 1 : 0;\n        if (gfc.pseudohalf[sfb] == 0 && gfc.noise_shaping_amp == 2)\n          return;\n      }\n      cod_info.scalefac[sfb]++;\n      for (l = -width; l < 0; l++) {\n        xrpow[j + l] *= ifqstep34;\n        if (xrpow[j + l] > cod_info.xrpow_max)\n          cod_info.xrpow_max = xrpow[j + l];\n      }\n      if (gfc.noise_shaping_amp == 2)\n        return;\n    }\n  }\n  function inc_scalefac_scale(cod_info, xrpow) {\n    var ifqstep34 = 1.2968395546510096;\n    var j = 0;\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      var width = cod_info.width[sfb];\n      var s = cod_info.scalefac[sfb];\n      if (cod_info.preflag != 0)\n        s += qupvt.pretab[sfb];\n      j += width;\n      if ((s & 1) != 0) {\n        s++;\n        for (var l = -width; l < 0; l++) {\n          xrpow[j + l] *= ifqstep34;\n          if (xrpow[j + l] > cod_info.xrpow_max) {\n            cod_info.xrpow_max = xrpow[j + l];\n          }\n        }\n      }\n      cod_info.scalefac[sfb] = s >> 1;\n    }\n    cod_info.preflag = 0;\n    cod_info.scalefac_scale = 1;\n  }\n  function inc_subblock_gain(gfc, cod_info, xrpow) {\n    var sfb;\n    var scalefac = cod_info.scalefac;\n    for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n      if (scalefac[sfb] >= 16)\n        return true;\n    }\n    for (var window2 = 0; window2 < 3; window2++) {\n      var s1 = 0;\n      var s2 = 0;\n      for (sfb = cod_info.sfb_lmax + window2; sfb < cod_info.sfbdivide; sfb += 3) {\n        if (s1 < scalefac[sfb])\n          s1 = scalefac[sfb];\n      }\n      for (; sfb < cod_info.sfbmax; sfb += 3) {\n        if (s2 < scalefac[sfb])\n          s2 = scalefac[sfb];\n      }\n      if (s1 < 16 && s2 < 8)\n        continue;\n      if (cod_info.subblock_gain[window2] >= 7)\n        return true;\n      cod_info.subblock_gain[window2]++;\n      var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n      for (sfb = cod_info.sfb_lmax + window2; sfb < cod_info.sfbmax; sfb += 3) {\n        var amp;\n        var width = cod_info.width[sfb];\n        var s = scalefac[sfb];\n        s = s - (4 >> cod_info.scalefac_scale);\n        if (s >= 0) {\n          scalefac[sfb] = s;\n          j += width * 3;\n          continue;\n        }\n        scalefac[sfb] = 0;\n        {\n          var gain = 210 + (s << cod_info.scalefac_scale + 1);\n          amp = qupvt.IPOW20(gain);\n        }\n        j += width * (window2 + 1);\n        for (var l = -width; l < 0; l++) {\n          xrpow[j + l] *= amp;\n          if (xrpow[j + l] > cod_info.xrpow_max) {\n            cod_info.xrpow_max = xrpow[j + l];\n          }\n        }\n        j += width * (3 - window2 - 1);\n      }\n      {\n        var amp = qupvt.IPOW20(202);\n        j += cod_info.width[sfb] * (window2 + 1);\n        for (var l = -cod_info.width[sfb]; l < 0; l++) {\n          xrpow[j + l] *= amp;\n          if (xrpow[j + l] > cod_info.xrpow_max) {\n            cod_info.xrpow_max = xrpow[j + l];\n          }\n        }\n      }\n    }\n    return false;\n  }\n  function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n    var gfc = gfp.internal_flags;\n    amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n    var status = loop_break(cod_info);\n    if (status)\n      return false;\n    if (gfc.mode_gr == 2)\n      status = tk.scale_bitcount(cod_info);\n    else\n      status = tk.scale_bitcount_lsf(gfc, cod_info);\n    if (!status)\n      return true;\n    if (gfc.noise_shaping > 1) {\n      Arrays$1.fill(gfc.pseudohalf, 0);\n      if (cod_info.scalefac_scale == 0) {\n        inc_scalefac_scale(cod_info, xrpow);\n        status = false;\n      } else {\n        if (cod_info.block_type == Encoder.SHORT_TYPE && gfc.subblock_gain > 0) {\n          status = inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info);\n        }\n      }\n    }\n    if (!status) {\n      if (gfc.mode_gr == 2)\n        status = tk.scale_bitcount(cod_info);\n      else\n        status = tk.scale_bitcount_lsf(gfc, cod_info);\n    }\n    return !status;\n  }\n  this.outer_loop = function(gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n    var gfc = gfp.internal_flags;\n    var cod_info_w = new GrInfo();\n    var save_xrpow = new_float(576);\n    var distort = new_float(L3Side$1.SFBMAX);\n    var best_noise_info = new CalcNoiseResult$1();\n    var better;\n    var prev_noise = new CalcNoiseData();\n    var best_part2_3_length = 9999999;\n    var bEndOfSearch = false;\n    var bRefine = false;\n    var best_ggain_pass1 = 0;\n    bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n    if (gfc.noise_shaping == 0) {\n      return 100;\n    }\n    qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info, prev_noise);\n    best_noise_info.bits = cod_info.part2_3_length;\n    cod_info_w.assign(cod_info);\n    var age = 0;\n    System$1.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n    while (!bEndOfSearch) {\n      do {\n        var noise_info = new CalcNoiseResult$1();\n        var search_limit;\n        var maxggain = 255;\n        if ((gfc.substep_shaping & 2) != 0) {\n          search_limit = 20;\n        } else {\n          search_limit = 3;\n        }\n        if (gfc.sfb21_extra) {\n          if (distort[cod_info_w.sfbmax] > 1)\n            break;\n          if (cod_info_w.block_type == Encoder.SHORT_TYPE && (distort[cod_info_w.sfbmax + 1] > 1 || distort[cod_info_w.sfbmax + 2] > 1)) {\n            break;\n          }\n        }\n        if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n          break;\n        if (cod_info_w.scalefac_scale != 0)\n          maxggain = 254;\n        var huff_bits = targ_bits - cod_info_w.part2_length;\n        if (huff_bits <= 0)\n          break;\n        while ((cod_info_w.part2_3_length = tk.count_bits(\n          gfc,\n          xrpow,\n          cod_info_w,\n          prev_noise\n        )) > huff_bits && cod_info_w.global_gain <= maxggain) {\n          cod_info_w.global_gain++;\n        }\n        if (cod_info_w.global_gain > maxggain)\n          break;\n        if (best_noise_info.over_count == 0) {\n          while ((cod_info_w.part2_3_length = tk.count_bits(\n            gfc,\n            xrpow,\n            cod_info_w,\n            prev_noise\n          )) > best_part2_3_length && cod_info_w.global_gain <= maxggain) {\n            cod_info_w.global_gain++;\n          }\n          if (cod_info_w.global_gain > maxggain)\n            break;\n        }\n        qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info, prev_noise);\n        noise_info.bits = cod_info_w.part2_3_length;\n        if (cod_info.block_type != Encoder.SHORT_TYPE) {\n          better = gfp.quant_comp;\n        } else\n          better = gfp.quant_comp_short;\n        better = quant_compare(\n          better,\n          best_noise_info,\n          noise_info,\n          cod_info_w,\n          distort\n        ) ? 1 : 0;\n        if (better != 0) {\n          best_part2_3_length = cod_info.part2_3_length;\n          best_noise_info = noise_info;\n          cod_info.assign(cod_info_w);\n          age = 0;\n          System$1.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n        } else {\n          if (gfc.full_outer_loop == 0) {\n            if (++age > search_limit && best_noise_info.over_count == 0)\n              break;\n            if (gfc.noise_shaping_amp == 3 && bRefine && age > 30)\n              break;\n            if (gfc.noise_shaping_amp == 3 && bRefine && cod_info_w.global_gain - best_ggain_pass1 > 15) {\n              break;\n            }\n          }\n        }\n      } while (cod_info_w.global_gain + cod_info_w.scalefac_scale < 255);\n      if (gfc.noise_shaping_amp == 3) {\n        if (!bRefine) {\n          cod_info_w.assign(cod_info);\n          System$1.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n          age = 0;\n          best_ggain_pass1 = cod_info_w.global_gain;\n          bRefine = true;\n        } else {\n          bEndOfSearch = true;\n        }\n      } else {\n        bEndOfSearch = true;\n      }\n    }\n    assert$3(cod_info.global_gain + cod_info.scalefac_scale <= 255);\n    if (gfp.VBR == VbrMode$1.vbr_rh || gfp.VBR == VbrMode$1.vbr_mtrh) {\n      System$1.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n    } else if ((gfc.substep_shaping & 1) != 0) {\n      trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n    }\n    return best_noise_info.over_count;\n  };\n  this.iteration_finish_one = function(gfc, gr, ch) {\n    var l3_side = gfc.l3_side;\n    var cod_info = l3_side.tt[gr][ch];\n    tk.best_scalefac_store(gfc, gr, ch, l3_side);\n    if (gfc.use_best_huffman == 1)\n      tk.best_huffman_divide(gfc, cod_info);\n    rv.ResvAdjust(gfc, cod_info);\n  };\n  this.VBR_encode_granule = function(gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n    var gfc = gfp.internal_flags;\n    var bst_cod_info = new GrInfo();\n    var bst_xrpow = new_float(576);\n    var Max_bits = max_bits;\n    var real_bits = max_bits + 1;\n    var this_bits = (max_bits + min_bits) / 2;\n    var dbits;\n    var over;\n    var found = 0;\n    var sfb21_extra = gfc.sfb21_extra;\n    assert$3(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n    Arrays$1.fill(bst_cod_info.l3_enc, 0);\n    do {\n      if (this_bits > Max_bits - 42)\n        gfc.sfb21_extra = false;\n      else\n        gfc.sfb21_extra = sfb21_extra;\n      over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n      if (over <= 0) {\n        found = 1;\n        real_bits = cod_info.part2_3_length;\n        bst_cod_info.assign(cod_info);\n        System$1.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n        max_bits = real_bits - 32;\n        dbits = max_bits - min_bits;\n        this_bits = (max_bits + min_bits) / 2;\n      } else {\n        min_bits = this_bits + 32;\n        dbits = max_bits - min_bits;\n        this_bits = (max_bits + min_bits) / 2;\n        if (found != 0) {\n          found = 2;\n          cod_info.assign(bst_cod_info);\n          System$1.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n        }\n      }\n    } while (dbits > 12);\n    gfc.sfb21_extra = sfb21_extra;\n    if (found == 2) {\n      System$1.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n    }\n    assert$3(cod_info.part2_3_length <= Max_bits);\n  };\n  this.get_framebits = function(gfp, frameBits) {\n    var gfc = gfp.internal_flags;\n    gfc.bitrate_index = gfc.VBR_min_bitrate;\n    var bitsPerFrame = bs.getframebits(gfp);\n    gfc.bitrate_index = 1;\n    bitsPerFrame = bs.getframebits(gfp);\n    for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n      gfc.bitrate_index = i;\n      var mb = new MeanBits(bitsPerFrame);\n      frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n      bitsPerFrame = mb.bits;\n    }\n  };\n  this.VBR_old_prepare = function(gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits, max_bits, bands) {\n    var gfc = gfp.internal_flags;\n    var masking_lower_db;\n    var adjust = 0;\n    var analog_silence = 1;\n    var bits = 0;\n    gfc.bitrate_index = gfc.VBR_max_bitrate;\n    var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n    get_framebits(gfp, frameBits);\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n      if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n        ms_convert(gfc.l3_side, gr);\n        qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n      }\n      for (var ch = 0; ch < gfc.channels_out; ++ch) {\n        var cod_info = gfc.l3_side.tt[gr][ch];\n        if (cod_info.block_type != Encoder.SHORT_TYPE) {\n          adjust = 1.28 / (1 + Math.exp(3.5 - pe[gr][ch] / 300)) - 0.05;\n          masking_lower_db = gfc.PSY.mask_adjust - adjust;\n        } else {\n          adjust = 2.56 / (1 + Math.exp(3.5 - pe[gr][ch] / 300)) - 0.14;\n          masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n        }\n        gfc.masking_lower = Math.pow(10, masking_lower_db * 0.1);\n        init_outer_loop(gfc, cod_info);\n        bands[gr][ch] = qupvt.calc_xmin(\n          gfp,\n          ratio[gr][ch],\n          cod_info,\n          l3_xmin[gr][ch]\n        );\n        if (bands[gr][ch] != 0)\n          analog_silence = 0;\n        min_bits[gr][ch] = 126;\n        bits += max_bits[gr][ch];\n      }\n    }\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        if (bits > frameBits[gfc.VBR_max_bitrate]) {\n          max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n          max_bits[gr][ch] /= bits;\n        }\n        if (min_bits[gr][ch] > max_bits[gr][ch]) {\n          min_bits[gr][ch] = max_bits[gr][ch];\n        }\n      }\n    }\n    return analog_silence;\n  };\n  this.bitpressure_strategy = function(gfc, l3_xmin, min_bits, max_bits) {\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        var gi = gfc.l3_side.tt[gr][ch];\n        var pxmin = l3_xmin[gr][ch];\n        var pxminPos = 0;\n        for (var sfb = 0; sfb < gi.psy_lmax; sfb++) {\n          pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_l / Encoder.SBMAX_l;\n        }\n        if (gi.block_type == Encoder.SHORT_TYPE) {\n          for (var sfb = gi.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n            pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n            pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n            pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n          }\n        }\n        max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch], 0.9 * max_bits[gr][ch]);\n      }\n    }\n  };\n  this.VBR_new_prepare = function(gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n    var gfc = gfp.internal_flags;\n    var analog_silence = 1;\n    var avg = 0;\n    var bits = 0;\n    var maximum_framebits;\n    if (!gfp.free_format) {\n      gfc.bitrate_index = gfc.VBR_max_bitrate;\n      var mb = new MeanBits(avg);\n      rv.ResvFrameBegin(gfp, mb);\n      avg = mb.bits;\n      get_framebits(gfp, frameBits);\n      maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n    } else {\n      gfc.bitrate_index = 0;\n      var mb = new MeanBits(avg);\n      maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n      avg = mb.bits;\n      frameBits[0] = maximum_framebits;\n    }\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n      if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n        ms_convert(gfc.l3_side, gr);\n      }\n      for (var ch = 0; ch < gfc.channels_out; ++ch) {\n        var cod_info = gfc.l3_side.tt[gr][ch];\n        gfc.masking_lower = Math.pow(10, gfc.PSY.mask_adjust * 0.1);\n        init_outer_loop(gfc, cod_info);\n        if (qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, l3_xmin[gr][ch]) != 0) {\n          analog_silence = 0;\n        }\n        bits += max_bits[gr][ch];\n      }\n    }\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        if (bits > maximum_framebits) {\n          max_bits[gr][ch] *= maximum_framebits;\n          max_bits[gr][ch] /= bits;\n        }\n      }\n    }\n    return analog_silence;\n  };\n  this.calc_target_bits = function(gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n    var gfc = gfp.internal_flags;\n    var l3_side = gfc.l3_side;\n    var res_factor;\n    var gr;\n    var ch;\n    var totbits;\n    var mean_bits = 0;\n    gfc.bitrate_index = gfc.VBR_max_bitrate;\n    var mb = new MeanBits(mean_bits);\n    max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n    mean_bits = mb.bits;\n    gfc.bitrate_index = 1;\n    mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n    analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n    mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1e3;\n    if ((gfc.substep_shaping & 1) != 0)\n      mean_bits *= 1.09;\n    mean_bits /= gfp.out_samplerate;\n    mean_bits -= gfc.sideinfo_len * 8;\n    mean_bits /= gfc.mode_gr * gfc.channels_out;\n    res_factor = 0.93 + 0.07 * (11 - gfp.compression_ratio) / (11 - 5.5);\n    if (res_factor < 0.9)\n      res_factor = 0.9;\n    if (res_factor > 1)\n      res_factor = 1;\n    for (gr = 0; gr < gfc.mode_gr; gr++) {\n      var sum = 0;\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        targ_bits[gr][ch] = int(res_factor * mean_bits);\n        if (pe[gr][ch] > 700) {\n          var add_bits = int((pe[gr][ch] - 700) / 1.4);\n          var cod_info = l3_side.tt[gr][ch];\n          targ_bits[gr][ch] = int(res_factor * mean_bits);\n          if (cod_info.block_type == Encoder.SHORT_TYPE) {\n            if (add_bits < mean_bits / 2)\n              add_bits = mean_bits / 2;\n          }\n          if (add_bits > mean_bits * 3 / 2)\n            add_bits = mean_bits * 3 / 2;\n          else if (add_bits < 0)\n            add_bits = 0;\n          targ_bits[gr][ch] += add_bits;\n        }\n        if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n          targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n        }\n        sum += targ_bits[gr][ch];\n      }\n      if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n        for (ch = 0; ch < gfc.channels_out; ++ch) {\n          targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n          targ_bits[gr][ch] /= sum;\n        }\n      }\n    }\n    if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        qupvt.reduce_side(\n          targ_bits[gr],\n          ms_ener_ratio[gr],\n          mean_bits * gfc.channels_out,\n          LameInternalFlags.MAX_BITS_PER_GRANULE\n        );\n      }\n    }\n    totbits = 0;\n    for (gr = 0; gr < gfc.mode_gr; gr++) {\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n          targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n        }\n        totbits += targ_bits[gr][ch];\n      }\n    }\n    if (totbits > max_frame_bits[0]) {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          targ_bits[gr][ch] *= max_frame_bits[0];\n          targ_bits[gr][ch] /= totbits;\n        }\n      }\n    }\n  };\n}\nvar assert$2 = common.assert;\nfunction Reservoir() {\n  var bs;\n  this.setModules = function(_bs) {\n    bs = _bs;\n  };\n  this.ResvFrameBegin = function(gfp, mean_bits) {\n    var gfc = gfp.internal_flags;\n    var maxmp3buf;\n    var l3_side = gfc.l3_side;\n    var frameLength = bs.getframebits(gfp);\n    mean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n    var resvLimit = 8 * 256 * gfc.mode_gr - 8;\n    if (gfp.brate > 320) {\n      maxmp3buf = 8 * int(gfp.brate * 1e3 / (gfp.out_samplerate / 1152) / 8 + 0.5);\n    } else {\n      maxmp3buf = 8 * 1440;\n      if (gfp.strict_ISO) {\n        maxmp3buf = 8 * int(32e4 / (gfp.out_samplerate / 1152) / 8 + 0.5);\n      }\n    }\n    gfc.ResvMax = maxmp3buf - frameLength;\n    if (gfc.ResvMax > resvLimit)\n      gfc.ResvMax = resvLimit;\n    if (gfc.ResvMax < 0 || gfp.disable_reservoir)\n      gfc.ResvMax = 0;\n    var fullFrameBits = mean_bits.bits * gfc.mode_gr + Math.min(gfc.ResvSize, gfc.ResvMax);\n    if (fullFrameBits > maxmp3buf)\n      fullFrameBits = maxmp3buf;\n    assert$2(gfc.ResvMax % 8 == 0);\n    assert$2(gfc.ResvMax >= 0);\n    l3_side.resvDrain_pre = 0;\n    if (gfc.pinfo != null) {\n      gfc.pinfo.mean_bits = mean_bits.bits / 2;\n      gfc.pinfo.resvsize = gfc.ResvSize;\n    }\n    return fullFrameBits;\n  };\n  this.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n    var gfc = gfp.internal_flags;\n    var add_bits;\n    var ResvSize = gfc.ResvSize;\n    var ResvMax = gfc.ResvMax;\n    if (cbr != 0)\n      ResvSize += mean_bits;\n    if ((gfc.substep_shaping & 1) != 0)\n      ResvMax *= 0.9;\n    targ_bits.bits = mean_bits;\n    if (ResvSize * 10 > ResvMax * 9) {\n      add_bits = ResvSize - ResvMax * 9 / 10;\n      targ_bits.bits += add_bits;\n      gfc.substep_shaping |= 128;\n    } else {\n      add_bits = 0;\n      gfc.substep_shaping &= 127;\n      if (!gfp.disable_reservoir && (gfc.substep_shaping & 1) == 0) {\n        targ_bits.bits -= 0.1 * mean_bits;\n      }\n    }\n    var extra_bits = ResvSize < gfc.ResvMax * 6 / 10 ? ResvSize : gfc.ResvMax * 6 / 10;\n    extra_bits -= add_bits;\n    if (extra_bits < 0)\n      extra_bits = 0;\n    return extra_bits;\n  };\n  this.ResvAdjust = function(gfc, gi) {\n    gfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n  };\n  this.ResvFrameEnd = function(gfc, mean_bits) {\n    var over_bits;\n    var l3_side = gfc.l3_side;\n    gfc.ResvSize += mean_bits * gfc.mode_gr;\n    var stuffingBits = 0;\n    l3_side.resvDrain_post = 0;\n    l3_side.resvDrain_pre = 0;\n    if ((over_bits = gfc.ResvSize % 8) != 0)\n      stuffingBits += over_bits;\n    over_bits = gfc.ResvSize - stuffingBits - gfc.ResvMax;\n    if (over_bits > 0) {\n      stuffingBits += over_bits;\n    }\n    {\n      var mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n      l3_side.resvDrain_pre += 8 * mdb_bytes;\n      stuffingBits -= 8 * mdb_bytes;\n      gfc.ResvSize -= 8 * mdb_bytes;\n      l3_side.main_data_begin -= mdb_bytes;\n    }\n    l3_side.resvDrain_post += stuffingBits;\n    gfc.ResvSize -= stuffingBits;\n  };\n}\nfunction Version() {\n  var LAME_URL = \"http://www.mp3dev.org/\";\n  var LAME_MAJOR_VERSION = 3;\n  var LAME_MINOR_VERSION = 98;\n  var LAME_PATCH_VERSION = 4;\n  var PSY_MAJOR_VERSION = 0;\n  var PSY_MINOR_VERSION = 93;\n  this.getLameVersion = function() {\n    return LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION;\n  };\n  this.getLameShortVersion = function() {\n    return LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION;\n  };\n  this.getLameVeryShortVersion = function() {\n    return \"LAME\" + LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \"r\";\n  };\n  this.getPsyVersion = function() {\n    return PSY_MAJOR_VERSION + \".\" + PSY_MINOR_VERSION;\n  };\n  this.getLameUrl = function() {\n    return LAME_URL;\n  };\n  this.getLameOsBitness = function() {\n    return \"32bits\";\n  };\n}\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar ShortBlock = common.ShortBlock;\nvar Arrays = common.Arrays;\nvar new_byte$1 = common.new_byte;\nvar assert$1 = common.assert;\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\nfunction VBRTag() {\n  var lame;\n  var bs;\n  var v;\n  this.setModules = function(_lame, _bs, _v) {\n    lame = _lame;\n    bs = _bs;\n    v = _v;\n  };\n  var FRAMES_FLAG = 1;\n  var BYTES_FLAG = 2;\n  var TOC_FLAG = 4;\n  var VBR_SCALE_FLAG = 8;\n  var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n  var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n  var VBRHEADERSIZE = NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4;\n  var LAMEHEADERSIZE = VBRHEADERSIZE + 9 + 1 + 1 + 8 + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2;\n  var XING_BITRATE1 = 128;\n  var XING_BITRATE2 = 64;\n  var XING_BITRATE25 = 32;\n  var ISO_8859_1 = null;\n  var VBRTag0 = \"Xing\";\n  var VBRTag1 = \"Info\";\n  var crc16Lookup = [\n    0,\n    49345,\n    49537,\n    320,\n    49921,\n    960,\n    640,\n    49729,\n    50689,\n    1728,\n    1920,\n    51009,\n    1280,\n    50625,\n    50305,\n    1088,\n    52225,\n    3264,\n    3456,\n    52545,\n    3840,\n    53185,\n    52865,\n    3648,\n    2560,\n    51905,\n    52097,\n    2880,\n    51457,\n    2496,\n    2176,\n    51265,\n    55297,\n    6336,\n    6528,\n    55617,\n    6912,\n    56257,\n    55937,\n    6720,\n    7680,\n    57025,\n    57217,\n    8e3,\n    56577,\n    7616,\n    7296,\n    56385,\n    5120,\n    54465,\n    54657,\n    5440,\n    55041,\n    6080,\n    5760,\n    54849,\n    53761,\n    4800,\n    4992,\n    54081,\n    4352,\n    53697,\n    53377,\n    4160,\n    61441,\n    12480,\n    12672,\n    61761,\n    13056,\n    62401,\n    62081,\n    12864,\n    13824,\n    63169,\n    63361,\n    14144,\n    62721,\n    13760,\n    13440,\n    62529,\n    15360,\n    64705,\n    64897,\n    15680,\n    65281,\n    16320,\n    16e3,\n    65089,\n    64001,\n    15040,\n    15232,\n    64321,\n    14592,\n    63937,\n    63617,\n    14400,\n    10240,\n    59585,\n    59777,\n    10560,\n    60161,\n    11200,\n    10880,\n    59969,\n    60929,\n    11968,\n    12160,\n    61249,\n    11520,\n    60865,\n    60545,\n    11328,\n    58369,\n    9408,\n    9600,\n    58689,\n    9984,\n    59329,\n    59009,\n    9792,\n    8704,\n    58049,\n    58241,\n    9024,\n    57601,\n    8640,\n    8320,\n    57409,\n    40961,\n    24768,\n    24960,\n    41281,\n    25344,\n    41921,\n    41601,\n    25152,\n    26112,\n    42689,\n    42881,\n    26432,\n    42241,\n    26048,\n    25728,\n    42049,\n    27648,\n    44225,\n    44417,\n    27968,\n    44801,\n    28608,\n    28288,\n    44609,\n    43521,\n    27328,\n    27520,\n    43841,\n    26880,\n    43457,\n    43137,\n    26688,\n    30720,\n    47297,\n    47489,\n    31040,\n    47873,\n    31680,\n    31360,\n    47681,\n    48641,\n    32448,\n    32640,\n    48961,\n    32e3,\n    48577,\n    48257,\n    31808,\n    46081,\n    29888,\n    30080,\n    46401,\n    30464,\n    47041,\n    46721,\n    30272,\n    29184,\n    45761,\n    45953,\n    29504,\n    45313,\n    29120,\n    28800,\n    45121,\n    20480,\n    37057,\n    37249,\n    20800,\n    37633,\n    21440,\n    21120,\n    37441,\n    38401,\n    22208,\n    22400,\n    38721,\n    21760,\n    38337,\n    38017,\n    21568,\n    39937,\n    23744,\n    23936,\n    40257,\n    24320,\n    40897,\n    40577,\n    24128,\n    23040,\n    39617,\n    39809,\n    23360,\n    39169,\n    22976,\n    22656,\n    38977,\n    34817,\n    18624,\n    18816,\n    35137,\n    19200,\n    35777,\n    35457,\n    19008,\n    19968,\n    36545,\n    36737,\n    20288,\n    36097,\n    19904,\n    19584,\n    35905,\n    17408,\n    33985,\n    34177,\n    17728,\n    34561,\n    18368,\n    18048,\n    34369,\n    33281,\n    17088,\n    17280,\n    33601,\n    16640,\n    33217,\n    32897,\n    16448\n  ];\n  function addVbr(v2, bitrate) {\n    v2.nVbrNumFrames++;\n    v2.sum += bitrate;\n    v2.seen++;\n    if (v2.seen < v2.want) {\n      return;\n    }\n    if (v2.pos < v2.size) {\n      v2.bag[v2.pos] = v2.sum;\n      v2.pos++;\n      v2.seen = 0;\n    }\n    if (v2.pos == v2.size) {\n      for (var i = 1; i < v2.size; i += 2) {\n        v2.bag[i / 2] = v2.bag[i];\n      }\n      v2.want *= 2;\n      v2.pos /= 2;\n    }\n  }\n  function xingSeekTable(v2, t) {\n    if (v2.pos <= 0)\n      return;\n    for (var i = 1; i < NUMTOCENTRIES; ++i) {\n      var j = i / NUMTOCENTRIES;\n      var act;\n      var sum;\n      var indx = 0 | Math.floor(j * v2.pos);\n      if (indx > v2.pos - 1)\n        indx = v2.pos - 1;\n      act = v2.bag[indx];\n      sum = v2.sum;\n      var seek_point = 0 | 256 * act / sum;\n      if (seek_point > 255)\n        seek_point = 255;\n      t[i] = 255 & seek_point;\n    }\n  }\n  this.addVbrFrame = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n    assert$1(gfc.VBR_seek_table.bag != null);\n    addVbr(gfc.VBR_seek_table, kbps);\n  };\n  function extractInteger(buf, bufPos) {\n    var x = buf[bufPos + 0] & 255;\n    x <<= 8;\n    x |= buf[bufPos + 1] & 255;\n    x <<= 8;\n    x |= buf[bufPos + 2] & 255;\n    x <<= 8;\n    x |= buf[bufPos + 3] & 255;\n    return x;\n  }\n  function createInteger(buf, bufPos, value) {\n    buf[bufPos + 0] = 255 & (value >> 24 & 255);\n    buf[bufPos + 1] = 255 & (value >> 16 & 255);\n    buf[bufPos + 2] = 255 & (value >> 8 & 255);\n    buf[bufPos + 3] = 255 & (value & 255);\n  }\n  function createShort(buf, bufPos, value) {\n    buf[bufPos + 0] = 255 & (value >> 8 & 255);\n    buf[bufPos + 1] = 255 & (value & 255);\n  }\n  function isVbrTag(buf, bufPos) {\n    return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1).equals(VBRTag0) || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1).equals(VBRTag1);\n  }\n  function shiftInBitsValue(x, n, v2) {\n    return 255 & (x << n | v2 & ~(-1 << n));\n  }\n  function setLameTagFrameHeader(gfp, buffer) {\n    var gfc = gfp.internal_flags;\n    buffer[0] = shiftInBitsValue(buffer[0], 8, 255);\n    buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n    buffer[1] = shiftInBitsValue(\n      buffer[1],\n      1,\n      gfp.out_samplerate < 16e3 ? 0 : 1\n    );\n    buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n    buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n    buffer[1] = shiftInBitsValue(buffer[1], 1, !gfp.error_protection ? 1 : 0);\n    buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n    buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n    buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n    buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n    buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n    buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n    buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n    buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n    buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n    buffer[0] = 255;\n    var abyte = 255 & (buffer[1] & 241);\n    var bitrate;\n    if (gfp.version == 1) {\n      bitrate = XING_BITRATE1;\n    } else {\n      if (gfp.out_samplerate < 16e3)\n        bitrate = XING_BITRATE25;\n      else\n        bitrate = XING_BITRATE2;\n    }\n    if (gfp.VBR == VbrMode.vbr_off)\n      bitrate = gfp.brate;\n    var bbyte;\n    if (gfp.free_format)\n      bbyte = 0;\n    else {\n      bbyte = 255 & 16 * lame.BitrateIndex(bitrate, gfp.version, gfp.out_samplerate);\n    }\n    if (gfp.version == 1) {\n      buffer[1] = 255 & (abyte | 10);\n      abyte = 255 & (buffer[2] & 13);\n      buffer[2] = 255 & (bbyte | abyte);\n    } else {\n      buffer[1] = 255 & (abyte | 2);\n      abyte = 255 & (buffer[2] & 13);\n      buffer[2] = 255 & (bbyte | abyte);\n    }\n  }\n  this.getVbrTag = function(buf) {\n    var pTagData = new VBRTagData();\n    var bufPos = 0;\n    pTagData.flags = 0;\n    var hId = buf[bufPos + 1] >> 3 & 1;\n    var hSrIndex = buf[bufPos + 2] >> 2 & 3;\n    var hMode = buf[bufPos + 3] >> 6 & 3;\n    var hBitrate = buf[bufPos + 2] >> 4 & 15;\n    hBitrate = Tables.bitrate_table[hId][hBitrate];\n    if (buf[bufPos + 1] >> 4 == 14) {\n      pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n    } else\n      pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n    if (hId != 0) {\n      if (hMode != 3)\n        bufPos += 32 + 4;\n      else\n        bufPos += 17 + 4;\n    } else {\n      if (hMode != 3)\n        bufPos += 17 + 4;\n      else\n        bufPos += 9 + 4;\n    }\n    if (!isVbrTag(buf, bufPos))\n      return null;\n    bufPos += 4;\n    pTagData.hId = hId;\n    var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n    bufPos += 4;\n    if ((head_flags & FRAMES_FLAG) != 0) {\n      pTagData.frames = extractInteger(buf, bufPos);\n      bufPos += 4;\n    }\n    if ((head_flags & BYTES_FLAG) != 0) {\n      pTagData.bytes = extractInteger(buf, bufPos);\n      bufPos += 4;\n    }\n    if ((head_flags & TOC_FLAG) != 0) {\n      if (pTagData.toc != null) {\n        for (var i = 0; i < NUMTOCENTRIES; i++) {\n          pTagData.toc[i] = buf[bufPos + i];\n        }\n      }\n      bufPos += NUMTOCENTRIES;\n    }\n    pTagData.vbrScale = -1;\n    if ((head_flags & VBR_SCALE_FLAG) != 0) {\n      pTagData.vbrScale = extractInteger(buf, bufPos);\n      bufPos += 4;\n    }\n    pTagData.headersize = (hId + 1) * 72e3 * hBitrate / pTagData.samprate;\n    bufPos += 21;\n    var encDelay = buf[bufPos + 0] << 4;\n    encDelay += buf[bufPos + 1] >> 4;\n    var encPadding = (buf[bufPos + 1] & 15) << 8;\n    encPadding += buf[bufPos + 2] & 255;\n    if (encDelay < 0 || encDelay > 3e3)\n      encDelay = -1;\n    if (encPadding < 0 || encPadding > 3e3)\n      encPadding = -1;\n    pTagData.encDelay = encDelay;\n    pTagData.encPadding = encPadding;\n    return pTagData;\n  };\n  this.InitVbrTag = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var kbps_header;\n    if (gfp.version == 1) {\n      kbps_header = XING_BITRATE1;\n    } else {\n      if (gfp.out_samplerate < 16e3)\n        kbps_header = XING_BITRATE25;\n      else\n        kbps_header = XING_BITRATE2;\n    }\n    if (gfp.VBR == VbrMode.vbr_off)\n      kbps_header = gfp.brate;\n    var totalFrameSize = (gfp.version + 1) * 72e3 * kbps_header / gfp.out_samplerate;\n    var headerSize = gfc.sideinfo_len + LAMEHEADERSIZE;\n    gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n    if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n      gfp.bWriteVbrTag = false;\n      return;\n    }\n    gfc.VBR_seek_table.nVbrNumFrames = 0;\n    gfc.VBR_seek_table.nBytesWritten = 0;\n    gfc.VBR_seek_table.sum = 0;\n    gfc.VBR_seek_table.seen = 0;\n    gfc.VBR_seek_table.want = 1;\n    gfc.VBR_seek_table.pos = 0;\n    if (gfc.VBR_seek_table.bag == null) {\n      gfc.VBR_seek_table.bag = new int[400]();\n      gfc.VBR_seek_table.size = 400;\n    }\n    var buffer = new_byte$1(MAXFRAMESIZE);\n    setLameTagFrameHeader(gfp, buffer);\n    var n = gfc.VBR_seek_table.TotalFrameSize;\n    for (var i = 0; i < n; ++i) {\n      bs.add_dummy_byte(gfp, buffer[i] & 255, 1);\n    }\n  };\n  function crcUpdateLookup(value, crc) {\n    var tmp = crc ^ value;\n    crc = crc >> 8 ^ crc16Lookup[tmp & 255];\n    return crc;\n  }\n  this.updateMusicCRC = function(crc, buffer, bufferPos, size2) {\n    for (var i = 0; i < size2; ++i) {\n      crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n    }\n  };\n  function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n    var gfc = gfp.internal_flags;\n    var bytesWritten = 0;\n    var encDelay = gfp.encoder_delay;\n    var encPadding = gfp.encoder_padding;\n    var quality = 100 - 10 * gfp.VBR_q - gfp.quality;\n    var version2 = v.getLameVeryShortVersion();\n    var vbr;\n    var revision = 0;\n    var revMethod;\n    var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n    var lowpass = 0 | (gfp.lowpassfreq / 100 + 0.5 > 255 ? 255 : gfp.lowpassfreq / 100 + 0.5);\n    var peakSignalAmplitude = 0;\n    var radioReplayGain = 0;\n    var audiophileReplayGain = 0;\n    var noiseShaping = gfp.internal_flags.noise_shaping;\n    var stereoMode = 0;\n    var nonOptimal = 0;\n    var sourceFreq = 0;\n    var misc = 0;\n    var musicCRC = 0;\n    var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n    var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n    var noGapMore = false;\n    var noGapPrevious = false;\n    var noGapCount = gfp.internal_flags.nogap_total;\n    var noGapCurr = gfp.internal_flags.nogap_current;\n    var athType = gfp.ATHtype;\n    var flags = 0;\n    var abrBitrate;\n    switch (gfp.VBR) {\n      case vbr_abr:\n        abrBitrate = gfp.VBR_mean_bitrate_kbps;\n        break;\n      case vbr_off:\n        abrBitrate = gfp.brate;\n        break;\n      default:\n        abrBitrate = gfp.VBR_min_bitrate_kbps;\n    }\n    if (gfp.VBR.ordinal() < vbrTypeTranslator.length) {\n      vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n    } else\n      vbr = 0;\n    revMethod = 16 * revision + vbr;\n    if (gfc.findReplayGain) {\n      if (gfc.RadioGain > 510)\n        gfc.RadioGain = 510;\n      if (gfc.RadioGain < -510)\n        gfc.RadioGain = -510;\n      radioReplayGain = 8192;\n      radioReplayGain |= 3072;\n      if (gfc.RadioGain >= 0) {\n        radioReplayGain |= gfc.RadioGain;\n      } else {\n        radioReplayGain |= 512;\n        radioReplayGain |= -gfc.RadioGain;\n      }\n    }\n    if (gfc.findPeakSample) {\n      peakSignalAmplitude = Math.abs(\n        0 | gfc.PeakSample / 32767 * Math.pow(2, 23) + 0.5\n      );\n    }\n    if (noGapCount != -1) {\n      if (noGapCurr > 0)\n        noGapPrevious = true;\n      if (noGapCurr < noGapCount - 1)\n        noGapMore = true;\n    }\n    flags = athType + ((expNPsyTune ? 1 : 0) << 4) + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6) + ((noGapPrevious ? 1 : 0) << 7);\n    if (quality < 0)\n      quality = 0;\n    switch (gfp.mode) {\n      case MONO:\n        stereoMode = 0;\n        break;\n      case STEREO:\n        stereoMode = 1;\n        break;\n      case DUAL_CHANNEL:\n        stereoMode = 2;\n        break;\n      case JOINT_STEREO:\n        if (gfp.force_ms)\n          stereoMode = 4;\n        else\n          stereoMode = 3;\n        break;\n      case NOT_SET:\n      default:\n        stereoMode = 7;\n        break;\n    }\n    if (gfp.in_samplerate <= 32e3)\n      sourceFreq = 0;\n    else if (gfp.in_samplerate == 48e3)\n      sourceFreq = 2;\n    else if (gfp.in_samplerate > 48e3)\n      sourceFreq = 3;\n    else {\n      sourceFreq = 1;\n    }\n    if (gfp.short_blocks == ShortBlock.short_block_forced || gfp.short_blocks == ShortBlock.short_block_dispensed || gfp.lowpassfreq == -1 && gfp.highpassfreq == -1 || gfp.scale_left < gfp.scale_right || gfp.scale_left > gfp.scale_right || gfp.disable_reservoir && gfp.brate < 320 || gfp.noATH || gfp.ATHonly || athType == 0 || gfp.in_samplerate <= 32e3) {\n      nonOptimal = 1;\n    }\n    misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5) + (sourceFreq << 6);\n    musicCRC = gfc.nMusicCRC;\n    createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n    bytesWritten += 4;\n    for (var j = 0; j < 9; j++) {\n      streamBuffer[streamBufferPos + bytesWritten + j] = 255 & version2.charAt(j);\n    }\n    bytesWritten += 9;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & revMethod;\n    bytesWritten++;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & lowpass;\n    bytesWritten++;\n    createInteger(\n      streamBuffer,\n      streamBufferPos + bytesWritten,\n      peakSignalAmplitude\n    );\n    bytesWritten += 4;\n    createShort(streamBuffer, streamBufferPos + bytesWritten, radioReplayGain);\n    bytesWritten += 2;\n    createShort(\n      streamBuffer,\n      streamBufferPos + bytesWritten,\n      audiophileReplayGain\n    );\n    bytesWritten += 2;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & flags;\n    bytesWritten++;\n    if (abrBitrate >= 255)\n      streamBuffer[streamBufferPos + bytesWritten] = 255;\n    else\n      streamBuffer[streamBufferPos + bytesWritten] = 255 & abrBitrate;\n    bytesWritten++;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & encDelay >> 4;\n    streamBuffer[streamBufferPos + bytesWritten + 1] = 255 & (encDelay << 4) + (encPadding >> 8);\n    streamBuffer[streamBufferPos + bytesWritten + 2] = 255 & encPadding;\n    bytesWritten += 3;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & misc;\n    bytesWritten++;\n    streamBuffer[streamBufferPos + bytesWritten++] = 0;\n    createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n    bytesWritten += 2;\n    createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n    bytesWritten += 4;\n    createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n    bytesWritten += 2;\n    for (var i = 0; i < bytesWritten; i++) {\n      crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n    }\n    createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n    bytesWritten += 2;\n    return bytesWritten;\n  }\n  function skipId3v2(fpStream) {\n    fpStream.seek(0);\n    var id3v2Header = new_byte$1(10);\n    fpStream.readFully(id3v2Header);\n    var id3v2TagSize;\n    if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n      id3v2TagSize = ((id3v2Header[6] & 127) << 21 | (id3v2Header[7] & 127) << 14 | (id3v2Header[8] & 127) << 7 | id3v2Header[9] & 127) + id3v2Header.length;\n    } else {\n      id3v2TagSize = 0;\n    }\n    return id3v2TagSize;\n  }\n  this.getLameTagFrame = function(gfp, buffer) {\n    var gfc = gfp.internal_flags;\n    if (!gfp.bWriteVbrTag) {\n      return 0;\n    }\n    if (gfc.Class_ID != Lame.LAME_ID) {\n      return 0;\n    }\n    if (gfc.VBR_seek_table.pos <= 0) {\n      return 0;\n    }\n    if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n      return gfc.VBR_seek_table.TotalFrameSize;\n    }\n    Arrays.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n    setLameTagFrameHeader(gfp, buffer);\n    var toc = new_byte$1(NUMTOCENTRIES);\n    if (gfp.free_format) {\n      for (var i = 1; i < NUMTOCENTRIES; ++i)\n        toc[i] = 255 & 255 * i / 100;\n    } else {\n      xingSeekTable(gfc.VBR_seek_table, toc);\n    }\n    var streamIndex = gfc.sideinfo_len;\n    if (gfp.error_protection)\n      streamIndex -= 2;\n    if (gfp.VBR == VbrMode.vbr_off) {\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(0);\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(1);\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(2);\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(3);\n    } else {\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(0);\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(1);\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(2);\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(3);\n    }\n    createInteger(\n      buffer,\n      streamIndex,\n      FRAMES_FLAG + BYTES_FLAG + TOC_FLAG + VBR_SCALE_FLAG\n    );\n    streamIndex += 4;\n    createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n    streamIndex += 4;\n    var streamSize = gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize;\n    createInteger(buffer, streamIndex, 0 | streamSize);\n    streamIndex += 4;\n    System.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n    streamIndex += toc.length;\n    if (gfp.error_protection) {\n      bs.CRC_writeheader(gfc, buffer);\n    }\n    var crc = 0;\n    for (var i = 0; i < streamIndex; i++)\n      crc = crcUpdateLookup(buffer[i], crc);\n    streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n    return gfc.VBR_seek_table.TotalFrameSize;\n  };\n  this.putVbrTag = function(gfp, stream) {\n    var gfc = gfp.internal_flags;\n    if (gfc.VBR_seek_table.pos <= 0)\n      return -1;\n    stream.seek(stream.length());\n    if (stream.length() == 0)\n      return -1;\n    var id3v2TagSize = skipId3v2(stream);\n    stream.seek(id3v2TagSize);\n    var buffer = new_byte$1(MAXFRAMESIZE);\n    var bytes = getLameTagFrame(gfp, buffer);\n    if (bytes > buffer.length) {\n      return -1;\n    }\n    if (bytes < 1) {\n      return 0;\n    }\n    stream.write(buffer, 0, bytes);\n    return 0;\n  };\n}\nvar new_byte = common.new_byte;\nvar assert = common.assert;\nfunction GetAudio() {\n  this.setModules = function(parse2, mpg2) {\n  };\n}\nfunction Parse() {\n  this.setModules = function(ver2, id32, pre2) {\n  };\n}\nfunction MPGLib() {\n}\nfunction ID3Tag() {\n  this.setModules = function(_bits, _ver) {\n  };\n}\nfunction Mp3Encoder$1(channels, samplerate, kbps) {\n  if (arguments.length != 3) {\n    console.error(\"WARN: Mp3Encoder(channels, samplerate, kbps) not specified\");\n    channels = 1;\n    samplerate = 44100;\n    kbps = 128;\n  }\n  var lame = new Lame$1();\n  var gaud = new GetAudio();\n  var ga = new GainAnalysis$1();\n  var bs = new BitStream$1();\n  var p2 = new Presets();\n  var qupvt = new QuantizePVT();\n  var qu = new Quantize();\n  var vbr = new VBRTag();\n  var ver = new Version();\n  var id3 = new ID3Tag();\n  var rv = new Reservoir();\n  var tak = new Takehiro();\n  var parse2 = new Parse();\n  var mpg = new MPGLib();\n  lame.setModules(ga, bs, p2, qupvt, qu, vbr, ver, id3, mpg);\n  bs.setModules(ga, mpg, ver, vbr);\n  id3.setModules(bs, ver);\n  p2.setModules(lame);\n  qu.setModules(bs, rv, qupvt, tak);\n  qupvt.setModules(tak, rv, lame.enc.psy);\n  rv.setModules(bs);\n  tak.setModules(qupvt);\n  vbr.setModules(lame, bs, ver);\n  gaud.setModules(parse2, mpg);\n  parse2.setModules(ver, id3, p2);\n  var gfp = lame.lame_init();\n  gfp.num_channels = channels;\n  gfp.in_samplerate = samplerate;\n  gfp.brate = kbps;\n  gfp.mode = MPEGMode.STEREO;\n  gfp.quality = 3;\n  gfp.bWriteVbrTag = false;\n  gfp.disable_reservoir = true;\n  gfp.write_id3tag_automatic = false;\n  lame.lame_init_params(gfp);\n  var maxSamples = 1152;\n  var mp3buf_size = 0 | 1.25 * maxSamples + 7200;\n  var mp3buf = new_byte(mp3buf_size);\n  this.encodeBuffer = function(left, right) {\n    if (channels == 1) {\n      right = left;\n    }\n    assert(left.length == right.length);\n    if (left.length > maxSamples) {\n      maxSamples = left.length;\n      mp3buf_size = 0 | 1.25 * maxSamples + 7200;\n      mp3buf = new_byte(mp3buf_size);\n    }\n    var _sz = lame.lame_encode_buffer(\n      gfp,\n      left,\n      right,\n      left.length,\n      mp3buf,\n      0,\n      mp3buf_size\n    );\n    return new Int8Array(mp3buf.subarray(0, _sz));\n  };\n  this.flush = function() {\n    var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n    return new Int8Array(mp3buf.subarray(0, _sz));\n  };\n}\nfunction fourccToInt(fourcc) {\n  return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\nfourccToInt(\"RIFF\");\nfourccToInt(\"WAVE\");\nfourccToInt(\"fmt \");\nfourccToInt(\"data\");\nclass Mp3Encoder {\n  constructor(config) {\n    this.bitRate = config.bitRate;\n    this.sampleRate = config.sampleRate;\n    this.dataBuffer = [];\n    this.encoder = new Mp3Encoder$1(1, this.sampleRate, this.bitRate);\n  }\n  encode(arrayBuffer) {\n    const maxSamples = 1152;\n    const samples = this._convertBuffer(arrayBuffer);\n    let remaining = samples.length;\n    for (let i = 0; remaining >= 0; i += maxSamples) {\n      const left = samples.subarray(i, i + maxSamples);\n      const buffer = this.encoder.encodeBuffer(left);\n      this.dataBuffer.push(new Int8Array(buffer));\n      remaining -= maxSamples;\n    }\n  }\n  finish() {\n    this.dataBuffer.push(this.encoder.flush());\n    const blob = new Blob(this.dataBuffer, { type: \"audio/mp3\" });\n    this.dataBuffer = [];\n    return {\n      id: Date.now(),\n      blob,\n      url: URL.createObjectURL(blob)\n    };\n  }\n  _floatTo16BitPCM(input, output) {\n    for (let i = 0; i < input.length; i++) {\n      const s = Math.max(-1, Math.min(1, input[i]));\n      output[i] = s < 0 ? s * 32768 : s * 32767;\n    }\n  }\n  _convertBuffer(arrayBuffer) {\n    const data = new Float32Array(arrayBuffer);\n    const out = new Int16Array(arrayBuffer.length);\n    this._floatTo16BitPCM(data, out);\n    return out;\n  }\n}\nclass Recorder {\n  constructor(options = {}) {\n    this.beforeRecording = options.beforeRecording;\n    this.pauseRecording = options.pauseRecording;\n    this.afterRecording = options.afterRecording;\n    this.micFailed = options.micFailed;\n    this.encoderOptions = {\n      bitRate: options.bitRate,\n      sampleRate: options.sampleRate\n    };\n    this.bufferSize = 4096;\n    this.records = [];\n    this.isPause = false;\n    this.isRecording = false;\n    this.duration = 0;\n    this.volume = 0;\n    this._duration = 0;\n  }\n  start() {\n    const constraints = {\n      video: false,\n      audio: {\n        channelCount: 1,\n        echoCancellation: false\n      }\n    };\n    this.beforeRecording && this.beforeRecording(\"start recording\");\n    navigator.mediaDevices.getUserMedia(constraints).then(this._micCaptured.bind(this)).catch(this._micError.bind(this));\n    this.isPause = false;\n    this.isRecording = true;\n    if (!this.lameEncoder) {\n      this.lameEncoder = new Mp3Encoder(this.encoderOptions);\n    }\n  }\n  stop() {\n    this.stream.getTracks().forEach((track2) => track2.stop());\n    this.input.disconnect();\n    this.processor.disconnect();\n    this.context.close();\n    let record = null;\n    record = this.lameEncoder.finish();\n    record.duration = this.duration;\n    this.records.push(record);\n    this._duration = 0;\n    this.duration = 0;\n    this.isPause = false;\n    this.isRecording = false;\n    this.afterRecording && this.afterRecording(record);\n  }\n  pause() {\n    this.stream.getTracks().forEach((track2) => track2.stop());\n    this.input.disconnect();\n    this.processor.disconnect();\n    this._duration = this.duration;\n    this.isPause = true;\n    this.pauseRecording && this.pauseRecording(\"pause recording\");\n  }\n  _micCaptured(stream) {\n    this.context = new (window.AudioContext || window.webkitAudioContext)();\n    this.duration = this._duration;\n    this.input = this.context.createMediaStreamSource(stream);\n    this.processor = this.context.createScriptProcessor(this.bufferSize, 1, 1);\n    this.stream = stream;\n    this.processor.onaudioprocess = (ev) => {\n      const sample = ev.inputBuffer.getChannelData(0);\n      let sum = 0;\n      if (this.lameEncoder) {\n        this.lameEncoder.encode(sample);\n      }\n      for (let i = 0; i < sample.length; ++i) {\n        sum += sample[i] * sample[i];\n      }\n      this.duration = parseFloat(this._duration) + parseFloat(this.context.currentTime.toFixed(2));\n      this.volume = Math.sqrt(sum / sample.length).toFixed(2);\n    };\n    this.input.connect(this.processor);\n    this.processor.connect(this.context.destination);\n  }\n  _micError(error) {\n    this.micFailed && this.micFailed(error);\n  }\n}\nvar isChromium = window.chrome;\nvar winNav = window.navigator;\nvar vendorName = winNav.vendor;\nvar isOpera = typeof window.opr !== \"undefined\";\nvar isIEedge = winNav.userAgent.indexOf(\"Edg\") > -1;\nvar isIOSChrome = winNav.userAgent.match(\"CriOS\");\nfunction detectChrome() {\n  if (isIOSChrome) {\n    return true;\n  } else if (isChromium !== null && typeof isChromium !== \"undefined\" && vendorName === \"Google Inc.\" && isOpera === false && isIEedge === false) {\n    return true;\n  } else {\n    return false;\n  }\n}\nfunction detectMobile() {\n  var userAgent = getUserAgent();\n  var userAgentPart = userAgent.substr(0, 4);\n  return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n    userAgent\n  ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(\n    userAgentPart\n  );\n}\nfunction getUserAgent() {\n  var userAgent = navigator.userAgent || navigator.vendor || window.opera || null;\n  if (!userAgent)\n    throw new Error(\"Failed to look for user agent information.\");\n  return userAgent;\n}\nconst _sfc_main$a = {\n  name: \"RoomFooter\",\n  components: {\n    SvgIcon,\n    EmojiPickerContainer,\n    RoomFiles,\n    RoomMessageReply,\n    RoomUsersTag,\n    RoomEmojis,\n    RoomTemplatesText\n  },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    room: { type: Object, required: true },\n    roomId: { type: [String, Number], required: true },\n    roomMessage: { type: String, default: null },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    textMessages: { type: Object, required: true },\n    showSendIcon: { type: Boolean, required: true },\n    showFiles: { type: Boolean, required: true },\n    showAudio: { type: Boolean, required: true },\n    showEmojis: { type: Boolean, required: true },\n    showFooter: { type: Boolean, required: true },\n    acceptedFiles: { type: String, required: true },\n    multipleFiles: { type: Boolean, default: true },\n    captureFiles: { type: String, required: true },\n    textareaActionEnabled: { type: Boolean, required: true },\n    textareaAutoFocus: { type: Boolean, required: true },\n    userTagsEnabled: { type: Boolean, required: true },\n    emojisSuggestionEnabled: { type: Boolean, required: true },\n    templatesText: { type: Array, default: null },\n    audioBitRate: { type: Number, required: true },\n    audioSampleRate: { type: Number, required: true },\n    initReplyMessage: { type: Object, default: null },\n    initEditMessage: { type: Object, default: null },\n    droppedFiles: { type: Array, default: null },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"edit-message\",\n    \"send-message\",\n    \"update-edited-message-id\",\n    \"textarea-action-handler\",\n    \"typing-message\"\n  ],\n  data() {\n    return {\n      message: \"\",\n      editedMessage: {},\n      messageReply: null,\n      cursorRangePosition: null,\n      files: [],\n      fileDialog: false,\n      selectUsersTagItem: null,\n      selectEmojiItem: null,\n      selectTemplatesTextItem: null,\n      format: \"mp3\",\n      activeUpOrDownEmojis: null,\n      activeUpOrDownUsersTag: null,\n      activeUpOrDownTemplatesText: null,\n      emojisDB: new Database({ dataSource: this.emojiDataSource }),\n      emojiOpened: false,\n      keepKeyboardOpen: false,\n      filteredEmojis: [],\n      filteredUsersTag: [],\n      selectedUsersTag: [],\n      filteredTemplatesText: [],\n      recorder: this.initRecorder(),\n      isRecording: false\n    };\n  },\n  computed: {\n    isMessageEmpty() {\n      return !this.files.length && !this.message.trim();\n    },\n    isFileLoading() {\n      return this.files.some((e) => e.loading);\n    },\n    recordedTime() {\n      return new Date(this.recorder.duration * 1e3).toISOString().substr(14, 5);\n    },\n    shadowFooter() {\n      return !!this.filteredEmojis.length || !!this.filteredUsersTag.length || !!this.filteredTemplatesText.length || !!this.files.length || !!this.messageReply;\n    }\n  },\n  watch: {\n    roomId() {\n      this.resetMessage(true, true);\n      if (this.roomMessage) {\n        this.message = this.roomMessage;\n        setTimeout(() => this.onChangeInput());\n      }\n    },\n    message(val) {\n      this.getTextareaRef().value = val;\n    },\n    roomMessage: {\n      immediate: true,\n      handler(val) {\n        if (val)\n          this.message = this.roomMessage;\n      }\n    },\n    editedMessage(val) {\n      this.$emit(\"update-edited-message-id\", val._id);\n    },\n    initReplyMessage(val) {\n      if (val) {\n        this.replyMessage(val);\n      }\n    },\n    initEditMessage(val) {\n      if (val) {\n        this.editMessage(val);\n      }\n    },\n    droppedFiles(val) {\n      if (val) {\n        this.onFileChange(val);\n      }\n    }\n  },\n  mounted() {\n    const isMobile = detectMobile();\n    let isComposed = true;\n    this.getTextareaRef().addEventListener(\"keyup\", (e) => {\n      if (e.key === \"Enter\" && !e.shiftKey && !this.fileDialog) {\n        if (isMobile) {\n          this.message = this.message + \"\\n\";\n          setTimeout(() => this.onChangeInput());\n        } else if (isComposed && !this.filteredEmojis.length && !this.filteredUsersTag.length && !this.filteredTemplatesText.length) {\n          this.sendMessage();\n        }\n      }\n      isComposed = !e.isComposing;\n      setTimeout(() => {\n        this.updateFooterLists();\n      }, 60);\n    });\n    this.getTextareaRef().addEventListener(\"click\", () => {\n      if (isMobile)\n        this.keepKeyboardOpen = true;\n      this.updateFooterLists();\n    });\n    this.getTextareaRef().addEventListener(\"blur\", () => {\n      setTimeout(() => {\n        this.resetFooterList();\n      }, 100);\n      if (isMobile)\n        setTimeout(() => this.keepKeyboardOpen = false);\n    });\n  },\n  beforeUnmount() {\n    this.stopRecorder();\n  },\n  methods: {\n    getTextareaRef() {\n      return this.$refs.roomTextarea;\n    },\n    focusTextarea(disableMobileFocus) {\n      if (detectMobile() && disableMobileFocus)\n        return;\n      if (!this.getTextareaRef())\n        return;\n      this.getTextareaRef().focus();\n      if (this.cursorRangePosition) {\n        setTimeout(() => {\n          const offset = detectChrome() ? 0 : 1;\n          this.getTextareaRef().setSelectionRange(\n            this.cursorRangePosition + offset,\n            this.cursorRangePosition + offset\n          );\n          this.cursorRangePosition = null;\n        });\n      }\n    },\n    onChangeInput() {\n      var _a, _b, _c;\n      if (((_a = this.getTextareaRef()) == null ? void 0 : _a.value) || ((_b = this.getTextareaRef()) == null ? void 0 : _b.value) === \"\") {\n        this.message = (_c = this.getTextareaRef()) == null ? void 0 : _c.value;\n      }\n      this.keepKeyboardOpen = true;\n      this.resizeTextarea();\n      this.$emit(\"typing-message\", this.message);\n    },\n    resizeTextarea() {\n      const el = this.getTextareaRef();\n      if (!el)\n        return;\n      const padding = window.getComputedStyle(el, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\");\n      el.style.height = 0;\n      el.style.height = el.scrollHeight - padding * 2 + \"px\";\n    },\n    escapeTextarea() {\n      if (this.filteredEmojis.length)\n        this.filteredEmojis = [];\n      else if (this.filteredUsersTag.length)\n        this.filteredUsersTag = [];\n      else if (this.filteredTemplatesText.length) {\n        this.filteredTemplatesText = [];\n      } else\n        this.resetMessage();\n    },\n    onPasteImage(pasteEvent) {\n      var _a;\n      const items = (_a = pasteEvent.clipboardData) == null ? void 0 : _a.items;\n      if (items) {\n        Array.from(items).forEach((item) => {\n          if (item.type.includes(\"image\")) {\n            const blob = item.getAsFile();\n            this.onFileChange([blob]);\n          }\n        });\n      }\n    },\n    updateActiveUpOrDown(event, direction) {\n      if (this.filteredEmojis.length) {\n        this.activeUpOrDownEmojis = direction;\n        event.preventDefault();\n      } else if (this.filteredUsersTag.length) {\n        this.activeUpOrDownUsersTag = direction;\n        event.preventDefault();\n      } else if (this.filteredTemplatesText.length) {\n        this.activeUpOrDownTemplatesText = direction;\n        event.preventDefault();\n      }\n    },\n    selectItem() {\n      if (this.filteredEmojis.length) {\n        this.selectEmojiItem = true;\n      } else if (this.filteredUsersTag.length) {\n        this.selectUsersTagItem = true;\n      } else if (this.filteredTemplatesText.length) {\n        this.selectTemplatesTextItem = true;\n      }\n    },\n    selectEmoji(emoji) {\n      this.selectEmojiItem = false;\n      if (!emoji)\n        return;\n      const { position, endPosition } = this.getCharPosition(\":\");\n      this.message = this.message.substr(0, position - 1) + emoji + this.message.substr(endPosition, this.message.length - 1);\n      this.cursorRangePosition = position;\n      this.focusTextarea();\n    },\n    selectTemplateText(template) {\n      this.selectTemplatesTextItem = false;\n      if (!template)\n        return;\n      const { position, endPosition } = this.getCharPosition(\"/\");\n      const space = this.message.substr(endPosition, endPosition).length ? \"\" : \" \";\n      this.message = this.message.substr(0, position - 1) + template.text + space + this.message.substr(endPosition, this.message.length - 1);\n      this.cursorRangePosition = position + template.text.length + space.length + 1;\n      this.focusTextarea();\n    },\n    addEmoji(emoji) {\n      this.message += emoji.unicode;\n      this.focusTextarea(true);\n    },\n    launchFilePicker() {\n      this.$refs.file.value = \"\";\n      this.$refs.file.click();\n    },\n    async onFileChange(files) {\n      this.fileDialog = true;\n      this.focusTextarea();\n      Array.from(files).forEach(async (file) => {\n        const fileURL = URL.createObjectURL(file);\n        const typeIndex = file.name.lastIndexOf(\".\");\n        this.files.push({\n          loading: true,\n          name: file.name.substring(0, typeIndex),\n          size: file.size,\n          type: file.type,\n          extension: file.name.substring(typeIndex + 1),\n          localUrl: fileURL\n        });\n        const blobFile = await fetch(fileURL).then((res) => res.blob());\n        let loadedFile = this.files.find((file2) => file2.localUrl === fileURL);\n        if (loadedFile) {\n          loadedFile.blob = blobFile;\n          loadedFile.loading = false;\n          delete loadedFile.loading;\n        }\n      });\n      setTimeout(() => this.fileDialog = false, 500);\n    },\n    removeFile(index) {\n      this.files.splice(index, 1);\n      this.focusTextarea();\n    },\n    toggleRecorder(recording) {\n      this.isRecording = recording;\n      if (!this.recorder.isRecording) {\n        setTimeout(() => this.recorder.start(), 200);\n      } else {\n        try {\n          this.recorder.stop();\n          const record = this.recorder.records[0];\n          this.files.push({\n            blob: record.blob,\n            name: `audio.${this.format}`,\n            size: record.blob.size,\n            duration: record.duration,\n            type: record.blob.type,\n            audio: true,\n            localUrl: URL.createObjectURL(record.blob)\n          });\n          this.recorder = this.initRecorder();\n          this.sendMessage();\n        } catch {\n          setTimeout(() => this.stopRecorder(), 100);\n        }\n      }\n    },\n    stopRecorder() {\n      if (this.recorder.isRecording) {\n        try {\n          this.recorder.stop();\n          this.recorder = this.initRecorder();\n        } catch {\n          setTimeout(() => this.stopRecorder(), 100);\n        }\n      }\n    },\n    textareaActionHandler() {\n      this.$emit(\"textarea-action-handler\", this.message);\n    },\n    sendMessage() {\n      var _a;\n      let message = this.message.trim();\n      if (!this.files.length && !message)\n        return;\n      if (this.isFileLoading)\n        return;\n      this.selectedUsersTag.forEach((user) => {\n        message = message.replace(\n          `@${user.username}`,\n          `<usertag>${user._id}</usertag>`\n        );\n      });\n      const files = this.files.length ? this.files : null;\n      if (this.editedMessage._id) {\n        if (this.editedMessage.content !== message || ((_a = this.editedMessage.files) == null ? void 0 : _a.length) || this.files.length) {\n          this.$emit(\"edit-message\", {\n            messageId: this.editedMessage._id,\n            newContent: message,\n            files,\n            replyMessage: this.messageReply,\n            usersTag: this.selectedUsersTag\n          });\n        }\n      } else {\n        this.$emit(\"send-message\", {\n          content: message,\n          files,\n          replyMessage: this.messageReply,\n          usersTag: this.selectedUsersTag\n        });\n      }\n      this.resetMessage(true);\n    },\n    editMessage(message) {\n      this.resetMessage();\n      this.editedMessage = { ...message };\n      let messageContent = message.content;\n      const initialContent = messageContent;\n      const firstTag = \"<usertag>\";\n      const secondTag = \"</usertag>\";\n      const usertags = [\n        ...messageContent.matchAll(new RegExp(firstTag, \"gi\"))\n      ].map((a) => a.index);\n      usertags.forEach((index) => {\n        const userId = initialContent.substring(\n          index + firstTag.length,\n          initialContent.indexOf(secondTag, index)\n        );\n        const user = this.room.users.find((user2) => user2._id === userId);\n        messageContent = messageContent.replace(\n          `${firstTag}${userId}${secondTag}`,\n          `@${(user == null ? void 0 : user.username) || \"unknown\"}`\n        );\n        this.selectUserTag(user, true);\n      });\n      this.message = messageContent;\n      if (message.files) {\n        this.files = [...message.files];\n      }\n      setTimeout(() => this.resizeTextarea());\n    },\n    replyMessage(message) {\n      this.editedMessage = {};\n      this.messageReply = message;\n      this.focusTextarea();\n    },\n    updateFooterLists() {\n      this.updateFooterList(\"@\");\n      this.updateFooterList(\":\");\n      this.updateFooterList(\"/\");\n    },\n    updateFooterList(tagChar) {\n      if (!this.getTextareaRef())\n        return;\n      if (tagChar === \":\" && !this.emojisSuggestionEnabled) {\n        return;\n      }\n      if (tagChar === \"@\" && (!this.userTagsEnabled || !this.room.users)) {\n        return;\n      }\n      if (tagChar === \"/\" && !this.templatesText) {\n        return;\n      }\n      const textareaCursorPosition = this.getTextareaRef().selectionStart;\n      let position = textareaCursorPosition;\n      while (position > 0 && this.message.charAt(position - 1) !== tagChar && (this.message.charAt(position - 1) !== \" \" || tagChar !== \":\")) {\n        position--;\n      }\n      const beforeTag = this.message.charAt(position - 2);\n      const notLetterNumber = !beforeTag.match(/^[0-9a-zA-Z]+$/);\n      if (this.message.charAt(position - 1) === tagChar && (!beforeTag || beforeTag === \" \" || notLetterNumber)) {\n        const query = this.message.substring(position, textareaCursorPosition);\n        if (tagChar === \":\") {\n          this.updateEmojis(query);\n        } else if (tagChar === \"@\") {\n          this.updateShowUsersTag(query);\n        } else if (tagChar === \"/\") {\n          this.updateShowTemplatesText(query);\n        }\n      } else {\n        this.resetFooterList(tagChar);\n      }\n    },\n    updateShowUsersTag(query) {\n      this.filteredUsersTag = filteredItems(\n        this.room.users,\n        \"username\",\n        query,\n        true\n      ).filter((user) => user._id !== this.currentUserId);\n    },\n    selectUserTag(user, editMode = false) {\n      this.selectUsersTagItem = false;\n      if (!user)\n        return;\n      const { position, endPosition } = this.getCharPosition(\"@\");\n      const space = this.message.substr(endPosition, endPosition).length ? \"\" : \" \";\n      this.message = this.message.substr(0, position) + user.username + space + this.message.substr(endPosition, this.message.length - 1);\n      this.selectedUsersTag = [...this.selectedUsersTag, { ...user }];\n      if (!editMode) {\n        this.cursorRangePosition = position + user.username.length + space.length + 1;\n      }\n      this.focusTextarea();\n    },\n    updateShowTemplatesText(query) {\n      this.filteredTemplatesText = filteredItems(\n        this.templatesText,\n        \"tag\",\n        query,\n        true\n      );\n    },\n    getCharPosition(tagChar) {\n      const cursorPosition = this.getTextareaRef().selectionStart;\n      let position = cursorPosition;\n      while (position > 0 && this.message.charAt(position - 1) !== tagChar) {\n        position--;\n      }\n      const endPosition = this.getTextareaRef().selectionEnd;\n      return { position, endPosition };\n    },\n    async updateEmojis(query) {\n      if (!query)\n        return;\n      const emojis = await this.emojisDB.getEmojiBySearchQuery(query);\n      this.filteredEmojis = emojis.map((emoji) => emoji.unicode);\n    },\n    resetFooterList(tagChar = null) {\n      if (tagChar === \":\") {\n        this.filteredEmojis = [];\n      } else if (tagChar === \"@\") {\n        this.filteredUsersTag = [];\n      } else if (tagChar === \"/\") {\n        this.filteredTemplatesText = [];\n      } else {\n        this.filteredEmojis = [];\n        this.filteredUsersTag = [];\n        this.filteredTemplatesText = [];\n      }\n    },\n    resetMessage(disableMobileFocus = false, initRoom = false) {\n      if (!initRoom) {\n        this.$emit(\"typing-message\", null);\n      }\n      this.selectedUsersTag = [];\n      this.resetFooterList();\n      this.resetTextareaSize();\n      this.message = \"\";\n      this.editedMessage = {};\n      this.messageReply = null;\n      this.files = [];\n      this.emojiOpened = false;\n      this.preventKeyboardFromClosing();\n      if (this.textareaAutoFocus || !initRoom) {\n        setTimeout(() => this.focusTextarea(disableMobileFocus));\n      }\n    },\n    resetTextareaSize() {\n      if (this.getTextareaRef()) {\n        this.getTextareaRef().style.height = \"20px\";\n      }\n    },\n    preventKeyboardFromClosing() {\n      if (this.keepKeyboardOpen)\n        this.getTextareaRef().focus();\n    },\n    initRecorder() {\n      this.isRecording = false;\n      return new Recorder({\n        bitRate: Number(this.audioBitRate),\n        sampleRate: Number(this.audioSampleRate),\n        beforeRecording: null,\n        afterRecording: null,\n        pauseRecording: null,\n        micFailed: this.micFailed\n      });\n    },\n    micFailed() {\n      this.isRecording = false;\n      this.recorder = this.initRecorder();\n    }\n  }\n};\nconst _hoisted_1$a = {\n  key: 0,\n  class: \"vac-icon-textarea-left\"\n};\nconst _hoisted_2$8 = /* @__PURE__ */ createBaseVNode(\"div\", { class: \"vac-dot-audio-record\" }, null, -1);\nconst _hoisted_3$8 = { class: \"vac-dot-audio-record-time\" };\nconst _hoisted_4$8 = [\"placeholder\"];\nconst _hoisted_5$6 = { class: \"vac-icon-textarea\" };\nconst _hoisted_6$3 = { key: 1 };\nconst _hoisted_7$3 = [\"multiple\", \"accept\", \"capture\"];\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_room_emojis = resolveComponent(\"room-emojis\");\n  const _component_room_users_tag = resolveComponent(\"room-users-tag\");\n  const _component_room_templates_text = resolveComponent(\"room-templates-text\");\n  const _component_room_message_reply = resolveComponent(\"room-message-reply\");\n  const _component_room_files = resolveComponent(\"room-files\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_emoji_picker_container = resolveComponent(\"emoji-picker-container\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return withDirectives((openBlock(), createElementBlock(\"div\", {\n    id: \"room-footer\",\n    class: normalizeClass([\"vac-room-footer\", {\n      \"vac-app-box-shadow\": $options.shadowFooter\n    }])\n  }, [\n    createVNode(_component_room_emojis, {\n      \"filtered-emojis\": $data.filteredEmojis,\n      \"select-item\": $data.selectEmojiItem,\n      \"active-up-or-down\": $data.activeUpOrDownEmojis,\n      onSelectEmoji: _cache[0] || (_cache[0] = ($event) => $options.selectEmoji($event)),\n      onActivateItem: _cache[1] || (_cache[1] = ($event) => $data.activeUpOrDownEmojis = 0)\n    }, null, 8, [\"filtered-emojis\", \"select-item\", \"active-up-or-down\"]),\n    createVNode(_component_room_users_tag, {\n      \"filtered-users-tag\": $data.filteredUsersTag,\n      \"select-item\": $data.selectUsersTagItem,\n      \"active-up-or-down\": $data.activeUpOrDownUsersTag,\n      onSelectUserTag: _cache[2] || (_cache[2] = ($event) => $options.selectUserTag($event)),\n      onActivateItem: _cache[3] || (_cache[3] = ($event) => $data.activeUpOrDownUsersTag = 0)\n    }, null, 8, [\"filtered-users-tag\", \"select-item\", \"active-up-or-down\"]),\n    createVNode(_component_room_templates_text, {\n      \"filtered-templates-text\": $data.filteredTemplatesText,\n      \"select-item\": $data.selectTemplatesTextItem,\n      \"active-up-or-down\": $data.activeUpOrDownTemplatesText,\n      onSelectTemplateText: _cache[4] || (_cache[4] = ($event) => $options.selectTemplateText($event)),\n      onActivateItem: _cache[5] || (_cache[5] = ($event) => $data.activeUpOrDownTemplatesText = 0)\n    }, null, 8, [\"filtered-templates-text\", \"select-item\", \"active-up-or-down\"]),\n    createVNode(_component_room_message_reply, {\n      room: $props.room,\n      \"message-reply\": $data.messageReply,\n      \"text-formatting\": $props.textFormatting,\n      \"link-options\": $props.linkOptions,\n      onResetMessage: $options.resetMessage\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (i, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"room\", \"message-reply\", \"text-formatting\", \"link-options\", \"onResetMessage\"]),\n    createVNode(_component_room_files, {\n      files: $data.files,\n      onRemoveFile: $options.removeFile,\n      onResetMessage: $options.resetMessage\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (i, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"files\", \"onRemoveFile\", \"onResetMessage\"]),\n    createBaseVNode(\"div\", {\n      class: normalizeClass([\"vac-box-footer\", { \"vac-box-footer-border\": !$data.files.length }])\n    }, [\n      $props.showAudio && !$data.files.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$a, [\n        $data.isRecording ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button vac-icon-audio-stop\",\n            onClick: _cache[6] || (_cache[6] = (...args) => $options.stopRecorder && $options.stopRecorder(...args))\n          }, [\n            renderSlot(_ctx.$slots, \"audio-stop-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"close-outline\" })\n            ])\n          ]),\n          _hoisted_2$8,\n          createBaseVNode(\"div\", _hoisted_3$8, toDisplayString($options.recordedTime), 1),\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button vac-icon-audio-confirm\",\n            onClick: _cache[7] || (_cache[7] = ($event) => $options.toggleRecorder(false))\n          }, [\n            renderSlot(_ctx.$slots, \"audio-check-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"checkmark\" })\n            ])\n          ])\n        ], 64)) : (openBlock(), createElementBlock(\"div\", {\n          key: 1,\n          class: \"vac-svg-button\",\n          onClick: _cache[8] || (_cache[8] = ($event) => $options.toggleRecorder(true))\n        }, [\n          renderSlot(_ctx.$slots, \"microphone-icon\", {}, () => [\n            createVNode(_component_svg_icon, {\n              name: \"microphone\",\n              class: \"vac-icon-microphone\"\n            })\n          ])\n        ]))\n      ])) : createCommentVNode(\"\", true),\n      createBaseVNode(\"textarea\", {\n        id: \"roomTextarea\",\n        ref: \"roomTextarea\",\n        placeholder: $props.textMessages.TYPE_MESSAGE,\n        class: normalizeClass([\"vac-textarea\", {\n          \"vac-textarea-outline\": $data.editedMessage._id\n        }]),\n        style: {\n          \"min-height\": `20px`,\n          \"padding-left\": `12px`\n        },\n        onInput: _cache[9] || (_cache[9] = (...args) => $options.onChangeInput && $options.onChangeInput(...args)),\n        onKeydown: [\n          _cache[10] || (_cache[10] = withKeys((...args) => $options.escapeTextarea && $options.escapeTextarea(...args), [\"esc\"])),\n          _cache[11] || (_cache[11] = withKeys(withModifiers((...args) => $options.selectItem && $options.selectItem(...args), [\"exact\", \"prevent\"]), [\"enter\"])),\n          _cache[13] || (_cache[13] = withKeys(withModifiers(() => {\n          }, [\"exact\", \"prevent\"]), [\"tab\"])),\n          _cache[14] || (_cache[14] = withKeys((...args) => $options.selectItem && $options.selectItem(...args), [\"tab\"])),\n          _cache[15] || (_cache[15] = withKeys(($event) => $options.updateActiveUpOrDown($event, -1), [\"up\"])),\n          _cache[16] || (_cache[16] = withKeys(($event) => $options.updateActiveUpOrDown($event, 1), [\"down\"]))\n        ],\n        onPaste: _cache[12] || (_cache[12] = (...args) => $options.onPasteImage && $options.onPasteImage(...args))\n      }, null, 42, _hoisted_4$8),\n      createBaseVNode(\"div\", _hoisted_5$6, [\n        $data.editedMessage._id ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: \"vac-svg-button\",\n          onClick: _cache[17] || (_cache[17] = (...args) => $options.resetMessage && $options.resetMessage(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"edit-close-icon\", {}, () => [\n            createVNode(_component_svg_icon, { name: \"close-outline\" })\n          ])\n        ])) : createCommentVNode(\"\", true),\n        $props.showEmojis ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_6$3, [\n          renderSlot(_ctx.$slots, \"emoji-picker\", mergeProps({ emojiOpened: $data.emojiOpened }, { addEmoji: $options.addEmoji }), () => [\n            createVNode(_component_emoji_picker_container, {\n              \"emoji-opened\": $data.emojiOpened,\n              \"position-top\": true,\n              \"emoji-data-source\": $props.emojiDataSource,\n              onAddEmoji: $options.addEmoji,\n              onOpenEmoji: _cache[18] || (_cache[18] = ($event) => $data.emojiOpened = $event)\n            }, {\n              \"emoji-picker-icon\": withCtx(() => [\n                renderSlot(_ctx.$slots, \"emoji-picker-icon\")\n              ]),\n              _: 3\n            }, 8, [\"emoji-opened\", \"emoji-data-source\", \"onAddEmoji\"])\n          ])\n        ])), [\n          [_directive_click_outside, () => $data.emojiOpened = false]\n        ]) : createCommentVNode(\"\", true),\n        $props.showFiles ? (openBlock(), createElementBlock(\"div\", {\n          key: 2,\n          class: \"vac-svg-button\",\n          onClick: _cache[19] || (_cache[19] = (...args) => $options.launchFilePicker && $options.launchFilePicker(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"paperclip-icon\", {}, () => [\n            createVNode(_component_svg_icon, { name: \"paperclip\" })\n          ])\n        ])) : createCommentVNode(\"\", true),\n        $props.textareaActionEnabled ? (openBlock(), createElementBlock(\"div\", {\n          key: 3,\n          class: \"vac-svg-button\",\n          onClick: _cache[20] || (_cache[20] = (...args) => $options.textareaActionHandler && $options.textareaActionHandler(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"custom-action-icon\", {}, () => [\n            createVNode(_component_svg_icon, { name: \"deleted\" })\n          ])\n        ])) : createCommentVNode(\"\", true),\n        $props.showFiles ? (openBlock(), createElementBlock(\"input\", {\n          key: 4,\n          ref: \"file\",\n          type: \"file\",\n          multiple: $props.multipleFiles ? true : null,\n          accept: $props.acceptedFiles,\n          capture: $props.captureFiles,\n          style: { \"display\": \"none\" },\n          onChange: _cache[21] || (_cache[21] = ($event) => $options.onFileChange($event.target.files))\n        }, null, 40, _hoisted_7$3)) : createCommentVNode(\"\", true),\n        $props.showSendIcon ? (openBlock(), createElementBlock(\"div\", {\n          key: 5,\n          class: normalizeClass([\"vac-svg-button\", { \"vac-send-disabled\": $options.isMessageEmpty }]),\n          onClick: _cache[22] || (_cache[22] = (...args) => $options.sendMessage && $options.sendMessage(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"send-icon\", {}, () => [\n            createVNode(_component_svg_icon, {\n              name: \"send\",\n              param: $options.isMessageEmpty || $options.isFileLoading ? \"disabled\" : \"\"\n            }, null, 8, [\"param\"])\n          ])\n        ], 2)) : createCommentVNode(\"\", true)\n      ])\n    ], 2)\n  ], 2)), [\n    [vShow, Object.keys($props.room).length && $props.showFooter]\n  ]);\n}\nvar RoomFooter = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$a]]);\nconst _sfc_main$9 = {\n  name: \"MessageReply\",\n  components: { AudioPlayer, SvgIcon, FormatMessage },\n  props: {\n    message: { type: Object, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    roomUsers: { type: Array, required: true }\n  },\n  computed: {\n    replyUsername() {\n      const { senderId } = this.message.replyMessage;\n      const replyUser = this.roomUsers.find((user) => user._id === senderId);\n      return replyUser ? replyUser.username : \"\";\n    },\n    firstFile() {\n      var _a, _b;\n      return ((_b = (_a = this.message.replyMessage) == null ? void 0 : _a.files) == null ? void 0 : _b.length) ? this.message.replyMessage.files[0] : {};\n    },\n    isAudio() {\n      return isAudioFile(this.firstFile);\n    },\n    isImage() {\n      return isImageFile(this.firstFile);\n    },\n    isVideo() {\n      return isVideoFile(this.firstFile);\n    },\n    isOtherFile() {\n      var _a;\n      return ((_a = this.message.replyMessage.files) == null ? void 0 : _a.length) && !this.isAudio && !this.isVideo && !this.isImage;\n    }\n  }\n};\nconst _hoisted_1$9 = { class: \"vac-reply-message\" };\nconst _hoisted_2$7 = { class: \"vac-reply-username\" };\nconst _hoisted_3$7 = {\n  key: 0,\n  class: \"vac-image-reply-container\"\n};\nconst _hoisted_4$7 = {\n  key: 1,\n  class: \"vac-video-reply-container\"\n};\nconst _hoisted_5$5 = { controls: \"\" };\nconst _hoisted_6$2 = [\"src\"];\nconst _hoisted_7$2 = {\n  key: 3,\n  class: \"vac-file-container\"\n};\nconst _hoisted_8$1 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_9$1 = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nconst _hoisted_10$1 = { class: \"vac-reply-content\" };\nfunction _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_audio_player = resolveComponent(\"audio-player\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_format_message = resolveComponent(\"format-message\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$9, [\n    createBaseVNode(\"div\", _hoisted_2$7, toDisplayString($options.replyUsername), 1),\n    $options.isImage ? (openBlock(), createElementBlock(\"div\", _hoisted_3$7, [\n      createBaseVNode(\"div\", {\n        class: \"vac-message-image vac-message-image-reply\",\n        style: normalizeStyle({\n          \"background-image\": `url('${$options.firstFile.url}')`\n        })\n      }, null, 4)\n    ])) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", _hoisted_4$7, [\n      createBaseVNode(\"video\", _hoisted_5$5, [\n        createBaseVNode(\"source\", {\n          src: $options.firstFile.url\n        }, null, 8, _hoisted_6$2)\n      ])\n    ])) : $options.isAudio ? (openBlock(), createBlock(_component_audio_player, {\n      key: 2,\n      src: $options.firstFile.url,\n      \"message-selection-enabled\": false,\n      onUpdateProgressTime: _cache[0] || (_cache[0] = ($event) => _ctx.progressTime = $event),\n      onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => _ctx.hoverAudioProgress = $event)\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"src\"])) : $options.isOtherFile ? (openBlock(), createElementBlock(\"div\", _hoisted_7$2, [\n      createBaseVNode(\"div\", null, [\n        renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n          createVNode(_component_svg_icon, { name: \"file\" })\n        ])\n      ]),\n      createBaseVNode(\"div\", _hoisted_8$1, toDisplayString($options.firstFile.name), 1),\n      $options.firstFile.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_9$1, toDisplayString($options.firstFile.extension), 1)) : createCommentVNode(\"\", true)\n    ])) : createCommentVNode(\"\", true),\n    createBaseVNode(\"div\", _hoisted_10$1, [\n      createVNode(_component_format_message, {\n        \"message-id\": $props.message.replyMessage._id,\n        content: $props.message.replyMessage.content,\n        users: $props.roomUsers,\n        \"text-formatting\": $props.textFormatting,\n        \"link-options\": $props.linkOptions,\n        reply: true\n      }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n    ])\n  ]);\n}\nvar MessageReply = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$8 = {\n  name: \"ProgressBar\",\n  props: {\n    progress: { type: Number, default: 0 }\n  },\n  data() {\n    const radius = 35;\n    const stroke = 4;\n    const normalizedRadius = radius - stroke * 2;\n    const circumference = normalizedRadius * 2 * Math.PI;\n    return {\n      radius,\n      stroke,\n      normalizedRadius,\n      circumference\n    };\n  },\n  computed: {\n    strokeDashoffset() {\n      return this.circumference - this.progress / 100 * this.circumference;\n    }\n  }\n};\nconst _hoisted_1$8 = {\n  ref: \"progress\",\n  class: \"vac-progress-wrapper\"\n};\nconst _hoisted_2$6 = [\"height\", \"width\"];\nconst _hoisted_3$6 = [\"stroke-dasharray\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4$6 = { class: \"vac-progress-text\" };\nconst _hoisted_5$4 = /* @__PURE__ */ createBaseVNode(\"span\", { class: \"vac-progress-pourcent\" }, \"%\", -1);\nfunction _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, {\n    name: \"vac-fade-spinner\",\n    appear: \"\"\n  }, {\n    default: withCtx(() => [\n      createBaseVNode(\"div\", _hoisted_1$8, [\n        (openBlock(), createElementBlock(\"svg\", {\n          height: $data.radius * 2,\n          width: $data.radius * 2\n        }, [\n          createBaseVNode(\"circle\", {\n            stroke: \"rgba(255, 255, 255, 0.7)\",\n            \"stroke-dasharray\": $data.circumference + \" \" + $data.circumference,\n            style: normalizeStyle({\n              strokeDashoffset: $options.strokeDashoffset,\n              strokeLinecap: \"round\"\n            }),\n            \"stroke-width\": $data.stroke,\n            fill: \"transparent\",\n            r: $data.normalizedRadius,\n            cx: $data.radius,\n            cy: $data.radius\n          }, null, 12, _hoisted_3$6)\n        ], 8, _hoisted_2$6)),\n        createBaseVNode(\"div\", {\n          class: \"vac-progress-content\",\n          style: normalizeStyle({\n            height: $data.radius * 2 - 19 + \"px\",\n            width: $data.radius * 2 - 19 + \"px\"\n          })\n        }, [\n          createBaseVNode(\"div\", _hoisted_4$6, [\n            createTextVNode(toDisplayString($props.progress), 1),\n            _hoisted_5$4\n          ])\n        ], 4)\n      ], 512)\n    ]),\n    _: 1\n  });\n}\nvar ProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$7 = {\n  name: \"MessageFile\",\n  components: { SvgIcon, Loader, ProgressBar },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true },\n    file: { type: Object, required: true },\n    index: { type: Number, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"open-file\"],\n  data() {\n    return {\n      imageResponsive: \"\",\n      imageLoading: false,\n      imageHover: false\n    };\n  },\n  computed: {\n    isImageLoading() {\n      return this.file.url.indexOf(\"blob:http\") !== -1 || this.imageLoading;\n    },\n    isImage() {\n      return isImageFile(this.file);\n    },\n    isVideo() {\n      return isVideoFile(this.file);\n    }\n  },\n  watch: {\n    file: {\n      immediate: true,\n      handler() {\n        this.checkImgLoad();\n      }\n    }\n  },\n  mounted() {\n    const ref = this.$refs[\"imageRef\" + this.index];\n    if (ref) {\n      this.imageResponsive = {\n        maxHeight: ref.clientWidth - 18,\n        loaderTop: ref.clientHeight / 2 - 9\n      };\n    }\n  },\n  methods: {\n    checkImgLoad() {\n      if (!isImageFile(this.file))\n        return;\n      this.imageLoading = true;\n      const image = new Image();\n      image.src = this.file.url;\n      image.addEventListener(\"load\", () => this.imageLoading = false);\n    },\n    openFile(event, action) {\n      if (!this.messageSelectionEnabled) {\n        event.stopPropagation();\n        this.$emit(\"open-file\", { file: this.file, action });\n      }\n    }\n  }\n};\nconst _hoisted_1$7 = { class: \"vac-message-file-container\" };\nconst _hoisted_2$5 = {\n  key: 0,\n  class: \"vac-image-buttons\"\n};\nconst _hoisted_3$5 = { controls: \"\" };\nconst _hoisted_4$5 = [\"src\"];\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_progress_bar = resolveComponent(\"progress-bar\");\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$7, [\n    $options.isImage ? (openBlock(), createElementBlock(\"div\", {\n      key: 0,\n      ref: \"imageRef\" + $props.index,\n      class: \"vac-message-image-container\",\n      onMouseover: _cache[2] || (_cache[2] = ($event) => $data.imageHover = true),\n      onMouseleave: _cache[3] || (_cache[3] = ($event) => $data.imageHover = false),\n      onClick: _cache[4] || (_cache[4] = ($event) => $options.openFile($event, \"preview\"))\n    }, [\n      $props.file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n        key: 0,\n        progress: $props.file.progress,\n        style: normalizeStyle({ top: `${$data.imageResponsive.loaderTop}px` })\n      }, null, 8, [\"progress\", \"style\"])) : (openBlock(), createBlock(_component_loader, {\n        key: 1,\n        show: $options.isImageLoading,\n        type: \"message-file\",\n        \"message-id\": $props.message._id,\n        style: normalizeStyle({ top: `${$data.imageResponsive.loaderTop}px` })\n      }, createSlots({ _: 2 }, [\n        renderList(_ctx.$slots, (idx, name) => {\n          return {\n            name,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"show\", \"message-id\", \"style\"])),\n      createBaseVNode(\"div\", {\n        class: normalizeClass([\"vac-message-image\", {\n          \"vac-blur-loading\": $options.isImageLoading && $props.message.senderId === $props.currentUserId\n        }]),\n        style: normalizeStyle({\n          \"background-image\": `url('${$options.isImageLoading ? $props.file.preview || $props.file.url : $props.file.url}')`,\n          \"max-height\": `${$data.imageResponsive.maxHeight}px`\n        })\n      }, [\n        createVNode(Transition, { name: \"vac-fade-image\" }, {\n          default: withCtx(() => [\n            !$props.messageSelectionEnabled && $data.imageHover && !$options.isImageLoading ? (openBlock(), createElementBlock(\"div\", _hoisted_2$5, [\n              createBaseVNode(\"div\", {\n                class: \"vac-svg-button vac-button-view\",\n                onClick: _cache[0] || (_cache[0] = ($event) => $options.openFile($event, \"preview\"))\n              }, [\n                renderSlot(_ctx.$slots, \"eye-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, { name: \"eye\" })\n                ])\n              ]),\n              createBaseVNode(\"div\", {\n                class: \"vac-svg-button vac-button-download\",\n                onClick: _cache[1] || (_cache[1] = ($event) => $options.openFile($event, \"download\"))\n              }, [\n                renderSlot(_ctx.$slots, \"document-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, { name: \"document\" })\n                ])\n              ])\n            ])) : createCommentVNode(\"\", true)\n          ]),\n          _: 3\n        })\n      ], 6)\n    ], 544)) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", {\n      key: 1,\n      class: \"vac-video-container\",\n      onClick: _cache[5] || (_cache[5] = withModifiers(($event) => $options.openFile($event, \"preview\"), [\"prevent\"]))\n    }, [\n      $props.file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n        key: 0,\n        progress: $props.file.progress\n      }, null, 8, [\"progress\"])) : createCommentVNode(\"\", true),\n      createBaseVNode(\"video\", _hoisted_3$5, [\n        createBaseVNode(\"source\", {\n          src: $props.file.url\n        }, null, 8, _hoisted_4$5)\n      ])\n    ])) : createCommentVNode(\"\", true)\n  ]);\n}\nvar MessageFile = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$6 = {\n  name: \"MessageFiles\",\n  components: { SvgIcon, FormatMessage, ProgressBar, MessageFile },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true },\n    roomUsers: { type: Array, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"open-file\", \"open-user-tag\"],\n  computed: {\n    imageVideoFiles() {\n      return this.message.files.filter((file) => isImageVideoFile(file));\n    },\n    otherFiles() {\n      return this.message.files.filter((file) => !isImageVideoFile(file));\n    }\n  },\n  methods: {\n    openFile(event, file, action) {\n      if (!this.messageSelectionEnabled) {\n        event.stopPropagation();\n        this.$emit(\"open-file\", { file, action });\n      }\n    }\n  }\n};\nconst _hoisted_1$6 = { class: \"vac-message-files-container\" };\nconst _hoisted_2$4 = [\"onClick\"];\nconst _hoisted_3$4 = { class: \"vac-svg-button\" };\nconst _hoisted_4$4 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_5$3 = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_message_file = resolveComponent(\"message-file\");\n  const _component_progress_bar = resolveComponent(\"progress-bar\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_format_message = resolveComponent(\"format-message\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$6, [\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.imageVideoFiles, (file, i) => {\n      return openBlock(), createElementBlock(\"div\", {\n        key: i + \"iv\"\n      }, [\n        createVNode(_component_message_file, {\n          file,\n          \"current-user-id\": $props.currentUserId,\n          message: $props.message,\n          index: i,\n          \"message-selection-enabled\": $props.messageSelectionEnabled,\n          onOpenFile: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"open-file\", $event))\n        }, createSlots({ _: 2 }, [\n          renderList(_ctx.$slots, (idx, name) => {\n            return {\n              name,\n              fn: withCtx((data) => [\n                renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n              ])\n            };\n          })\n        ]), 1032, [\"file\", \"current-user-id\", \"message\", \"index\", \"message-selection-enabled\"])\n      ]);\n    }), 128)),\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.otherFiles, (file, i) => {\n      return openBlock(), createElementBlock(\"div\", {\n        key: i + \"a\",\n        class: \"vac-file-wrapper\"\n      }, [\n        file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n          key: 0,\n          progress: file.progress,\n          style: { top: \"44px\" }\n        }, null, 8, [\"progress\"])) : createCommentVNode(\"\", true),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-file-container\", { \"vac-file-container-progress\": file.progress >= 0 }]),\n          onClick: ($event) => $options.openFile($event, file, \"download\")\n        }, [\n          createBaseVNode(\"div\", _hoisted_3$4, [\n            renderSlot(_ctx.$slots, \"document-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"document\" })\n            ])\n          ]),\n          createBaseVNode(\"div\", _hoisted_4$4, toDisplayString(file.name), 1),\n          file.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_5$3, toDisplayString(file.extension), 1)) : createCommentVNode(\"\", true)\n        ], 10, _hoisted_2$4)\n      ]);\n    }), 128)),\n    createVNode(_component_format_message, {\n      \"message-id\": $props.message._id,\n      content: $props.message.content,\n      users: $props.roomUsers,\n      \"text-formatting\": $props.textFormatting,\n      \"link-options\": $props.linkOptions,\n      onOpenUserTag: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"open-user-tag\", $event))\n    }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n  ]);\n}\nvar MessageFiles = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$5 = {\n  name: \"MessageActions\",\n  components: { SvgIcon, EmojiPickerContainer },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true },\n    messageActions: { type: Array, required: true },\n    showReactionEmojis: { type: Boolean, required: true },\n    messageHover: { type: Boolean, required: true },\n    hoverMessageId: { type: [String, Number], default: null },\n    hoverAudioProgress: { type: Boolean, required: true },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"update-emoji-opened\",\n    \"update-options-opened\",\n    \"update-message-hover\",\n    \"message-action-handler\",\n    \"send-message-reaction\"\n  ],\n  data() {\n    return {\n      menuOptionsTop: 0,\n      optionsOpened: false,\n      optionsClosing: false,\n      emojiOpened: false\n    };\n  },\n  computed: {\n    isMessageActions() {\n      return this.filteredMessageActions.length && this.messageHover && !this.message.deleted && !this.message.disableActions && !this.hoverAudioProgress;\n    },\n    isMessageReactions() {\n      return this.showReactionEmojis && this.messageHover && !this.message.deleted && !this.message.disableReactions && !this.hoverAudioProgress;\n    },\n    filteredMessageActions() {\n      return this.message.senderId === this.currentUserId ? this.messageActions : this.messageActions.filter((message) => !message.onlyMe);\n    }\n  },\n  watch: {\n    emojiOpened(val) {\n      this.$emit(\"update-emoji-opened\", val);\n      if (val)\n        this.optionsOpened = false;\n    },\n    optionsOpened(val) {\n      this.$emit(\"update-options-opened\", val);\n    }\n  },\n  methods: {\n    openOptions() {\n      if (this.optionsClosing)\n        return;\n      this.optionsOpened = !this.optionsOpened;\n      if (!this.optionsOpened)\n        return;\n      setTimeout(() => {\n        const roomFooterRef = findParentBySelector(this.$el, \"#room-footer\");\n        if (!roomFooterRef || !this.$refs.menuOptions || !this.$refs.actionIcon) {\n          return;\n        }\n        const menuOptionsTop = this.$refs.menuOptions.getBoundingClientRect().height;\n        const actionIconTop = this.$refs.actionIcon.getBoundingClientRect().top;\n        const roomFooterTop = roomFooterRef.getBoundingClientRect().top;\n        const optionsTopPosition = roomFooterTop - actionIconTop > menuOptionsTop + 50;\n        if (optionsTopPosition)\n          this.menuOptionsTop = 30;\n        else\n          this.menuOptionsTop = -menuOptionsTop;\n      });\n    },\n    closeOptions() {\n      this.optionsOpened = false;\n      this.optionsClosing = true;\n      this.updateMessageHover();\n      setTimeout(() => this.optionsClosing = false, 100);\n    },\n    openEmoji() {\n      this.emojiOpened = !this.emojiOpened;\n    },\n    closeEmoji() {\n      this.emojiOpened = false;\n      this.updateMessageHover();\n    },\n    updateMessageHover() {\n      if (this.hoverMessageId !== this.message._id) {\n        this.$emit(\"update-message-hover\", false);\n      }\n    },\n    messageActionHandler(action) {\n      this.closeOptions();\n      this.$emit(\"message-action-handler\", action);\n    },\n    sendMessageReaction(emoji, reaction) {\n      this.$emit(\"send-message-reaction\", { emoji, reaction });\n      this.closeEmoji();\n    }\n  }\n};\nconst _hoisted_1$5 = { class: \"vac-message-actions-wrapper\" };\nconst _hoisted_2$3 = { key: \"3\" };\nconst _hoisted_3$3 = { class: \"vac-menu-list\" };\nconst _hoisted_4$3 = [\"onClick\"];\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_emoji_picker_container = resolveComponent(\"emoji-picker-container\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$5, [\n    createBaseVNode(\"div\", {\n      class: \"vac-options-container\",\n      style: normalizeStyle({\n        display: $props.hoverAudioProgress ? \"none\" : \"initial\",\n        width: $options.filteredMessageActions.length && $props.showReactionEmojis ? \"70px\" : \"45px\"\n      })\n    }, [\n      createVNode(TransitionGroup, {\n        name: \"vac-slide-left\",\n        tag: \"span\"\n      }, {\n        default: withCtx(() => [\n          $options.isMessageActions || $options.isMessageReactions ? (openBlock(), createElementBlock(\"div\", {\n            key: \"1\",\n            class: normalizeClass([\"vac-blur-container\", {\n              \"vac-options-me\": $props.message.senderId === $props.currentUserId\n            }])\n          }, null, 2)) : createCommentVNode(\"\", true),\n          $options.isMessageActions ? (openBlock(), createElementBlock(\"div\", {\n            ref: \"actionIcon\",\n            key: \"2\",\n            class: \"vac-svg-button vac-message-options\",\n            onClick: _cache[0] || (_cache[0] = (...args) => $options.openOptions && $options.openOptions(...args))\n          }, [\n            renderSlot(_ctx.$slots, \"dropdown-icon_\" + $props.message._id, {}, () => [\n              createVNode(_component_svg_icon, {\n                name: \"dropdown\",\n                param: \"message\"\n              })\n            ])\n          ], 512)) : createCommentVNode(\"\", true),\n          $options.isMessageReactions ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_2$3, [\n            renderSlot(_ctx.$slots, \"emoji-picker\", mergeProps({ emojiOpened: $data.emojiOpened }, { addEmoji: $options.sendMessageReaction }), () => [\n              createVNode(_component_emoji_picker_container, {\n                class: \"vac-message-emojis\",\n                style: normalizeStyle({ right: $options.isMessageActions ? \"30px\" : \"5px\" }),\n                \"emoji-opened\": $data.emojiOpened,\n                \"emoji-reaction\": true,\n                \"position-right\": $props.message.senderId === $props.currentUserId,\n                \"message-id\": $props.message._id,\n                \"emoji-data-source\": $props.emojiDataSource,\n                onAddEmoji: $options.sendMessageReaction,\n                onOpenEmoji: $options.openEmoji\n              }, createSlots({ _: 2 }, [\n                renderList(_ctx.$slots, (idx, name) => {\n                  return {\n                    name,\n                    fn: withCtx((data) => [\n                      renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                    ])\n                  };\n                })\n              ]), 1032, [\"style\", \"emoji-opened\", \"position-right\", \"message-id\", \"emoji-data-source\", \"onAddEmoji\", \"onOpenEmoji\"])\n            ])\n          ])), [\n            [_directive_click_outside, $options.closeEmoji]\n          ]) : createCommentVNode(\"\", true)\n        ]),\n        _: 3\n      })\n    ], 4),\n    $options.filteredMessageActions.length ? (openBlock(), createBlock(Transition, {\n      key: 0,\n      name: $props.message.senderId === $props.currentUserId ? \"vac-slide-left\" : \"vac-slide-right\"\n    }, {\n      default: withCtx(() => [\n        $data.optionsOpened ? withDirectives((openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          ref: \"menuOptions\",\n          class: normalizeClass([\"vac-menu-options\", {\n            \"vac-menu-left\": $props.message.senderId !== $props.currentUserId\n          }]),\n          style: normalizeStyle({ top: `${$data.menuOptionsTop}px` })\n        }, [\n          createBaseVNode(\"div\", _hoisted_3$3, [\n            (openBlock(true), createElementBlock(Fragment, null, renderList($options.filteredMessageActions, (action) => {\n              return openBlock(), createElementBlock(\"div\", {\n                key: action.name\n              }, [\n                createBaseVNode(\"div\", {\n                  class: \"vac-menu-item\",\n                  onClick: ($event) => $options.messageActionHandler(action)\n                }, toDisplayString(action.title), 9, _hoisted_4$3)\n              ]);\n            }), 128))\n          ])\n        ], 6)), [\n          [_directive_click_outside, $options.closeOptions]\n        ]) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    }, 8, [\"name\"])) : createCommentVNode(\"\", true)\n  ]);\n}\nvar MessageActions = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$4 = {\n  name: \"MessageReactions\",\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true }\n  },\n  emits: [\"send-message-reaction\"],\n  methods: {\n    sendMessageReaction(emoji, reaction) {\n      this.$emit(\"send-message-reaction\", { emoji, reaction });\n    }\n  }\n};\nconst _hoisted_1$4 = [\"onClick\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n  return !$props.message.deleted ? (openBlock(), createBlock(TransitionGroup, {\n    key: 0,\n    name: \"vac-slide-left\",\n    tag: \"span\"\n  }, {\n    default: withCtx(() => [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($props.message.reactions, (reaction, key) => {\n        return withDirectives((openBlock(), createElementBlock(\"button\", {\n          key: key + 0,\n          class: normalizeClass([\"vac-button-reaction\", {\n            \"vac-reaction-me\": reaction.indexOf($props.currentUserId) !== -1\n          }]),\n          style: normalizeStyle({\n            float: $props.message.senderId === $props.currentUserId ? \"right\" : \"left\"\n          }),\n          onClick: ($event) => $options.sendMessageReaction({ unicode: key }, reaction)\n        }, [\n          createTextVNode(toDisplayString(key), 1),\n          createBaseVNode(\"span\", null, toDisplayString(reaction.length), 1)\n        ], 14, _hoisted_1$4)), [\n          [vShow, reaction.length]\n        ]);\n      }), 128))\n    ]),\n    _: 1\n  })) : createCommentVNode(\"\", true);\n}\nvar MessageReactions = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4]]);\nfunction roomsValidation(obj) {\n  const roomsValidate = [\n    { key: \"roomId\", type: [\"string\", \"number\"] },\n    { key: \"roomName\", type: [\"string\"] },\n    { key: \"users\", type: [\"array\"] }\n  ];\n  const validate = (obj2, props) => {\n    return props.every((prop) => {\n      let validType = false;\n      if (prop.type[0] === \"array\" && Array.isArray(obj2[prop.key])) {\n        validType = true;\n      } else if (prop.type.find((t) => t === typeof obj2[prop.key])) {\n        validType = true;\n      }\n      return validType && checkObjectValid(obj2, prop.key);\n    });\n  };\n  if (!validate(obj, roomsValidate)) {\n    throw new Error(\n      \"Rooms object is not valid! Must contain at least roomId[String, Number], roomName[String] and users[Array]\"\n    );\n  }\n}\nfunction partcipantsValidation(obj) {\n  const participantsValidate = [\n    { key: \"_id\", type: [\"string\", \"number\"] },\n    { key: \"username\", type: [\"string\"] }\n  ];\n  const validate = (obj2, props) => {\n    return props.every((prop) => {\n      const validType = prop.type.find((t) => t === typeof obj2[prop.key]);\n      return validType && checkObjectValid(obj2, prop.key);\n    });\n  };\n  if (!validate(obj, participantsValidate)) {\n    throw new Error(\n      \"Participants object is not valid! Must contain at least _id[String, Number] and username[String]\"\n    );\n  }\n}\nfunction messagesValidation(obj) {\n  const messagesValidate = [\n    { key: \"_id\", type: [\"string\", \"number\"] },\n    { key: \"senderId\", type: [\"string\", \"number\"] }\n  ];\n  const validate = (obj2, props) => {\n    return props.every((prop) => {\n      const validType = prop.type.find((t) => t === typeof obj2[prop.key]);\n      return validType && checkObjectValid(obj2, prop.key);\n    });\n  };\n  if (!validate(obj, messagesValidate)) {\n    throw new Error(\n      \"Messages object is not valid! Must contain at least _id[String, Number] and senderId[String, Number]\"\n    );\n  }\n}\nfunction checkObjectValid(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== null && obj[key] !== void 0;\n}\nconst _sfc_main$3 = {\n  name: \"RoomMessage\",\n  components: {\n    SvgIcon,\n    FormatMessage,\n    AudioPlayer,\n    MessageReply,\n    MessageFiles,\n    MessageActions,\n    MessageReactions\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    index: { type: Number, required: true },\n    message: { type: Object, required: true },\n    messages: { type: Array, required: true },\n    editedMessageId: { type: [String, Number], default: null },\n    roomUsers: { type: Array, default: () => [] },\n    messageActions: { type: Array, required: true },\n    newMessages: { type: Array, default: () => [] },\n    showReactionEmojis: { type: Boolean, required: true },\n    showNewMessagesDivider: { type: Boolean, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    usernameOptions: { type: Object, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true },\n    selectedMessages: { type: Array, default: () => [] },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"message-added\",\n    \"open-file\",\n    \"open-user-tag\",\n    \"open-failed-message\",\n    \"message-action-handler\",\n    \"send-message-reaction\",\n    \"select-message\",\n    \"unselect-message\"\n  ],\n  data() {\n    return {\n      hoverMessageId: null,\n      messageHover: false,\n      optionsOpened: false,\n      emojiOpened: false,\n      newMessage: {},\n      progressTime: \"- : -\",\n      hoverAudioProgress: false\n    };\n  },\n  computed: {\n    showUsername() {\n      if (!this.usernameOptions.currentUser && this.message.senderId === this.currentUserId) {\n        return false;\n      } else {\n        return this.roomUsers.length >= this.usernameOptions.minUsers;\n      }\n    },\n    showDate() {\n      return this.index > 0 && this.message.date !== this.messages[this.index - 1].date;\n    },\n    messageOffset() {\n      return this.index > 0 && this.message.senderId !== this.messages[this.index - 1].senderId;\n    },\n    isMessageHover() {\n      return this.editedMessageId === this.message._id || this.hoverMessageId === this.message._id;\n    },\n    isAudio() {\n      var _a;\n      return (_a = this.message.files) == null ? void 0 : _a.some((file) => isAudioFile(file));\n    },\n    isCheckmarkVisible() {\n      return this.message.senderId === this.currentUserId && !this.message.deleted && (this.message.saved || this.message.distributed || this.message.seen);\n    },\n    hasCurrentUserAvatar() {\n      return this.messages.some(\n        (message) => message.senderId === this.currentUserId && message.avatar\n      );\n    },\n    hasSenderUserAvatar() {\n      return this.messages.some(\n        (message) => message.senderId !== this.currentUserId && message.avatar\n      );\n    },\n    isMessageSelected() {\n      return this.messageSelectionEnabled && !!this.selectedMessages.find(\n        (message) => message._id === this.message._id\n      );\n    }\n  },\n  watch: {\n    newMessages: {\n      immediate: true,\n      deep: true,\n      handler(val) {\n        if (!val.length || !this.showNewMessagesDivider) {\n          this.newMessage = {};\n          return;\n        }\n        this.newMessage = val.reduce(\n          (res, obj) => obj.index < res.index ? obj : res\n        );\n      }\n    },\n    messageSelectionEnabled() {\n      this.resetMessageHover();\n    }\n  },\n  mounted() {\n    messagesValidation(this.message);\n    this.$emit(\"message-added\", {\n      message: this.message,\n      index: this.index,\n      ref: this.$refs.message\n    });\n  },\n  methods: {\n    onHoverMessage() {\n      if (!this.messageSelectionEnabled) {\n        this.messageHover = true;\n        if (this.canEditMessage())\n          this.hoverMessageId = this.message._id;\n      }\n    },\n    canEditMessage() {\n      return !this.message.deleted;\n    },\n    onLeaveMessage() {\n      if (!this.messageSelectionEnabled) {\n        if (!this.optionsOpened && !this.emojiOpened)\n          this.messageHover = false;\n        this.hoverMessageId = null;\n      }\n    },\n    resetMessageHover() {\n      this.messageHover = false;\n      this.hoverMessageId = null;\n    },\n    openFile(file) {\n      this.$emit(\"open-file\", { message: this.message, file });\n    },\n    openUserTag(user) {\n      this.$emit(\"open-user-tag\", { user });\n    },\n    messageActionHandler(action) {\n      this.resetMessageHover();\n      setTimeout(() => {\n        this.$emit(\"message-action-handler\", { action, message: this.message });\n      }, 300);\n    },\n    sendMessageReaction({ emoji, reaction }) {\n      this.$emit(\"send-message-reaction\", {\n        messageId: this.message._id,\n        reaction: emoji,\n        remove: reaction && reaction.indexOf(this.currentUserId) !== -1\n      });\n      this.messageHover = false;\n    },\n    selectMessage() {\n      if (this.messageSelectionEnabled) {\n        if (this.isMessageSelected) {\n          this.$emit(\"unselect-message\", this.message._id);\n        } else {\n          this.$emit(\"select-message\", this.message);\n        }\n      }\n    }\n  }\n};\nconst _hoisted_1$3 = [\"id\"];\nconst _hoisted_2$2 = {\n  key: 0,\n  class: \"vac-card-info vac-card-date\"\n};\nconst _hoisted_3$2 = {\n  key: 1,\n  class: \"vac-line-new\"\n};\nconst _hoisted_4$2 = {\n  key: 2,\n  class: \"vac-card-info vac-card-system\"\n};\nconst _hoisted_5$2 = {\n  key: 1,\n  class: \"vac-avatar-offset\"\n};\nconst _hoisted_6$1 = {\n  key: 0,\n  class: \"vac-progress-time\"\n};\nconst _hoisted_7$1 = { class: \"vac-text-timestamp\" };\nconst _hoisted_8 = {\n  key: 0,\n  class: \"vac-icon-edited\"\n};\nconst _hoisted_9 = { key: 1 };\nconst _hoisted_10 = /* @__PURE__ */ createBaseVNode(\"div\", { class: \"vac-failure-text\" }, \"!\", -1);\nconst _hoisted_11 = [\n  _hoisted_10\n];\nconst _hoisted_12 = {\n  key: 3,\n  class: \"vac-avatar-current-offset\"\n};\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_format_message = resolveComponent(\"format-message\");\n  const _component_message_reply = resolveComponent(\"message-reply\");\n  const _component_message_files = resolveComponent(\"message-files\");\n  const _component_audio_player = resolveComponent(\"audio-player\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_message_actions = resolveComponent(\"message-actions\");\n  const _component_message_reactions = resolveComponent(\"message-reactions\");\n  return openBlock(), createElementBlock(\"div\", {\n    id: $props.message._id,\n    ref: \"message\",\n    class: \"vac-message-wrapper\"\n  }, [\n    $options.showDate ? (openBlock(), createElementBlock(\"div\", _hoisted_2$2, toDisplayString($props.message.date), 1)) : createCommentVNode(\"\", true),\n    $data.newMessage._id === $props.message._id ? (openBlock(), createElementBlock(\"div\", _hoisted_3$2, toDisplayString($props.textMessages.NEW_MESSAGES), 1)) : createCommentVNode(\"\", true),\n    $props.message.system ? (openBlock(), createElementBlock(\"div\", _hoisted_4$2, [\n      renderSlot(_ctx.$slots, \"message_\" + $props.message._id, {}, () => [\n        createVNode(_component_format_message, {\n          \"message-id\": $props.message._id,\n          content: $props.message.content,\n          deleted: !!$props.message.deleted,\n          users: $props.roomUsers,\n          \"text-messages\": $props.textMessages,\n          \"text-formatting\": $props.textFormatting,\n          \"link-options\": $props.linkOptions,\n          onOpenUserTag: $options.openUserTag\n        }, createSlots({ _: 2 }, [\n          renderList(_ctx.$slots, (idx, name) => {\n            return {\n              name,\n              fn: withCtx((data) => [\n                renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n              ])\n            };\n          })\n        ]), 1032, [\"message-id\", \"content\", \"deleted\", \"users\", \"text-messages\", \"text-formatting\", \"link-options\", \"onOpenUserTag\"])\n      ])\n    ])) : (openBlock(), createElementBlock(\"div\", {\n      key: 3,\n      class: normalizeClass([\"vac-message-box\", { \"vac-offset-current\": $props.message.senderId === $props.currentUserId }]),\n      onClick: _cache[8] || (_cache[8] = (...args) => $options.selectMessage && $options.selectMessage(...args))\n    }, [\n      renderSlot(_ctx.$slots, \"message_\" + $props.message._id, {}, () => [\n        $props.message.senderId !== $props.currentUserId ? renderSlot(_ctx.$slots, \"message-avatar_\" + $props.message._id, { key: 0 }, () => [\n          $props.message.avatar ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: \"vac-avatar\",\n            style: normalizeStyle({ \"background-image\": `url('${$props.message.avatar}')` })\n          }, null, 4)) : createCommentVNode(\"\", true)\n        ]) : createCommentVNode(\"\", true),\n        $options.hasSenderUserAvatar && !$props.message.avatar ? (openBlock(), createElementBlock(\"div\", _hoisted_5$2)) : createCommentVNode(\"\", true),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-message-container\", {\n            \"vac-message-container-offset\": $options.messageOffset\n          }])\n        }, [\n          createBaseVNode(\"div\", {\n            class: normalizeClass([\"vac-message-card\", {\n              \"vac-message-highlight\": $options.isMessageHover,\n              \"vac-message-current\": $props.message.senderId === $props.currentUserId,\n              \"vac-message-deleted\": $props.message.deleted,\n              \"vac-item-clickable\": $props.messageSelectionEnabled,\n              \"vac-message-selected\": $options.isMessageSelected\n            }]),\n            onMouseover: _cache[5] || (_cache[5] = (...args) => $options.onHoverMessage && $options.onHoverMessage(...args)),\n            onMouseleave: _cache[6] || (_cache[6] = (...args) => $options.onLeaveMessage && $options.onLeaveMessage(...args))\n          }, [\n            $options.showUsername ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: normalizeClass([\"vac-text-username\", {\n                \"vac-username-reply\": !$props.message.deleted && $props.message.replyMessage\n              }])\n            }, [\n              createBaseVNode(\"span\", null, toDisplayString($props.message.username), 1)\n            ], 2)) : createCommentVNode(\"\", true),\n            !$props.message.deleted && $props.message.replyMessage ? (openBlock(), createBlock(_component_message_reply, {\n              key: 1,\n              message: $props.message,\n              \"room-users\": $props.roomUsers,\n              \"text-formatting\": $props.textFormatting,\n              \"link-options\": $props.linkOptions\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (i, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"message\", \"room-users\", \"text-formatting\", \"link-options\"])) : createCommentVNode(\"\", true),\n            !!$props.message.deleted || !$props.message.files || !$props.message.files.length ? (openBlock(), createBlock(_component_format_message, {\n              key: 2,\n              \"message-id\": $props.message._id,\n              content: $props.message.content,\n              deleted: !!$props.message.deleted,\n              users: $props.roomUsers,\n              \"text-formatting\": $props.textFormatting,\n              \"text-messages\": $props.textMessages,\n              \"link-options\": $props.linkOptions,\n              onOpenUserTag: $options.openUserTag\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (idx, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"message-id\", \"content\", \"deleted\", \"users\", \"text-formatting\", \"text-messages\", \"link-options\", \"onOpenUserTag\"])) : !$options.isAudio || $props.message.files.length > 1 ? (openBlock(), createBlock(_component_message_files, {\n              key: 3,\n              \"current-user-id\": $props.currentUserId,\n              message: $props.message,\n              \"room-users\": $props.roomUsers,\n              \"text-formatting\": $props.textFormatting,\n              \"link-options\": $props.linkOptions,\n              \"message-selection-enabled\": $props.messageSelectionEnabled,\n              onOpenFile: $options.openFile,\n              onOpenUserTag: $options.openUserTag\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (i, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"current-user-id\", \"message\", \"room-users\", \"text-formatting\", \"link-options\", \"message-selection-enabled\", \"onOpenFile\", \"onOpenUserTag\"])) : (openBlock(), createElementBlock(Fragment, { key: 4 }, [\n              createVNode(_component_audio_player, {\n                \"message-id\": $props.message._id,\n                src: $props.message.files[0].url,\n                \"message-selection-enabled\": $props.messageSelectionEnabled,\n                onUpdateProgressTime: _cache[0] || (_cache[0] = ($event) => $data.progressTime = $event),\n                onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => $data.hoverAudioProgress = $event)\n              }, createSlots({ _: 2 }, [\n                renderList(_ctx.$slots, (i, name) => {\n                  return {\n                    name,\n                    fn: withCtx((data) => [\n                      renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                    ])\n                  };\n                })\n              ]), 1032, [\"message-id\", \"src\", \"message-selection-enabled\"]),\n              !$props.message.deleted ? (openBlock(), createElementBlock(\"div\", _hoisted_6$1, toDisplayString($data.progressTime), 1)) : createCommentVNode(\"\", true)\n            ], 64)),\n            createBaseVNode(\"div\", _hoisted_7$1, [\n              $props.message.edited && !$props.message.deleted ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n                renderSlot(_ctx.$slots, \"pencil-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, { name: \"pencil\" })\n                ])\n              ])) : createCommentVNode(\"\", true),\n              createBaseVNode(\"span\", null, toDisplayString($props.message.timestamp), 1),\n              $options.isCheckmarkVisible ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n                renderSlot(_ctx.$slots, \"checkmark-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, {\n                    name: $props.message.distributed ? \"double-checkmark\" : \"checkmark\",\n                    param: $props.message.seen ? \"seen\" : \"\",\n                    class: \"vac-icon-check\"\n                  }, null, 8, [\"name\", \"param\"])\n                ])\n              ])) : createCommentVNode(\"\", true)\n            ]),\n            createVNode(_component_message_actions, {\n              \"current-user-id\": $props.currentUserId,\n              message: $props.message,\n              \"message-actions\": $props.messageActions,\n              \"show-reaction-emojis\": $props.showReactionEmojis,\n              \"message-hover\": $data.messageHover,\n              \"hover-message-id\": $data.hoverMessageId,\n              \"hover-audio-progress\": $data.hoverAudioProgress,\n              \"emoji-data-source\": $props.emojiDataSource,\n              onUpdateMessageHover: _cache[2] || (_cache[2] = ($event) => $data.messageHover = $event),\n              onUpdateOptionsOpened: _cache[3] || (_cache[3] = ($event) => $data.optionsOpened = $event),\n              onUpdateEmojiOpened: _cache[4] || (_cache[4] = ($event) => $data.emojiOpened = $event),\n              onMessageActionHandler: $options.messageActionHandler,\n              onSendMessageReaction: $options.sendMessageReaction\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (i, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"current-user-id\", \"message\", \"message-actions\", \"show-reaction-emojis\", \"message-hover\", \"hover-message-id\", \"hover-audio-progress\", \"emoji-data-source\", \"onMessageActionHandler\", \"onSendMessageReaction\"])\n          ], 34),\n          createVNode(_component_message_reactions, {\n            \"current-user-id\": $props.currentUserId,\n            message: $props.message,\n            onSendMessageReaction: $options.sendMessageReaction\n          }, null, 8, [\"current-user-id\", \"message\", \"onSendMessageReaction\"])\n        ], 2),\n        renderSlot(_ctx.$slots, \"message-failure_\" + $props.message._id, {}, () => [\n          $props.message.failure && $props.message.senderId === $props.currentUserId ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"vac-failure-container vac-svg-button\", {\n              \"vac-failure-container-avatar\": $props.message.avatar && $props.message.senderId === $props.currentUserId\n            }]),\n            onClick: _cache[7] || (_cache[7] = ($event) => _ctx.$emit(\"open-failed-message\", { message: $props.message }))\n          }, _hoisted_11, 2)) : createCommentVNode(\"\", true)\n        ]),\n        $props.message.senderId === $props.currentUserId ? renderSlot(_ctx.$slots, \"message-avatar_\" + $props.message._id, { key: 2 }, () => [\n          $props.message.avatar ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: \"vac-avatar vac-avatar-current\",\n            style: normalizeStyle({ \"background-image\": `url('${$props.message.avatar}')` })\n          }, null, 4)) : createCommentVNode(\"\", true)\n        ]) : createCommentVNode(\"\", true),\n        $options.hasCurrentUserAvatar && !$props.message.avatar ? (openBlock(), createElementBlock(\"div\", _hoisted_12)) : createCommentVNode(\"\", true)\n      ])\n    ], 2))\n  ], 8, _hoisted_1$3);\n}\nvar RoomMessage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n  name: \"ChatRoom\",\n  components: {\n    Loader,\n    SvgIcon,\n    RoomHeader,\n    RoomFooter,\n    RoomMessage\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    singleRoom: { type: Boolean, required: true },\n    showRoomsList: { type: Boolean, required: true },\n    isMobile: { type: Boolean, required: true },\n    rooms: { type: Array, required: true },\n    roomId: { type: [String, Number], required: true },\n    loadFirstRoom: { type: Boolean, required: true },\n    messages: { type: Array, required: true },\n    roomMessage: { type: String, default: null },\n    messagesLoaded: { type: Boolean, required: true },\n    menuActions: { type: Array, required: true },\n    messageActions: { type: Array, required: true },\n    messageSelectionActions: { type: Array, required: true },\n    autoScroll: { type: Object, required: true },\n    showSendIcon: { type: Boolean, required: true },\n    showFiles: { type: Boolean, required: true },\n    showAudio: { type: Boolean, required: true },\n    audioBitRate: { type: Number, required: true },\n    audioSampleRate: { type: Number, required: true },\n    showEmojis: { type: Boolean, required: true },\n    showReactionEmojis: { type: Boolean, required: true },\n    showNewMessagesDivider: { type: Boolean, required: true },\n    showFooter: { type: Boolean, required: true },\n    acceptedFiles: { type: String, required: true },\n    captureFiles: { type: String, required: true },\n    multipleFiles: { type: Boolean, default: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    loadingRooms: { type: Boolean, required: true },\n    roomInfoEnabled: { type: Boolean, required: true },\n    textareaActionEnabled: { type: Boolean, required: true },\n    textareaAutoFocus: { type: Boolean, required: true },\n    userTagsEnabled: { type: Boolean, required: true },\n    emojisSuggestionEnabled: { type: Boolean, required: true },\n    scrollDistance: { type: Number, required: true },\n    templatesText: { type: Array, default: null },\n    usernameOptions: { type: Object, required: true },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"toggle-rooms-list\",\n    \"room-info\",\n    \"menu-action-handler\",\n    \"message-selection-action-handler\",\n    \"edit-message\",\n    \"send-message\",\n    \"delete-message\",\n    \"message-action-handler\",\n    \"fetch-messages\",\n    \"send-message-reaction\",\n    \"typing-message\",\n    \"open-file\",\n    \"open-user-tag\",\n    \"open-failed-message\",\n    \"textarea-action-handler\"\n  ],\n  data() {\n    return {\n      editedMessageId: null,\n      initReplyMessage: null,\n      initEditMessage: null,\n      loadingMessages: false,\n      observer: null,\n      showLoader: true,\n      loadingMoreMessages: false,\n      scrollIcon: false,\n      scrollMessagesCount: 0,\n      newMessages: [],\n      messageSelectionEnabled: false,\n      selectedMessages: [],\n      droppedFiles: []\n    };\n  },\n  computed: {\n    room() {\n      return this.rooms.find((room) => room.roomId === this.roomId) || {};\n    },\n    showNoMessages() {\n      return this.roomId && !this.messages.length && !this.loadingMessages && !this.loadingRooms;\n    },\n    showNoRoom() {\n      const noRoomSelected = !this.rooms.length && !this.loadingRooms || !this.roomId && !this.loadFirstRoom;\n      if (noRoomSelected) {\n        this.updateLoadingMessages(false);\n      }\n      return noRoomSelected;\n    },\n    showMessagesStarted() {\n      return this.messages.length && this.messagesLoaded;\n    }\n  },\n  watch: {\n    roomId: {\n      immediate: true,\n      handler() {\n        this.onRoomChanged();\n      }\n    },\n    messages: {\n      deep: true,\n      handler(newVal, oldVal) {\n        newVal.forEach((message, i) => {\n          if (this.showNewMessagesDivider && !message.seen && message.senderId !== this.currentUserId) {\n            this.newMessages.push({\n              _id: message._id,\n              index: i\n            });\n          }\n        });\n        if ((oldVal == null ? void 0 : oldVal.length) === (newVal == null ? void 0 : newVal.length) - 1) {\n          this.newMessages = [];\n        }\n        setTimeout(() => this.loadingMoreMessages = false);\n      }\n    },\n    messagesLoaded(val) {\n      if (val)\n        this.updateLoadingMessages(false);\n    }\n  },\n  mounted() {\n    this.newMessages = [];\n  },\n  methods: {\n    updateLoadingMessages(val) {\n      this.loadingMessages = val;\n      if (!val) {\n        setTimeout(() => this.initIntersectionObserver());\n      }\n    },\n    initIntersectionObserver() {\n      if (this.observer) {\n        this.showLoader = true;\n        this.observer.disconnect();\n      }\n      const loader = this.$el.querySelector(\"#infinite-loader-messages\");\n      if (loader) {\n        const options = {\n          root: this.$el.querySelector(\"#messages-list\"),\n          rootMargin: `${this.scrollDistance}px`,\n          threshold: 0\n        };\n        this.observer = new IntersectionObserver((entries) => {\n          if (entries[0].isIntersecting) {\n            this.loadMoreMessages();\n          }\n        }, options);\n        this.observer.observe(loader);\n      }\n    },\n    preventTopScroll() {\n      const container = this.$refs.scrollContainer;\n      const prevScrollHeight = container.scrollHeight;\n      const observer = new ResizeObserver((_) => {\n        if (container.scrollHeight !== prevScrollHeight) {\n          if (this.$refs.scrollContainer) {\n            this.$refs.scrollContainer.scrollTo({\n              top: container.scrollHeight - prevScrollHeight\n            });\n            observer.disconnect();\n          }\n        }\n      });\n      for (var i = 0; i < container.children.length; i++) {\n        observer.observe(container.children[i]);\n      }\n    },\n    touchStart(touchEvent) {\n      if (this.singleRoom)\n        return;\n      if (touchEvent.changedTouches.length === 1) {\n        const posXStart = touchEvent.changedTouches[0].clientX;\n        const posYStart = touchEvent.changedTouches[0].clientY;\n        addEventListener(\n          \"touchend\",\n          (touchEvent2) => this.touchEnd(touchEvent2, posXStart, posYStart),\n          { once: true }\n        );\n      }\n    },\n    touchEnd(touchEvent, posXStart, posYStart) {\n      if (touchEvent.changedTouches.length === 1) {\n        const posXEnd = touchEvent.changedTouches[0].clientX;\n        const posYEnd = touchEvent.changedTouches[0].clientY;\n        const swippedRight = posXEnd - posXStart > 100;\n        const swippedVertically = Math.abs(posYEnd - posYStart) > 50;\n        if (swippedRight && !swippedVertically) {\n          this.$emit(\"toggle-rooms-list\");\n        }\n      }\n    },\n    onRoomChanged() {\n      this.updateLoadingMessages(true);\n      this.scrollIcon = false;\n      this.scrollMessagesCount = 0;\n      this.resetMessageSelection();\n      const unwatch = this.$watch(\n        () => this.messages,\n        (val) => {\n          if (!val || !val.length)\n            return;\n          const element2 = this.$refs.scrollContainer;\n          if (!element2)\n            return;\n          unwatch();\n          setTimeout(() => {\n            element2.scrollTo({ top: element2.scrollHeight });\n            this.updateLoadingMessages(false);\n          });\n        }\n      );\n    },\n    resetMessageSelection() {\n      this.messageSelectionEnabled = false;\n      this.selectedMessages = [];\n    },\n    selectMessage(message) {\n      this.selectedMessages.push(message);\n    },\n    unselectMessage(messageId) {\n      this.selectedMessages = this.selectedMessages.filter(\n        (message) => message._id !== messageId\n      );\n    },\n    onMessageAdded({ message, index, ref }) {\n      if (index !== this.messages.length - 1)\n        return;\n      const autoScrollOffset = ref.offsetHeight + 60;\n      setTimeout(() => {\n        const scrollContainer = this.$refs.scrollContainer;\n        let scrolledUp = false;\n        if (scrollContainer) {\n          scrolledUp = this.getBottomScroll(scrollContainer) > autoScrollOffset;\n        }\n        if (message.senderId === this.currentUserId) {\n          if (scrolledUp) {\n            if (this.autoScroll.send.newAfterScrollUp) {\n              this.scrollToBottom();\n            }\n          } else {\n            if (this.autoScroll.send.new) {\n              this.scrollToBottom();\n            }\n          }\n        } else {\n          if (scrolledUp) {\n            if (this.autoScroll.receive.newAfterScrollUp) {\n              this.scrollToBottom();\n            } else {\n              this.scrollIcon = true;\n              this.scrollMessagesCount++;\n            }\n          } else {\n            if (this.autoScroll.receive.new) {\n              this.scrollToBottom();\n            } else {\n              this.scrollIcon = true;\n              this.scrollMessagesCount++;\n            }\n          }\n        }\n      });\n    },\n    onContainerScroll(e) {\n      if (!e.target)\n        return;\n      const bottomScroll = this.getBottomScroll(e.target);\n      if (bottomScroll < 60)\n        this.scrollMessagesCount = 0;\n      this.scrollIcon = bottomScroll > 500 || this.scrollMessagesCount;\n    },\n    loadMoreMessages() {\n      if (this.loadingMessages)\n        return;\n      setTimeout(\n        () => {\n          if (this.loadingMoreMessages)\n            return;\n          if (this.messagesLoaded || !this.roomId) {\n            this.loadingMoreMessages = false;\n            this.showLoader = false;\n            return;\n          }\n          this.preventTopScroll();\n          this.$emit(\"fetch-messages\");\n          this.loadingMoreMessages = true;\n        },\n        500\n      );\n    },\n    messageActionHandler({ action, message }) {\n      switch (action.name) {\n        case \"replyMessage\":\n          this.initReplyMessage = message;\n          setTimeout(() => {\n            this.initReplyMessage = null;\n          });\n          return;\n        case \"editMessage\":\n          this.initEditMessage = message;\n          setTimeout(() => {\n            this.initEditMessage = null;\n          });\n          return;\n        case \"deleteMessage\":\n          return this.$emit(\"delete-message\", message);\n        case \"selectMessages\":\n          this.selectedMessages = [message];\n          this.messageSelectionEnabled = true;\n          return;\n        default:\n          return this.$emit(\"message-action-handler\", { action, message });\n      }\n    },\n    messageSelectionActionHandler(action) {\n      this.$emit(\"message-selection-action-handler\", {\n        action,\n        messages: this.selectedMessages\n      });\n      this.resetMessageSelection();\n    },\n    sendMessageReaction(messageReaction) {\n      this.$emit(\"send-message-reaction\", messageReaction);\n    },\n    getBottomScroll(element2) {\n      const { scrollHeight, clientHeight, scrollTop } = element2;\n      return scrollHeight - clientHeight - scrollTop;\n    },\n    scrollToBottom() {\n      setTimeout(() => {\n        const element2 = this.$refs.scrollContainer;\n        if (element2) {\n          element2.classList.add(\"vac-scroll-smooth\");\n          element2.scrollTo({ top: element2.scrollHeight, behavior: \"smooth\" });\n          setTimeout(() => element2.classList.remove(\"vac-scroll-smooth\"));\n        }\n      }, 50);\n    },\n    openFile({ message, file }) {\n      this.$emit(\"open-file\", { message, file });\n    },\n    openUserTag(user) {\n      this.$emit(\"open-user-tag\", user);\n    },\n    onDropFiles(event) {\n      if (this.showFiles) {\n        this.droppedFiles = event.dataTransfer.files;\n      }\n    }\n  }\n};\nconst _hoisted_1$2 = { class: \"vac-container-center vac-room-empty\" };\nconst _hoisted_2$1 = { class: \"vac-messages-container\" };\nconst _hoisted_3$1 = {\n  key: 0,\n  class: \"vac-text-started\"\n};\nconst _hoisted_4$1 = {\n  key: 1,\n  class: \"vac-text-started\"\n};\nconst _hoisted_5$1 = {\n  key: 0,\n  id: \"infinite-loader-messages\"\n};\nconst _hoisted_6 = { key: 2 };\nconst _hoisted_7 = {\n  key: 0,\n  class: \"vac-badge-counter vac-messages-count\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_room_header = resolveComponent(\"room-header\");\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_room_message = resolveComponent(\"room-message\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_room_footer = resolveComponent(\"room-footer\");\n  return withDirectives((openBlock(), createElementBlock(\"div\", {\n    class: \"vac-col-messages\",\n    onDrop: _cache[12] || (_cache[12] = withModifiers((...args) => $options.onDropFiles && $options.onDropFiles(...args), [\"prevent\"])),\n    onDragenter: _cache[13] || (_cache[13] = withModifiers(() => {\n    }, [\"prevent\"])),\n    onDragover: _cache[14] || (_cache[14] = withModifiers(() => {\n    }, [\"prevent\"])),\n    onDragleave: _cache[15] || (_cache[15] = withModifiers(() => {\n    }, [\"prevent\"])),\n    onTouchstart: _cache[16] || (_cache[16] = (...args) => $options.touchStart && $options.touchStart(...args))\n  }, [\n    $options.showNoRoom ? renderSlot(_ctx.$slots, \"no-room-selected\", { key: 0 }, () => [\n      createBaseVNode(\"div\", _hoisted_1$2, [\n        createBaseVNode(\"div\", null, toDisplayString($props.textMessages.ROOM_EMPTY), 1)\n      ])\n    ]) : (openBlock(), createBlock(_component_room_header, {\n      key: 1,\n      \"current-user-id\": $props.currentUserId,\n      \"text-messages\": $props.textMessages,\n      \"single-room\": $props.singleRoom,\n      \"show-rooms-list\": $props.showRoomsList,\n      \"is-mobile\": $props.isMobile,\n      \"room-info-enabled\": $props.roomInfoEnabled,\n      \"menu-actions\": $props.menuActions,\n      room: $options.room,\n      \"message-selection-enabled\": $data.messageSelectionEnabled,\n      \"message-selection-actions\": $props.messageSelectionActions,\n      \"selected-messages-total\": $data.selectedMessages.length,\n      onToggleRoomsList: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"toggle-rooms-list\")),\n      onRoomInfo: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"room-info\")),\n      onMenuActionHandler: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"menu-action-handler\", $event)),\n      onMessageSelectionActionHandler: $options.messageSelectionActionHandler,\n      onCancelMessageSelection: _cache[3] || (_cache[3] = ($event) => $data.messageSelectionEnabled = false)\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (i, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"current-user-id\", \"text-messages\", \"single-room\", \"show-rooms-list\", \"is-mobile\", \"room-info-enabled\", \"menu-actions\", \"room\", \"message-selection-enabled\", \"message-selection-actions\", \"selected-messages-total\", \"onMessageSelectionActionHandler\"])),\n    createBaseVNode(\"div\", {\n      id: \"messages-list\",\n      ref: \"scrollContainer\",\n      class: \"vac-container-scroll\",\n      onScroll: _cache[5] || (_cache[5] = (...args) => $options.onContainerScroll && $options.onContainerScroll(...args))\n    }, [\n      createVNode(_component_loader, {\n        show: $data.loadingMessages,\n        type: \"messages\"\n      }, createSlots({ _: 2 }, [\n        renderList(_ctx.$slots, (idx, name) => {\n          return {\n            name,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"show\"]),\n      createBaseVNode(\"div\", _hoisted_2$1, [\n        createBaseVNode(\"div\", {\n          class: normalizeClass({ \"vac-messages-hidden\": $data.loadingMessages })\n        }, [\n          createVNode(Transition, { name: \"vac-fade-message\" }, {\n            default: withCtx(() => [\n              createBaseVNode(\"div\", null, [\n                $options.showNoMessages ? (openBlock(), createElementBlock(\"div\", _hoisted_3$1, [\n                  renderSlot(_ctx.$slots, \"messages-empty\", {}, () => [\n                    createTextVNode(toDisplayString($props.textMessages.MESSAGES_EMPTY), 1)\n                  ])\n                ])) : createCommentVNode(\"\", true),\n                $options.showMessagesStarted ? (openBlock(), createElementBlock(\"div\", _hoisted_4$1, toDisplayString($props.textMessages.CONVERSATION_STARTED) + \" \" + toDisplayString($props.messages[0].date), 1)) : createCommentVNode(\"\", true)\n              ])\n            ]),\n            _: 3\n          }),\n          $props.messages.length && !$props.messagesLoaded ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, [\n            createVNode(_component_loader, {\n              show: true,\n              infinite: true,\n              type: \"infinite-messages\"\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (idx, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1024)\n          ])) : createCommentVNode(\"\", true),\n          (openBlock(), createBlock(TransitionGroup, {\n            key: $props.roomId,\n            name: \"vac-fade-message\",\n            tag: \"span\"\n          }, {\n            default: withCtx(() => [\n              (openBlock(true), createElementBlock(Fragment, null, renderList($props.messages, (m, i) => {\n                return openBlock(), createElementBlock(\"div\", {\n                  key: m.indexId || m._id\n                }, [\n                  createVNode(_component_room_message, {\n                    \"current-user-id\": $props.currentUserId,\n                    message: m,\n                    index: i,\n                    messages: $props.messages,\n                    \"edited-message-id\": $data.editedMessageId,\n                    \"message-actions\": $props.messageActions,\n                    \"room-users\": $options.room.users,\n                    \"text-messages\": $props.textMessages,\n                    \"new-messages\": $data.newMessages,\n                    \"show-reaction-emojis\": $props.showReactionEmojis,\n                    \"show-new-messages-divider\": $props.showNewMessagesDivider,\n                    \"text-formatting\": $props.textFormatting,\n                    \"link-options\": $props.linkOptions,\n                    \"username-options\": $props.usernameOptions,\n                    \"message-selection-enabled\": $data.messageSelectionEnabled,\n                    \"selected-messages\": $data.selectedMessages,\n                    \"emoji-data-source\": $props.emojiDataSource,\n                    onMessageAdded: $options.onMessageAdded,\n                    onMessageActionHandler: $options.messageActionHandler,\n                    onOpenFile: $options.openFile,\n                    onOpenUserTag: $options.openUserTag,\n                    onOpenFailedMessage: _cache[4] || (_cache[4] = ($event) => _ctx.$emit(\"open-failed-message\", $event)),\n                    onSendMessageReaction: $options.sendMessageReaction,\n                    onSelectMessage: $options.selectMessage,\n                    onUnselectMessage: $options.unselectMessage\n                  }, createSlots({ _: 2 }, [\n                    renderList(_ctx.$slots, (idx, name) => {\n                      return {\n                        name,\n                        fn: withCtx((data) => [\n                          renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                        ])\n                      };\n                    })\n                  ]), 1032, [\"current-user-id\", \"message\", \"index\", \"messages\", \"edited-message-id\", \"message-actions\", \"room-users\", \"text-messages\", \"new-messages\", \"show-reaction-emojis\", \"show-new-messages-divider\", \"text-formatting\", \"link-options\", \"username-options\", \"message-selection-enabled\", \"selected-messages\", \"emoji-data-source\", \"onMessageAdded\", \"onMessageActionHandler\", \"onOpenFile\", \"onOpenUserTag\", \"onSendMessageReaction\", \"onSelectMessage\", \"onUnselectMessage\"])\n                ]);\n              }), 128))\n            ]),\n            _: 3\n          }))\n        ], 2)\n      ])\n    ], 544),\n    !$data.loadingMessages ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n      createVNode(Transition, { name: \"vac-bounce\" }, {\n        default: withCtx(() => [\n          $data.scrollIcon ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: \"vac-icon-scroll\",\n            onClick: _cache[6] || (_cache[6] = (...args) => $options.scrollToBottom && $options.scrollToBottom(...args))\n          }, [\n            createVNode(Transition, { name: \"vac-bounce\" }, {\n              default: withCtx(() => [\n                $data.scrollMessagesCount ? (openBlock(), createElementBlock(\"div\", _hoisted_7, toDisplayString($data.scrollMessagesCount), 1)) : createCommentVNode(\"\", true)\n              ]),\n              _: 1\n            }),\n            renderSlot(_ctx.$slots, \"scroll-icon\", {}, () => [\n              createVNode(_component_svg_icon, {\n                name: \"dropdown\",\n                param: \"scroll\"\n              })\n            ])\n          ])) : createCommentVNode(\"\", true)\n        ]),\n        _: 3\n      })\n    ])) : createCommentVNode(\"\", true),\n    createVNode(_component_room_footer, {\n      room: $options.room,\n      \"room-id\": $props.roomId,\n      \"room-message\": $props.roomMessage,\n      \"text-messages\": $props.textMessages,\n      \"show-send-icon\": $props.showSendIcon,\n      \"show-files\": $props.showFiles,\n      \"show-audio\": $props.showAudio,\n      \"show-emojis\": $props.showEmojis,\n      \"show-footer\": $props.showFooter,\n      \"accepted-files\": $props.acceptedFiles,\n      \"capture-files\": $props.captureFiles,\n      \"multiple-files\": $props.multipleFiles,\n      \"textarea-action-enabled\": $props.textareaActionEnabled,\n      \"textarea-auto-focus\": $props.textareaAutoFocus,\n      \"user-tags-enabled\": $props.userTagsEnabled,\n      \"emojis-suggestion-enabled\": $props.emojisSuggestionEnabled,\n      \"templates-text\": $props.templatesText,\n      \"text-formatting\": $props.textFormatting,\n      \"link-options\": $props.linkOptions,\n      \"audio-bit-rate\": $props.audioBitRate,\n      \"audio-sample-rate\": $props.audioSampleRate,\n      \"init-reply-message\": $data.initReplyMessage,\n      \"init-edit-message\": $data.initEditMessage,\n      \"dropped-files\": $data.droppedFiles,\n      \"emoji-data-source\": $props.emojiDataSource,\n      onUpdateEditedMessageId: _cache[7] || (_cache[7] = ($event) => $data.editedMessageId = $event),\n      onEditMessage: _cache[8] || (_cache[8] = ($event) => _ctx.$emit(\"edit-message\", $event)),\n      onSendMessage: _cache[9] || (_cache[9] = ($event) => _ctx.$emit(\"send-message\", $event)),\n      onTypingMessage: _cache[10] || (_cache[10] = ($event) => _ctx.$emit(\"typing-message\", $event)),\n      onTextareaActionHandler: _cache[11] || (_cache[11] = ($event) => _ctx.$emit(\"textarea-action-handler\", $event))\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"room\", \"room-id\", \"room-message\", \"text-messages\", \"show-send-icon\", \"show-files\", \"show-audio\", \"show-emojis\", \"show-footer\", \"accepted-files\", \"capture-files\", \"multiple-files\", \"textarea-action-enabled\", \"textarea-auto-focus\", \"user-tags-enabled\", \"emojis-suggestion-enabled\", \"templates-text\", \"text-formatting\", \"link-options\", \"audio-bit-rate\", \"audio-sample-rate\", \"init-reply-message\", \"init-edit-message\", \"dropped-files\", \"emoji-data-source\"])\n  ], 544)), [\n    [vShow, $props.isMobile && !$props.showRoomsList || !$props.isMobile || $props.singleRoom]\n  ]);\n}\nvar Room = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$1 = {\n  name: \"MediaPreview\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    file: { type: Object, required: true }\n  },\n  emits: [\"close-media-preview\"],\n  computed: {\n    isImage() {\n      return isImageFile(this.file);\n    },\n    isVideo() {\n      return isVideoFile(this.file);\n    }\n  },\n  mounted() {\n    this.$refs.modal.focus();\n  },\n  methods: {\n    closeModal() {\n      this.$emit(\"close-media-preview\");\n    }\n  }\n};\nconst _hoisted_1$1 = {\n  key: 0,\n  class: \"vac-media-preview-container\"\n};\nconst _hoisted_2 = {\n  key: 1,\n  class: \"vac-media-preview-container\"\n};\nconst _hoisted_3 = {\n  controls: \"\",\n  autoplay: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = { class: \"vac-svg-button\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", {\n    ref: \"modal\",\n    tabindex: \"0\",\n    class: \"vac-media-preview\",\n    onClick: _cache[0] || (_cache[0] = withModifiers((...args) => $options.closeModal && $options.closeModal(...args), [\"stop\"])),\n    onKeydown: _cache[1] || (_cache[1] = withKeys((...args) => $options.closeModal && $options.closeModal(...args), [\"esc\"]))\n  }, [\n    createVNode(Transition, {\n      name: \"vac-bounce-preview\",\n      appear: \"\"\n    }, {\n      default: withCtx(() => [\n        $options.isImage ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n          createBaseVNode(\"div\", {\n            class: \"vac-image-preview\",\n            style: normalizeStyle({\n              \"background-image\": `url('${$props.file.url}')`\n            })\n          }, null, 4)\n        ])) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n          createBaseVNode(\"video\", _hoisted_3, [\n            createBaseVNode(\"source\", {\n              src: $props.file.url\n            }, null, 8, _hoisted_4)\n          ])\n        ])) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    }),\n    createBaseVNode(\"div\", _hoisted_5, [\n      renderSlot(_ctx.$slots, \"preview-close-icon\", {}, () => [\n        createVNode(_component_svg_icon, {\n          name: \"close-outline\",\n          param: \"preview\"\n        })\n      ])\n    ])\n  ], 544);\n}\nvar MediaPreview = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nvar locales = {\n  ROOMS_EMPTY: \"No rooms\",\n  ROOM_EMPTY: \"No room selected\",\n  NEW_MESSAGES: \"New Messages\",\n  MESSAGE_DELETED: \"This message was deleted\",\n  MESSAGES_EMPTY: \"No messages\",\n  CONVERSATION_STARTED: \"Conversation started on:\",\n  TYPE_MESSAGE: \"Type message\",\n  SEARCH: \"Search\",\n  IS_ONLINE: \"is online\",\n  LAST_SEEN: \"last seen \",\n  IS_TYPING: \"is writing...\",\n  CANCEL_SELECT_MESSAGE: \"Cancel\"\n};\nconst defaultThemeStyles = {\n  light: {\n    general: {\n      color: \"#0a0a0a\",\n      colorButtonClear: \"#1976d2\",\n      colorButton: \"#fff\",\n      backgroundColorButton: \"#1976d2\",\n      backgroundInput: \"#fff\",\n      colorPlaceholder: \"#9ca6af\",\n      colorCaret: \"#1976d2\",\n      colorSpinner: \"#333\",\n      borderStyle: \"1px solid #e1e4e8\",\n      backgroundScrollIcon: \"#fff\"\n    },\n    container: {\n      border: \"none\",\n      borderRadius: \"4px\",\n      boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)\"\n    },\n    header: {\n      background: \"#fff\",\n      colorRoomName: \"#0a0a0a\",\n      colorRoomInfo: \"#9ca6af\"\n    },\n    footer: {\n      background: \"#f8f9fa\",\n      borderStyleInput: \"1px solid #e1e4e8\",\n      borderInputSelected: \"#1976d2\",\n      backgroundReply: \"#e5e5e6\",\n      backgroundTagActive: \"#e5e5e6\",\n      backgroundTag: \"#f8f9fa\"\n    },\n    content: {\n      background: \"#f8f9fa\"\n    },\n    sidemenu: {\n      background: \"#fff\",\n      backgroundHover: \"#f6f6f6\",\n      backgroundActive: \"#e5effa\",\n      colorActive: \"#1976d2\",\n      borderColorSearch: \"#e1e5e8\"\n    },\n    dropdown: {\n      background: \"#fff\",\n      backgroundHover: \"#f6f6f6\"\n    },\n    message: {\n      background: \"#fff\",\n      backgroundMe: \"#ccf2cf\",\n      color: \"#0a0a0a\",\n      colorStarted: \"#9ca6af\",\n      backgroundDeleted: \"#dadfe2\",\n      backgroundSelected: \"#c2dcf2\",\n      colorDeleted: \"#757e85\",\n      colorUsername: \"#9ca6af\",\n      colorTimestamp: \"#828c94\",\n      backgroundDate: \"#e5effa\",\n      colorDate: \"#505a62\",\n      backgroundSystem: \"#e5effa\",\n      colorSystem: \"#505a62\",\n      backgroundMedia: \"rgba(0, 0, 0, 0.15)\",\n      backgroundReply: \"rgba(0, 0, 0, 0.08)\",\n      colorReplyUsername: \"#0a0a0a\",\n      colorReply: \"#6e6e6e\",\n      colorTag: \"#0d579c\",\n      backgroundImage: \"#ddd\",\n      colorNewMessages: \"#1976d2\",\n      backgroundScrollCounter: \"#0696c7\",\n      colorScrollCounter: \"#fff\",\n      backgroundReaction: \"#eee\",\n      borderStyleReaction: \"1px solid #eee\",\n      backgroundReactionHover: \"#fff\",\n      borderStyleReactionHover: \"1px solid #ddd\",\n      colorReactionCounter: \"#0a0a0a\",\n      backgroundReactionMe: \"#cfecf5\",\n      borderStyleReactionMe: \"1px solid #3b98b8\",\n      backgroundReactionHoverMe: \"#cfecf5\",\n      borderStyleReactionHoverMe: \"1px solid #3b98b8\",\n      colorReactionCounterMe: \"#0b59b3\",\n      backgroundAudioRecord: \"#eb4034\",\n      backgroundAudioLine: \"rgba(0, 0, 0, 0.15)\",\n      backgroundAudioProgress: \"#455247\",\n      backgroundAudioProgressSelector: \"#455247\",\n      colorFileExtension: \"#757e85\"\n    },\n    markdown: {\n      background: \"rgba(239, 239, 239, 0.7)\",\n      border: \"rgba(212, 212, 212, 0.9)\",\n      color: \"#e01e5a\",\n      colorMulti: \"#0a0a0a\"\n    },\n    room: {\n      colorUsername: \"#0a0a0a\",\n      colorMessage: \"#67717a\",\n      colorTimestamp: \"#a2aeb8\",\n      colorStateOnline: \"#4caf50\",\n      colorStateOffline: \"#9ca6af\",\n      backgroundCounterBadge: \"#0696c7\",\n      colorCounterBadge: \"#fff\"\n    },\n    emoji: {\n      background: \"#fff\"\n    },\n    icons: {\n      search: \"#9ca6af\",\n      add: \"#1976d2\",\n      toggle: \"#0a0a0a\",\n      menu: \"#0a0a0a\",\n      close: \"#9ca6af\",\n      closeImage: \"#fff\",\n      file: \"#1976d2\",\n      paperclip: \"#1976d2\",\n      closeOutline: \"#000\",\n      closePreview: \"#fff\",\n      send: \"#1976d2\",\n      sendDisabled: \"#9ca6af\",\n      emoji: \"#1976d2\",\n      emojiReaction: \"rgba(0, 0, 0, 0.3)\",\n      document: \"#1976d2\",\n      pencil: \"#9e9e9e\",\n      checkmark: \"#9e9e9e\",\n      checkmarkSeen: \"#0696c7\",\n      eye: \"#fff\",\n      dropdownMessage: \"#fff\",\n      dropdownMessageBackground: \"rgba(0, 0, 0, 0.25)\",\n      dropdownRoom: \"#9e9e9e\",\n      dropdownScroll: \"#0a0a0a\",\n      microphone: \"#1976d2\",\n      audioPlay: \"#455247\",\n      audioPause: \"#455247\",\n      audioCancel: \"#eb4034\",\n      audioConfirm: \"#1ba65b\"\n    }\n  },\n  dark: {\n    general: {\n      color: \"#fff\",\n      colorButtonClear: \"#fff\",\n      colorButton: \"#fff\",\n      backgroundColorButton: \"#1976d2\",\n      backgroundInput: \"#202223\",\n      colorPlaceholder: \"#596269\",\n      colorCaret: \"#fff\",\n      colorSpinner: \"#fff\",\n      borderStyle: \"none\",\n      backgroundScrollIcon: \"#fff\"\n    },\n    container: {\n      border: \"none\",\n      borderRadius: \"4px\",\n      boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)\"\n    },\n    header: {\n      background: \"#181a1b\",\n      colorRoomName: \"#fff\",\n      colorRoomInfo: \"#9ca6af\"\n    },\n    footer: {\n      background: \"#131415\",\n      borderStyleInput: \"none\",\n      borderInputSelected: \"#1976d2\",\n      backgroundReply: \"#1b1c1c\",\n      backgroundTagActive: \"#1b1c1c\",\n      backgroundTag: \"#131415\"\n    },\n    content: {\n      background: \"#131415\"\n    },\n    sidemenu: {\n      background: \"#181a1b\",\n      backgroundHover: \"#202224\",\n      backgroundActive: \"#151617\",\n      colorActive: \"#fff\",\n      borderColorSearch: \"#181a1b\"\n    },\n    dropdown: {\n      background: \"#2a2c33\",\n      backgroundHover: \"#26282e\"\n    },\n    message: {\n      background: \"#22242a\",\n      backgroundMe: \"#1f7e80\",\n      color: \"#fff\",\n      colorStarted: \"#9ca6af\",\n      backgroundDeleted: \"#1b1c21\",\n      backgroundSelected: \"#c2dcf2\",\n      colorDeleted: \"#a2a5a8\",\n      colorUsername: \"#b3bac9\",\n      colorTimestamp: \"#ebedf2\",\n      backgroundDate: \"rgba(0, 0, 0, 0.3)\",\n      colorDate: \"#bec5cc\",\n      backgroundSystem: \"rgba(0, 0, 0, 0.3)\",\n      colorSystem: \"#bec5cc\",\n      backgroundMedia: \"rgba(0, 0, 0, 0.18)\",\n      backgroundReply: \"rgba(0, 0, 0, 0.18)\",\n      colorReplyUsername: \"#fff\",\n      colorReply: \"#d6d6d6\",\n      colorTag: \"#f0c60a\",\n      backgroundImage: \"#ddd\",\n      colorNewMessages: \"#fff\",\n      backgroundScrollCounter: \"#1976d2\",\n      colorScrollCounter: \"#fff\",\n      backgroundReaction: \"none\",\n      borderStyleReaction: \"none\",\n      backgroundReactionHover: \"#202223\",\n      borderStyleReactionHover: \"none\",\n      colorReactionCounter: \"#fff\",\n      backgroundReactionMe: \"#4e9ad1\",\n      borderStyleReactionMe: \"none\",\n      backgroundReactionHoverMe: \"#4e9ad1\",\n      borderStyleReactionHoverMe: \"none\",\n      colorReactionCounterMe: \"#fff\",\n      backgroundAudioRecord: \"#eb4034\",\n      backgroundAudioLine: \"rgba(255, 255, 255, 0.15)\",\n      backgroundAudioProgress: \"#b7d4d3\",\n      backgroundAudioProgressSelector: \"#b7d4d3\",\n      colorFileExtension: \"#a2a5a8\"\n    },\n    markdown: {\n      background: \"rgba(239, 239, 239, 0.7)\",\n      border: \"rgba(212, 212, 212, 0.9)\",\n      color: \"#e01e5a\",\n      colorMulti: \"#0a0a0a\"\n    },\n    room: {\n      colorUsername: \"#fff\",\n      colorMessage: \"#6c7278\",\n      colorTimestamp: \"#6c7278\",\n      colorStateOnline: \"#4caf50\",\n      colorStateOffline: \"#596269\",\n      backgroundCounterBadge: \"#1976d2\",\n      colorCounterBadge: \"#fff\"\n    },\n    emoji: {\n      background: \"#343740\"\n    },\n    icons: {\n      search: \"#596269\",\n      add: \"#fff\",\n      toggle: \"#fff\",\n      menu: \"#fff\",\n      close: \"#9ca6af\",\n      closeImage: \"#fff\",\n      file: \"#1976d2\",\n      paperclip: \"#fff\",\n      closeOutline: \"#fff\",\n      closePreview: \"#fff\",\n      send: \"#fff\",\n      sendDisabled: \"#646a70\",\n      emoji: \"#fff\",\n      emojiReaction: \"#fff\",\n      document: \"#1976d2\",\n      pencil: \"#ebedf2\",\n      checkmark: \"#ebedf2\",\n      checkmarkSeen: \"#f0d90a\",\n      eye: \"#fff\",\n      dropdownMessage: \"#fff\",\n      dropdownMessageBackground: \"rgba(0, 0, 0, 0.25)\",\n      dropdownRoom: \"#fff\",\n      dropdownScroll: \"#0a0a0a\",\n      microphone: \"#fff\",\n      audioPlay: \"#b7d4d3\",\n      audioPause: \"#b7d4d3\",\n      audioCancel: \"#eb4034\",\n      audioConfirm: \"#1ba65b\"\n    }\n  }\n};\nconst cssThemeVars = ({\n  general,\n  container,\n  header,\n  footer,\n  sidemenu,\n  content: content2,\n  dropdown,\n  message,\n  markdown: markdown2,\n  room,\n  emoji,\n  icons\n}) => {\n  return {\n    \"--chat-color\": general.color,\n    \"--chat-color-button-clear\": general.colorButtonClear,\n    \"--chat-color-button\": general.colorButton,\n    \"--chat-bg-color-button\": general.backgroundColorButton,\n    \"--chat-bg-color-input\": general.backgroundInput,\n    \"--chat-color-spinner\": general.colorSpinner,\n    \"--chat-color-placeholder\": general.colorPlaceholder,\n    \"--chat-color-caret\": general.colorCaret,\n    \"--chat-border-style\": general.borderStyle,\n    \"--chat-bg-scroll-icon\": general.backgroundScrollIcon,\n    \"--chat-container-border\": container.border,\n    \"--chat-container-border-radius\": container.borderRadius,\n    \"--chat-container-box-shadow\": container.boxShadow,\n    \"--chat-header-bg-color\": header.background,\n    \"--chat-header-color-name\": header.colorRoomName,\n    \"--chat-header-color-info\": header.colorRoomInfo,\n    \"--chat-footer-bg-color\": footer.background,\n    \"--chat-border-style-input\": footer.borderStyleInput,\n    \"--chat-border-color-input-selected\": footer.borderInputSelected,\n    \"--chat-footer-bg-color-reply\": footer.backgroundReply,\n    \"--chat-footer-bg-color-tag-active\": footer.backgroundTagActive,\n    \"--chat-footer-bg-color-tag\": footer.backgroundTag,\n    \"--chat-content-bg-color\": content2.background,\n    \"--chat-sidemenu-bg-color\": sidemenu.background,\n    \"--chat-sidemenu-bg-color-hover\": sidemenu.backgroundHover,\n    \"--chat-sidemenu-bg-color-active\": sidemenu.backgroundActive,\n    \"--chat-sidemenu-color-active\": sidemenu.colorActive,\n    \"--chat-sidemenu-border-color-search\": sidemenu.borderColorSearch,\n    \"--chat-dropdown-bg-color\": dropdown.background,\n    \"--chat-dropdown-bg-color-hover\": dropdown.backgroundHover,\n    \"--chat-message-bg-color\": message.background,\n    \"--chat-message-bg-color-me\": message.backgroundMe,\n    \"--chat-message-color-started\": message.colorStarted,\n    \"--chat-message-bg-color-deleted\": message.backgroundDeleted,\n    \"--chat-message-bg-color-selected\": message.backgroundSelected,\n    \"--chat-message-color-deleted\": message.colorDeleted,\n    \"--chat-message-color-username\": message.colorUsername,\n    \"--chat-message-color-timestamp\": message.colorTimestamp,\n    \"--chat-message-bg-color-date\": message.backgroundDate,\n    \"--chat-message-color-date\": message.colorDate,\n    \"--chat-message-bg-color-system\": message.backgroundSystem,\n    \"--chat-message-color-system\": message.colorSystem,\n    \"--chat-message-color\": message.color,\n    \"--chat-message-bg-color-media\": message.backgroundMedia,\n    \"--chat-message-bg-color-reply\": message.backgroundReply,\n    \"--chat-message-color-reply-username\": message.colorReplyUsername,\n    \"--chat-message-color-reply-content\": message.colorReply,\n    \"--chat-message-color-tag\": message.colorTag,\n    \"--chat-message-bg-color-image\": message.backgroundImage,\n    \"--chat-message-color-new-messages\": message.colorNewMessages,\n    \"--chat-message-bg-color-scroll-counter\": message.backgroundScrollCounter,\n    \"--chat-message-color-scroll-counter\": message.colorScrollCounter,\n    \"--chat-message-bg-color-reaction\": message.backgroundReaction,\n    \"--chat-message-border-style-reaction\": message.borderStyleReaction,\n    \"--chat-message-bg-color-reaction-hover\": message.backgroundReactionHover,\n    \"--chat-message-border-style-reaction-hover\": message.borderStyleReactionHover,\n    \"--chat-message-color-reaction-counter\": message.colorReactionCounter,\n    \"--chat-message-bg-color-reaction-me\": message.backgroundReactionMe,\n    \"--chat-message-border-style-reaction-me\": message.borderStyleReactionMe,\n    \"--chat-message-bg-color-reaction-hover-me\": message.backgroundReactionHoverMe,\n    \"--chat-message-border-style-reaction-hover-me\": message.borderStyleReactionHoverMe,\n    \"--chat-message-color-reaction-counter-me\": message.colorReactionCounterMe,\n    \"--chat-message-bg-color-audio-record\": message.backgroundAudioRecord,\n    \"--chat-message-bg-color-audio-line\": message.backgroundAudioLine,\n    \"--chat-message-bg-color-audio-progress\": message.backgroundAudioProgress,\n    \"--chat-message-bg-color-audio-progress-selector\": message.backgroundAudioProgressSelector,\n    \"--chat-message-color-file-extension\": message.colorFileExtension,\n    \"--chat-markdown-bg\": markdown2.background,\n    \"--chat-markdown-border\": markdown2.border,\n    \"--chat-markdown-color\": markdown2.color,\n    \"--chat-markdown-color-multi\": markdown2.colorMulti,\n    \"--chat-room-color-username\": room.colorUsername,\n    \"--chat-room-color-message\": room.colorMessage,\n    \"--chat-room-color-timestamp\": room.colorTimestamp,\n    \"--chat-room-color-online\": room.colorStateOnline,\n    \"--chat-room-color-offline\": room.colorStateOffline,\n    \"--chat-room-bg-color-badge\": room.backgroundCounterBadge,\n    \"--chat-room-color-badge\": room.colorCounterBadge,\n    \"--chat-emoji-bg-color\": emoji.background,\n    \"--chat-icon-color-search\": icons.search,\n    \"--chat-icon-color-add\": icons.add,\n    \"--chat-icon-color-toggle\": icons.toggle,\n    \"--chat-icon-color-menu\": icons.menu,\n    \"--chat-icon-color-close\": icons.close,\n    \"--chat-icon-color-close-image\": icons.closeImage,\n    \"--chat-icon-color-file\": icons.file,\n    \"--chat-icon-color-paperclip\": icons.paperclip,\n    \"--chat-icon-color-close-outline\": icons.closeOutline,\n    \"--chat-icon-color-close-preview\": icons.closePreview,\n    \"--chat-icon-color-send\": icons.send,\n    \"--chat-icon-color-send-disabled\": icons.sendDisabled,\n    \"--chat-icon-color-emoji\": icons.emoji,\n    \"--chat-icon-color-emoji-reaction\": icons.emojiReaction,\n    \"--chat-icon-color-document\": icons.document,\n    \"--chat-icon-color-pencil\": icons.pencil,\n    \"--chat-icon-color-checkmark\": icons.checkmark,\n    \"--chat-icon-color-checkmark-seen\": icons.checkmarkSeen,\n    \"--chat-icon-color-eye\": icons.eye,\n    \"--chat-icon-color-dropdown-message\": icons.dropdownMessage,\n    \"--chat-icon-bg-dropdown-message\": icons.dropdownMessageBackground,\n    \"--chat-icon-color-dropdown-room\": icons.dropdownRoom,\n    \"--chat-icon-color-dropdown-scroll\": icons.dropdownScroll,\n    \"--chat-icon-color-microphone\": icons.microphone,\n    \"--chat-icon-color-audio-play\": icons.audioPlay,\n    \"--chat-icon-color-audio-pause\": icons.audioPause,\n    \"--chat-icon-color-audio-cancel\": icons.audioCancel,\n    \"--chat-icon-color-audio-confirm\": icons.audioConfirm\n  };\n};\nvar _style_0 = '.vac-fade-spinner-enter-from{opacity:0}.vac-fade-spinner-enter-active{transition:opacity .8s}.vac-fade-spinner-leave-active{transition:opacity .2s;opacity:0}.vac-fade-image-enter-from{opacity:0}.vac-fade-image-enter-active{transition:opacity 1s}.vac-fade-image-leave-active{transition:opacity .5s;opacity:0}.vac-fade-message-enter-from{opacity:0}.vac-fade-message-enter-active{transition:opacity .5s}.vac-fade-message-leave-active{transition:opacity .2s;opacity:0}.vac-slide-left-enter-active,.vac-slide-right-enter-active{transition:all .3s ease;transition-property:transform,opacity}.vac-slide-left-leave-active,.vac-slide-right-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)!important;transition-property:transform,opacity}.vac-slide-left-enter-from,.vac-slide-left-leave-to{transform:translate(10px);opacity:0}.vac-slide-right-enter-from,.vac-slide-right-leave-to{transform:translate(-10px);opacity:0}.vac-slide-up-enter-active{transition:all .3s ease}.vac-slide-up-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.vac-slide-up-enter-from,.vac-slide-up-leave-to{transform:translateY(10px);opacity:0}.vac-bounce-enter-active{animation:vac-bounce-in .5s}.vac-bounce-leave-active{animation:vac-bounce-in .3s reverse}@keyframes vac-bounce-in{0%{transform:scale(0)}50%{transform:scale(1.05)}to{transform:scale(1)}}.vac-fade-preview-enter{opacity:0}.vac-fade-preview-enter-active{transition:opacity .1s}.vac-fade-preview-leave-active{transition:opacity .2s;opacity:0}.vac-bounce-preview-enter-active{animation:vac-bounce-image-in .4s}.vac-bounce-preview-leave-active{animation:vac-bounce-image-in .3s reverse}@keyframes vac-bounce-image-in{0%{transform:scale(.6)}to{transform:scale(1)}}.vac-menu-list{border-radius:4px;display:block;cursor:pointer;background:var(--chat-dropdown-bg-color);padding:6px 0}.vac-menu-list :hover{background:var(--chat-dropdown-bg-color-hover);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-list :not(:hover){transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;min-height:30px;padding:5px 16px;position:relative;white-space:nowrap;line-height:30px}.vac-menu-options{position:absolute;right:10px;top:20px;z-index:9999;min-width:150px;display:inline-block;border-radius:4px;font-size:14px;color:var(--chat-color);overflow-y:auto;overflow-x:hidden;contain:content;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-app-border{border:var(--chat-border-style)}.vac-app-border-t{border-top:var(--chat-border-style)}.vac-app-border-r{border-right:var(--chat-border-style)}.vac-app-border-b{border-bottom:var(--chat-border-style)}.vac-app-box-shadow{transition:all .5s;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-item-clickable{cursor:pointer}.vac-vertical-center{display:flex;align-items:center;height:100%}.vac-vertical-center .vac-vertical-container{width:100%;text-align:center}.vac-svg-button{max-height:30px;display:flex;cursor:pointer;transition:all .2s}.vac-svg-button:hover{transform:scale(1.1);opacity:.7}.vac-avatar{background-size:cover;background-position:center center;background-repeat:no-repeat;background-color:#ddd;height:42px;width:42px;min-height:42px;min-width:42px;margin-right:15px;border-radius:50%}.vac-blur-loading{filter:blur(3px)}.vac-badge-counter{height:13px;width:auto;min-width:13px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:3px;font-size:11px;font-weight:500}.vac-text-ellipsis{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-text-tag{color:var(--chat-message-color-tag);cursor:pointer}.vac-file-container{display:flex;align-content:center;justify-content:center;flex-wrap:wrap;text-align:center;background:var(--chat-bg-color-input);border:var(--chat-border-style-input);border-radius:4px;padding:10px}.vac-file-container svg{height:28px;width:28px}.vac-file-container .vac-text-extension{font-size:12px;color:var(--chat-message-color-file-extension);margin-top:-2px}.markdown p{margin:0}.markdown ol{display:flex;flex-direction:column;list-style-position:inside}.markdown ul{display:flex;flex-direction:column}.markdown code{display:block;font-size:12px;color:var(--chat-markdown-color-multi);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:4px 0;padding:7px}.markdown p code{display:inline-block;font-size:12px;color:var(--chat-markdown-color);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:2px 0;padding:2px 3px}.vac-card-window{width:100%;display:block;max-width:100%;background:var(--chat-content-bg-color);color:var(--chat-color);overflow-wrap:break-word;white-space:normal;border:var(--chat-container-border);border-radius:var(--chat-container-border-radius);box-shadow:var(--chat-container-box-shadow);-webkit-tap-highlight-color:transparent}.vac-card-window *{font-family:inherit}.vac-card-window a{color:#0d579c;font-weight:500}.vac-card-window .vac-chat-container{height:100%;display:flex}.vac-card-window .vac-chat-container input{min-width:10px}.vac-card-window .vac-chat-container textarea,.vac-card-window .vac-chat-container input[type=text],.vac-card-window .vac-chat-container input[type=search]{-webkit-appearance:none}.vac-media-preview{position:fixed;top:0;left:0;z-index:99;width:100vw;height:100vh;display:flex;align-items:center;background-color:#000c;outline:none}.vac-media-preview .vac-media-preview-container{height:calc(100% - 140px);width:calc(100% - 80px);padding:70px 40px;margin:0 auto}.vac-media-preview .vac-image-preview{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:center}.vac-media-preview video{width:100%;height:100%}.vac-media-preview .vac-svg-button{position:absolute;top:30px;right:30px;transform:scale(1.4)}@media only screen and (max-width: 768px){.vac-media-preview .vac-svg-button{top:20px;right:20px;transform:scale(1.2)}.vac-media-preview .vac-media-preview-container{width:calc(100% - 40px);padding:70px 20px}}.vac-col-messages{position:relative;height:100%;flex:1;overflow:hidden;display:flex;flex-flow:column}.vac-col-messages .vac-container-center{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.vac-col-messages .vac-room-empty{font-size:14px;color:#9ca6af;font-style:italic;line-height:20px;white-space:pre-line}.vac-col-messages .vac-room-empty div{padding:0 10%}.vac-col-messages .vac-container-scroll{background:var(--chat-content-bg-color);flex:1;overflow-y:auto;margin-right:1px;margin-top:65px;-webkit-overflow-scrolling:touch}.vac-col-messages .vac-container-scroll.vac-scroll-smooth{scroll-behavior:smooth}.vac-col-messages .vac-messages-container{padding:0 5px 5px}.vac-col-messages .vac-text-started{font-size:14px;color:var(--chat-message-color-started);font-style:italic;text-align:center;margin-top:25px;margin-bottom:20px}.vac-col-messages .vac-icon-scroll{position:absolute;bottom:80px;right:20px;padding:8px;background:var(--chat-bg-scroll-icon);border-radius:50%;box-shadow:0 1px 1px -1px #0003,0 1px 1px #00000024,0 1px 2px #0000001f;display:flex;cursor:pointer;z-index:10}.vac-col-messages .vac-icon-scroll svg{height:25px;width:25px}.vac-col-messages .vac-messages-count{position:absolute;top:-8px;left:11px;background-color:var(--chat-message-bg-color-scroll-counter);color:var(--chat-message-color-scroll-counter)}.vac-col-messages .vac-messages-hidden{opacity:0}@media only screen and (max-width: 768px){.vac-col-messages .vac-container-scroll{margin-top:50px}.vac-col-messages .vac-text-started{margin-top:20px}.vac-col-messages .vac-icon-scroll{bottom:70px}}.vac-room-header{position:absolute;display:flex;align-items:center;height:64px;width:100%;z-index:10;margin-right:1px;background:var(--chat-header-bg-color);border-top-right-radius:var(--chat-container-border-radius)}.vac-room-header .vac-room-wrapper{display:flex;align-items:center;min-width:0;height:100%;width:100%;padding:0 16px}.vac-room-header .vac-toggle-button{margin-right:15px}.vac-room-header .vac-toggle-button svg{height:26px;width:26px}.vac-room-header .vac-rotate-icon{transform:rotate(180deg)!important}.vac-room-header .vac-rotate-icon-init{transform:rotate(360deg)}.vac-room-header .vac-info-wrapper,.vac-room-header .vac-room-selection{display:flex;align-items:center;min-width:0;width:100%;height:100%}.vac-room-header .vac-room-selection .vac-selection-button{padding:8px 16px;color:var(--chat-color-button);background-color:var(--chat-bg-color-button);border-radius:4px;margin-right:10px;cursor:pointer;transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-button:hover{opacity:.7}.vac-room-header .vac-room-selection .vac-selection-button:active{opacity:.9}.vac-room-header .vac-room-selection .vac-selection-button .vac-selection-button-count{margin-left:6px;opacity:.9}.vac-room-header .vac-room-selection .vac-selection-cancel{display:flex;align-items:center;margin-left:auto;white-space:nowrap;color:var(--chat-color-button-clear);transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-cancel:hover{opacity:.7}.vac-room-header .vac-room-name{font-size:17px;font-weight:500;line-height:22px;color:var(--chat-header-color-name)}.vac-room-header .vac-room-info{font-size:13px;line-height:18px;color:var(--chat-header-color-info)}.vac-room-header .vac-room-options{margin-left:auto}@media only screen and (max-width: 768px){.vac-room-header{height:50px}.vac-room-header .vac-room-wrapper{padding:0 10px}.vac-room-header .vac-room-name{font-size:16px;line-height:22px}.vac-room-header .vac-room-info{font-size:12px;line-height:16px}.vac-room-header .vac-avatar{height:37px;width:37px;min-height:37px;min-width:37px}}.vac-room-footer{width:100%;border-bottom-right-radius:4px;z-index:10}.vac-box-footer{display:flex;position:relative;background:var(--chat-footer-bg-color);padding:10px 8px}.vac-textarea{max-height:300px;overflow-y:auto;height:20px;width:100%;line-height:20px;outline:0;resize:none;border-radius:20px;padding:12px 16px;box-sizing:content-box;font-size:16px;background:var(--chat-bg-color-input);color:var(--chat-color);caret-color:var(--chat-color-caret);border:var(--chat-border-style-input)}.vac-textarea::placeholder{color:var(--chat-color-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-textarea-outline{border:1px solid var(--chat-border-color-input-selected);box-shadow:inset 0 0 0 1px var(--chat-border-color-input-selected)}.vac-icon-textarea,.vac-icon-textarea-left{display:flex;align-items:center}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea{margin-left:5px}.vac-icon-textarea-left{display:flex;align-items:center;margin-right:5px}.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea-left .vac-icon-microphone{fill:var(--chat-icon-color-microphone);margin:0 7px}.vac-icon-textarea-left .vac-dot-audio-record{height:15px;width:15px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-record);animation:vac-scaling .8s ease-in-out infinite alternate}@keyframes vac-scaling{0%{transform:scale(1);opacity:.4}to{transform:scale(1.1);opacity:1}}.vac-icon-textarea-left .vac-dot-audio-record-time{font-size:16px;color:var(--chat-color);margin-left:8px;width:45px}.vac-icon-textarea-left .vac-icon-audio-stop,.vac-icon-textarea-left .vac-icon-audio-confirm{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop svg,.vac-icon-textarea-left .vac-icon-audio-confirm svg{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop{margin-right:20px}.vac-icon-textarea-left .vac-icon-audio-stop #vac-icon-close-outline{fill:var(--chat-icon-color-audio-cancel)}.vac-icon-textarea-left .vac-icon-audio-confirm{margin-right:3px;margin-left:12px}.vac-icon-textarea-left .vac-icon-audio-confirm #vac-icon-checkmark{fill:var(--chat-icon-color-audio-confirm)}.vac-send-disabled,.vac-send-disabled svg{cursor:none!important;pointer-events:none!important;transform:none!important}@media only screen and (max-width: 768px){.vac-room-footer{width:100%}.vac-box-footer{padding:7px 2px 7px 7px}.vac-box-footer.vac-box-footer-border{border-top:var(--chat-border-style-input)}.vac-textarea{padding:7px;line-height:18px}.vac-textarea::placeholder{color:transparent}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 5px!important}}@media only screen and (max-height: 768px){.vac-textarea{max-height:120px}}.vac-emojis-container{width:calc(100% - 16px);padding:10px 8px;background:var(--chat-footer-bg-color);display:flex;align-items:center;overflow:auto}.vac-emojis-container .vac-emoji-element{padding:0 8px;font-size:30px;border-radius:4px;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-emojis-container .vac-emoji-element-active{background:var(--chat-footer-bg-color-tag-active)}@media only screen and (max-width: 768px){.vac-emojis-container{width:calc(100% - 10px);padding:7px 5px}.vac-emojis-container .vac-emoji-element{padding:0 7px;font-size:26px}}.vac-reply-container{display:flex;padding:10px 10px 0;background:var(--chat-footer-bg-color);align-items:center;width:calc(100% - 20px)}.vac-reply-container .vac-reply-box{width:100%;overflow:hidden;background:var(--chat-footer-bg-color-reply);border-radius:4px;padding:8px 10px}.vac-reply-container .vac-reply-info{overflow:hidden}.vac-reply-container .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-container .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content);white-space:pre-line}.vac-reply-container .vac-icon-reply{margin-left:10px}.vac-reply-container .vac-icon-reply svg{height:20px;width:20px}.vac-reply-container .vac-image-reply{max-height:100px;max-width:200px;margin:4px 10px 0 0;border-radius:4px}.vac-reply-container .vac-audio-reply{margin-right:10px}.vac-reply-container .vac-file-container{max-width:80px}@media only screen and (max-width: 768px){.vac-reply-container{padding:5px 8px;width:calc(100% - 16px)}}.vac-room-files-container{display:flex;align-items:center;padding:10px 6px 0;background:var(--chat-footer-bg-color)}.vac-room-files-container .vac-files-box{display:flex;overflow:auto;width:calc(100% - 30px)}.vac-room-files-container video{height:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-files-container .vac-icon-close{margin-left:auto}.vac-room-files-container .vac-icon-close svg{height:20px;width:20px}@media only screen and (max-width: 768px){.vac-files-container{padding:6px 4px 4px 2px}}.vac-room-file-container{display:flex;position:relative;margin:0 4px}.vac-room-file-container .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:100px;width:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-file-container .vac-file-container{height:80px;width:80px}.vac-room-file-container .vac-icon-remove{position:absolute;top:6px;left:6px;z-index:10}.vac-room-file-container .vac-icon-remove svg{height:20px;width:20px;border-radius:50%}.vac-room-file-container .vac-icon-remove:before{content:\" \";position:absolute;width:100%;height:100%;background:rgba(0,0,0,.5);border-radius:50%;z-index:-1}.vac-tags-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-tags-container .vac-tags-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-tags-container .vac-tags-box-active{background:var(--chat-footer-bg-color-tag-active)}.vac-tags-container .vac-tags-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-tags-container .vac-tags-avatar{height:34px;width:34px;min-height:34px;min-width:34px}.vac-tags-container .vac-tags-username{font-size:14px}@media only screen and (max-width: 768px){.vac-tags-container .vac-tags-box{height:50px}.vac-tags-container .vac-tags-info{padding:0 12px}}.vac-template-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-template-container .vac-template-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-template-container .vac-template-active{background:var(--chat-footer-bg-color-tag-active)}.vac-template-container .vac-template-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-template-container .vac-template-tag{font-size:14px;font-weight:700;margin-right:10px}.vac-template-container .vac-template-text{font-size:14px}@media only screen and (max-width: 768px){.vac-template-container .vac-template-box{height:50px}.vac-template-container .vac-template-info{padding:0 12px}}.vac-rooms-container{display:flex;flex-flow:column;flex:0 0 25%;min-width:260px;max-width:500px;position:relative;background:var(--chat-sidemenu-bg-color);height:100%;border-top-left-radius:var(--chat-container-border-radius);border-bottom-left-radius:var(--chat-container-border-radius)}.vac-rooms-container.vac-rooms-container-full{flex:0 0 100%;max-width:100%}.vac-rooms-container .vac-rooms-empty{font-size:14px;color:#9ca6af;font-style:italic;text-align:center;margin:40px 0;line-height:20px;white-space:pre-line}.vac-rooms-container .vac-room-list{flex:1;position:relative;max-width:100%;padding:0 10px 5px;overflow-y:auto}.vac-rooms-container .vac-room-item{border-radius:8px;align-items:center;display:flex;flex:1 1 100%;margin-bottom:5px;padding:0 14px;position:relative;min-height:71px;transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-rooms-container .vac-room-item:hover{background:var(--chat-sidemenu-bg-color-hover)}.vac-rooms-container .vac-room-item:not(.vac-room-selected){cursor:pointer}.vac-rooms-container .vac-room-selected{color:var(--chat-sidemenu-color-active)!important;background:var(--chat-sidemenu-bg-color-active)!important}.vac-rooms-container .vac-room-selected:hover{background:var(--chat-sidemenu-bg-color-active)!important}@media only screen and (max-width: 768px){.vac-rooms-container .vac-room-list{padding:0 7px 5px}.vac-rooms-container .vac-room-item{min-height:60px;padding:0 8px}}.vac-room-container{display:flex;flex:1;align-items:center;width:100%}.vac-room-container .vac-name-container{flex:1}.vac-room-container .vac-title-container{display:flex;align-items:center;line-height:25px}.vac-room-container .vac-state-circle{width:9px;height:9px;border-radius:50%;background-color:var(--chat-room-color-offline);margin-right:6px;transition:.3s}.vac-room-container .vac-state-online{background-color:var(--chat-room-color-online)}.vac-room-container .vac-room-name{flex:1;color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-text-date{margin-left:5px;font-size:11px;color:var(--chat-room-color-timestamp)}.vac-room-container .vac-text-last{display:flex;align-items:center;font-size:12px;line-height:19px;color:var(--chat-room-color-message)}.vac-room-container .vac-message-new{color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-icon-check{display:flex;vertical-align:middle;height:14px;width:14px;margin-top:-2px;margin-right:2px}.vac-room-container .vac-icon-microphone{height:15px;width:15px;vertical-align:middle;margin:-3px 1px 0 -2px;fill:var(--chat-room-color-message)}.vac-room-container .vac-room-options-container{display:flex;margin-left:auto}.vac-room-container .vac-room-badge{background-color:var(--chat-room-bg-color-badge);color:var(--chat-room-color-badge);margin-left:5px}.vac-room-container .vac-list-room-options{height:19px;width:19px;align-items:center;margin-left:5px}.vac-box-empty{margin-top:10px}@media only screen and (max-width: 768px){.vac-box-empty{margin-top:7px}}.vac-box-search{position:sticky;display:flex;align-items:center;height:64px;padding:0 15px}.vac-box-search .vac-icon-search{display:flex;position:absolute;left:30px}.vac-box-search .vac-icon-search svg{width:18px;height:18px}.vac-box-search .vac-input{height:38px;width:100%;background:var(--chat-bg-color-input);color:var(--chat-color);font-size:15px;outline:0;caret-color:var(--chat-color-caret);padding:10px 10px 10px 40px;border:1px solid var(--chat-sidemenu-border-color-search);border-radius:20px}.vac-box-search .vac-input::placeholder{color:var(--chat-color-placeholder)}.vac-box-search .vac-add-icon{margin-left:auto;padding-left:10px}@media only screen and (max-width: 768px){.vac-box-search{height:58px}}.vac-message-wrapper .vac-card-info{border-radius:4px;text-align:center;margin:10px auto;font-size:12px;padding:4px;display:block;overflow-wrap:break-word;position:relative;white-space:normal;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-card-date{max-width:150px;font-weight:500;text-transform:uppercase;color:var(--chat-message-color-date);background-color:var(--chat-message-bg-color-date)}.vac-message-wrapper .vac-card-system{max-width:250px;padding:8px 4px;color:var(--chat-message-color-system);background-color:var(--chat-message-bg-color-system)}.vac-message-wrapper .vac-line-new{color:var(--chat-message-color-new-messages);position:relative;text-align:center;font-size:13px;padding:10px 0}.vac-message-wrapper .vac-line-new:after,.vac-message-wrapper .vac-line-new:before{border-top:1px solid var(--chat-message-color-new-messages);content:\"\";left:0;position:absolute;top:50%;width:calc(50% - 60px)}.vac-message-wrapper .vac-line-new:before{left:auto;right:0}.vac-message-wrapper .vac-message-box{display:flex;flex:0 0 50%;max-width:50%;justify-content:flex-start;line-height:1.4}.vac-message-wrapper .vac-avatar{height:28px;width:28px;min-height:28px;min-width:28px;margin:0 0 2px;align-self:flex-end}.vac-message-wrapper .vac-avatar-current-offset{margin-right:28px}.vac-message-wrapper .vac-avatar-offset{margin-left:28px}.vac-message-wrapper .vac-failure-container{position:relative;align-self:flex-end;height:20px;width:20px;margin:0 0 2px -4px;border-radius:50%;background-color:#f44336}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:6px}.vac-message-wrapper .vac-failure-container .vac-failure-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:15px;font-weight:700}.vac-message-wrapper .vac-message-container{position:relative;padding:2px 10px;align-items:end;min-width:100px;box-sizing:content-box}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-offset-current{margin-left:50%;justify-content:flex-end}.vac-message-wrapper .vac-message-card{background-color:var(--chat-message-bg-color);color:var(--chat-message-color);border-radius:8px;font-size:14px;padding:6px 9px 3px;white-space:pre-line;max-width:100%;-webkit-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);will-change:box-shadow;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-message-highlight{box-shadow:0 1px 2px -1px #0000001a,0 1px 2px -1px #0000001c,0 1px 5px -1px #0000001c}.vac-message-wrapper .vac-message-current{background-color:var(--chat-message-bg-color-me)!important}.vac-message-wrapper .vac-message-deleted{color:var(--chat-message-color-deleted)!important;font-size:13px!important;font-style:italic!important;background-color:var(--chat-message-bg-color-deleted)!important}.vac-message-wrapper .vac-message-selected{background-color:var(--chat-message-bg-color-selected)!important;transition:background-color .2s}.vac-message-wrapper .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:250px;width:250px;max-width:100%;border-radius:4px;margin:4px auto 5px;transition:.4s filter linear}.vac-message-wrapper .vac-text-username{font-size:13px;color:var(--chat-message-color-username);margin-bottom:2px}.vac-message-wrapper .vac-username-reply{margin-bottom:5px}.vac-message-wrapper .vac-text-timestamp{font-size:10px;color:var(--chat-message-color-timestamp);text-align:right}.vac-message-wrapper .vac-progress-time{float:left;margin:-2px 0 0 40px;color:var(--chat-color);font-size:12px}.vac-message-wrapper .vac-icon-edited{-webkit-box-align:center;align-items:center;display:-webkit-inline-box;display:inline-flex;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;vertical-align:middle;margin:0 4px 2px}.vac-message-wrapper .vac-icon-edited svg{height:12px;width:12px}.vac-message-wrapper .vac-icon-check{height:14px;width:14px;vertical-align:middle;margin:-3px -3px 0 3px}@media only screen and (max-width: 768px){.vac-message-wrapper .vac-message-container{padding:2px 3px 1px}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-message-box{flex:0 0 80%;max-width:80%}.vac-message-wrapper .vac-avatar{height:25px;width:25px;min-height:25px;min-width:25px;margin:0 6px 1px 0}.vac-message-wrapper .vac-avatar.vac-avatar-current{margin:0 0 1px 6px}.vac-message-wrapper .vac-avatar-current-offset{margin-right:31px}.vac-message-wrapper .vac-avatar-offset{margin-left:31px}.vac-message-wrapper .vac-failure-container{margin-left:2px}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:0}.vac-message-wrapper .vac-offset-current{margin-left:20%}.vac-message-wrapper .vac-progress-time{margin-left:37px}}.vac-audio-player{display:flex;margin:8px 0 5px}.vac-audio-player .vac-svg-button{max-width:18px;margin-left:7px}@media only screen and (max-width: 768px){.vac-audio-player{margin:4px 0 0}.vac-audio-player .vac-svg-button{max-width:16px;margin-left:5px}}.vac-player-bar{display:flex;align-items:center;max-width:calc(100% - 18px);margin-right:7px;margin-left:20px}.vac-player-bar .vac-player-progress{width:190px}.vac-player-bar .vac-player-progress .vac-line-container{position:relative;height:4px;border-radius:5px;background-color:var(--chat-message-bg-color-audio-line)}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-progress{position:absolute;height:inherit;background-color:var(--chat-message-bg-color-audio-progress);border-radius:inherit}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{position:absolute;top:-5px;margin-left:-7px;height:14px;width:14px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-progress-selector);transition:transform .25s}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot__active{transform:scale(1.2)}@media only screen and (max-width: 768px){.vac-player-bar{margin-right:5px}.vac-player-bar .vac-player-progress .vac-line-container{height:3px}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{height:12px;width:12px;top:-5px;margin-left:-5px}}.vac-message-actions-wrapper .vac-options-container{position:absolute;top:2px;right:10px;height:40px;width:70px;overflow:hidden;border-top-right-radius:8px}.vac-message-actions-wrapper .vac-blur-container{position:absolute;height:100%;width:100%;left:8px;bottom:10px;background:var(--chat-message-bg-color);filter:blur(3px);border-bottom-left-radius:8px}.vac-message-actions-wrapper .vac-options-me{background:var(--chat-message-bg-color-me)}.vac-message-actions-wrapper .vac-message-options{background:var(--chat-icon-bg-dropdown-message);border-radius:50%;position:absolute;top:7px;right:7px}.vac-message-actions-wrapper .vac-message-options svg{height:17px;width:17px;padding:5px;margin:-5px}.vac-message-actions-wrapper .vac-message-emojis{position:absolute;top:6px;right:30px}.vac-message-actions-wrapper .vac-menu-options{right:15px}.vac-message-actions-wrapper .vac-menu-left{right:-118px}@media only screen and (max-width: 768px){.vac-message-actions-wrapper .vac-options-container{right:3px}.vac-message-actions-wrapper .vac-menu-left{right:-50px}}.vac-message-files-container .vac-file-wrapper{position:relative;width:fit-content}.vac-message-files-container .vac-file-wrapper .vac-file-container{height:60px;width:60px;margin:3px 0 5px;cursor:pointer;transition:all .6s}.vac-message-files-container .vac-file-wrapper .vac-file-container:hover{opacity:.85}.vac-message-files-container .vac-file-wrapper .vac-file-container svg{height:30px;width:30px}.vac-message-files-container .vac-file-wrapper .vac-file-container.vac-file-container-progress{background-color:#0000004d}.vac-message-file-container{position:relative;z-index:0}.vac-message-file-container .vac-message-image-container{cursor:pointer}.vac-message-file-container .vac-image-buttons{position:absolute;width:100%;height:100%;border-radius:4px;background:linear-gradient(to bottom,rgba(0,0,0,0) 55%,rgba(0,0,0,.02) 60%,rgba(0,0,0,.05) 65%,rgba(0,0,0,.1) 70%,rgba(0,0,0,.2) 75%,rgba(0,0,0,.3) 80%,rgba(0,0,0,.5) 85%,rgba(0,0,0,.6) 90%,rgba(0,0,0,.7) 95%,rgba(0,0,0,.8) 100%)}.vac-message-file-container .vac-image-buttons svg{height:26px;width:26px}.vac-message-file-container .vac-image-buttons .vac-button-view,.vac-message-file-container .vac-image-buttons .vac-button-download{position:absolute;bottom:6px;left:7px}.vac-message-file-container .vac-image-buttons :first-child{left:40px}.vac-message-file-container .vac-image-buttons .vac-button-view{max-width:18px;bottom:8px}.vac-message-file-container .vac-video-container{width:350px;max-width:100%;margin:4px auto 5px;cursor:pointer}.vac-message-file-container .vac-video-container video{width:100%;height:100%;border-radius:4px}.vac-button-reaction{display:inline-flex;align-items:center;border:var(--chat-message-border-style-reaction);outline:none;background:var(--chat-message-bg-color-reaction);border-radius:4px;margin:4px 2px 0;transition:.3s;padding:0 5px;font-size:18px;line-height:23px}.vac-button-reaction span{font-size:11px;font-weight:500;min-width:7px;color:var(--chat-message-color-reaction-counter)}.vac-button-reaction:hover{border:var(--chat-message-border-style-reaction-hover);background:var(--chat-message-bg-color-reaction-hover);cursor:pointer}.vac-button-reaction.vac-reaction-me{border:var(--chat-message-border-style-reaction-me);background:var(--chat-message-bg-color-reaction-me)}.vac-button-reaction.vac-reaction-me span{color:var(--chat-message-color-reaction-counter-me)}.vac-button-reaction.vac-reaction-me:hover{border:var(--chat-message-border-style-reaction-hover-me);background:var(--chat-message-bg-color-reaction-hover-me)}.vac-reply-message{background:var(--chat-message-bg-color-reply);border-radius:4px;margin:-1px -5px 8px;padding:8px 10px}.vac-reply-message .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-message .vac-image-reply-container{width:70px}.vac-reply-message .vac-image-reply-container .vac-message-image-reply{height:70px;width:70px;margin:4px auto 3px}.vac-reply-message .vac-video-reply-container{width:200px;max-width:100%}.vac-reply-message .vac-video-reply-container video{width:100%;height:100%;border-radius:4px}.vac-reply-message .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content)}.vac-reply-message .vac-file-container{height:60px;width:60px}.vac-emoji-wrapper{position:relative;display:flex}.vac-emoji-wrapper .vac-emoji-reaction svg{height:19px;width:19px}.vac-emoji-wrapper .vac-emoji-picker{position:absolute;z-index:9999;bottom:32px;right:10px;width:300px;padding-top:4px;overflow:scroll;box-sizing:border-box;border-radius:.5rem;background:var(--chat-emoji-bg-color);box-shadow:0 1px 2px -2px #0000001a,0 1px 2px -1px #0000001a,0 1px 2px 1px #0000001a;scrollbar-width:none}.vac-emoji-wrapper .vac-emoji-picker::-webkit-scrollbar{display:none}.vac-emoji-wrapper .vac-emoji-picker.vac-picker-reaction{position:fixed;top:initial;right:initial}.vac-emoji-wrapper .vac-emoji-picker emoji-picker{height:100%;width:100%;--emoji-size: 1.2rem;--background: var(--chat-emoji-bg-color);--emoji-padding: .4rem;--border-color: var(--chat-sidemenu-border-color-search);--button-hover-background: var(--chat-sidemenu-bg-color-hover);--button-active-background: var(--chat-sidemenu-bg-color-hover)}.vac-format-message-wrapper .vac-format-container{display:inline}.vac-format-message-wrapper .vac-icon-deleted{height:14px;width:14px;vertical-align:middle;margin:-2px 2px 0 0;fill:var(--chat-message-color-deleted)}.vac-format-message-wrapper .vac-icon-deleted.vac-icon-deleted-room{margin:-3px 1px 0 0;fill:var(--chat-room-color-message)}.vac-format-message-wrapper .vac-image-link-container{background-color:var(--chat-message-bg-color-media);padding:8px;margin:2px auto;border-radius:4px}.vac-format-message-wrapper .vac-image-link{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:contain;background-position:center center!important;background-repeat:no-repeat!important;height:150px;width:150px;max-width:100%;border-radius:4px;margin:0 auto}.vac-format-message-wrapper .vac-image-link-message{max-width:166px;font-size:12px}.vac-loader-wrapper.vac-container-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-loader-wrapper.vac-container-top{padding:21px}.vac-loader-wrapper.vac-container-top #vac-circle{height:20px;width:20px}.vac-loader-wrapper #vac-circle{margin:auto;height:28px;width:28px;border:3px rgba(0,0,0,.25) solid;border-top:3px var(--chat-color-spinner) solid;border-right:3px var(--chat-color-spinner) solid;border-bottom:3px var(--chat-color-spinner) solid;border-radius:50%;-webkit-animation:vac-spin 1s infinite linear;animation:vac-spin 1s infinite linear}@media only screen and (max-width: 768px){.vac-loader-wrapper #vac-circle{height:24px;width:24px}.vac-loader-wrapper.vac-container-top{padding:18px}.vac-loader-wrapper.vac-container-top #vac-circle{height:16px;width:16px}}@-webkit-keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}#vac-icon-search{fill:var(--chat-icon-color-search)}#vac-icon-add{fill:var(--chat-icon-color-add)}#vac-icon-toggle{fill:var(--chat-icon-color-toggle)}#vac-icon-menu{fill:var(--chat-icon-color-menu)}#vac-icon-close{fill:var(--chat-icon-color-close)}#vac-icon-close-image{fill:var(--chat-icon-color-close-image)}#vac-icon-file{fill:var(--chat-icon-color-file)}#vac-icon-paperclip{fill:var(--chat-icon-color-paperclip)}#vac-icon-close-outline{fill:var(--chat-icon-color-close-outline)}#vac-icon-close-outline-preview{fill:var(--chat-icon-color-close-preview)}#vac-icon-send{fill:var(--chat-icon-color-send)}#vac-icon-send-disabled{fill:var(--chat-icon-color-send-disabled)}#vac-icon-emoji{fill:var(--chat-icon-color-emoji)}#vac-icon-emoji-reaction{fill:var(--chat-icon-color-emoji-reaction)}#vac-icon-document{fill:var(--chat-icon-color-document)}#vac-icon-pencil{fill:var(--chat-icon-color-pencil)}#vac-icon-checkmark,#vac-icon-double-checkmark{fill:var(--chat-icon-color-checkmark)}#vac-icon-checkmark-seen,#vac-icon-double-checkmark-seen{fill:var(--chat-icon-color-checkmark-seen)}#vac-icon-eye{fill:var(--chat-icon-color-eye)}#vac-icon-dropdown-message{fill:var(--chat-icon-color-dropdown-message)}#vac-icon-dropdown-room{fill:var(--chat-icon-color-dropdown-room)}#vac-icon-dropdown-scroll{fill:var(--chat-icon-color-dropdown-scroll)}#vac-icon-audio-play{fill:var(--chat-icon-color-audio-play)}#vac-icon-audio-pause{fill:var(--chat-icon-color-audio-pause)}.vac-progress-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-progress-wrapper circle{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.vac-progress-wrapper .vac-progress-content{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;margin-top:-2px;background-color:#000000b3;border-radius:50%}.vac-progress-wrapper .vac-progress-content .vac-progress-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-weight:700;color:#fff}.vac-progress-wrapper .vac-progress-content .vac-progress-text .vac-progress-pourcent{font-size:9px;font-weight:400}\\n';\nconst _sfc_main = {\n  name: \"ChatContainer\",\n  components: {\n    RoomsList,\n    Room,\n    MediaPreview\n  },\n  props: {\n    height: { type: String, default: \"600px\" },\n    theme: { type: String, default: \"light\" },\n    styles: { type: [Object, String], default: () => ({}) },\n    responsiveBreakpoint: { type: Number, default: 900 },\n    singleRoom: { type: [Boolean, String], default: false },\n    roomsListOpened: { type: [Boolean, String], default: true },\n    textMessages: { type: [Object, String], default: () => ({}) },\n    currentUserId: { type: String, default: \"\" },\n    rooms: { type: [Array, String], default: () => [] },\n    roomsOrder: { type: String, default: \"desc\" },\n    loadingRooms: { type: [Boolean, String], default: false },\n    roomsLoaded: { type: [Boolean, String], default: false },\n    roomId: { type: String, default: null },\n    loadFirstRoom: { type: [Boolean, String], default: true },\n    messages: { type: [Array, String], default: () => [] },\n    messagesLoaded: { type: [Boolean, String], default: false },\n    roomActions: { type: [Array, String], default: () => [] },\n    menuActions: { type: [Array, String], default: () => [] },\n    messageActions: {\n      type: [Array, String],\n      default: () => [\n        { name: \"replyMessage\", title: \"Reply\" },\n        { name: \"editMessage\", title: \"Edit Message\", onlyMe: true },\n        { name: \"deleteMessage\", title: \"Delete Message\", onlyMe: true },\n        { name: \"selectMessages\", title: \"Select\" }\n      ]\n    },\n    messageSelectionActions: { type: [Array, String], default: () => [] },\n    autoScroll: {\n      type: [Object, String],\n      default: () => {\n        return {\n          send: {\n            new: true,\n            newAfterScrollUp: true\n          },\n          receive: {\n            new: true,\n            newAfterScrollUp: false\n          }\n        };\n      }\n    },\n    customSearchRoomEnabled: { type: [Boolean, String], default: false },\n    showSearch: { type: [Boolean, String], default: true },\n    showAddRoom: { type: [Boolean, String], default: true },\n    showSendIcon: { type: [Boolean, String], default: true },\n    showFiles: { type: [Boolean, String], default: true },\n    showAudio: { type: [Boolean, String], default: true },\n    audioBitRate: { type: Number, default: 128 },\n    audioSampleRate: { type: Number, default: 44100 },\n    showEmojis: { type: [Boolean, String], default: true },\n    showReactionEmojis: { type: [Boolean, String], default: true },\n    showNewMessagesDivider: { type: [Boolean, String], default: true },\n    showFooter: { type: [Boolean, String], default: true },\n    textFormatting: {\n      type: [Object, String],\n      default: () => ({\n        disabled: false\n      })\n    },\n    linkOptions: {\n      type: [Object, String],\n      default: () => ({ disabled: false, target: \"_blank\", rel: null })\n    },\n    roomInfoEnabled: { type: [Boolean, String], default: false },\n    textareaActionEnabled: { type: [Boolean, String], default: false },\n    textareaAutoFocus: { type: [Boolean, String], default: true },\n    userTagsEnabled: { type: [Boolean, String], default: true },\n    emojisSuggestionEnabled: { type: [Boolean, String], default: true },\n    roomMessage: { type: String, default: \"\" },\n    scrollDistance: { type: Number, default: 60 },\n    acceptedFiles: { type: String, default: \"*\" },\n    captureFiles: { type: String, default: \"\" },\n    multipleFiles: { type: [Boolean, String], default: true },\n    templatesText: { type: [Array, String], default: () => [] },\n    mediaPreviewEnabled: { type: [Boolean, String], default: true },\n    usernameOptions: {\n      type: [Object, String],\n      default: () => ({ minUsers: 3, currentUser: false })\n    },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"toggle-rooms-list\",\n    \"room-info\",\n    \"fetch-messages\",\n    \"send-message\",\n    \"edit-message\",\n    \"delete-message\",\n    \"open-file\",\n    \"open-user-tag\",\n    \"open-failed-message\",\n    \"menu-action-handler\",\n    \"message-action-handler\",\n    \"send-message-reaction\",\n    \"typing-message\",\n    \"textarea-action-handler\",\n    \"fetch-more-rooms\",\n    \"add-room\",\n    \"search-room\",\n    \"room-action-handler\",\n    \"message-selection-action-handler\"\n  ],\n  data() {\n    return {\n      slots: [],\n      room: {},\n      loadingMoreRooms: false,\n      showRoomsList: true,\n      isMobile: false,\n      showMediaPreview: false,\n      previewFile: {}\n    };\n  },\n  computed: {\n    t() {\n      return {\n        ...locales,\n        ...this.textMessagesCasted\n      };\n    },\n    cssVars() {\n      const defaultStyles = defaultThemeStyles[this.theme];\n      const customStyles = {};\n      Object.keys(defaultStyles).map((key) => {\n        customStyles[key] = {\n          ...defaultStyles[key],\n          ...this.stylesCasted[key] || {}\n        };\n      });\n      return cssThemeVars(customStyles);\n    },\n    orderedRooms() {\n      return this.roomsCasted.slice().sort((a, b) => {\n        const aVal = a.index || 0;\n        const bVal = b.index || 0;\n        if (this.roomsOrder === \"asc\") {\n          return aVal < bVal ? -1 : bVal < aVal ? 1 : 0;\n        }\n        return aVal > bVal ? -1 : bVal > aVal ? 1 : 0;\n      });\n    },\n    singleRoomCasted() {\n      return this.castBoolean(this.singleRoom);\n    },\n    roomsListOpenedCasted() {\n      return this.castBoolean(this.roomsListOpened);\n    },\n    loadingRoomsCasted() {\n      return this.castBoolean(this.loadingRooms);\n    },\n    roomsLoadedCasted() {\n      return this.castBoolean(this.roomsLoaded);\n    },\n    loadFirstRoomCasted() {\n      return this.castBoolean(this.loadFirstRoom);\n    },\n    messagesLoadedCasted() {\n      return this.castBoolean(this.messagesLoaded);\n    },\n    multipleFilesCasted() {\n      return this.castBoolean(this.multipleFiles);\n    },\n    showSearchCasted() {\n      return this.castBoolean(this.showSearch);\n    },\n    showAddRoomCasted() {\n      return this.castBoolean(this.showAddRoom);\n    },\n    showSendIconCasted() {\n      return this.castBoolean(this.showSendIcon);\n    },\n    showFilesCasted() {\n      return this.castBoolean(this.showFiles);\n    },\n    showAudioCasted() {\n      return this.castBoolean(this.showAudio);\n    },\n    showEmojisCasted() {\n      return this.castBoolean(this.showEmojis);\n    },\n    showReactionEmojisCasted() {\n      return this.castBoolean(this.showReactionEmojis);\n    },\n    showNewMessagesDividerCasted() {\n      return this.castBoolean(this.showNewMessagesDivider);\n    },\n    showFooterCasted() {\n      return this.castBoolean(this.showFooter);\n    },\n    roomInfoEnabledCasted() {\n      return this.castBoolean(this.roomInfoEnabled);\n    },\n    textareaActionEnabledCasted() {\n      return this.castBoolean(this.textareaActionEnabled);\n    },\n    textareaAutoFocusCasted() {\n      return this.castBoolean(this.textareaAutoFocus);\n    },\n    userTagsEnabledCasted() {\n      return this.castBoolean(this.userTagsEnabled);\n    },\n    emojisSuggestionEnabledCasted() {\n      return this.castBoolean(this.emojisSuggestionEnabled);\n    },\n    mediaPreviewEnabledCasted() {\n      return this.castBoolean(this.mediaPreviewEnabled);\n    },\n    roomsCasted() {\n      return this.castArray(this.rooms);\n    },\n    messagesCasted() {\n      return this.castArray(this.messages);\n    },\n    roomActionsCasted() {\n      return this.castArray(this.roomActions);\n    },\n    menuActionsCasted() {\n      return this.castArray(this.menuActions);\n    },\n    messageActionsCasted() {\n      return this.castArray(this.messageActions);\n    },\n    messageSelectionActionsCasted() {\n      return this.castArray(this.messageSelectionActions);\n    },\n    templatesTextCasted() {\n      return this.castArray(this.templatesText);\n    },\n    stylesCasted() {\n      return this.castObject(this.styles);\n    },\n    textMessagesCasted() {\n      return this.castObject(this.textMessages);\n    },\n    autoScrollCasted() {\n      return this.castObject(this.autoScroll);\n    },\n    textFormattingCasted() {\n      return this.castObject(this.textFormatting);\n    },\n    linkOptionsCasted() {\n      return this.castObject(this.linkOptions);\n    },\n    usernameOptionsCasted() {\n      return this.castObject(this.usernameOptions);\n    }\n  },\n  watch: {\n    roomsCasted: {\n      immediate: true,\n      deep: true,\n      handler(newVal, oldVal) {\n        if (!newVal[0] || !newVal.find((room) => room.roomId === this.room.roomId)) {\n          this.showRoomsList = true;\n        }\n        if (!this.loadingMoreRooms && this.loadFirstRoomCasted && newVal[0] && (!oldVal || newVal.length !== oldVal.length)) {\n          if (this.roomId) {\n            const room = newVal.find((r) => r.roomId === this.roomId) || {};\n            this.fetchRoom({ room });\n          } else if (!this.isMobile || this.singleRoomCasted) {\n            this.fetchRoom({ room: this.orderedRooms[0] });\n          } else {\n            this.showRoomsList = true;\n          }\n        }\n      }\n    },\n    loadingRoomsCasted(val) {\n      if (val)\n        this.room = {};\n    },\n    roomId: {\n      immediate: true,\n      handler(newVal, oldVal) {\n        if (newVal && !this.loadingRoomsCasted && this.roomsCasted.length) {\n          const room = this.roomsCasted.find((r) => r.roomId === newVal);\n          this.fetchRoom({ room });\n        } else if (oldVal && !newVal) {\n          this.room = {};\n        }\n      }\n    },\n    room(val) {\n      if (!val || Object.entries(val).length === 0)\n        return;\n      roomsValidation(val);\n      val.users.forEach((user) => {\n        partcipantsValidation(user);\n      });\n    },\n    roomsListOpenedCasted: {\n      immediate: true,\n      handler(val) {\n        this.showRoomsList = val;\n      }\n    }\n  },\n  created() {\n    this.updateResponsive();\n    window.addEventListener(\"resize\", (ev) => {\n      if (ev.isTrusted)\n        this.updateResponsive();\n    });\n  },\n  updated() {\n    const slots = document.querySelectorAll(\"[slot]\");\n    if (this.slots.length !== slots.length) {\n      this.slots = slots;\n    }\n  },\n  methods: {\n    castBoolean(val) {\n      return val === \"true\" || val === true;\n    },\n    castArray(val) {\n      return !val ? [] : Array.isArray(val) ? val : JSON.parse(val);\n    },\n    castObject(val) {\n      return !val ? {} : typeof val === \"object\" ? val : JSON.parse(val);\n    },\n    updateResponsive() {\n      this.isMobile = window.innerWidth < Number(this.responsiveBreakpoint);\n    },\n    toggleRoomsList() {\n      this.showRoomsList = !this.showRoomsList;\n      if (this.isMobile)\n        this.room = {};\n      this.$emit(\"toggle-rooms-list\", { opened: this.showRoomsList });\n    },\n    fetchRoom({ room }) {\n      this.room = room;\n      this.fetchMessages({ reset: true });\n      if (this.isMobile)\n        this.showRoomsList = false;\n    },\n    fetchMoreRooms() {\n      this.$emit(\"fetch-more-rooms\");\n    },\n    roomInfo() {\n      this.$emit(\"room-info\", this.room);\n    },\n    addRoom() {\n      this.$emit(\"add-room\");\n    },\n    searchRoom(val) {\n      this.$emit(\"search-room\", { value: val, roomId: this.room.roomId });\n    },\n    fetchMessages(options) {\n      this.$emit(\"fetch-messages\", { room: this.room, options });\n    },\n    sendMessage(message) {\n      this.$emit(\"send-message\", { ...message, roomId: this.room.roomId });\n    },\n    editMessage(message) {\n      this.$emit(\"edit-message\", { ...message, roomId: this.room.roomId });\n    },\n    deleteMessage(message) {\n      this.$emit(\"delete-message\", { message, roomId: this.room.roomId });\n    },\n    openFile({ message, file }) {\n      if (this.mediaPreviewEnabledCasted && file.action === \"preview\") {\n        this.previewFile = file.file;\n        this.showMediaPreview = true;\n      } else {\n        this.$emit(\"open-file\", { message, file });\n      }\n    },\n    openUserTag({ user }) {\n      this.$emit(\"open-user-tag\", { user });\n    },\n    openFailedMessage({ message }) {\n      this.$emit(\"open-failed-message\", {\n        message,\n        roomId: this.room.roomId\n      });\n    },\n    menuActionHandler(ev) {\n      this.$emit(\"menu-action-handler\", {\n        action: ev,\n        roomId: this.room.roomId\n      });\n    },\n    roomActionHandler({ action, roomId }) {\n      this.$emit(\"room-action-handler\", {\n        action,\n        roomId\n      });\n    },\n    messageActionHandler(ev) {\n      this.$emit(\"message-action-handler\", {\n        ...ev,\n        roomId: this.room.roomId\n      });\n    },\n    messageSelectionActionHandler(ev) {\n      this.$emit(\"message-selection-action-handler\", {\n        ...ev,\n        roomId: this.room.roomId\n      });\n    },\n    sendMessageReaction(messageReaction) {\n      this.$emit(\"send-message-reaction\", {\n        ...messageReaction,\n        roomId: this.room.roomId\n      });\n    },\n    typingMessage(message) {\n      this.$emit(\"typing-message\", {\n        message,\n        roomId: this.room.roomId\n      });\n    },\n    textareaActionHandler(message) {\n      this.$emit(\"textarea-action-handler\", {\n        message,\n        roomId: this.room.roomId\n      });\n    }\n  }\n};\nconst _hoisted_1 = { class: \"vac-chat-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_rooms_list = resolveComponent(\"rooms-list\");\n  const _component_room = resolveComponent(\"room\");\n  const _component_media_preview = resolveComponent(\"media-preview\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: \"vac-card-window\",\n    style: normalizeStyle([{ height: $props.height }, $options.cssVars])\n  }, [\n    createBaseVNode(\"div\", _hoisted_1, [\n      !$options.singleRoomCasted ? (openBlock(), createBlock(_component_rooms_list, {\n        key: 0,\n        \"current-user-id\": $props.currentUserId,\n        rooms: $options.orderedRooms,\n        \"loading-rooms\": $options.loadingRoomsCasted,\n        \"rooms-loaded\": $options.roomsLoadedCasted,\n        room: $data.room,\n        \"room-actions\": $options.roomActionsCasted,\n        \"custom-search-room-enabled\": $props.customSearchRoomEnabled,\n        \"text-messages\": $options.t,\n        \"show-search\": $options.showSearchCasted,\n        \"show-add-room\": $options.showAddRoomCasted,\n        \"show-rooms-list\": $data.showRoomsList && $options.roomsListOpenedCasted,\n        \"text-formatting\": $options.textFormattingCasted,\n        \"link-options\": $options.linkOptionsCasted,\n        \"is-mobile\": $data.isMobile,\n        \"scroll-distance\": $props.scrollDistance,\n        onFetchRoom: $options.fetchRoom,\n        onFetchMoreRooms: $options.fetchMoreRooms,\n        onLoadingMoreRooms: _cache[0] || (_cache[0] = ($event) => $data.loadingMoreRooms = $event),\n        onAddRoom: $options.addRoom,\n        onSearchRoom: $options.searchRoom,\n        onRoomActionHandler: $options.roomActionHandler\n      }, createSlots({ _: 2 }, [\n        renderList($data.slots, (el) => {\n          return {\n            name: el.slot,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"current-user-id\", \"rooms\", \"loading-rooms\", \"rooms-loaded\", \"room\", \"room-actions\", \"custom-search-room-enabled\", \"text-messages\", \"show-search\", \"show-add-room\", \"show-rooms-list\", \"text-formatting\", \"link-options\", \"is-mobile\", \"scroll-distance\", \"onFetchRoom\", \"onFetchMoreRooms\", \"onAddRoom\", \"onSearchRoom\", \"onRoomActionHandler\"])) : createCommentVNode(\"\", true),\n      createVNode(_component_room, {\n        \"current-user-id\": $props.currentUserId,\n        rooms: $options.roomsCasted,\n        \"room-id\": $data.room.roomId || \"\",\n        \"load-first-room\": $options.loadFirstRoomCasted,\n        messages: $options.messagesCasted,\n        \"room-message\": $props.roomMessage,\n        \"messages-loaded\": $options.messagesLoadedCasted,\n        \"menu-actions\": $options.menuActionsCasted,\n        \"message-actions\": $options.messageActionsCasted,\n        \"message-selection-actions\": $options.messageSelectionActionsCasted,\n        \"auto-scroll\": $options.autoScrollCasted,\n        \"show-send-icon\": $options.showSendIconCasted,\n        \"show-files\": $options.showFilesCasted,\n        \"show-audio\": $options.showAudioCasted,\n        \"audio-bit-rate\": $props.audioBitRate,\n        \"audio-sample-rate\": $props.audioSampleRate,\n        \"show-emojis\": $options.showEmojisCasted,\n        \"show-reaction-emojis\": $options.showReactionEmojisCasted,\n        \"show-new-messages-divider\": $options.showNewMessagesDividerCasted,\n        \"show-footer\": $options.showFooterCasted,\n        \"text-messages\": $options.t,\n        \"single-room\": $options.singleRoomCasted,\n        \"show-rooms-list\": $data.showRoomsList && $options.roomsListOpenedCasted,\n        \"text-formatting\": $options.textFormattingCasted,\n        \"link-options\": $options.linkOptionsCasted,\n        \"is-mobile\": $data.isMobile,\n        \"loading-rooms\": $options.loadingRoomsCasted,\n        \"room-info-enabled\": $options.roomInfoEnabledCasted,\n        \"textarea-action-enabled\": $options.textareaActionEnabledCasted,\n        \"textarea-auto-focus\": $options.textareaAutoFocusCasted,\n        \"user-tags-enabled\": $options.userTagsEnabledCasted,\n        \"emojis-suggestion-enabled\": $options.emojisSuggestionEnabledCasted,\n        \"scroll-distance\": $props.scrollDistance,\n        \"accepted-files\": $props.acceptedFiles,\n        \"capture-files\": $props.captureFiles,\n        \"multiple-files\": $options.multipleFilesCasted,\n        \"templates-text\": $options.templatesTextCasted,\n        \"username-options\": $options.usernameOptionsCasted,\n        \"emoji-data-source\": $props.emojiDataSource,\n        onToggleRoomsList: $options.toggleRoomsList,\n        onRoomInfo: $options.roomInfo,\n        onFetchMessages: $options.fetchMessages,\n        onSendMessage: $options.sendMessage,\n        onEditMessage: $options.editMessage,\n        onDeleteMessage: $options.deleteMessage,\n        onOpenFile: $options.openFile,\n        onOpenUserTag: $options.openUserTag,\n        onOpenFailedMessage: $options.openFailedMessage,\n        onMenuActionHandler: $options.menuActionHandler,\n        onMessageActionHandler: $options.messageActionHandler,\n        onMessageSelectionActionHandler: $options.messageSelectionActionHandler,\n        onSendMessageReaction: $options.sendMessageReaction,\n        onTypingMessage: $options.typingMessage,\n        onTextareaActionHandler: $options.textareaActionHandler\n      }, createSlots({ _: 2 }, [\n        renderList($data.slots, (el) => {\n          return {\n            name: el.slot,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"current-user-id\", \"rooms\", \"room-id\", \"load-first-room\", \"messages\", \"room-message\", \"messages-loaded\", \"menu-actions\", \"message-actions\", \"message-selection-actions\", \"auto-scroll\", \"show-send-icon\", \"show-files\", \"show-audio\", \"audio-bit-rate\", \"audio-sample-rate\", \"show-emojis\", \"show-reaction-emojis\", \"show-new-messages-divider\", \"show-footer\", \"text-messages\", \"single-room\", \"show-rooms-list\", \"text-formatting\", \"link-options\", \"is-mobile\", \"loading-rooms\", \"room-info-enabled\", \"textarea-action-enabled\", \"textarea-auto-focus\", \"user-tags-enabled\", \"emojis-suggestion-enabled\", \"scroll-distance\", \"accepted-files\", \"capture-files\", \"multiple-files\", \"templates-text\", \"username-options\", \"emoji-data-source\", \"onToggleRoomsList\", \"onRoomInfo\", \"onFetchMessages\", \"onSendMessage\", \"onEditMessage\", \"onDeleteMessage\", \"onOpenFile\", \"onOpenUserTag\", \"onOpenFailedMessage\", \"onMenuActionHandler\", \"onMessageActionHandler\", \"onMessageSelectionActionHandler\", \"onSendMessageReaction\", \"onTypingMessage\", \"onTextareaActionHandler\"])\n    ]),\n    createVNode(Transition, {\n      name: \"vac-fade-preview\",\n      appear: \"\"\n    }, {\n      default: withCtx(() => [\n        $data.showMediaPreview ? (openBlock(), createBlock(_component_media_preview, {\n          key: 0,\n          file: $data.previewFile,\n          onCloseMediaPreview: _cache[1] || (_cache[1] = ($event) => $data.showMediaPreview = false)\n        }, createSlots({ _: 2 }, [\n          renderList($data.slots, (el) => {\n            return {\n              name: el.slot,\n              fn: withCtx((data) => [\n                renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n              ])\n            };\n          })\n        ]), 1032, [\"file\"])) : createCommentVNode(\"\", true)\n      ]),\n      _: 3\n    })\n  ], 4);\n}\nvar ChatWindow = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"styles\", [_style_0]]]);\nconst VueAdvancedChat = defineCustomElement(ChatWindow);\nconst PACKAGE_NAME = \"vue-advanced-chat\";\nfunction register() {\n  if (!customElements.get(PACKAGE_NAME)) {\n    customElements.define(PACKAGE_NAME, VueAdvancedChat);\n  }\n}\nexport { VueAdvancedChat, register };\n","import { render } from \"./ChatComponent.vue?vue&type=template&id=61a89d0e&ts=true\"\nimport script from \"./ChatComponent.vue?vue&type=script&lang=ts\"\nexport * from \"./ChatComponent.vue?vue&type=script&lang=ts\"\n\nimport \"./ChatComponent.vue?vue&type=style&index=0&id=61a89d0e&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4610efbd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"bell\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", {\n  src: \"/static/teleforma/images/bell.svg\",\n  alt: \"Notifications\",\n  title: \"Notifications\",\n  class: \"bell-image\"\n}, null, -1))\nconst _hoisted_3 = {\n  key: 0,\n  class: \"bell-count\"\n}\nconst _hoisted_4 = {\n  key: 0,\n  class: \"notifications-list\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  const _component_notification_message = _resolveComponent(\"notification-message\")!\n\n  return (_openBlock(), _createElementBlock(\"div\", {\n    id: \"notifications\",\n    onFocus: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.open && _ctx.open(...args))),\n    onFocusout: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.close && _ctx.close(...args))),\n    tabindex: \"0\"\n  }, [\n    _createElementVNode(\"div\", _hoisted_1, [\n      _hoisted_2,\n      (_ctx.numberOfUnread > 0)\n        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.numberOfUnread), 1))\n        : _createCommentVNode(\"\", true)\n    ]),\n    (_ctx.opened)\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n          _createElementVNode(\"ul\", null, [\n            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.messages, (message) => {\n              return (_openBlock(), _createBlock(_component_notification_message, {\n                key: message._id,\n                id: message._id,\n                content: message.content,\n                url: message.url,\n                viewed: message.viewed,\n                \"creation-date\": message.created\n              }, null, 8, [\"id\", \"content\", \"url\", \"viewed\", \"creation-date\"]))\n            }), 128))\n          ])\n        ]))\n      : _createCommentVNode(\"\", true)\n  ], 32))\n}","<template>\n  <div id=\"notifications\" @focus=\"open\" @focusout=\"close\" tabindex=\"0\">\n    <div class=\"bell\">\n      <img src=\"/static/teleforma/images/bell.svg\" alt=\"Notifications\" title=\"Notifications\" class=\"bell-image\" />\n      <span v-if=\"numberOfUnread > 0\" class=\"bell-count\">{{ numberOfUnread }}</span>\n    </div>\n    <div v-if=\"opened\" class=\"notifications-list\">\n      <!-- <h1 v-if=\"currentUserId\">{{ currentUserId }}</h1>\n      <h1 v-else>Pas d'utilisateur</h1> -->\n      <ul>\n        <notification-message\n          v-for=\"message in messages\"\n          :key=\"message._id\"\n          :id=\"message._id\"\n          :content=\"message.content\"\n          :url=\"message.url\"\n          :viewed=\"message.viewed\"\n          :creation-date=\"message.created\"\n        ></notification-message>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport NotificationMessage from \"./sub/NotificationMessage.vue\"\n\ninterface BaseComponentData {\n  socket: WebSocket | null\n  messagesLoaded: boolean\n  messages: any[]\n  currentUserId: number | null\n  opened: boolean\n}\n\nexport default defineComponent({\n  \n  data(): BaseComponentData {\n    return {\n      socket: null,\n      messagesLoaded: false,\n      messages: [],\n      currentUserId: null,\n      opened: false\n    }\n  },\n  components: {\n    NotificationMessage\n  },\n  created() {\n    // get room info\n    const userId = document.getElementById(\"user_id\")\n    if (!userId) return\n    // this.connect(`notifications_${userId}`)\n    this.currentUserId = parseInt(userId.getAttribute(\"value\")!, 10)\n    this.connect()\n  },\n\n  methods: {\n    connect() {\n      // connect to socket\n      let protocol = \"wss\"\n      if (window.location.protocol != \"https:\") protocol = \"ws\"\n      this.socket = new WebSocket(\n        protocol + \"://\" + window.location.host + \"/ws/notification/\" + this.currentUserId + \"/\"\n      )\n      this.fetchMessages()\n\n      this.socket.onclose = () => {\n        console.log(\"Chat socket closed\")\n      }\n    },\n\n    async fetchMessages() {\n      this.socket!.onmessage = (e) => {\n        const data = JSON.parse(e.data)\n        const type = data.type\n        // debugger;\n        // do not load messages in case of socket reconnect\n        if (type === \"initial\" && this.messagesLoaded) return\n\n        const newMessages = data.messages\n\n        // check if a message with the same id already exists\n        // it means the message have been updated (probably the \"viewed\" state)\n        let existing = null\n        if (type === \"new\" && newMessages.length === 1) {\n          existing = this.messages.findIndex((message) => message._id === newMessages[0]._id)\n        }\n\n        // if it exists, then we update it instead of appending a new one\n        if (existing !== null && existing !== -1) {\n          this.messages = [...this.messages.slice(0, existing), newMessages[0], ...this.messages.slice(existing + 1)]\n        } else this.messages = [...newMessages, ...this.messages]\n        if (type === \"initial\") this.messagesLoaded = true\n      }\n    },\n\n    open() {\n      this.opened = true\n    },\n    close() {\n      this.opened = false\n    }\n  },\n\n  computed: {\n    numberOfUnread(): any {\n      return this.messages.filter((message) => !message.viewed).length\n    }\n  }\n})\n</script>\n\n<style scoped>\n#notifications {\n  position: absolute;\n  top: 0px;\n  right: 5px;\n  text-align: left;\n}\n.bell {\n  width: 40px;\n  height: 40px;\n  position: relative;\n  cursor: pointer;\n}\n.bell-count {\n  position: absolute;\n  width: 20px;\n  height: 20px;\n  top: 5px;\n  right: 0px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  color: white;\n  border-radius: 10px;\n  background-color: red;\n}\n\n.notifications-list {\n  position: absolute;\n  background-color: white;\n  z-index: 100;\n  right: 10px;\n  width: 400px;\n  max-height: calc(100vh - 300px);\n  max-width: calc(100vw - 50px);\n  border: 1px solid lightblue;\n  border-radius: 3px;\n  overflow-y: scroll;\n}\n\nul {\n  margin: 0;\n  padding: 0;\n  box-shadow: 5px 5px 5px grey;\n}\n</style>\n","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fa1f8db4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"date\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(\"li\", {\n    onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onClick())),\n    onMouseup: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.onMiddleClick()), [\"middle\"]))\n  }, [\n    _createElementVNode(\"span\", {\n      class: _normalizeClass({ unviewed: !_ctx.viewed, text: true })\n    }, _toDisplayString(_ctx.content), 3),\n    _createElementVNode(\"span\", _hoisted_1, _toDisplayString(_ctx.relativeCreationDate), 1)\n  ], 32))\n}","<template>\n  <li @click=\"onClick()\" @click.middle=\"onMiddleClick()\">\n    <span :class=\"{ unviewed: !viewed, text: true }\">{{ content }}</span>\n    <span class=\"date\">{{ relativeCreationDate }} </span>\n  </li>\n</template>\n\n<script lang=\"ts\">\n\nimport { defineComponent } from 'vue'\nimport { formatRelative } from \"date-fns\"\nimport { fr } from \"date-fns/locale\"\nimport axios from \"axios\"\n\n\nexport default defineComponent({\n  props: {\n    id: Number,\n    content: String,\n    url: String,\n    viewed: Boolean,\n    creationDate: String\n  },\n\n  methods: {\n    async setAsViewed() {\n      if (this.viewed === false) {\n        await axios.post(\"/notification\", { id: this.id, viewed: true })\n      }\n    },\n\n    async onClick() {\n      await this.setAsViewed()\n      if (this.url) window.location.href = this.url\n    },\n\n    async onMiddleClick() {\n      await this.setAsViewed()\n      if (this.url) window.open(this.url, \"_blank\")\n    }\n  },\n  computed: {\n    relativeCreationDate():string {\n      return formatRelative(new Date(this.creationDate as string), new Date(), { locale: fr })\n    }\n  }\n})\n</script>\n\n<style scoped>\nli {\n  list-style: none;\n  display: block;\n  align-items: center;\n  margin: 0;\n  border-radius: 0;\n  padding: 10px;\n  cursor: pointer;\n  overflow: hidden;\n}\nli:hover {\n  background-color: #ccf2cf;\n}\nli:not(:last-child) {\n  border-bottom: 1px solid lightblue;\n}\n\n.unviewed {\n  font-weight: bold;\n}\n.date {\n  float: right;\n  color: lightslategrey;\n  font-size: 0.9em;\n  font-style: italic;\n}\n</style>\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var startOfDayLeft = startOfDay(dirtyDateLeft);\n  var startOfDayRight = startOfDay(dirtyDateRight);\n  var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a day is not constant\n  // (e.g. it's different in the day of the daylight saving time clock shift)\n\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nvar formatDistance = function (token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function (date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function (date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function (date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function (date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function (date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function (date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function (date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function (date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function (date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function (date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function (date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function (date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport format from \"../format/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result                    |\n * |---------------------------|---------------------------|\n * | Previous 6 days           | last Sunday at 04:30 AM   |\n * | Last day                  | yesterday at 04:30 AM     |\n * | Same day                  | today at 04:30 AM         |\n * | Next day                  | tomorrow at 04:30 AM      |\n * | Next 6 days               | Sunday at 04:30 AM        |\n * | Other                     | 12/31/2017                |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(addDays(new Date(), -6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var baseDate = toDate(dirtyBaseDate);\n\n  var _ref = dirtyOptions || {},\n      _ref$locale = _ref.locale,\n      locale = _ref$locale === void 0 ? defaultLocale : _ref$locale,\n      _ref$weekStartsOn = _ref.weekStartsOn,\n      weekStartsOn = _ref$weekStartsOn === void 0 ? 0 : _ref$weekStartsOn;\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  if (!locale.formatRelative) {\n    throw new RangeError('locale must contain formatRelative property');\n  }\n\n  var diff = differenceInCalendarDays(date, baseDate);\n\n  if (isNaN(diff)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  var token;\n\n  if (diff < -6) {\n    token = 'other';\n  } else if (diff < -1) {\n    token = 'lastWeek';\n  } else if (diff < 0) {\n    token = 'yesterday';\n  } else if (diff < 1) {\n    token = 'today';\n  } else if (diff < 2) {\n    token = 'tomorrow';\n  } else if (diff < 7) {\n    token = 'nextWeek';\n  } else {\n    token = 'other';\n  }\n\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n  var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, {\n    locale: locale,\n    weekStartsOn: weekStartsOn\n  });\n  return format(date, formatStr, {\n    locale: locale,\n    weekStartsOn: weekStartsOn\n  });\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'moins d’une seconde',\n    other: 'moins de {{count}} secondes'\n  },\n  xSeconds: {\n    one: '1 seconde',\n    other: '{{count}} secondes'\n  },\n  halfAMinute: '30 secondes',\n  lessThanXMinutes: {\n    one: 'moins d’une minute',\n    other: 'moins de {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'environ 1 heure',\n    other: 'environ {{count}} heures'\n  },\n  xHours: {\n    one: '1 heure',\n    other: '{{count}} heures'\n  },\n  xDays: {\n    one: '1 jour',\n    other: '{{count}} jours'\n  },\n  aboutXWeeks: {\n    one: 'environ 1 semaine',\n    other: 'environ {{count}} semaines'\n  },\n  xWeeks: {\n    one: '1 semaine',\n    other: '{{count}} semaines'\n  },\n  aboutXMonths: {\n    one: 'environ 1 mois',\n    other: 'environ {{count}} mois'\n  },\n  xMonths: {\n    one: '1 mois',\n    other: '{{count}} mois'\n  },\n  aboutXYears: {\n    one: 'environ 1 an',\n    other: 'environ {{count}} ans'\n  },\n  xYears: {\n    one: '1 an',\n    other: '{{count}} ans'\n  },\n  overXYears: {\n    one: 'plus d’un an',\n    other: 'plus de {{count}} ans'\n  },\n  almostXYears: {\n    one: 'presqu’un an',\n    other: 'presque {{count}} ans'\n  }\n};\n\nvar formatDistance = function (token, count, options) {\n  var result;\n  var form = formatDistanceLocale[token];\n\n  if (typeof form === 'string') {\n    result = form;\n  } else if (count === 1) {\n    result = form.one;\n  } else {\n    result = form.other.replace('{{count}}', String(count));\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'dans ' + result;\n    } else {\n      return 'il y a ' + result;\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d MMMM y',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'à' {{time}}\",\n  long: \"{{date}} 'à' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"eeee 'dernier à' p\",\n  yesterday: \"'hier à' p\",\n  today: \"'aujourd’hui à' p\",\n  tomorrow: \"'demain à' p'\",\n  nextWeek: \"eeee 'prochain à' p\",\n  other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['av. J.-C', 'ap. J.-C'],\n  abbreviated: ['av. J.-C', 'ap. J.-C'],\n  wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n  narrow: ['T1', 'T2', 'T3', 'T4'],\n  abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n  wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n  wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n  narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n  short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n  abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n  wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'mat.',\n    afternoon: 'ap.m.',\n    evening: 'soir',\n    night: 'mat.'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'matin',\n    afternoon: 'après-midi',\n    evening: 'soir',\n    night: 'matin'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'du matin',\n    afternoon: 'de l’après-midi',\n    evening: 'du soir',\n    night: 'du matin'\n  }\n};\n\nvar ordinalNumber = function (dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  var unit = options === null || options === void 0 ? void 0 : options.unit;\n  if (number === 0) return '0';\n  var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n  var suffix;\n\n  if (number === 1) {\n    suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n  } else {\n    suffix = 'ème';\n  }\n\n  return number + suffix;\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n  abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n  wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n  any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^T?[1234]/i,\n  abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n  wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n  wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[lmjvsd]/i,\n  short: /^(di|lu|ma|me|je|ve|sa)/i,\n  abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n  wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n  any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n  any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^min/i,\n    noon: /^mid/i,\n    morning: /mat/i,\n    afternoon: /ap/i,\n    evening: /soir/i,\n    night: /nuit/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\n\nvar locale = {\n  code: 'fr',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1\n    /* Monday */\n    ,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","import { render } from \"./NotificationMessage.vue?vue&type=template&id=fa1f8db4&scoped=true&ts=true\"\nimport script from \"./NotificationMessage.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationMessage.vue?vue&type=script&lang=ts\"\n\nimport \"./NotificationMessage.vue?vue&type=style&index=0&id=fa1f8db4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fa1f8db4\"]])\n\nexport default __exports__","import { render } from \"./NotificationsBell.vue?vue&type=template&id=4610efbd&scoped=true&ts=true\"\nimport script from \"./NotificationsBell.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationsBell.vue?vue&type=script&lang=ts\"\n\nimport \"./NotificationsBell.vue?vue&type=style&index=0&id=4610efbd&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4610efbd\"]])\n\nexport default __exports__","export enum PlayerState {\n    UNSTARTED = 'UNSTARTED',\n    ENDED = 'ENDED',\n    PLAYING = 'PLAYING',\n    PAUSE = 'PAUSE',\n    BUFFERING = 'BUFFERING',\n    READY = 'READY', // ready to be played after buffering\n    LOADING = 'LOADING',\n    LOADED = 'LOADED',\n  }","export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : String(i);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","const ENABLE_DEBUG = true;\nexport const Logger = {\n  debug: (...args: unknown[]) => {\n    if (!ENABLE_DEBUG) return;\n    console.debug(...args);\n  },\n  error: (...args: unknown[]) => {\n    console.error(...args);\n  }\n};","import { PlayerState } from './constants';\nimport { MultiVideoPlayer, VideoPlayerOptions } from './main';\nimport { Logger } from \"./utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => { };\nclass VideoPlayer {\n  public videoId: string;\n  public videoPlayerConfig: VideoPlayerOptions;\n  // video js player\n  public videojs: any;\n  private player: MultiVideoPlayer;\n  public controls: boolean;\n  public main: boolean;\n  public sound: boolean;\n  public canWait: boolean;\n  public videoPlayerArea: Element | null;\n  // public videoElement: HTMLVideoElement | null;\n  public videoState: PlayerState;\n  private readonly _startSeconds: number;\n  private readonly loop: boolean;\n  public isPlaying: boolean;\n  constructor(player: MultiVideoPlayer, videoPlayerConfig: VideoPlayerOptions) {\n    this.videoId = Math.random().toString(36).substring(2, 15);\n    this.player = player;\n    this.videoPlayerConfig = videoPlayerConfig;\n    this.main = this.videoPlayerConfig.main ?? false;\n    this.sound = this.videoPlayerConfig.sound ?? false;\n    this.canWait = true;\n    this.controls = this.videoPlayerConfig.controls ?? player.options.controls ?? true;\n    this.loop = player.options.loop ?? false;\n\n    this._startSeconds = parseFloat(String(this.videoPlayerConfig.startSeconds ?? 0));\n\n    this.videoPlayerArea = null;\n    // this.videoElement = null;\n    this.videoState = PlayerState.LOADING;\n    this.isPlaying = false;\n\n    this.mount();\n  }\n\n  private mount() {\n    this.render();\n    // this.videoElementId = document.querySelector(`#video_player_${this.videoId} video`);\n    // console.log(this.videoElement)\n\n    if (!this.videoElement) {\n      return Logger.debug('video element not found');\n    }\n\n    // if we do not setTimeout here, controls act weirdly (no explanation...)\n    setTimeout(() => {\n      this.setupVideoElement({ controls: this.controls, main: this.main });\n    }, 1);\n\n    // this.videojs.on('volumechange', (e: any) => {\n    //   console.log(e)\n    //   // find the videos with the sound on\n    //   const videos = this.player.videoPlayers.filter(v => v.sound)\n\n    //   console.log(\"volume change\", this.player.videoPlayers[0].videojs!.volume())\n    //   console.log(this.player.videoPlayers[0])\n    //   // console.log(\"change volume of \", videos)\n    //   // this.player.videoPlayers[0].videojs!.volume(0)\n    //   for (const video of videos) {\n    //     video.videojs!.volume(this.player.videoPlayers[0].videojs!.volume())\n    //     // this.videojs.volume(this.player.videoPlayers[0].videojs!.volume())\n    //   }\n    //   e.preventDefault()\n    //   e.stopPropagation()\n\n    // })\n    window.addEventListener(\"unhandledrejection\", (event) => {\n      if (event.reason?.name === \"AbortError\" || event.reason?.message.includes(\"The play() request was interrupted\")) {\n        console.warn(\"❌❌❌❌❌❌❌❌The play() request was interrupted❌❌❌❌❌❌❌❌❌❌\");\n\n        event.preventDefault();\n        event.stopPropagation();\n      }\n    });\n\n    document.addEventListener(\"fullscreenchange\", () => {\n      const videoElement = document.querySelector('video');\n      if (!document.fullscreenElement) {\n        if (videoElement) {\n          videoElement.style.height = \"100%\";\n          videoElement.style.width = \"100%\";\n        }\n      }\n      // else{\n      //   if(videoElement)\n      //     {\n      //       videoElement.style.height = \"100vh\";\n      //       videoElement.style.width = \"100%\";\n      //     }\n      // }\n\n    });\n\n    this.videojs.on('ratechange', () => {\n      const newRate = this.videojs.playbackRate();\n      console.log(`Playback rate changed to: ${newRate}`);\n    \n      // Apply the new speed to all other videos\n      this.player.videoPlayers.forEach(video => {\n        if (video.videojs && video.videojs.playbackRate() !== newRate) {\n          video.videojs.playbackRate(newRate);\n          console.log(`Updated video ${video.videoId} to speed ${newRate}`);\n        }\n      });\n    });\n    \n\n    this.videojs.on('loadeddata', this.onReady.bind(this))\n    this.videojs.on('timeupdate', this.onTimeUpdate.bind(this))\n    this.videojs.on('seeking', this.onSeeking.bind(this))\n    this.videojs.on('ended', this.onStateChange.bind(this, PlayerState.ENDED))\n\n    this.videojs.on('play', () => {\n      this.syncTime();\n      if (!this.isPlaying && this.player.state !== PlayerState.BUFFERING) {\n        this.onStateChange(PlayerState.PLAYING);\n      }\n    });\n\n    this.videojs.on('pause', () => {\n\n      if (this.isPlaying) {\n        this.onStateChange(PlayerState.PAUSE);\n      }\n    });\n    // this.videojs.on('waiting', () => {\n    //   // console.log(\"WAITING FOR BUFFERING\", this.videoState, e)\n    //   // if(this.isPlaying)\n\n    //     this.onStateChange(PlayerState.BUFFERING)\n    // })\n    this.videojs.on('canplay', () => {\n      this.syncTime();\n      if (this.player.state === PlayerState.PAUSE) return;\n\n\n      // debugger;\n      if (![PlayerState.LOADING, PlayerState.LOADED].includes(this.player.state as PlayerState)) {\n        this.onStateChange(PlayerState.READY)\n      }\n      this.canWait = false\n      setTimeout(() => {\n        this.canWait = true\n\n      }, 1000)\n    })\n\n    this.videojs.on('waiting', () => {\n      if (!this.canWait)\n        return\n      if (this.videoElement!.readyState === 4)\n        return\n      console.log(\"BUFFERING...\", this.videoElement!.readyState)\n      if (![PlayerState.LOADING, PlayerState.LOADED].includes(this.player.state as PlayerState)) {\n        if (!this.isPlaying) {\n          this.onStateChange(PlayerState.BUFFERING)\n        }\n      }\n    })\n\n    // this.videojs.on('progress', (e:any) => {\n    //   console.log('progress')\n    //   console.log(e)\n    //   this.onStateChange.bind(this, PlayerState.PLAYING)\n    // })\n\n\n    // this.videoElement.addEventListener('play', this.onStateChange.bind(this, PlayerState.PLAYING), false);\n    // this.videoElement.addEventListener('pause', this.onStateChange.bind(this, PlayerState.PAUSE), false);\n    // this.videoElement.addEventListener('seeking', this.onSeeking.bind(this), false);\n    // this.videoElement.addEventListener('timeupdate', this.onTimeUpdate.bind(this), false);\n    // this.videoElement.addEventListener('loadeddata', this.onReady.bind(this), false);\n    // this.videoElement.addEventListener('canplaythrough', this.onStateChange.bind(this, PlayerState.UNSTARTED), false);\n\n    // this.videoElement.addEventListener('ended', this.onStateChange.bind(this, PlayerState.ENDED), false);\n    // this.videoElement.addEventListener('waiting', this.onStateChange.bind(this, PlayerState.BUFFERING), false);\n  }\n\n  public syncTime() {\n    const mainVideo = this.player.videoPlayers.find(v => v.main);\n    const syncLoop = () => {\n      if (this.main) {\n        // Sync all other videos with the main one\n        this.player.videoPlayers.forEach(video => {\n          if (!video.main && video.videojs) {\n            const videoCurrentTime = video.videojs.currentTime();\n            const mainCurrentTime = this.videojs.currentTime();\n            if (Math.abs(mainCurrentTime - videoCurrentTime) > 0.2) {\n              video.videojs.currentTime(mainCurrentTime);\n              console.log(`🔄 Synced video ${video.videoId} to ${mainCurrentTime}s`);\n            }\n          }\n        });\n      } else if (mainVideo && mainVideo.videojs) {\n        const mainCurrentTime = mainVideo.videojs.currentTime();\n        const thisCurrentTime = this.videojs.currentTime();\n  \n        if (Math.abs(mainCurrentTime - thisCurrentTime) > 0.2) {\n          this.videojs.currentTime(mainCurrentTime);\n          console.log(`🔄 Synced video ${this.videoId} to ${mainCurrentTime}s`);\n        }\n      }\n    };\n  \n    requestAnimationFrame(syncLoop);\n  }\n  \n\n  get videoElement(): HTMLVideoElement | null {\n    return document.querySelector(`#video_player_${this.videoId} video`) as HTMLVideoElement\n  }\n\n  private onReady() {\n    Logger.debug(this.videoId, '::[onReady]');\n    this.timeTo(0);\n    this.player.onReady();\n  }\n\n  private onSeeking() {\n    Logger.debug(this.videoId, '::[onSeeking]');\n    if (!this.main) {\n      return;\n    }\n    // this.player.onTimeUpdate(this, this.getPlayedTime());\n    requestAnimationFrame(() => {\n      this.syncTime();\n    });\n  }\n\n  private onTimeUpdate() {\n    if (!this.main) {\n      return;\n    }\n    requestAnimationFrame(() => {\n      this.syncTime();\n    });\n  }\n\n  private onStateChange(state: PlayerState) {\n    Logger.debug(this.videoId, '::[onStateChange]', state);\n    this.videoState = state;\n\n    const statesToPropagate = [\n      PlayerState.BUFFERING,\n      PlayerState.READY,\n      PlayerState.PLAYING,\n      PlayerState.PAUSE,\n      PlayerState.ENDED,\n      PlayerState.UNSTARTED,\n    ];\n    if (state === PlayerState.PLAYING) {\n      this.isPlaying = true;\n\n      if (!this.main) {\n        return;\n      }\n    }\n\n    if (state === PlayerState.PAUSE) {\n      this.isPlaying = false;\n      if (!this.main) {\n        return;\n      }\n    }\n\n    if (state === PlayerState.BUFFERING) {\n      this.isPlaying = false;\n    }\n\n    if (statesToPropagate.includes(state)) {\n      this.player.changeState(state, this);\n    }\n  }\n\n  private render() {\n    // if video area is defined, add video to area\n    this.videoPlayerArea = document.querySelector(this.videoPlayerConfig.id);\n    if (!this.videoPlayerArea) {\n      return Logger.debug('id not found: ', this.videoPlayerConfig.id);\n    }\n    this.videoPlayerArea.innerHTML = `\n        <video \n            id=\"video_player_${this.videoId}\"\n            class=\"video-js vjs-theme-fantasy\"\n            controls\n            preload=\"auto\"\n            data-setup='{\"playbackRates\": [1, 1.25, 1.5, 2]}'\n            style=\"width:100%;height:100%;\"\n        >\n          <source src=\"${this.videoPlayerConfig.initialSrc}\" type=\"video/mp4\" />\n          <p class=\"vjs-no-js\">\n            To view this video please enable JavaScript, and consider upgrading to a\n            web browser that\n            <a href=\"https://videojs.com/html5-video-support/\" target=\"_blank\"\n              >supports HTML5 video</a\n            >\n          </p>\n        </video>\n    `;\n    // console.log(\"test\")\n    this.videojs = window.videojs(`video_player_${this.videoId}`, {\n      userActions: {\n        doubleClick: false\n      },\n      controlBar: {\n        // 'pictureInPictureToggle': false,\n        volumePanel: this.sound,\n        fullscreenToggle: false,\n        // playbackRateMenuButton: false\n\n      }\n    });\n    this.videojs.controls(true)\n    this.videojs.muted(!this.sound)\n    this._createFullscreenButton()\n    // console.log(player);\n  }\n\n  private setupVideoElement(options: { controls?: boolean, main: boolean }) {\n    if (options.controls !== undefined)\n      this.setControls(options.controls);\n    this.setMain(options.main);\n  }\n\n  public _swap(videoPlayer: VideoPlayer) {\n    if (!this.videoElement || !videoPlayer.videoElement) return;\n\n    const animateSwap = () => {\n      if (window.innerHeight > window.innerWidth) {\n        // Portrait mode\n        this.videoElement!.style.height = \"100%\";\n        videoPlayer.videoElement!.style.height = \"100%\";\n      } else {\n        if (window.document.fullscreenElement) {\n          this.videoElement!.style.height = \"100%\";\n          videoPlayer.videoElement!.style.height = \"100vh\";\n        } else {\n          this.videoElement!.style.height = \"100%\";\n          videoPlayer.videoElement!.style.height = \"100%\";\n        }\n      }\n    };\n\n    requestAnimationFrame(animateSwap);\n\n    const nodeA = this.videoElement.parentElement;\n    const nodeB = videoPlayer.videoElement.parentElement;\n    // console.log(this.videoElement.attr('id'))\n    // const nodeA = document.getElementById(this.videoElement.id)?.parentElement\n    // const nodeB = document.getElementById(videoPlayer.videoElement.id)?.parentElement\n    // console.log(videoInDom)\n    // debugger\n    const parentA = nodeA!.parentNode;\n    const parentB = nodeB!.parentNode;\n\n\n    // const newvideojs = videoPlayer.videojs;\n    // videoPlayer.videojs = this.videojs;\n    // this.videojs = newvideojs;\n\n    if (!parentA || !parentB) throw new Error('Parent node not found');\n\n    const siblingA = nodeA!.nextSibling === nodeB ? nodeA : nodeA!.nextSibling;\n    parentB.insertBefore(nodeA!, nodeB!);\n    parentA.insertBefore(nodeB!, siblingA!);\n\n    const thisControls = this.controls;\n    const thisMain = this.main;\n\n\n    this.setupVideoElement({ controls: videoPlayer.controls, main: videoPlayer.main });\n    videoPlayer.setupVideoElement({ controls: thisControls, main: thisMain });\n\n\n    // this.videojs.dispose();\n    // videoPlayer.videojs.dispose();\n    // this.videojs = videojs(`video_player_${this.videoId}`);\n    // videoPlayer.videojs = videojs(`video_player_${videoPlayer.videoId}`);\n  }\n\n  /**\n   * -------------------------------\n   * PUBLIC METHODS FOR VIDEO PLAYER\n   * -------------------------------\n   */\n\n  public async play() {\n    if (!this.videoElement) return;\n    if (this.videoState === PlayerState.PLAYING || this.videoState === PlayerState.BUFFERING) return;\n    const isPlaying = this.videoElement.currentTime > 0 && !this.videoElement.paused && !this.videoElement.ended && this.videoElement.readyState > this.videoElement.HAVE_CURRENT_DATA;\n    if (isPlaying) {\n      console.log(\"already playing\")\n      return\n    }\n\n    // debugger;\n    // const video = document.getElementById(this.videoElement.id)\n    // await video!.play()\n    await this.videoElement.play().then(() => {\n      console.log(\"Playback started!\");\n    })\n      .catch(error => {\n        console.warn(\"Playback failed:\", error);\n      });;\n\n\n  }\n\n  public pause() {\n    if (!this.videoElement) return;\n    if (this.videoState === PlayerState.PAUSE) return;\n    if (!this.isPlaying) return;\n    try {\n      this.videoElement.pause();\n    }\n    catch (error) {\n      console.log(error)\n    }\n  }\n\n  public stop() {\n    if (!this.videoElement) return;\n    try {\n      this.videoElement.pause();\n      this.timeTo(this.getDuration() - 0.5);\n    }\n    catch (error) {\n      console.log(error)\n    }\n  }\n\n  public setControls(controls: boolean) {\n    if (!this.videoElement) return;\n    this.videojs.controls(controls)\n    // this.videojs.player.userActive(false)\n    // this.videoElement.controls = controls;\n    this.controls = controls;\n  }\n\n  public setMain(main: boolean) {\n    this.main = main;\n  }\n\n  public timeTo(time: number) {\n    if (!this.videoElement) return;\n    time = parseFloat(time.toString());\n    time = (time + this._startSeconds);\n\n    if (time >= this.getDuration()) {\n      this.videoElement.currentTime = this.getDuration() - 0.05;\n      Logger.debug('timeTo: time is greater than duration');\n      this.pause();\n      return;\n    }\n\n    Logger.debug('set time to: ', time);\n    this.videoElement.currentTime = time;\n  }\n\n  public getDuration() {\n    return (this.videoElement?.duration || 0);\n  }\n\n  public getPlayLength() {\n    return this.getDuration() - this._startSeconds;\n  }\n\n  public getCurrentTime() {\n    return (this.videoElement?.currentTime || 0);\n  }\n\n  public getPlayedTime() {\n    const time = this.getCurrentTime() - this._startSeconds;\n    return Math.max(time, 0);\n  }\n\n  public isEnded() {\n    const diff = Math.abs(this.getCurrentTime() - this.getDuration());\n    return diff < 0.1;\n\n  }\n\n  private _createFullscreenButton() {\n    const fullscreenButton = this.videojs?.controlBar.addChild('button', {\n      clickHandler: function () {\n        const doc = window.document;\n        const videoElement = document.querySelector('video');\n\n        if (!doc.fullscreenElement) {\n          // Request fullscreen for the video container\n          const videoContainer = document.getElementById(\"fullscreen-part\");\n\n          videoContainer?.requestFullscreen().then(() => {\n            if (videoElement) {\n              videoElement.style.height = '100vh';\n              videoElement.style.width = '100%';\n            }\n            screen.orientation.lock(\"landscape\").catch((error: any) => {\n              console.error(\"Error locking orientation:\", error);\n            });\n          });\n\n        }\n        else {\n          // Exit fullscreen and reset video styles\n          document.exitFullscreen().then(() => {\n            if (videoElement) {\n              videoElement.style.height = '100%';\n              videoElement.style.width = '100%';\n            }\n          });\n          // Unlock the orientation when exiting fullscreen\n          screen.orientation.unlock();\n        }\n      }\n    });\n\n    fullscreenButton.controlText('Fullscreen');\n\n    this.videojs?.controlBar.el().appendChild(fullscreenButton.el());\n    const buttonDom = fullscreenButton.el();\n    buttonDom.innerHTML = `<span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span><span class=\"vjs-control-text\" aria-live=\"polite\">Fullscreen</span>`;\n    buttonDom.classList.add('vjs-fullscreen-control');\n  }\n\n\n\n}\n\nexport default VideoPlayer;","import { fi } from 'date-fns/locale';\nimport { PlayerState } from './constants';\nimport { MultiVideoPlayerOptions, VideoPlayerOptions } from './main';\nimport { Logger } from \"./utils\";\nimport VideoPlayer from './VideoPlayer';\n\nconst validStates = {\n  [PlayerState.LOADING]: [PlayerState.LOADED],\n  [PlayerState.LOADED]: [PlayerState.PLAYING],\n  [PlayerState.PLAYING]: [PlayerState.PAUSE, PlayerState.ENDED, PlayerState.BUFFERING],\n  [PlayerState.PAUSE]: [PlayerState.PLAYING, PlayerState.ENDED],\n  [PlayerState.ENDED]: [PlayerState.PLAYING],\n\n  [PlayerState.BUFFERING]: [PlayerState.READY, PlayerState.PAUSE, PlayerState.PLAYING],\n  [PlayerState.READY]: [PlayerState.PLAYING],\n  [PlayerState.UNSTARTED]: [],\n};\n\nconst isValidState = (currentState: PlayerState, nextState: PlayerState) => {\n  const stateOuts: PlayerState[] = validStates[currentState];\n  if (!stateOuts) {\n    return false;\n  }\n\n  return stateOuts.includes(nextState);\n};\n\n\nclass SyncVideoPlayer {\n  public options: MultiVideoPlayerOptions;\n  public $container: Element | null;\n  public videoPlayers: VideoPlayer[] = [];\n  public state: PlayerState;\n  private readyCount: number;\n  private currentTime: number;\n\n  constructor(options: MultiVideoPlayerOptions) {\n    this.options = {\n      controls: options.controls ?? true,\n      loop: options.loop ?? false,\n      area: options.area || '',\n      videoPlayers: options.videoPlayers || [],\n      template: '<div id=\"sync_video_player_container\"></div>'\n    };\n\n    this.state = PlayerState.LOADING;\n    this.readyCount = 0;\n\n    this.$container = null;\n\n    this.videoPlayers = [];\n    this.currentTime = 0;\n  }\n\n  public getDebugInfo() {\n    return {\n      state: this.state,\n      currentTime: this.currentTime,\n      videoPlayers: this.videoPlayers.map(vp => {\n        return {\n          id: vp.videoId,\n          state: vp.videoState,\n          currentTime: vp.getCurrentTime(),\n          duration: vp.getDuration,\n          isMain: vp.main,\n          isPlaying: vp.isPlaying,\n        };\n      }),\n    };\n  }\n\n  public mount() {\n    this.render();\n    this.addVideoPlayers(this.options.videoPlayers);\n  }\n\n  private render() {\n    const { template, area } = this.options;\n    if (!area) {\n      return;\n    }\n    const areaEl = document.querySelector(area);\n    if (!areaEl) {\n      return Logger.error('area not found: ', area);\n    }\n\n    areaEl.innerHTML = template || '';\n    this.$container = document.querySelector('#sync_video_player_container');\n  }\n\n  public async changeState(state: PlayerState, videoPlayer: VideoPlayer) {\n    const mainVideoPlayer = this.videoPlayers.find((vp) => vp.main);\n\n    if (state === PlayerState.BUFFERING) {\n        if (mainVideoPlayer && mainVideoPlayer === videoPlayer) {\n            return this.pause();\n        }\n        return;\n    }\n\n    if (state === PlayerState.PLAYING) {\n       \n        if (this.state !== PlayerState.BUFFERING) {\n          return await this.play();\n        }\n        return;\n    }\n\n    if (state === PlayerState.PAUSE) {\n        if (videoPlayer.isEnded()) {\n            return;\n        }\n        return this.pause(true);\n    }\n\n    if (state === PlayerState.ENDED) {\n        if (mainVideoPlayer && mainVideoPlayer !== videoPlayer) {\n            return;\n        }\n        await this.moveStateTo(PlayerState.ENDED, () => {\n            if (this.options.loop) {\n                return this.timeTo(0);\n            }\n        });\n    }\n\n    if (state === PlayerState.READY) {\n        const allReady = this.videoPlayers.every((vp) =>\n            [PlayerState.READY, PlayerState.PLAYING, PlayerState.PAUSE].includes(vp.videoState)\n        );\n\n        if (allReady) {\n            return await this.play();\n        }\n    }\n\n    if (state === PlayerState.UNSTARTED) {\n        if (this.state === PlayerState.ENDED && this.options.loop) {\n            console.log(\"changeState - UNSTARTED - call :  this.play()\");\n            return await this.play();\n        }\n    }\n}\n\n\n  private async moveStateTo(state: PlayerState, success?: (newState: PlayerState, oldState: PlayerState) => void, fail?: (newState: PlayerState, oldState: PlayerState) => void) {\n    if (state === this.state) return;\n    if (isValidState(this.state, state)) {\n      const oldState = this.state;\n      this.state = state;\n      if (success) {\n        await success(this.state, oldState);\n      }\n      Logger.debug('state changed to: ', state);\n    } else {\n      if (fail) {\n        await fail(this.state, state);\n      }\n      Logger.error('invalid state change: ', this.state, state);\n    }\n  }\n\n  public async onReady() {\n    this.readyCount++;\n    if (this.readyCount !== this.videoPlayers.length) return;\n    await this.moveStateTo(PlayerState.LOADED);\n  }\n\n  public onTimeUpdate(videoPlayer: VideoPlayer, time: number) {\n    const diff = Math.abs(this.currentTime - time);\n    if (diff >= 0.2) {\n        this.timeTo(time);\n    }\n    this.currentTime = time;\n    this.fixVideoStates();\n  }\n\n  private fixVideoStates() {\n    const mainVideoPlayer = this.videoPlayers.find((vp) => vp.main);\n    if (!mainVideoPlayer) return;\n\n    this.videoPlayers.forEach(async vp => {\n      if (vp === mainVideoPlayer || vp.isEnded()) return;\n      if (mainVideoPlayer.isPlaying && !vp.isPlaying) {\n        await vp.play();\n      } else if (!mainVideoPlayer.isPlaying && vp.isPlaying) {\n        await vp.pause();\n      }\n    });\n  }\n\n\n  /**\n   * ------------------------------\n   * Public methods\n   * ------------------------------\n   */\n\n  public addVideoPlayers(videoPlayers: VideoPlayerOptions[] | undefined) {\n    if (!videoPlayers) return;\n\n    videoPlayers.forEach(videoPlayer => {\n      this.addVideoPlayer(videoPlayer);\n    });\n  }\n\n  public addVideoPlayer(videoPlayer: VideoPlayerOptions) {\n    const videoInstance = new VideoPlayer(this, videoPlayer);\n    if (!videoInstance.videoElement) return;\n    this.videoPlayers.push(videoInstance);\n  }\n\n  public async play() {\n      await this.moveStateTo(PlayerState.PLAYING, async () => {\n        // this.timeTo(this.currentTime);\n        await Promise.all(\n          this.videoPlayers.map(async (video) => {\n            if (this.currentTime < video.getPlayLength()) {\n              await video.play();\n            }\n          })\n        );\n      });\n  }\n\n  public pause(excludeMain?: boolean) {\n    this.moveStateTo(PlayerState.PAUSE, () => {\n        this.videoPlayers.forEach((video) => {\n            video.pause();\n        });\n    });\n}\n\n  public async stop() {\n    await this.moveStateTo(PlayerState.PAUSE, async () => {\n      await Promise.all(this.videoPlayers.map(async video => {\n        await video.stop();\n      }));\n    });\n  }\n\n  public async timeTo(time: number) {\n    this.currentTime = time;\n    this.videoPlayers.forEach(async video => {\n      await video.timeTo(time);\n    });\n  }\n\n  public swapVideo(index1: number, index2: number) {\n    if (index1 === index2) return;\n    this.videoPlayers[index1]._swap(this.videoPlayers[index2]);\n    const tmp = this.videoPlayers[index1];\n    this.videoPlayers[index1] = this.videoPlayers[index2];\n    this.videoPlayers[index2] = tmp;\n  }\n}\n\nexport default SyncVideoPlayer;","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"container\",\n  id: \"fullscreen-part\"\n}\nconst _hoisted_2 = { id: \"main-video\" }\nconst _hoisted_3 = { id: \"thumbnails-videos\" }\nconst _hoisted_4 = [\"id\", \"onClick\", \"onTouchend\"]\nconst _hoisted_5 = { class: \"controls\" }\nconst _hoisted_6 = { class: \"time\" }\n\nimport { onMounted, nextTick, ref } from \"vue\"\n\nimport SyncVideoPlayer from \"./SyncVideoPlayer\"\nimport { PlayerState } from './constants';\n\n\nexport default /*#__PURE__*/_defineComponent({\n  __name: 'VideoComponent',\n  setup(__props) {\n\nconst multivideos = (window as any).multivideos\nconsole.log(multivideos)\n\nconst syncVideoPlayer = new SyncVideoPlayer({\n  controls: false,\n  loop: false,\n  videoPlayers: multivideos || []\n})\n\n\n// build a list of video ids equal to multivideos length\nconst ids = ref(Array.from({ length: multivideos.length }, (_, i) => `video-${i}`))\nconst debugInfo = ref({})\n\nvar count = 0;\n\nonMounted(() => {\n  syncVideoPlayer.mount();\n\n  setInterval(() => {\n    debugInfo.value = syncVideoPlayer.getDebugInfo();\n  }, 50);\n\n  // const videoElement = document.querySelector(\"#video-0 video\");\n  // console.log(\"✅✅✅✅✅ videoElement = \", videoElement)\n  // videoElement.addEventListener('play', (event) => {\n  //   count = count + 1;\n  //   try{\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\", count)\n  //     syncVideoPlayer.play();\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\")\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n\n  // videoElement.addEventListener('pause', (event) => {\n  //   try{\n  //     syncVideoPlayer.pause();\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n  \n\n  // const buttonTest = document.querySelector('.vjs-play-control');\n  // if (buttonTest) {\n  //   buttonTest.addEventListener('click', (event) => {\n  //     event.preventDefault();\n  //     event.stopPropagation(); \n  //     if(buttonTest.classList.contains('vjs-paused'))\n  //     {\n  //       console.log(\"✅✅✅✅✅ Play ✅✅✅✅✅\")\n  //     }\n  //     else {\n  //       console.log(\"✅✅✅✅✅ Pause ✅✅✅✅✅\")\n  //     }\n  //   });\n  // }\n\n})\n\n\n// function resizeVideoContainers() {\n//   /** resize video containers so it fits a 2/3 - 1/3 */\n\n//   console.log(\"resizeVideoContainers\")\n//   const mainVideoContainer = document.getElementById(\"main-video\")\n//   const mainVideoHeight = mainVideoContainer?.clientHeight\n//   // set height to thumbnails list\n//   const thumbnailsVideos = document.getElementById(\"thumbnails-videos\")\n//   // check if window size is less than 1280px (thumbnails wraps below in this case)\n//   let thumbnailsVideoHeight = mainVideoHeight\n//   if (window.innerWidth < 1280) {\n//     thumbnailsVideoHeight = mainVideoHeight / 2\n\n//   }\n//   console.log(thumbnailsVideos, thumbnailsVideoHeight)\n\n//   thumbnailsVideos!.style.height = `${thumbnailsVideoHeight}px`\n// }\n\n\nasync function onPlay() {\n  await syncVideoPlayer.play()\n}\n\nasync function onPause() {\n  await syncVideoPlayer.pause()\n}\n\nfunction onAdd() {\n  // create area for video1\n  const id = `video-${Math.random().toString(36).substring(2, 9)}`\n  ids.value.push(id)\n  nextTick(() => {\n    // add video\n    syncVideoPlayer.addVideoPlayer({\n      id: `#${id}`,\n      initialSrc:\n        \"https://static.videezy.com/system/resources/previews/000/004/294/original/18_20Dragon_20Coaster_20Part_202.mp4\"\n    })\n  })\n}\n\nfunction onFullscreen() {\n  document.getElementById(\"multivideo\")!.requestFullscreen()\n}\n\nasync function onClick(index: number) {\n  syncVideoPlayer.swapVideo(0, index)\n}\n\nasync function onChange(e: Event) {\n  const value = (e.target as HTMLInputElement).value\n  await syncVideoPlayer.timeTo(parseFloat(value))\n}\n\n\n\nreturn (_ctx: any,_cache: any) => {\n  return (_openBlock(), _createElementBlock(\"div\", null, [\n    _createElementVNode(\"div\", null, [\n      _createElementVNode(\"div\", _hoisted_1, [\n        _createElementVNode(\"div\", _hoisted_2, [\n          (_openBlock(), _createElementBlock(\"div\", {\n            class: \"box\",\n            id: \"video-0\",\n            key: 0,\n            onClick: _cache[0] || (_cache[0] = ($event: any) => (onClick(0))),\n            onTouchend: _cache[1] || (_cache[1] = ($event: any) => (onClick(0)))\n          }, null, 32))\n        ]),\n        _createElementVNode(\"div\", _hoisted_3, [\n          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(ids.value.slice(1), (id, i) => {\n            return (_openBlock(), _createElementBlock(\"div\", {\n              class: \"box\",\n              id: id,\n              key: i + 1,\n              onClick: _withModifiers(($event: any) => (onClick(i + 1)), [\"prevent\"]),\n              onTouchend: _withModifiers(($event: any) => (onClick(i + 1)), [\"prevent\"])\n            }, null, 40, _hoisted_4))\n          }), 128))\n        ])\n      ])\n    ]),\n    _createElementVNode(\"div\", _hoisted_5, [\n      _createTextVNode(\" MAIN STATE = \" + _toDisplayString(debugInfo.value.state) + \" \", 1),\n      _createElementVNode(\"ul\", null, [\n        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(debugInfo.value.videoPlayers, (player) => {\n          return (_openBlock(), _createElementBlock(\"li\", {\n            key: player.id\n          }, _toDisplayString(player.id) + \" - \" + _toDisplayString(player.state), 1))\n        }), 128))\n      ]),\n      _createElementVNode(\"button\", { onClick: onAdd }, \"Add video\"),\n      _createElementVNode(\"button\", { onClick: onPlay }, \"Play\"),\n      _createElementVNode(\"button\", { onClick: onPause }, \"Pause\"),\n      _createElementVNode(\"button\", { onClick: onFullscreen }, \"fullscreen\"),\n      _createElementVNode(\"div\", _hoisted_6, [\n        _createElementVNode(\"input\", {\n          type: \"range\",\n          min: \"0\",\n          max: \"100\",\n          value: \"0\",\n          class: \"slider\",\n          id: \"myRange\",\n          onInput: onChange\n        }, null, 32)\n      ])\n    ])\n  ]))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { onMounted, nextTick, ref } from \"vue\"\n\nimport SyncVideoPlayer from \"./SyncVideoPlayer\"\nimport { PlayerState } from './constants';\n\nconst multivideos = (window as any).multivideos\nconsole.log(multivideos)\n\nconst syncVideoPlayer = new SyncVideoPlayer({\n  controls: false,\n  loop: false,\n  videoPlayers: multivideos || []\n})\n\n\n// build a list of video ids equal to multivideos length\nconst ids = ref(Array.from({ length: multivideos.length }, (_, i) => `video-${i}`))\nconst debugInfo = ref({})\n\nvar count = 0;\n\nonMounted(() => {\n  syncVideoPlayer.mount();\n\n  setInterval(() => {\n    debugInfo.value = syncVideoPlayer.getDebugInfo();\n  }, 50);\n\n  // const videoElement = document.querySelector(\"#video-0 video\");\n  // console.log(\"✅✅✅✅✅ videoElement = \", videoElement)\n  // videoElement.addEventListener('play', (event) => {\n  //   count = count + 1;\n  //   try{\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\", count)\n  //     syncVideoPlayer.play();\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\")\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n\n  // videoElement.addEventListener('pause', (event) => {\n  //   try{\n  //     syncVideoPlayer.pause();\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n  \n\n  // const buttonTest = document.querySelector('.vjs-play-control');\n  // if (buttonTest) {\n  //   buttonTest.addEventListener('click', (event) => {\n  //     event.preventDefault();\n  //     event.stopPropagation(); \n  //     if(buttonTest.classList.contains('vjs-paused'))\n  //     {\n  //       console.log(\"✅✅✅✅✅ Play ✅✅✅✅✅\")\n  //     }\n  //     else {\n  //       console.log(\"✅✅✅✅✅ Pause ✅✅✅✅✅\")\n  //     }\n  //   });\n  // }\n\n})\n\n\n// function resizeVideoContainers() {\n//   /** resize video containers so it fits a 2/3 - 1/3 */\n\n//   console.log(\"resizeVideoContainers\")\n//   const mainVideoContainer = document.getElementById(\"main-video\")\n//   const mainVideoHeight = mainVideoContainer?.clientHeight\n//   // set height to thumbnails list\n//   const thumbnailsVideos = document.getElementById(\"thumbnails-videos\")\n//   // check if window size is less than 1280px (thumbnails wraps below in this case)\n//   let thumbnailsVideoHeight = mainVideoHeight\n//   if (window.innerWidth < 1280) {\n//     thumbnailsVideoHeight = mainVideoHeight / 2\n\n//   }\n//   console.log(thumbnailsVideos, thumbnailsVideoHeight)\n\n//   thumbnailsVideos!.style.height = `${thumbnailsVideoHeight}px`\n// }\n\n\nasync function onPlay() {\n  await syncVideoPlayer.play()\n}\n\nasync function onPause() {\n  await syncVideoPlayer.pause()\n}\n\nfunction onAdd() {\n  // create area for video1\n  const id = `video-${Math.random().toString(36).substring(2, 9)}`\n  ids.value.push(id)\n  nextTick(() => {\n    // add video\n    syncVideoPlayer.addVideoPlayer({\n      id: `#${id}`,\n      initialSrc:\n        \"https://static.videezy.com/system/resources/previews/000/004/294/original/18_20Dragon_20Coaster_20Part_202.mp4\"\n    })\n  })\n}\n\nfunction onFullscreen() {\n  document.getElementById(\"multivideo\")!.requestFullscreen()\n}\n\nasync function onClick(index: number) {\n  syncVideoPlayer.swapVideo(0, index)\n}\n\nasync function onChange(e: Event) {\n  const value = (e.target as HTMLInputElement).value\n  await syncVideoPlayer.timeTo(parseFloat(value))\n}\n\n\n</script>\n\n<template>\n  <div>\n    <div>\n      <div class=\"container\" id=\"fullscreen-part\">\n        <div id=\"main-video\">\n          <div class=\"box\" id=\"video-0\" :key=\"0\" @click=\"onClick(0)\" @touchend=\"onClick(0)\"></div>\n        </div>\n        <div id=\"thumbnails-videos\">\n          <div v-for=\"(id, i) in ids.slice(1)\" class=\"box\" :id=\"id\" :key=\"i + 1\" @click.prevent=\"onClick(i + 1)\"\n            @touchend.prevent=\"onClick(i + 1)\"></div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"controls\">\n      MAIN STATE = {{ debugInfo.state }}\n      <ul>\n        <li v-for=\"player in debugInfo.videoPlayers\" :key=\"player.id\">\n          {{ player.id }} - {{ player.state }}\n        </li>\n      </ul>\n\n      <button @click=\"onAdd\">Add video</button>\n      <button @click=\"onPlay\">Play</button>\n      <button @click=\"onPause\">Pause</button>\n      <button @click=\"onFullscreen\">fullscreen</button>\n      <!-- range selector for time -->\n      <div class=\"time\">\n        <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" class=\"slider\" id=\"myRange\" @input=\"onChange\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<style>\n.container {\n  position: relative;\n}\n\n#thumbnails-videos {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 25%;\n  margin-left: 10px;\n\n  max-height: 100%;\n  overflow-y: auto;\n}\n</style>\n","import script from \"./VideoComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./VideoComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./VideoComponent.vue?vue&type=style&index=0&id=482f0b94&lang=css\"\n\nconst __exports__ = script;\n\nexport default __exports__","import \"./compatibility\"\nimport { createApp } from \"vue\"\n\nimport ChatComponent from \"./components/ChatComponent.vue\"\nimport NotificationsBell from \"./components/NotificationsBell.vue\"\nimport VideoComponent from \"./video/VideoComponent.vue\"\n\nimport axios from \"axios\";\n// default axios config\naxios.defaults.xsrfHeaderName = \"X-CSRFTOKEN\";\naxios.defaults.xsrfCookieName = \"csrftoken\";\naxios.defaults.withCredentials = true\n\nif (document.getElementById(\"chat\")) {\n  createApp(ChatComponent).mount('#chat')\n}\n\nif (document.getElementById(\"notifications\")) {\n  createApp(NotificationsBell).mount('#notifications')\n}\n\nif(document.getElementById(\"multivideo\")) {\n  createApp(VideoComponent).mount('#multivideo');\n}"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","status","responseURL","indexOf","responseHeaders","getAllResponseHeaders","responseData","responseType","response","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","e","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","defaults","createInstance","defaultConfig","context","instance","prototype","extend","axios","create","instanceConfig","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","interceptors","arguments","chain","interceptor","unshift","fulfilled","rejected","push","length","shift","getUri","replace","handlers","use","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","error","Error","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","axiosKeys","concat","otherKeys","Object","keys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","process","call","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","JSON","stringify","parse","maxContentLength","maxBodyLength","thisArg","args","Array","i","apply","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","trim","substr","callback","arr","constructor","FormData","result","ArrayBuffer","isView","getPrototypeOf","isFunction","pipe","URLSearchParams","str","product","obj","l","hasOwnProperty","assignValue","a","b","stripBOM","content","charCodeAt","testVideo","canPlayType","webm","container","getElementById","p","classList","add","prepend","innerHTML","sfc","props","__vccOpts","isCallable","tryToString","$TypeError","argument","$String","String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","O","index","includes","DESCRIPTORS","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","uncurryThis","stringSlice","it","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","f","createPropertyDescriptor","object","bitmap","enumerable","configurable","makeBuiltIn","defineGlobalProperty","options","simple","global","unsafe","nonConfigurable","nonWritable","fails","get","EXISTS","MAX_SAFE_INTEGER","version","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","exec","NATIVE_BIND","Function","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","aFunction","namespace","aCallable","isNullOrUndefined","V","P","func","check","Math","globalThis","self","g","toObject","classof","$Object","propertyIsEnumerable","store","functionToString","inspectSource","set","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","getterFor","TYPE","state","type","metadata","facade","STATE","documentAll","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","toLength","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","getter","setter","arity","ceil","floor","trunc","x","n","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","enumBugKeys","getOwnPropertyNames","getOwnPropertySymbols","names","$propertyIsEnumerable","NASHORN_BUG","input","pref","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","uid","SHARED","IS_PURE","mode","copyright","license","V8_VERSION","symbol","Symbol","toIntegerOrInfinity","max","min","integer","IndexedObject","requireObjectCoercible","len","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","proto","item","argCount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","d","definition","o","makeMap","expectsLowerCase","Set","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","startsWith","assign","splice","hasOwnProperty$1","isMap","toTypeString","isSet","isRegExp","isPromise","catch","objectToString","toRawType","isIntegerKey","parseInt","isReservedProp","cacheStringFunction","cache","hit","camelizeRE","camelize","_","hyphenateRE","hyphenate","capitalize","toHandlerKey","s","hasChanged","oldValue","is","invokeArrayFns","arg","def","looseToNumber","parseFloat","isNaN","toNumber","Number","NaN","_globalThis","getGlobalThis","GLOBALS_ALLOWED","isGloballyAllowed","normalizeStyle","res","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","normalizeProps","class","klass","style","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","equal","looseEqual","aValidType","bValidType","getTime","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","findIndex","toDisplayString","replacer","_key","__v_isRef","size","entries","reduce","val2","stringifySymbol","values","map","_a","activeEffectScope","activeEffect","EffectScope","detached","_active","effects","cleanups","parent","scopes","active","run","currentEffectScope","on","off","stop","fromParent","last","pop","effectScope","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","ReactiveEffect","trigger","scheduler","deps","_dirtyLevel","_trackId","_runnings","_shouldSchedule","_depsLength","dirty","pauseTracking","dep","computed","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","onStop","effect2","cleanupDepEffect","trackId","delete","cleanup","_effect","lazy","runner","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","lastDirtyLevel","scheduleEffects","allowRecurse","createDep","Map","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","track","depsMap","newValue","oldTarget","newLength","key2","getDepFromReactive","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","toRaw","BaseReactiveHandler","_isReadonly","_shallow","receiver","isReadonly2","shallow","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","MutableReactiveHandler","super","isOldValueReadonly","isReadonly","isShallow","hadKey","deleteProperty","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","get2","deleteEntry","clear","hadItems","createForEach","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","next","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","iteratorMethods","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","Proxy","isReactive","isProxy","raw","markRaw","ComputedRefImpl","_setter","isSSR","_value","triggerRefValue","_cacheable","trackRefValue","_dirty","computed$1","getterOrOptions","debugOptions","onlyGetter","cRef","ref2","newVal","r","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","_rawValue","useDirectValue","triggerRef","unref","toValue","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","_get","_set","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","__v_isReadonly","toRef","defaultValue","TrackOpTypes","TriggerOpTypes","assertNumber","ErrorCodes","ErrorTypeStrings$1","callWithErrorHandling","err","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","vnode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","logError","console","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","findInsertionIndex","start","end","middle","middleJob","middleJobId","getId","pre","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","sort","Infinity","comparator","diff","devtools$1","devtoolsNotInstalled","setDevtoolsHook$1","hook","_b","enabled","event","emit","HTMLElement","replay","__VUE_DEVTOOLS_HOOK_REPLAY__","newHook","setTimeout","DeprecationTypes$1","warnDeprecation","globalCompatConfig","MODE","configureCompat$1","getCompatConfigForKey","compatConfig","isCompatEnabled","enableForBuiltIn","__isBuiltIn","rawMode","assertCompatEnabled","softAssertCompatEnabled","checkCompatEnabled","eventRegistryMap","getRegistry","events","once","wrapped","vm","cbs","emit$1","compatModelEventPrefix","convertLegacyVModelProps","shapeFlag","dynamicProps","comp","model","applyModelFromMixins","mixins","modelValue","m","compatModelEmit","modelHandler","rawArgs","isUnmounted","modelArg","modifiersKey","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","asMixin","emitsCache","cached","emits","hasExtends","extendEmits","raw2","normalizedFromExtend","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","_scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","_ns","renderComponentRoot","Component","withProxy","propsOptions","slots","attrs","render","renderCache","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","root","some","filterModelListeners","cloneVNode","cls","dirs","transition","filterSingleRoot","children","recurse","singleRoot","child","isVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","nextKeys","updateHOCHostEl","subTree","suspense","activeBranch","COMPONENTS","DIRECTIVES","FILTERS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","for","resolveDynamicComponent","resolveDirective","resolveFilter$1","warnMissing","currentInstance","selfName","getComponentName","registry","isSuspense","__isSuspense","suspenseId","SuspenseImpl","n1","n2","anchor","parentComponent","parentSuspense","slotScopeIds","rendererInternals","mountSuspense","patchSuspense","hydrate","hydrateSuspense","createSuspenseBoundary","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","patch","hiddenContainer","pendingBranch","ssContent","ssFallback","setActiveBranch","um","unmount","newBranch","newFallback","isInFallback","isHydrating","isSameVNodeType","pendingId","fallback","move","parentNode","parentSuspenseId","isSuspensible","isVNodeSuspensible","initialAnchor","resume","sync","vnode2","parentComponent2","container2","delayEnter","afterLeave","hasUnresolvedAncestor","fallbackVNode","namespace2","anchor2","mountFallback","registerDep","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncDep","asyncSetupResult","asyncResolved","handleSetupResult","placeholder","parentSuspense2","doRemove","node","hydrateNode","isSlotChildren","normalizeSuspenseSlot","default","block","trackBlock","isBlockTreeEnabled","openBlock","currentBlock","closeBlock","singleChild","dynamicChildren","queueEffectWithSuspense","branch","suspensible","legacyDirectiveHookMap","beforeMount","mounted","updated","unmounted","mapCompatDirectiveHook","dir","mappedName","mapped","mappedHook","ssrContextKey","useSSRContext","inject","watchEffect","doWatch","watchPostEffect","flush","watchSyncEffect","INITIAL_WATCHER_VALUE","watch","immediate","deep","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","traverse","forceTrigger","isMultiSource","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","__watcherHandles","fill","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","reset","setCurrentInstance","segments","depth","currentDepth","withDirectives","directives","getExposeProxy","bindings","modifiers","invokeDirectiveHook","oldBindings","binding","leaveCbKey","enterCbKey$1","useTransitionState","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","appear","Boolean","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","BaseTransitionImpl","setup","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","hasFound","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","leavingHooks","update","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","BaseTransition","callHook","callAsyncHook","every","hook2","hooks","beforeEnter","leavingVNode","enter","afterHook","cancelHook","called","cancelled","leave","clone","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","onError","userOnError","resolvedComp","pendingRequest","retries","retry","load","thisRequest","userRetry","userFail","toStringTag","__asyncResolved","createInnerComp","loaded","delayed","ce","__isKeepAlive","KeepAliveImpl","include","exclude","sharedContext","renderer","_unmount","storageContainer","resetShapeFlag","pruneCache","pruneCacheEntry","activate","instance2","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","onVnodeUnmounted","matches","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","cachedVNode","KeepAlive","pattern","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","__weh","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","getCompatChildren","walk","vnodes","getCompatListeners","listeners","convertLegacyRenderFn","_rc","_compatChecked","_compatWrapped","compatH","propsOrChildren","t","is2ndArgArrayChildren","convertLegacySlots","convertLegacyDirectives","convertLegacyProps","skipLegacyRootLevelProps","legacyProps","converted","handlerKey","convertLegacyEventKey","existing","incoming","staticClass","staticStyle","slotName","slot","slotChildren","scopedSlots","normalizeChildren","defineLegacyVNodeProperties","getInstance","componentOptions","defineProperties","tag","elm","componentInstance","text","Ctor","propsData","normalizedFunctionalComponentMap","legacySlotProxyHandlers","convertLegacyFunctionalComponent","legacyFn","Func","legacyCtx","injections","resolveInjections","displayName","renderList","renderItem","from","createSlots","dynamicSlots","j","renderSlot","noSlotted","isCE","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","toHandlers","preserveCaseIfNecessary","legacyBindObjectProps","_tag","_asProp","isSync","camelizedKey","hyphenatedKey","$event","legacyBindObjectListeners","mergeProps","legacyRenderSlot","bindObject","legacyresolveScopedSlots","hasDynamicKeys","mapKeyToName","staticCacheMap","legacyRenderStatic","staticRenderFns","legacyCheckKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","configKeyCodes","keyCodes","mappedKeyCode","isKeyNotMatch","expect","actual","legacyMarkOnce","tree","legacyBindDynamicKeys","legacyPrependModifier","installCompatInstanceProperties","del","$set","$delete","$mount","_compat_mount","$destroy","_compat_destroy","$slots","$scopedSlots","$on","$once","$off","$children","$listeners","$vnode","$options","resolveMergedOptions","$parent","_self","_uid","_data","_isMounted","_isDestroyed","$createElement","_o","_s","_l","_t","_q","_i","_m","_f","_k","_v","createTextVNode","_e","createCommentVNode","_u","_g","_p","getPublicInstance","isStatefulComponent","publicPropertiesMap","$el","$data","$props","$attrs","$refs","refs","$root","$emit","$forceUpdate","$nextTick","$watch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","desc","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","deepMergeData","to","toVal","fromVal","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","useSlots","getContext","useAttrs","setupContext","createSetupContext","normalizePropsOrEmits","mergeDefaults","opt","skipFactory","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","unsetCurrentInstance","applyOptions","beforeCreate","callHook$1","dataOptions","computedOptions","methods","watchOptions","provide","provideOptions","injectOptions","created","beforeUpdate","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","checkDuplicateProperties","methodHandler","createWatcher","provides","registerLifecycleHook","register","_hook","normalizeInject","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","mergeOptions","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","installLegacyOptionMergeStrats","singletonApp","singletonCtor","isCopyingConfig","createCompatVue$1","createApp","createSingletonApp","Vue","Vue2","createCompatApp","app","applySingletonPrototype","_createRoot","install","mixin","directive","_base","cid","extendCache","extendCtor","extendOptions","Super","SubVue","inlineOptions","mergeBase","superValue","observable","util","warn","defineReactive","configureCompat","installAppCompatProperties","installFilterMethod","installCompatMount","installLegacyAPIs","applySingletonAppMutations","_context","isRuntimeOnly","compilerOptions","isCustomElement","hasPrototypeAugmentations","descriptors","getOwnPropertyDescriptors","_component","hasNoRender","template","emptyRender","createComponentInstance","setupComponent","isCompatRoot","selectorOrEl","querySelector","SVGElement","MathMLElement","finishComponentSetup","Element","removeAttribute","_container","__vue_app__","bum","methodsToPatch","patched","WeakSet","reactiveVal","defineReactiveSimple","createAppContext","isNativeTag","performance","warnHandler","propsCache","uid$1","createAppAPI","rootComponent","rootProps","installedPlugins","_props","_instance","plugin","mount","rootContainer","isHydrate","runWithContext","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","createPropsDefaultThis","propKey","shouldSkipAttr","initProps","isStateful","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","endsWith","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","extendProps","normalizedKey","validatePropName","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","_isString","_isRef","isVFor","doSet","k","hasMismatch","isSVGContainer","namespaceURI","tagName","isMathMLContainer","getContainerType","isComment","nodeType","createHydrationFunctions","mt","mountComponent","patchProp","createText","nextSibling","insert","createComment","hasChildNodes","_vnode","firstChild","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","isTemplateNode","replaceNode","Static","needToAdoptContent","staticCount","outerHTML","hydrateFragment","hydrateElement","locateClosingAnchor","previousSibling","lastChild","hydrateChildren","forcePatch","vnodeHooks","needCallTransitionHooks","needTransition","textContent","onClick","onVnodeBeforeMount","parentVNode","fragmentSlotScopeIds","isFragment","next2","close","newNode","oldNode","parentNode2","replaceChild","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","__VUE__","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","mountChildren","resolveChildrenNamespace","unmountChildren","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","traverseStaticChildren","updateComponent","initialVNode","compatMountInstance","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","moveType","needTransition2","remove2","performLeave","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","mc","pc","pbc","currentNamespace","encoding","allowed","ch1","ch2","arrI","subComponent","isTeleport","__isTeleport","isTeleportDisabled","disabled","isTargetSVG","isTargetMathML","resolveTarget","select","targetSelector","TeleportImpl","mainAnchor","targetAnchor","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","shouldRemove","hydrateTeleport","isReorder","targetNode","_lpa","Teleport","ut","normalizedAsyncComponentMap","convertLegacyAsyncComponent","fallbackPromise","rj","loading","convertLegacyComponent","functional","disableTracking","vnodeArgsTransformer","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","mergedProps","flag","createStaticVNode","numberOfNodes","asBlock","memo","slotFlag","toMerge","emptyAppContext","exposeProxy","attrsProxy","slotsProxy","bc","rtg","rtc","sp","internalSetCurrentInstance","setInSSRSetupState","registerGlobalSetter","setters","compile","installWithProxy","setupResult","setupStatefulComponent","resolvedResult","__ssrInlineRender","ssrRender","registerRuntimeCompiler","_compile","skipOptions","delimiters","componentCompilerOptions","finalCompilerOptions","getAttrsProxy","includeInferred","__name","useModel","camelizedName","hyphenatedName","localValue","propValue","modifierKey","i2","initCustomFormatter","withMemo","isMemoSame","ErrorTypeStrings","devtools","setDevtoolsHook","_ssrUtils","ssrUtils","resolveFilter","_compatUtils","createCompatVue","compatUtils","DeprecationTypes","svgNS","mathmlNS","doc","templateContainer","nodeOps","insertBefore","removeChild","createElementNS","multiple","createTextNode","nodeValue","selector","before","cloneNode","wrapper","appendChild","TRANSITION","ANIMATION","vtcKey","Transition","resolveTransitionProps","DOMTransitionPropsValidators","css","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","h2","hasExplicitCallback","baseProps","legacyClassEnabled","legacyEnterFromClass","legacyAppearFromClass","legacyLeaveFromClass","toLegacyClass","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","legacyClass","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","_vtc","requestAnimationFrame","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","removeEventListener","onEnd","styles","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","body","offsetHeight","patchClass","isSVG","transitionClasses","className","vShowOldKey","vShow","display","setDisplay","initVShowForSSR","getSSRProps","CSS_VAR_TEXT","useCssVars","updateTeleports","vars","querySelectorAll","setVarsOnNode","setVars","setVarsOnVNode","ob","MutationObserver","observe","childList","disconnect","setProperty","patchStyle","currentDisplay","isCssString","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","compatCoerceAttr","isBoolean","isEnumeratedAttr","v2CoercedValue","patchDOMProp","getAttribute","needRemove","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","_vts","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","isNativeOn","shouldSetAsProp","_trueValue","_falseValue","defineCustomElement","hydrate2","Comp","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","BaseClass","_def","_connected","_resolved","_numberProps","_ob","shadowRoot","attachShadow","_resolveProps","connectedCallback","_update","_resolveDef","disconnectedCallback","attributes","_setAttr","mutations","attributeName","isAsync","numberProps","_applyStyles","asyncDef","declaredPropKeys","_setProp","_getProp","shouldReflect","shouldUpdate","dispatch","dispatchEvent","CustomEvent","detail","useCssModule","modules","mod","positionMap","newPositionMap","moveCbKey","enterCbKey","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","transform","webkitTransform","transitionDuration","propertyName","cssTransitionProps","getBoundingClientRect","TransitionGroup","oldPos","newPos","dx","left","dy","top","getModelAssigner","onCompositionStart","composing","onCompositionEnd","Event","assignKey","vModelText","castToNumber","domValue","elValue","activeElement","vModelCheckbox","_modelValue","elementValue","getValue","checked","found","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","_assigning","setSelected","_binding","isMultiple","isArrayValue","option","optionValue","optionType","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","modelToUse","initVModelForSSR","systemModifiers","modifierGuards","stopPropagation","prevent","preventDefault","currentTarget","ctrl","ctrlKey","shiftKey","alt","altKey","meta","metaKey","button","right","exact","withModifiers","_withMods","cacheKey","guard","keyNames","esc","space","up","down","withKeys","globalKeyCodes","_withKeys","eventKey","keyCode","codes","rendererOptions","enabledHydration","ensureRenderer","ensureHydrationRenderer","containerOrSelector","normalizeContainer","resolveRootNamespace","createSSRApp","ssrDirectiveInitialized","initDirectivesForSSR","runtimeDom","freeze","__proto__","createElementVNode","wrappedCreateApp","show","Vue$1","_cache","$setup","_component_vue_advanced_chat","_resolveComponent","_openBlock","_createBlock","currentUserId","rooms","messagesLoaded","roomId","messages","title","ROOMS_EMPTY","ROOM_EMPTY","NEW_MESSAGES","MESSAGE_DELETED","MESSAGES_EMPTY","CONVERSATION_STARTED","TYPE_MESSAGE","SEARCH","IS_ONLINE","LAST_SEEN","IS_TYPING","onSendMessage","sendMessage","makeMap$2","list2","NOOP$1","extend$2","hasOwnProperty$3","hasOwn$1","isArray$2","isMap$1","toTypeString$1","isFunction$2","isString$2","isObject$2","objectToString$1","hasChanged$1","def$1","w","wasTracked","trackOpBit","newTracked","initDepMarkers","finalizeDepMarkers","ptr","effectTrackDepth","maxMarkerBits","cleanupEffect","deferStop","trackEffects","shouldTrack2","triggerEffect","get$1","createGetter","shallowGet","readonlyGet","set$1","createSetter","shallowSet","get$1$1","isShallow2","has$1","set$1$1","self2","makeMap$1","isArray$1","isString$1","isObject$1","isFunction$1","onRE$1","isOn$1","isModelListener$1","extend$1","hasOwnProperty$2","cacheStringFunction$1","camelizeRE$1","camelize$1","hyphenateRE$1","hyphenate$1","capitalize$1","toNumber$1","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","currentPreFlushParentJob","p2","queueCb","activeQueue","pendingQueue","queuePreFlushCb","parentJob","isModelListener2","render3","flush2","path2","_leaveCb","callHook2","_enterCb","internalInstance","beforeMount2","updated2","unmounted2","unwrapInjectedRef","set2","register2","unwrapRef","directive2","hostCloneNode","areChildrenSVG","update2","remove3","text2","compile$1","createAttrsProxy","onRE","content2","_getNow","skipTimestampCheck","_getNow2","skipTimestampCheck2","createEvent","timeStamp","ffMatch","addEventListener$1","_vei","nativeOnRE","resolve2","def2","hasOptions","rawKeys","_moveCb","_vod","_export_sfc","_sfc_main$q","infinite","required","messageId","_hoisted_1$q","_hoisted_2$n","_hoisted_3$j","_hoisted_4$g","_hoisted_5$b","_hoisted_6$7","_sfc_render$q","Loader","_sfc_main$p","param","svgItem","toggle","menu","file","paperclip","emoji","pencil","checkmark","eye","dropdown","deleted","microphone","svgId","_hoisted_1$p","_hoisted_2$m","_hoisted_3$i","_sfc_render$p","xmlns","width","height","viewBox","SvgIcon","_sfc_main$o","textMessages","showSearch","showAddRoom","loadingRooms","showSearchBar","_hoisted_1$o","_hoisted_2$l","_sfc_render$o","_component_svg_icon","autocomplete","onInput","RoomsSearch","element$1","decodeNamedCharacterReference","characterReference2","char","items","parameters","chunkStart","combineExtensions","extensions","syntaxExtension","extension","maybe","code2","constructs","combineHtmlExtensions","htmlExtensions","htmlExtension","decodeNumericCharacterReference","fromCharCode","characterReferences","replace2","value2","normalizeIdentifier","unicodePunctuationRegex","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","sanitizeUri","normalizeUri","colon","questionMark","numberSign","slash","skip","protocolHref","protocolSrc","settings","tags","definitions2","buffers","mediaStack","tightStack","defaultHandlers","blockQuote","onenterblockquote","codeFenced","onentercodefenced","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","onentercodeindented","codeText","onentercodetext","onentercontent","onenterdefinition","definitionDestinationString","onenterdefinitiondestinationstring","definitionLabelString","definitionTitleString","emphasis","onenteremphasis","htmlFlow","onenterhtmlflow","htmlText","onenterhtml","image","onenterimage","label","link","onenterlink","listItemMarker","onenterlistitemmarker","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterlistunordered","paragraph","onenterparagraph","reference","resource","onenterresource","resourceDestinationString","onenterresourcedestinationstring","resourceTitleString","setextHeading","onentersetextheading","strong","onenterstrong","exit","atxHeading","onexitatxheading","atxHeadingSequence","onexitatxheadingsequence","autolinkEmail","onexitautolinkemail","autolinkProtocol","onexitautolinkprotocol","onexitblockquote","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitflowcode","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","codeFlowValue","onexitcodeflowvalue","onexitcodetext","codeTextData","onexitdefinition","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexitemphasis","hardBreakEscape","onexithardbreak","hardBreakTrailing","onexithtml","htmlFlowData","htmlTextData","onexitmedia","onexitlabel","labelText","onexitlabeltext","lineEnding","onexitlineending","onexitlistordered","onexitlistunordered","onexitparagraph","referenceString","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","onexitstrong","thematicBreak","onexitthematicbreak","definitions","lineEndingIfNeeded","encode$1","setData","getData","lineEndingStyle","defaultLineEnding","compile2","listStack","head","sliceSerialize","prepareList","null","handles","kind","handle","atMarker","containerBalance","loose","_loose","buf","lineEnding2","buffer2","previous2","onexitlistitem","count","labelId","referenceId","destination","media","context2","allowDangerousProtocol","allowDangerousHtml","uri","factorySpace","ok","limit","POSITIVE_INFINITY","size2","prefix","consume","content$1","tokenize","initializeContent","contentStart","attempt","parser","contentInitial","afterContentStartConstruct","paragraphInitial","lineStart","contentType","previous","document$2","initializeDocument","containerConstruct","tokenizeContainer","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","point","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","thereIsANewContainer","thereIsNoNewContainer","offset","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","entry","nok","disable","classifyCharacter","resolveAll","constructs2","attention","tokenizeAttention","resolveAllAttention","group","openingSequence","closingSequence","nextEvents","_close","_open","movePoint","insideSpan","attentionMarkers2","attentionMarkers","marker","inside","after","column","_bufferIndex","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","partial","tokenizeBlockQuoteStart","tokenizeBlockQuoteContinuation","contStart","contBefore","characterEscape","tokenizeCharacterEscape","characterReference","tokenizeCharacterReference","numeric","nonLazyContinuation","tokenizeNonLazyContinuation","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","info","metaBefore","contentBefore","beforeContentChunk","contentChunk","effects2","ok2","nok2","startBefore","start2","beforeSequenceClose","sequenceClose","sequenceCloseAfter","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","furtherStart2","tokenizeCodeText","resolveCodeText","tailExitIndex","headEnterIndex","between","subtokenize","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","adjust","breaks","_gfmTasklistFirstContentOfListItem","tokenizeContent","resolveContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","factoryDestination","literalType","literalMarkerType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","begin","escape","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","defined","titleBefore2","beforeMarker","titleAfter","titleAfterOptionalWhitespace","tokenizeHardBreakEscape","headingAtx","tokenizeHeadingAtx","resolveHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","tokenizeHtmlFlow","resolveTo","resolveToHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","continuationAfter","continuationStartNonLazy","continuationBefore","continuationRawEndTag","tokenizeHtmlText","returnState","instruction","tagOpen","declaration","commentEnd","comment","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","tokenizeLabelEnd","resolveToLabelEnd","resolveAllLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","_inactive","_balanced","labelStart","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","tokenizeLineEnding","tokenizeThematicBreak","sequence","list","tokenizeListStart","tokenizeListContinuation","tokenizeListEnd","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent$1","initialSize","onBlank","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","setextUnderline","tokenizeSetextUnderline","resolveToSetextUnderline","definition2","heading","flow$1","initializeFlow","initial","atBlankEnding","flowInitial","afterConstruct","resolver","createResolver","string$1","initializeFactory","text$3","field","initializeText","resolveAllLineSuffixes","notText","extraResolver","resolveAllText","chunks","tabs","bufferIndex","chunk","_index","createTokenizer","initialize","columnStart","resolveAllConstructs","exit2","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","main","addResult","expandTabs","serializeChunks","sliceChunks","accountForPotentialSkip","chunkIndex","go","fields","construct","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","from2","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","startIndex","startBufferIndex","endIndex","endBufferIndex","view","atTab","document$1","text$2","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","endPosition","lastIndex","micromark","wwwPrefix","tokenizeWwwPrefix","tokenizeDomain","tokenizePath","trail","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","text$1","gfmAutolinkLiteral","dot","gfmAtext","previousUnbalanced","atext","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trail2","trailCharRefStart","trailBracketAfter","trailCharRefInside","_gfmAutolinkLiteralWalkedInto","gfmAutolinkLiteralHtml","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","anchorFromToken","indent","tokenizeIndent","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","gfmFootnotes","codePointAt","string2","callStart","callData","callEscape","labelAtMarker","whitespaceAfter","own","emptyOptions","defaultBackLabel","referenceIndex","rereferenceIndex","gfmFootnoteHtml","labelTagName","labelAttributes","backLabel","clobberPrefix","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCallString","footnoteStack","calls","counts","counter","safeId","reuseCounter","references","$0","gfmStrikethroughHtml","strikethrough","gfmStrikethrough","options_","single","singleTilde","tokenizeStrikethrough","resolveAllStrikethrough","insideSpan2","alignment","none","center","gfmTableHtml","table","tableAlign","_align","tableBody","tableData","tableColumn","align","tableHead","tableHeader","tableRow","$1","EditMap","add2","addImpl","vecs","editMap","at","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","cell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","range","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","exits","related","side","reFlow","reText","gfmTagfilterHtml","exitHtmlData","gfmTaskListItemHtml","taskListCheck","taskListCheckValueChecked","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","gfmHtml","carriageReturn","lineFeed","carriageReturnLineFeed","horizontalTab","virtualSpace","nul","soh","stx","etx","eot","enq","ack","bel","bs","ht","lf","vt","ff","cr","so","si","dle","dc1","dc2","dc3","dc4","nak","syn","etb","can","em","sub","fs","gs","rs","us","exclamationMark","quotationMark","dollarSign","percentSign","ampersand","apostrophe","leftParenthesis","rightParenthesis","asterisk","plusSign","comma","dash","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","semicolon","lessThan","equalsTo","greaterThan","atSign","uppercaseA","uppercaseB","uppercaseC","uppercaseD","uppercaseE","uppercaseF","uppercaseG","uppercaseH","uppercaseI","uppercaseJ","uppercaseK","uppercaseL","uppercaseM","uppercaseN","uppercaseO","uppercaseP","uppercaseQ","uppercaseR","uppercaseS","uppercaseT","uppercaseU","uppercaseV","uppercaseW","uppercaseX","uppercaseY","uppercaseZ","leftSquareBracket","backslash","rightSquareBracket","caret","underscore","graveAccent","lowercaseA","lowercaseB","lowercaseC","lowercaseD","lowercaseE","lowercaseF","lowercaseG","lowercaseH","lowercaseI","lowercaseJ","lowercaseK","lowercaseL","lowercaseM","lowercaseN","lowercaseO","lowercaseP","lowercaseQ","lowercaseR","lowercaseS","lowercaseT","lowercaseU","lowercaseV","lowercaseW","lowercaseX","lowercaseY","lowercaseZ","leftCurlyBrace","verticalBar","rightCurlyBrace","tilde","degree","byteOrderMarker","replacementCharacter","underlineTokenize","insideEscape","underlineConstruct","underline","underlineHtml","usertagTokenize","usertagConstruct","usertag","usertagHtml","users","usertagContent","userId","user","find","user2","markdown","textFormatting","gfmDisabled","linkify","markdown2","replaceAll","singleLine","element2","types","innerText","IMAGE_TYPES","VIDEO_TYPES","AUDIO_TYPES","_sfc_main$n","roomList","reply","linkOptions","parsedMessage","checkType","checkImageType","lastIndexOf","slashIndex","substring","isMedia","setImageSize","Image","onLoad","img","ratio","round","src","openTag","_hoisted_1$n","_hoisted_2$k","_hoisted_3$h","_sfc_render$n","rel","FormatMessage","HANDLERS_PROPERTY","HAS_WINDOWS","HAS_NAVIGATOR","IS_TOUCH","msMaxTouchPoints","EVENTS","processDirectiveArguments","bindingValue","isFunction2","middleware","isActive","detectIframe","capture","execHandler","onFauxIframeClick","contains","onEvent","composedPath","isClickOutside","eventName","srcTarget","documentElement","detectIframeEvent","thisHandler","vClickOutside","typingText","room","typingUsers","checkMediaType","isImageFile","isVideoFile","isImageVideoFile","isAudioFile","_sfc_main$m","clickOutside","roomActions","roomMenuOpened","getLastMessage","isTyping","lastMessage","senderId","userStatus","isMessageCheckmarkVisible","saved","distributed","formattedDuration","files","isAudio","roomActionHandler","action","closeRoomMenu","_hoisted_1$m","_hoisted_2$j","_hoisted_3$g","_hoisted_4$f","_hoisted_5$a","_hoisted_6$6","_hoisted_7$6","_hoisted_8$4","_hoisted_9$4","_hoisted_10$4","_hoisted_11$3","_hoisted_12$3","_hoisted_13$1","_sfc_render$m","_component_format_message","_directive_click_outside","avatar","roomName","timestamp","new","idx","unreadCount","RoomContent","filteredItems","formatString","_sfc_main$l","showRoomsList","isMobile","roomsLoaded","customSearchRoomEnabled","scrollDistance","filteredRooms","observer","showLoader","loadingMoreRooms","selectedRoomId","oldVal","initIntersectionObserver","rootMargin","threshold","IntersectionObserver","isIntersecting","loadMoreRooms","searchRoom","ev","openRoom","_hoisted_1$l","_hoisted_2$i","_hoisted_3$f","_hoisted_4$e","_sfc_render$l","_component_rooms_search","_component_loader","_component_room_content","onSearchRoom","onAddRoom","fRoom","onRoomActionHandler","RoomsList","_sfc_main$k","singleRoom","roomInfoEnabled","menuActions","messageSelectionEnabled","messageSelectionActions","selectedMessagesTotal","menuOpened","messageSelectionAnimationEnded","lastChanged","menuActionHandler","closeMenu","messageSelectionActionHandler","_hoisted_1$k","_hoisted_2$h","_hoisted_3$e","_hoisted_4$d","_hoisted_5$9","_hoisted_6$5","_hoisted_7$5","_hoisted_8$3","_hoisted_9$3","_hoisted_10$3","_hoisted_11$2","_hoisted_12$2","_hoisted_13","_sfc_render$k","CANCEL_SELECT_MESSAGE","RoomHeader","assertNonEmptyString","DB_VERSION_CURRENT","DB_VERSION_INITIAL","STORE_EMOJI","STORE_KEYVALUE","STORE_FAVORITES","FIELD_TOKENS","INDEX_TOKENS","FIELD_UNICODE","INDEX_COUNT","FIELD_GROUP","FIELD_ORDER","INDEX_GROUP_AND_ORDER","KEY_ETAG","KEY_URL","KEY_PREFERRED_SKINTONE","MODE_READONLY","MODE_READWRITE","INDEX_SKIN_UNICODE","FIELD_SKIN_UNICODE","DEFAULT_DATA_SOURCE$1","DEFAULT_LOCALE$1","uniqBy$1","uniqEmoji","emojis","unicode","initialMigration","db","createObjectStore","keyPath","indexes","indexName","keyPath2","multiEntry","createIndex","openReqs","databaseCache","onCloseListeners","handleOpenOrDeleteReq","req","onblocked","onsuccess","async","createDatabase","dbName","indexedDB","onupgradeneeded","oldVersion","onclose","closeDatabase","openDatabase","dbPromise","storeName","readOnlyOrReadWrite","txn","transaction","durability","objectStore","oncomplete","listener","deleteDatabase","addOnCloseListener","irregularEmoticons","extractTokens","word","MIN_SEARCH_TEXT_LENGTH$1","normalizeTokens","transformEmojiData","emojiData","annotation","emoticon","order","shortcodes","skins","version2","tokens","flat","res2","skinTones","skinUnicodes","skinVersions","tone","emoji2","version3","callStore","getIDB","getAllIDB","commit","minBy","array","minItem","findCommonMembers","arrays","uniqByFunc","shortestArray","results","isEmpty","hasData","eTag","oldETag","oldUrl","doFullDatabaseScanForSingleResult","predicate","BATCH_SIZE","emojiStore","lastKey","processNextBatch","getAll","IDBKeyRange","lowerBound","loadData","transformedData","metaStore","todo","checkFetched","onFetched","put","getEmojiByGroup","bound","getEmojiBySearchQuery","query","intermediateResults","checkDone","onDone","only","getEmojiByShortcode","shortcode","lowerShortcodes","_2","getEmojiByUnicode","result2","incrementFavoriteEmojiCount","getTopFavoriteEmoji","customEmojiIndex2","favoritesStore","openCursor","cursor","continue","unicodeOrName","primaryKey","custom","byName","CODA_MARKER","trie","itemToTokens","currentMap","nextMap","valuesAtCoda","search2","results2","queue2","currentMap2","entriesSortedByKey","requiredKeys$1","assertCustomEmojis","customEmojis","isArray2","firstItemIsFaulty","customEmojiIndex","sortByName","emojiToTokens","searchTrie","searchByExactMatch","searchByPrefix","shortcodeToEmoji","nameToEmoji","customEmoji","byShortcode","cleanEmoji","warnETag","requiredKeys","assertEmojiData","assertStatus","dataSource","getETag","fetch","getETagAndData","json","arrayBufferToBinaryString","binary","bytes","Uint8Array","byteLength","binaryStringToArrayBuffer","jsonChecksum","inString","inBuffer","outBuffer","crypto","subtle","digest","outBinString","checkForUpdates","eTagAndData","loadDataForFirstTime","Database","locale","_dbName","_db","_lazyUpdate","_custom","_clear","_ready","_init","empty","ready","checkReady","customs","natives","getEmojiByUnicodeOrName","getPreferredSkinTone","setPreferredSkinTone","skinTone","_shutdown","noop","blank_object","run_all","is_function","thing","safe_not_equal","src_url_equal_anchor","current_component","src_url_equal","element_src","is_empty","action_destroyer","action_result","destroy","append","detach","listen","attr","attribute","set_data","wholeText","set_input_value","set_style","important","removeProperty","set_current_component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","tick","add_render_callback","seen_callbacks","flushidx","saved_component","$$","fragment","before_update","after_update","outroing","transition_in","local","globals","destroy_block","lookup","update_keyed_each","old_blocks","get_key","dynamic","create_each_block2","get_context","old_indexes","new_blocks","new_lookup","deltas","child_ctx","abs","will_move","did_move","insert2","first","new_block","old_block","new_key","old_key","mount_component","customElement","on_mount","on_destroy","new_on_destroy","destroy_component","detaching","make_dirty","init","create_fragment2","not_equal","append_styles","parent_component","on_disconnect","callbacks","skip_bound","rest","SvelteComponent","$$props","$$set","allGroups","groups","customGroup","MIN_SEARCH_TEXT_LENGTH","NUM_SKIN_TONES","rIC","requestIdleCallback","hasZwj","versionsAndTestEmoji","TIMEOUT_BEFORE_LOADING_MESSAGE","DEFAULT_SKIN_TONE_EMOJI","DEFAULT_NUM_COLUMNS","MOST_COMMONLY_USED_EMOJI","FONT_FAMILY","DEFAULT_CATEGORY_SORTING","getTextFeature","color","canvas","textBaseline","font","fillStyle","scale","fillText","getImageData","compareFeatures","feature1","feature2","feature1Str","feature2Str","testColorEmojiSupported","determineEmojiSupportLevel","emojiSupportLevelPromise","supportedZwjEmojis","VARIATION_SELECTOR","SKINTONE_MODIFIER","ZWJ","LIGHT_SKIN_TONE","LIGHT_SKIN_TONE_MODIFIER","applySkinTone","zwjIndex","halt","incrementOrDecrement","decrement","uniqBy","summarizeEmojisForUI","emojiSupportLevel","toSimpleSkinsMap","skin","category","rAF","baselineEmojiWidth","resizeObserverSupported","ResizeObserver","calculateWidth","onUpdate","resizeObserver","contentRect","calculateTextWidth","createRange","selectNode","checkZwjSupport","zwjEmojisToCheck","baselineEmoji","emojiToDomNode","domNode","emojiWidth","supported","uniq","Map_1","get_each_context","get_each_context_1","get_each_context_2","get_each_context_3","get_each_context_4","create_each_block_4","key_1","div","div_id_value","div_class_value","div_aria_selected_value","div_title_value","div_aria_label_value","t_value","new_ctx","create_each_block_3","button_aria_controls_value","button_aria_label_value","button_aria_selected_value","button_title_value","dispose","click_handler","categories","create_else_block_1","img_src_value","ctx2","create_if_block_1","create_each_block_2","button_role_value","button_class_value","button_id_value","select_block_type","current_block_type","if_block","create_each_block_1","div0","div0_id_value","div0_class_value","div1","div1_role_value","div1_aria_labelledby_value","div1_id_value","searchResultsLabel","each_blocks","each_1_lookup","each_value_2","create_else_block","create_if_block","create_each_block","select_block_type_1","create_fragment","section","div4","input_placeholder_value","input_aria_expanded_value","input_aria_activedescendant_value","t0","span0","t1","div2","button0","t2","button0_class_value","div2_class_value","span1","t3","div3","div3_class_value","div3_aria_label_value","div3_aria_activedescendant_value","div3_aria_hidden_value","div5","div5_aria_label_value","div7","div6","div8","t4","div8_class_value","div10","div9","div10_class_value","div10_role_value","div10_aria_label_value","div10_id_value","div11","div11_class_value","div11_aria_label_value","button1","section_aria_label_value","t0_value","searchLabel","t1_value","searchDescription","t3_value","skinToneDescription","each_blocks_3","each0_lookup","each_blocks_2","each1_lookup","each_blocks_1","each2_lookup","each3_lookup","each_value_4","each_value_3","get_key_1","each_value_1","get_key_2","each_value","get_key_3","skinTonesLabel","categoriesLabel","favoritesLabel","regionLabel","$$self","$$invalidate","rootElement","tabpanelElement","skinToneDropdown","skinToneButtonText","pickerStyle","defaultFavoriteEmojis","currentGroup","activeSearchItemId","skinToneEmoji","i18n","database","customCategorySorting","initialLoad","currentEmojis","currentEmojisWithCategories","rawSearchText","searchText","searchMode","activeSearchItem","skinTonePickerExpanded","skinTonePickerExpandedAfterAnimation","currentSkinTone","activeSkinTone","skinToneButtonLabel","currentFavorites","numColumns","isRtl","scrollbarWidth","currentGroupIndex","groups$1","databaseLoaded","focus","getRootNode","fireEvent","bubbles","composed","unicodeWithSkin","currentSkinTone2","labelWithSkin","isSkinToneOption","calculateEmojiGridStyle","newNumColumns","getPropertyValue","newIsRtl","parentWidth","parentElement","newScrollbarWidth","checkZwjSupportAndUpdate","rootNode","isZwjSupported","filterEmojisByVersion","summarizeEmojis","getEmojisByGroup","getEmojisBySearchQuery","onSearchKeydown","goToNextOrPrevious","clickEmoji","onNavClick","onNavKeydown","doFocus","emojiSummary","skinTonedUnicode","onEmojiClick","onSkinToneOptionsClick","onClickSkinToneButton","onSkinToneOptionsKeydown","changeActiveSkinTone","nextSkinTone","onSkinToneOptionsKeyup","onSkinToneOptionsFocusOut","relatedTarget","input_input_handler","div3_binding","$$value","level","emojiUnsupportedMessage","div10_binding","button1_binding","section_binding","$$props2","handleDatabaseLoading","showingLoadingMessage","timeoutHandle","loadingMessage","networkErrorMessage","clearTimeout","updateEmojis","currentSearchText","newEmojis","currentGroupId","updatePreferredSkinTone","skinToneLabel","updateDefaultFavoriteEmojis","updateFavorites","dbFavorites","favorites","scrollTop","calculateCurrentEmojisWithCategories","categoriesToEmoji","Picker","DEFAULT_DATA_SOURCE","DEFAULT_LOCALE","enI18n","activities","objects","symbols","flags","PROPS","PickerElement","_dbFlush","_cmp","observedAttributes","attributeChangedCallback","attrName","_dbCreate","findParentBySelector","customElements","define","_sfc_main$j","emojiOpened","emojiReaction","positionTop","positionRight","emojiDataSource","emojiPickerHeight","emojiPickerTop","emojiPickerRight","addCustomStyling","emojiPicker","picker","nav","searchBox","openEmoji","setEmojiPickerPosition","clientY","innerWidth","innerHeight","mobileSize","roomFooterRef","roomFooterTop","pickerTopPosition","_hoisted_1$j","_sfc_render$j","_component_emoji_picker","EmojiPickerContainer","_sfc_main$i","isImage","isVideo","_hoisted_1$i","_hoisted_2$g","_hoisted_3$d","_hoisted_4$c","_sfc_render$i","localUrl","controls","RoomFile","_sfc_main$h","_hoisted_1$h","_hoisted_2$f","_hoisted_3$c","_sfc_render$h","_component_room_file","onRemoveFile","RoomFiles","_sfc_main$g","percentage","isMouseDown","onMouseDown","seekPos","calculateLineHeadPosition","progress","onMouseMove","onMouseUp","progressWidth","leftPosition","pos","clientX","_hoisted_1$g","_hoisted_2$e","_sfc_render$g","onMousedown","onMouseover","onMouseout","AudioControl","_sfc_main$f","isPlaying","convertTimeMMSS","playedTime","playerUniqId","audioSource","resetProgress","player","updateProgressTime","onTimeUpdate","seconds","playback","pause","play","currentTime","onUpdateProgress","_hoisted_1$f","_hoisted_2$d","_sfc_render$f","_component_audio_control","onChangeLinehead","onHoverAudioProgress","AudioPlayer","_sfc_main$e","messageReply","firstFile","isOtherFile","_hoisted_1$e","_hoisted_2$c","_hoisted_3$b","_hoisted_4$b","_hoisted_5$8","_hoisted_6$4","_hoisted_7$4","_hoisted_8$2","_hoisted_9$2","_hoisted_10$2","_hoisted_11$1","_hoisted_12$1","_sfc_render$e","_component_audio_player","RoomMessageReply","_sfc_main$d","filteredUsersTag","selectItem","activeUpOrDown","activeItem","_hoisted_1$d","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$d","RoomUsersTag","_sfc_main$c","filteredEmojis","_hoisted_1$c","_hoisted_2$a","_sfc_render$c","RoomEmojis","_sfc_main$b","filteredTemplatesText","_hoisted_1$b","_hoisted_2$9","_hoisted_3$9","_hoisted_4$9","_hoisted_5$7","_sfc_render$b","RoomTemplatesText","new_byte$4","Int8Array","new_short","Int16Array","new_int$d","Int32Array","new_float$f","Float32Array","new_double$1","Float64Array","new_float_n$6","sz","A","new_int_n$2","new_short_n$1","new_array_n$1","Arrays$7","toIndex","System$a","srcPos","dest","destPos","srcEnd","out","println","log","printf","Util$5","ShortBlock$3","ordinal","SQRT2","FAST_LOG10","log10","FAST_LOG10_X","y","short_block_allowed","short_block_coupled","short_block_dispensed","short_block_forced","Float$2","VbrMode$7","MAX_VALUE","vbr_off","vbr_mt","vbr_rh","vbr_abr","vbr_mtrh","vbr_default","assert$b","System","VbrMode","Float","ShortBlock","Util","Arrays","new_array_n","new_byte","new_double","new_float","new_float_n","new_int","new_int_n","new_short_n","assert","System$9","Util$4","Arrays$6","new_float$e","NewMDCT","enwindow","NS","NL","win","tantab_l","Encoder","SHORT_TYPE","cx","ca","cs","window_subband","x1","x1Pos","xr","wp","x2","mdct_short","inout","inoutPos","tc0","tc1","tc2","ts0","ts1","ts2","mdct_long","outPos","_in","ct","st","tc3","tc4","ts5","ts6","ts7","ts8","ts3","ts4","tc5","tc6","tc7","tc8","mdct_sub48","gfc","w0","w1","wk","wkPos","ch","channels_out","gr","mode_gr","band","gi","l3_side","tt","mdct_enc","mdct_encPos","samp","sb_sample","sampPos","block_type","band0","band1","mixed_block_flag","amp_filter","work","bd","arraycopy","System$8","new_float$d","new_float_n$5","III_psy_xmin","SBMAX_l","SBMAX_s","iii_psy_xmin","III_psy_ratio","thm","en","MPEGMode","_ordinal","STEREO","JOINT_STEREO","DUAL_CHANNEL","MONO","NOT_SET","System$7","VbrMode$6","new_float$c","new_float_n$4","new_int$c","assert$a","FFTOFFSET","MPG_MD_MS_LR","psy","vbr","qupvt","setModules","_bs","_psy","_qupvt","_vbr","newMDCT","adjust_ATH","gr2_max","max_pow","ATH","useAdjust","loudness_sq","aaSensitivityP","adjustLimit","adj_lim_new","updateStats","bitrate_index","mode_ext","bitrate_stereoMode_Hist","bt","bitrate_blockType_Hist","lame_encode_frame_init","gfp","inbuf","internal_flags","primebuff0","primebuff1","mf_size","BLKSIZE","framesize","lame_encode_mp3_frame","inbuf_l","inbuf_r","mp3buf","mp3bufPos","mp3buf_size","mp3count","masking_LR","masking","masking_MS","pe_use","tot_ener","ms_ener_ratio","pe","pe_MS","padding","slot_lag","frac_SpF","out_samplerate","psymodel","bufp","bufpPos","blocktype","VBR","L3psycho_anal_vbr","L3psycho_anal_ns","cod_info","NORM_TYPE","MPG_MD_LR_LR","force_ms","sum_pe_MS","sum_pe_LR","gi0","gi1","analysis","pinfo","ms_ratio","ers","energy","nsPsy","pefirbuf","fircoef","iteration_loop","format_bitstream","copy_buffer","bWriteVbrTag","addVbrFrame","pcmdata","set_frame_pinfo","ENCDELAY","POSTDELAY","MDCTDELAY","DECDELAY","SBLIMIT","CBANDS","SBPSY_l","SBPSY_s","PSFB21","PSFB12","HBLKSIZE","BLKSIZE_s","HBLKSIZE_s","START_TYPE","STOP_TYPE","MPG_MD_LR_I","MPG_MD_MS_I","Util$3","new_float$b","FFT","window2","window_s","costab","fht","fz","fzPos","k4","fi","tri","k1","k2","k3","kx","f1","f0","f3","f2","g0","g1","g2","g3","rv_tbl","fft_short","x_real","chn","bufPos","fft_long","jj","init_fft","cos","PI","VbrMode$5","Float$1","ShortBlock$2","Util$2","Arrays$5","new_float$a","new_float_n$3","new_int$b","assert$9","PsyModel","fft","LOG10","rpelev","rpelev2","rpelev_s","rpelev2_s","DELBARK","VO_SCALE","temporalmask_sustain_sec","NS_PREECHO_ATT0","NS_PREECHO_ATT1","NS_PREECHO_ATT2","NS_MSFIX","NSFIRLEN","LN_TO_LOG10","NON_LINEAR_SCALE_ENERGY","psycho_loudness_approx","loudness_power","eql_w","compute_ffts","fftenergy","fftenergy_s","wsamp_l","wsamp_lPos","wsamp_s","wsamp_sPos","gr_out","re","im","totalenergy","energy_save","athaa_loudapprox","loudness_sq_save","ma_max_i1","ma_max_i2","ma_max_m","I1LIMIT","I2LIMIT","MLIMIT","tab","init_mask_add_max_values","pow","table1","table2","table3","mask_add","m1","m2","kk","shortblock","cb_s","cb_l","table2_","vbrpsy_mask_add","calc_interchannel_masking","sb","sblock","msfix1","mld","mld_l","rmid","rside","mld_s","ns_msfix","msfix","athadjust","msfix2","athlower","ath","bm_l","thmLR","thmM","thmS","bm_s","convert_partition2scalefac_s","eb","thr","enn","thmm","bo_s_sb","bo_s","npart_s","b_lim","w_curr","PSY","bo_s_weight","w_next","convert_partition2scalefac_l","bo_l_sb","bo_l","npart_l","bo_l_weight","compute_masking_s","ebb","numlines_s","s3ind_s","ecb","s3_ss","nb_s1","blocktype_old","nb_s2","block_type_set","uselongblock","blocktype_d","short_blocks","NS_INTERP","regcoef_s","pecalc_s","mr","masking_lower","pe_s","regcoef_l","pecalc_l","pe_l","calc_energy","avg","numlines_l","rnumlines_l","calc_mask_index_l","mask_idx","last_tab_entry","vbrpsy_compute_fft_l","vbrpsy_compute_fft_s","vbrpsy_compute_loudness_approximation_l","masking_ratio","masking_MS_ratio","percep_entropy","percep_MS_entropy","numchn","pcfact","wsamp_L","wsamp_S","eb_l","eb_s","ns_hpfsmpl","mask_idx_l","mask_idx_s","ResvMax","ResvSize","firbuf2","firbufPos","sum1","sum2","attackThreshold","en_subshort","en_short","attack_intensity","ns_uselongblock","ns_attacks","last_en_subshort","pf","pfPos","pfe","ers_save","attackthre_s","attackthre","lastAttacks","s3ind","eb2","s3_ll","nb_1","nb_2","interChRatio","ATHlower","ppe","ppePos","fircoef_","vbrpsy_attack_detection","sub_short_factor","n_chn_out","n_chn_psy","firbuf","factor","vbrpsy_skip_masking_s","vbrpsy_skip_masking_l","psyvbr_calc_mask_index_s","vbrpsy_compute_masking_s","float","int","dd","dd_n","avg_mask","minval_s","vbrpsy_compute_masking_l","ecb_limit","ecb_limit_2","ecb_limit_1","minval_l","vbrpsy_compute_block_type","vbrpsy_apply_block_type","vbrpsy_compute_MS_thresholds","cb_mld","ath_cb","ebM","ebS","thmL","thmR","mld_m","thmMS","s3_func_x","bark","hf_slope","tempy","tempx","exp","norm_s3_func_x","lim_a","lim_b","sum","norm","s3_func","temp","sqrt","freq2bark","freq","atan","init_numline","numlines","bo","bval","bval_width","bo_w","sfreq","blksize","scalepos","deltafreq","sbmax","b_frq","sample_freq_frac","partition","ni","j2","bark1","sfb","i1","f_tmp","bark2","init_s3_values","npart","use_old_s3","s3","numberOfNoneZero","s3_x_norm","stereo_demask","ATHformula_GB","ch01","mld_cb_l","mld_cb_s","new_thmm","psymodel_init","useOldS3","bvl_a","bvl_b","snr_l_a","snr_l_b","snr_s_a","snr_s_b","experimentalZ","ms_ener_ratio_old","scalefac_band","snr","ATHformula","decay","exp_nspsytune","frame_duration","ATHtype","freq_inc","eql_balance","ATHcurve","LameGlobalFlags","class_id","num_samples","num_channels","in_samplerate","scale_left","scale_right","decode_only","quality","free_format","findReplayGain","decode_on_the_fly","write_id3tag_automatic","brate","compression_ratio","original","error_protection","strict_ISO","disable_reservoir","quant_comp","quant_comp_short","experimentalY","preset","VBR_q_frac","VBR_q","VBR_mean_bitrate_kbps","VBR_min_bitrate_kbps","VBR_max_bitrate_kbps","VBR_hard_min","lowpassfreq","highpassfreq","lowpasswidth","highpasswidth","maskingadjust","maskingadjust_short","ATHonly","ATHshort","noATH","athaa_type","athaa_sensitivity","useTemporal","tune","tune_value_a","encoder_delay","encoder_padding","frameNum","lame_allocated_gfp","L3Side$1","SFBMAX","new_float$9","new_int$a","GrInfo","l3_enc","scalefac","xrpow_max","part2_3_length","big_values","count1","global_gain","scalefac_compress","table_select","subblock_gain","region0_count","region1_count","preflag","scalefac_scale","count1table_select","part2_length","sfb_lmax","sfb_smin","psy_lmax","sfbmax","psymax","sfbdivide","count1bits","sfb_partition_table","slen","max_nonzero_coeff","clone_int","clone_float","other","new_int$9","IIISideInfo","main_data_begin","private_bits","resvDrain_pre","resvDrain_post","scfsi","System$6","new_int$8","ScaleFac","arrL","arrS","arr21","arr12","psfb21","psfb12","new_float$8","new_float_n$2","new_int$7","NsPsy","longfact","shortfact","VBRSeekInfo","want","bag","nVbrNumFrames","nBytesWritten","TotalFrameSize","new_byte$3","new_float$7","new_float_n$1","new_int$6","new_int_n$1","LameInternalFlags$1","MAX_HEADER_LEN","Header","write_timing","Class_ID","iteration_init_init","fill_buffer_resample_init","mfbuf","MFSIZE","channels_in","resample_ratio","mf_samples_to_encode","VBR_min_bitrate","VBR_max_bitrate","samplerate_index","lowpass1","lowpass2","highpass1","highpass2","noise_shaping","noise_shaping_amp","substep_shaping","noise_shaping_stop","use_best_huffman","full_outer_loop","tag_spec","nMusicCRC","OldValue","CurrentStep","bv_scf","pseudohalf","sfb21_extra","inbuf_old","blackfilt","BPC","itime","sideinfo_len","header","MAX_HEADER_BUF","h_ptr","w_ptr","ancillary_flag","numlines_s_num1","numlines_l_num1","ms_ratio_s_old","ms_ratio_l_old","VBR_seek_table","nogap_total","nogap_current","findPeakSample","PeakSample","RadioGain","AudiophileGain","rgdata","noclipGainChange","noclipScale","hip","in_buffer_nsamples","in_buffer_0","in_buffer_1","MAX_BITS_PER_CHANNEL","MAX_BITS_PER_GRANULE","new_float$6","System$5","Arrays$4","GainAnalysis$1","PINK_REF","RMS_PERCENTILE","RMS_WINDOW_TIME_NUMERATOR","RMS_WINDOW_TIME_DENOMINATOR","ABYule","ABButter","filterYule","inputPos","output","outputPos","nSamples","kernel","filterButter","ResetSampleFrequency","rgData","samplefreq","MAX_ORDER","linprebuf","lstepbuf","loutbuf","rinprebuf","rstepbuf","routbuf","reqindex","INIT_GAIN_ANALYSIS_ERROR","sampleWindow","lsum","rsum","totsamp","ill","INIT_GAIN_ANALYSIS_OK","fsqr","analyzeResult","Array2","elems","GAIN_NOT_ENOUGH_SAMPLES","upper","STEPS_per_dB","InitGainAnalysis","linpre","rinpre","lstep","rstep","lout","rout","B","AnalyzeSamples","left_samples","left_samplesPos","right_samples","right_samplesPos","curleft","curleftBase","curright","currightBase","batchsamples","cursamples","cursamplepos","GAIN_ANALYSIS_OK","GAIN_ANALYSIS_ERROR","ival","GetTitleGain","retval","MAX_dB","YULE_ORDER","MAX_SAMP_FREQ","MAX_SAMPLES_PER_WINDOW","new_float$5","new_int$5","ReplayGain","freqindex","MeanBits$1","meanBits","bits","new_float$4","new_int$4","assert$8","CBRNewIterationLoop","_quantize","quantize","max_bits","l3_xmin","xrpow","targ_bits","mean_bits","mb","rv","ResvFrameBegin","on_pe","ms_convert","reduce_side","masking_lower_db","mask_adjust","mask_adjust_short","init_outer_loop","init_xrpow","calc_xmin","outer_loop","iteration_finish_one","ResvFrameEnd","HuffCodeTab","hl","xlen","linmax","hlen","Tables$1","t1HB","t1l","t2HB","t2l","t3HB","t3l","t5HB","t5l","t6HB","t6l","t7HB","t7l","t8HB","t8l","t9HB","t9l","t10HB","t10l","t11HB","t11l","t12HB","t12l","t13HB","t13l","t16_5l","t15HB","t15l","t16HB","t16l","t24HB","t24l","t32HB","t32l","t33HB","t33l","largetbl","table23","table56","bitrate_table","samplerate_table","scfsi_band","VbrMode$4","Util$1","new_float$3","new_int$3","assert$7","QuantizePVT","tak","POW20","pow20","Q_MAX2","_tk","_rv","IPOW20","ipow20","DBL_EPSILON","IXMAX_VAL","PRECALC_SIZE","Q_MAX","NSATHSCALE","nr_of_sfb_block","pretab","sfBandIndex","pow43","adj43","ATHmdct","compute_ath","ATH_l","ATH_psfb21","ATH_s","ATH_psfb12","samp_freq","ATH_f","StartLine","iteration_init","bass","alto","treble","sfb21","huffman_init","cbr","tbits","add_bits","extra_bits","ResvMaxBits","fac","move_bits","athAdjust","athFloor","pxmin","gsfb","pxminPos","ath_over","ATH2","enable_athaa_fix","xmin","rh1","rh2","en0","xa","xb","max_nonzero","BitStream$1","EQ","tmpATH","calc_noise_core","startline","step","noise","ix","ix01","calc_noise","distort","prev_noise","distortPos","l3_xminPos","over","over_noise_db","tot_noise_db","max_noise","scalefacPos","over_SSD","noise_log","usefullsize","sl","over_count","tot_noise","over_noise","set_pinfo","sfb2","en1","ifqstep","L3Side","xfsf","CalcNoiseResult","bw","LAMEsfb","en_s","xfsf_s","thr_s","LAMEsfb_s","LAMEqss","LAMEmainbits","LAMEsfbits","LARGE_BITS","System$4","Arrays$3","new_int$2","assert$6","Takehiro","Bits","subdv_table","quantize_lines_xrpow_01","istep","xrPos","ixPos","compareval0","quantize_lines_xrpow","remaining","x0","x3","rx0","rx1","rx2","rx3","quantize_xrpow","xp","pi","codInfo","prevNoise","prev_data_use","accumulate","accumulate01","xpPos","iData","iDataPos","acc_iData","acc_iDataPos","acc_xp","acc_xpPos","sfb_count1","ix_max","endPos","max1","max2","count_bit_ESC","linbits","count_bit_noESC","hlen1","count_bit_noESC_from2","count_bit_noESC_from3","sum3","hlen2","hlen3","huf_tbl_noESC","choose_table","choice2","choice","recalc_divide_init","r01_bits","r01_div","r0_tbl","r1_tbl","bigv","r0","a1","r0bits","bi","r0t","r1","a2","r1t","recalc_divide_sub","cod_info2","r2","r2t","noquant_count_bits","best_huffman_divide","count_bits","gain","roundfac","slen1_n","slen2_n","slen1_tab","slen2_tab","scfsi_calc","all_scalefactors_not_negative","best_scalefac_store","recalc","scale_bitcount","scale_bitcount_lsf","scale_short","scale_mixed","scale_long","max_slen1","max_slen2","max_range_sfac_tab","table_number","row_in_table","nr_sfb","max_sfac","partition_table","slen1","slen2","slen3","slen4","log2tab","bv_index","scfb_anz","System$3","Arrays$2","new_byte$2","new_int$1","assert$5","CRC16_POLYNOMIAL","ga","mpg","ver","_ga","_mpg","_ver","totbit","bufByteIdx","bufBitIdx","putheader_bits","putbits2","putbits_noheaders","drain_into_ancillary","remainingBits","getLameShortVersion","writeheader","CRC_update","crc","encodeSideInfo2","bitsPerFrame","CRC_writeheader","old","huffman_coder_count1","huffbits","Huffmancode","tableindex","cbits","xbits","ext","linbits_x1","linbits_x2","ShortHuffmancodebits","region1Start","LongHuffmancodebits","bigvalues","region2Start","writeMainData","data_bits","tot_bits","sfb_partition","scale_bits","sfbs","TotalBytes","total","compute_flushbits","total_bytes_output","flushbits","remaining_headers","last_ptr","first_ptr","getframebits","bit_rate","byte","flush_bitstream","NEQ","GainAnalysis","add_dummy_byte","bufferPos","mp3data","minimum","updateMusicCRC","pcm_buf","mp3_in","samples_out","hip_decode1_unclipped","init_bit_stream_w","Lame$1","LAME_MAXMP3BUFFER","System$2","VbrMode$3","ShortBlock$1","new_float$2","assert$4","LAME_MAXALBUMART","V9","V8","V7","V6","V5","V4","V3","V2","V1","V0","R3MIX","STANDARD","EXTREME","INSANE","STANDARD_FAST","EXTREME_FAST","MEDIUM","MEDIUM_FAST","qu","id3","mpglib","LowPassHighPass","lowerlimit","BandPass","bitrate","lPass","lowpass","enc","_qu","_id3","_mpglib","LAME_ID","lame_init_old","filter_coef","optimum_samplefreq","input_samplefreq","suggested_samplefreq","SmpFrqIndex","sample_freq","gpf","FindNearestBitrate","bRate","samplerate","BitrateIndex","optimum_bandwidth","lh","freq_map","table_index","nearestBitrateFullIndex","lame_init_params_ppflt","lowpass_band","highpass_band","minband","maxband","fc1","fc2","lame_init_qval","lame_init_bitstream","id3tag_write_v2","InitVbrTag","update_inbuffer_size","nsamples","calcNeeded","mf_needed","lame_encode_buffer_sample","buffer_l","buffer_r","mp3out","mp3size","in_buffer","in_bufferPos","in_buffer_ptr","n_in","n_out","inOut","InOut","fill_buffer","buf_size","lame_encode_frame","NumUsed","num_used","gcd","blackman","fcn","wcn","bkwn","sin","fill_buffer_resample","outbuf","outbufPos","desired_len","bpc","intratio","filter_l","BLACKSIZE","time0","joff","xvalue","n_shift","io","numUsed","lame_init","full_bitrate_table","lower_range","lower_range_kbps","upper_range","upper_range_kbps","lame_init_params","map2MP3Frequency","linear_int","hip_decode_exit","hip_decode_init","cmp","apply_preset","LAME_DEFAULT_QUALITY","VBRNewIterationLoop","VBROldIterationLoop","vbrmode","ABRIterationLoop","NSATTACKTHRE","NSATTACKTHRE_S","lame_encode_flush","mp3buffer","mp3bufferPos","mp3buffer_size","mp3buffer_size_remaining","end_padding","frames_left","imp3","samples_to_encode","bunch","frame_num","lame_encode_buffer","id3tag_write_v1","VbrMode$2","Presets","VBRPresets","qual","compS","shThreshold","shThresholdS","adj","adjShort","lower","curve","sens","inter","joint","fix","vbr_q","quant_comp_s","expY","st_lrm","st_s","masking_adj","masking_adj_short","ath_lower","ath_curve","ath_sensitivity","interch","safejoint","sfb21mod","ABRPresets","kbps","sc","mask","interCh","sfScale","nsmsfix","nsbass","sfscale","lame","_lame","vbr_old_switch_map","vbr_psy_switch_map","apply_vbr_preset","vbr_preset","q","lame_set_VBR_q","abr_switch_map","apply_abr_preset","actual_bitrate","VBRQuantize","CalcNoiseResult$1","new_float$1","CalcNoiseData","System$1","VbrMode$1","Arrays$1","assert$3","Quantize","tk","init_xrpow_core","psfb21_analogsilence","ath21","ath12","BinSearchDirection","bin_search_StepSize","desired_rate","nBits","flagGoneOver","Direction","BINSEARCH_NONE","BINSEARCH_DOWN","BINSEARCH_UP","loop_break","penalties","get_klemm_noise","klemm_noise","quant_compare","best","calc","better","BitStream","amp_scalefac_bands","bRefine","ifqstep34","trigger2","inc_scalefac_scale","inc_subblock_gain","amp","balance_noise","ixwork","trancate_smallspectrums","allowedNoise","trancateThreshold","nsame","cod_info_w","save_xrpow","best_noise_info","best_part2_3_length","bEndOfSearch","best_ggain_pass1","age","search_limit","noise_info","maxggain","huff_bits","ResvAdjust","VBR_encode_granule","min_bits","dbits","bst_cod_info","bst_xrpow","Max_bits","real_bits","this_bits","LameInternalFlags","get_framebits","frameBits","MeanBits","VBR_old_prepare","bands","analog_silence","mxb","bitpressure_strategy","VBR_new_prepare","maximum_framebits","calc_target_bits","analog_silence_bits","max_frame_bits","res_factor","totbits","assert$2","Reservoir","maxmp3buf","frameLength","resvLimit","fullFrameBits","resvsize","over_bits","stuffingBits","mdb_bytes","Version","LAME_URL","LAME_MAJOR_VERSION","LAME_MINOR_VERSION","LAME_PATCH_VERSION","PSY_MAJOR_VERSION","PSY_MINOR_VERSION","getLameVersion","getLameVeryShortVersion","getPsyVersion","getLameUrl","getLameOsBitness","new_byte$1","assert$1","VBRTag","FRAMES_FLAG","BYTES_FLAG","TOC_FLAG","VBR_SCALE_FLAG","NUMTOCENTRIES","MAXFRAMESIZE","VBRHEADERSIZE","LAMEHEADERSIZE","XING_BITRATE1","XING_BITRATE2","XING_BITRATE25","ISO_8859_1","VBRTag0","VBRTag1","crc16Lookup","addVbr","v2","xingSeekTable","act","indx","seek_point","extractInteger","createInteger","createShort","isVbrTag","equals","shiftInBitsValue","setLameTagFrameHeader","bbyte","abyte","crcUpdateLookup","putLameVBR","musicLength","streamBuffer","streamBufferPos","revMethod","abrBitrate","bytesWritten","encDelay","encPadding","revision","vbrTypeTranslator","peakSignalAmplitude","radioReplayGain","audiophileReplayGain","noiseShaping","stereoMode","nonOptimal","sourceFreq","misc","musicCRC","expNPsyTune","safeJoint","noGapMore","noGapPrevious","noGapCount","noGapCurr","athType","skipId3v2","fpStream","seek","id3v2TagSize","id3v2Header","readFully","Tables","getVbrTag","pTagData","VBRTagData","hId","hSrIndex","hMode","hBitrate","samprate","head_flags","frames","toc","vbrScale","headersize","kbps_header","totalFrameSize","headerSize","getLameTagFrame","Lame","streamIndex","streamSize","putVbrTag","GetAudio","parse2","mpg2","Parse","ver2","id32","pre2","MPGLib","ID3Tag","_bits","Mp3Encoder$1","channels","gaud","maxSamples","encodeBuffer","_sz","subarray","fourccToInt","fourcc","Mp3Encoder","bitRate","sampleRate","dataBuffer","encoder","arrayBuffer","samples","_convertBuffer","finish","blob","Blob","URL","createObjectURL","_floatTo16BitPCM","Recorder","beforeRecording","pauseRecording","afterRecording","micFailed","encoderOptions","bufferSize","records","isPause","isRecording","volume","_duration","constraints","video","audio","channelCount","echoCancellation","mediaDevices","getUserMedia","_micCaptured","_micError","lameEncoder","getTracks","track2","processor","record","AudioContext","webkitAudioContext","createMediaStreamSource","createScriptProcessor","onaudioprocess","sample","inputBuffer","getChannelData","toFixed","connect","isChromium","chrome","winNav","vendorName","vendor","isOpera","opr","isIEedge","isIOSChrome","detectChrome","detectMobile","getUserAgent","userAgentPart","opera","_sfc_main$a","roomMessage","showSendIcon","showFiles","showAudio","showEmojis","showFooter","acceptedFiles","multipleFiles","captureFiles","textareaActionEnabled","textareaAutoFocus","userTagsEnabled","emojisSuggestionEnabled","templatesText","audioBitRate","audioSampleRate","initReplyMessage","initEditMessage","droppedFiles","editedMessage","cursorRangePosition","fileDialog","selectUsersTagItem","selectEmojiItem","selectTemplatesTextItem","format","activeUpOrDownEmojis","activeUpOrDownUsersTag","activeUpOrDownTemplatesText","emojisDB","keepKeyboardOpen","selectedUsersTag","recorder","initRecorder","isMessageEmpty","isFileLoading","recordedTime","shadowFooter","resetMessage","onChangeInput","getTextareaRef","replyMessage","editMessage","onFileChange","isComposed","isComposing","updateFooterLists","resetFooterList","stopRecorder","roomTextarea","focusTextarea","disableMobileFocus","setSelectionRange","resizeTextarea","scrollHeight","escapeTextarea","onPasteImage","pasteEvent","clipboardData","getAsFile","updateActiveUpOrDown","direction","selectEmoji","position","getCharPosition","selectTemplateText","addEmoji","launchFilePicker","click","fileURL","typeIndex","blobFile","loadedFile","file2","removeFile","toggleRecorder","recording","textareaActionHandler","newContent","usersTag","messageContent","initialContent","firstTag","secondTag","usertags","matchAll","selectUserTag","updateFooterList","tagChar","textareaCursorPosition","selectionStart","beforeTag","notLetterNumber","updateShowUsersTag","updateShowTemplatesText","editMode","cursorPosition","selectionEnd","initRoom","resetTextareaSize","preventKeyboardFromClosing","_hoisted_1$a","_hoisted_2$8","_hoisted_3$8","_hoisted_4$8","_hoisted_5$6","_hoisted_6$3","_hoisted_7$3","_sfc_render$a","_component_room_emojis","_component_room_users_tag","_component_room_templates_text","_component_room_message_reply","_component_room_files","_component_emoji_picker_container","onSelectEmoji","onActivateItem","onSelectUserTag","onSelectTemplateText","onResetMessage","onKeydown","onPaste","onAddEmoji","onOpenEmoji","accept","onChange","RoomFooter","_sfc_main$9","roomUsers","replyUsername","replyUser","_hoisted_1$9","_hoisted_2$7","_hoisted_3$7","_hoisted_4$7","_hoisted_5$5","_hoisted_6$2","_hoisted_7$2","_hoisted_8$1","_hoisted_9$1","_hoisted_10$1","_sfc_render$9","onUpdateProgressTime","progressTime","hoverAudioProgress","MessageReply","_sfc_main$8","radius","stroke","normalizedRadius","circumference","strokeDashoffset","_hoisted_1$8","_hoisted_2$6","_hoisted_3$6","_hoisted_4$6","_hoisted_5$4","_sfc_render$8","strokeLinecap","cy","ProgressBar","_sfc_main$7","imageResponsive","imageLoading","imageHover","isImageLoading","checkImgLoad","maxHeight","clientWidth","loaderTop","clientHeight","openFile","_hoisted_1$7","_hoisted_2$5","_hoisted_3$5","_hoisted_4$5","_sfc_render$7","_component_progress_bar","onMouseleave","preview","MessageFile","_sfc_main$6","imageVideoFiles","otherFiles","_hoisted_1$6","_hoisted_2$4","_hoisted_3$4","_hoisted_4$4","_hoisted_5$3","_sfc_render$6","_component_message_file","onOpenFile","onOpenUserTag","MessageFiles","_sfc_main$5","messageActions","showReactionEmojis","messageHover","hoverMessageId","menuOptionsTop","optionsOpened","optionsClosing","isMessageActions","filteredMessageActions","disableActions","isMessageReactions","disableReactions","onlyMe","openOptions","menuOptions","actionIcon","actionIconTop","optionsTopPosition","closeOptions","updateMessageHover","closeEmoji","messageActionHandler","sendMessageReaction","reaction","_hoisted_1$5","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$5","MessageActions","_sfc_main$4","_hoisted_1$4","_sfc_render$4","reactions","MessageReactions","roomsValidation","roomsValidate","validate","obj2","validType","checkObjectValid","partcipantsValidation","participantsValidate","messagesValidation","messagesValidate","_sfc_main$3","editedMessageId","newMessages","showNewMessagesDivider","usernameOptions","selectedMessages","newMessage","showUsername","currentUser","minUsers","showDate","date","messageOffset","isMessageHover","isCheckmarkVisible","hasCurrentUserAvatar","hasSenderUserAvatar","isMessageSelected","resetMessageHover","onHoverMessage","canEditMessage","onLeaveMessage","openUserTag","selectMessage","_hoisted_1$3","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_hoisted_5$2","_hoisted_6$1","_hoisted_7$1","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_sfc_render$3","_component_message_reply","_component_message_files","_component_message_actions","_component_message_reactions","system","edited","onUpdateMessageHover","onUpdateOptionsOpened","onUpdateEmojiOpened","onMessageActionHandler","onSendMessageReaction","failure","RoomMessage","_sfc_main$2","loadFirstRoom","autoScroll","loadingMessages","loadingMoreMessages","scrollIcon","scrollMessagesCount","showNoMessages","showNoRoom","noRoomSelected","updateLoadingMessages","showMessagesStarted","onRoomChanged","loadMoreMessages","preventTopScroll","scrollContainer","prevScrollHeight","scrollTo","touchStart","touchEvent","changedTouches","posXStart","posYStart","touchEvent2","touchEnd","posXEnd","posYEnd","swippedRight","swippedVertically","resetMessageSelection","unselectMessage","onMessageAdded","autoScrollOffset","scrolledUp","getBottomScroll","newAfterScrollUp","scrollToBottom","receive","onContainerScroll","bottomScroll","messageReaction","behavior","onDropFiles","dataTransfer","_hoisted_1$2","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_hoisted_5$1","_hoisted_6","_hoisted_7","_sfc_render$2","_component_room_header","_component_room_message","_component_room_footer","onDrop","onDragenter","onDragover","onDragleave","onTouchstart","onToggleRoomsList","onRoomInfo","onMenuActionHandler","onMessageSelectionActionHandler","onCancelMessageSelection","onScroll","indexId","onOpenFailedMessage","onSelectMessage","onUnselectMessage","onUpdateEditedMessageId","onEditMessage","onTypingMessage","onTextareaActionHandler","Room","_sfc_main$1","modal","closeModal","_hoisted_1$1","_hoisted_2","_hoisted_3","autoplay","_hoisted_4","_hoisted_5","_sfc_render$1","tabindex","MediaPreview","locales","defaultThemeStyles","light","general","colorButtonClear","colorButton","backgroundColorButton","backgroundInput","colorPlaceholder","colorCaret","colorSpinner","borderStyle","backgroundScrollIcon","border","borderRadius","boxShadow","background","colorRoomName","colorRoomInfo","footer","borderStyleInput","borderInputSelected","backgroundReply","backgroundTagActive","backgroundTag","sidemenu","backgroundHover","backgroundActive","colorActive","borderColorSearch","backgroundMe","colorStarted","backgroundDeleted","backgroundSelected","colorDeleted","colorUsername","colorTimestamp","backgroundDate","colorDate","backgroundSystem","colorSystem","backgroundMedia","colorReplyUsername","colorReply","colorTag","backgroundImage","colorNewMessages","backgroundScrollCounter","colorScrollCounter","backgroundReaction","borderStyleReaction","backgroundReactionHover","borderStyleReactionHover","colorReactionCounter","backgroundReactionMe","borderStyleReactionMe","backgroundReactionHoverMe","borderStyleReactionHoverMe","colorReactionCounterMe","backgroundAudioRecord","backgroundAudioLine","backgroundAudioProgress","backgroundAudioProgressSelector","colorFileExtension","colorMulti","colorMessage","colorStateOnline","colorStateOffline","backgroundCounterBadge","colorCounterBadge","icons","closeImage","closeOutline","closePreview","sendDisabled","checkmarkSeen","dropdownMessage","dropdownMessageBackground","dropdownRoom","dropdownScroll","audioPlay","audioPause","audioCancel","audioConfirm","dark","cssThemeVars","_style_0","_sfc_main","theme","responsiveBreakpoint","roomsListOpened","roomsOrder","mediaPreviewEnabled","showMediaPreview","previewFile","textMessagesCasted","cssVars","defaultStyles","customStyles","stylesCasted","orderedRooms","roomsCasted","aVal","bVal","singleRoomCasted","castBoolean","roomsListOpenedCasted","loadingRoomsCasted","roomsLoadedCasted","loadFirstRoomCasted","messagesLoadedCasted","multipleFilesCasted","showSearchCasted","showAddRoomCasted","showSendIconCasted","showFilesCasted","showAudioCasted","showEmojisCasted","showReactionEmojisCasted","showNewMessagesDividerCasted","showFooterCasted","roomInfoEnabledCasted","textareaActionEnabledCasted","textareaAutoFocusCasted","userTagsEnabledCasted","emojisSuggestionEnabledCasted","mediaPreviewEnabledCasted","castArray","messagesCasted","roomActionsCasted","menuActionsCasted","messageActionsCasted","messageSelectionActionsCasted","templatesTextCasted","castObject","autoScrollCasted","textFormattingCasted","linkOptionsCasted","usernameOptionsCasted","fetchRoom","updateResponsive","isTrusted","toggleRoomsList","opened","fetchMessages","fetchMoreRooms","roomInfo","addRoom","deleteMessage","openFailedMessage","typingMessage","_hoisted_1","_sfc_render","_component_rooms_list","_component_room","_component_media_preview","onFetchRoom","onFetchMoreRooms","onLoadingMoreRooms","onFetchMessages","onDeleteMessage","onCloseMediaPreview","ChatWindow","VueAdvancedChat","PACKAGE_NAME","socket","roomInfoStr","roomInfoElm","room_name","room_title","user_id","WebSocket","onmessage","replyTo","__exports__","_withScopeId","_pushScopeId","_popScopeId","_createElementVNode","_component_notification_message","_createElementBlock","onFocus","onFocusout","numberOfUnread","_toDisplayString","_createCommentVNode","_Fragment","_renderList","viewed","onMouseup","_withModifiers","onMiddleClick","_normalizeClass","unviewed","relativeCreationDate","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","requiredArgs","toDate","argStr","startOfDay","dirtyDate","setHours","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","isValid","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formats","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","era","quarter","month","day","dayPeriod","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","weekStartsOn","firstWeekContainsDate","toInteger","addMilliseconds","dirtyAmount","amount","subMilliseconds","getUTCDayOfYear","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCDate","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","formatters","signedYear","M","getUTCMonth","dayPeriodEnumValue","getUTCHours","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","dayPeriodEnum","G","unit","lightFormatters","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","Q","L","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","K","X","_localize","originalDate","_originalDate","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","longFormatters","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","dirtyBaseDate","baseDate","_ref","_ref$locale","_ref$weekStartsOn","utcBaseDate","form","suffix","feminineUnits","creationDate","setAsViewed","fr","NotificationMessage","PlayerState","_typeof","_defineProperty","ENABLE_DEBUG","Logger","debug","VideoPlayer","videoPlayerConfig","videoId","sound","canWait","loop","_startSeconds","startSeconds","videoPlayerArea","videoState","LOADING","videoElement","setupVideoElement","fullscreenElement","videojs","newRate","playbackRate","videoPlayers","onReady","onSeeking","onStateChange","ENDED","syncTime","BUFFERING","PLAYING","PAUSE","LOADED","READY","mainVideo","syncLoop","videoCurrentTime","mainCurrentTime","thisCurrentTime","timeTo","statesToPropagate","UNSTARTED","changeState","initialSrc","userActions","doubleClick","controlBar","volumePanel","fullscreenToggle","muted","_createFullscreenButton","setControls","setMain","_swap","videoPlayer","animateSwap","nodeA","nodeB","parentA","parentB","siblingA","thisControls","thisMain","paused","HAVE_CURRENT_DATA","getDuration","getPlayLength","getCurrentTime","getPlayedTime","isEnded","fullscreenButton","addChild","clickHandler","exitFullscreen","screen","orientation","unlock","videoContainer","requestFullscreen","lock","controlText","buttonDom","validStates","isValidState","currentState","nextState","stateOuts","SyncVideoPlayer","area","readyCount","$container","getDebugInfo","vp","isMain","addVideoPlayers","areaEl","mainVideoPlayer","moveStateTo","allReady","success","fail","oldState","fixVideoStates","addVideoPlayer","videoInstance","excludeMain","swapVideo","index1","index2","_defineComponent","__props","multivideos","syncVideoPlayer","ids","debugInfo","onPlay","onPause","onAdd","onFullscreen","setInterval","onTouchend","_createTextVNode","ChatComponent","NotificationsBell","VideoComponent"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"app.js","mappings":"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Pa,WAAYxB,GACZyB,KAAM1B,GACN2B,OAAQtC,GACRuC,YAAaxC,GACbyC,SAAUxD,GACVyD,WAAYjD,GACZkD,UAAWpD,GACXqD,YAAajD,GACbkD,QAASxD,GACTyD,UAAWhD,GACXX,aACA4D,YAAahD,GACbiD,OAAQf,IAENgB,GAAWhlI,GAAOikI,OAClBgB,GAASjlI,GAAOqkI,KAChBa,GAAWllI,GAAOskI,OAClBa,GAAcnlI,GAAO0kI,UACzB,SAASU,KACP,IAAIC,EAAW,EACb,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,oBACA,mBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,iBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,mBACA,oBACA,oBACA,oBACA,iBACA,mBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,kBACA,mBACA,kBACA,mBACA,oBACA,iBACA,kBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,iBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,mBACA,mBACA,iBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,kBACA,mBACA,kBACA,WAAcJ,GAAOnC,MAAQ,GAAM,QACnC,WAAcmC,GAAOnC,MAAQ,GAAM,QACnC,WAAamC,GAAOnC,MAAQ,GAAM,QAClC,WAAamC,GAAOnC,MAAQ,GAAM,QAClC,UAAYmC,GAAOnC,MAAQ,GAAM,QACjC,UAAYmC,GAAOnC,MAAQ,GAAM,QACjC,UAAYmC,GAAOnC,MAAQ,GAAM,QACjC,SAAWmC,GAAOnC,MAAQ,GAAM,QAChC,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBAEEwC,EAAK,GACLC,EAAK,GACLC,EAAM,CACR,CACE,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBAEH,CACE,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBACD,EACA,EACA,EACA,EACA,EACA,GACC,sBACA,sBACA,sBAEH,CACE,kBACA,iBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,mBACC,mBACA,kBACD,kBACA,IACC,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACD,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,mBAEF,CACE,EACA,EACA,EACA,EACA,EACA,EACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBAGDC,EAAWD,EAAIE,GAAQC,YACvBC,EAAKJ,EAAIE,GAAQC,YACjBE,EAAKL,EAAIE,GAAQC,YACjBG,EAAKN,EAAIE,GAAQC,YACjBtuB,EAAQ,CACV,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,IAEF,SAAS0uB,EAAeC,EAAIC,EAAOj+H,GAGjC,IAFA,IA6DYu+C,EAAG3iD,EA2BTsiI,EAxFFC,EAAK,GACLC,EAAKH,EAAQ,IAAM,GAAK,IACnB1iI,GAAK,GAAIA,EAAI,EAAGA,IAAK,CAC5B,IAAI8iE,EAAGluD,EAAG6vB,EACVq+B,EAAIg/D,EAASc,GAAM,IACnBhuH,EAAI6tH,EAAGI,GAAM,K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AAK1qI,EAClB6pI,EAAGG,EAAKI,GAAME,EAAKrqI,EACnB4pI,EAAGG,EAAKE,GAAMI,EAAKrqI,EACnBygI,GAAMqJ,EACNC,GAAMD,CACR,OAASC,EAAK7yI,GACdgoD,EAAKF,EACLA,EAAKE,EAAKwqF,EAAOM,EAAM,GAAKnqF,EAAK6pF,EAAOM,EAAM,GAC9CnqF,EAAKX,EAAKwqF,EAAOM,EAAM,GAAKnqF,EAAK6pF,EAAOM,EAAM,EAChD,CACAA,GAAO,CACT,OAASF,EAAKrgI,EAChB,CACA,IAAIohI,EAAS,CACX,EACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,KAEFz1I,KAAK01I,UAAY,SAAS/K,EAAKgL,EAAQC,EAAKrwI,EAAQswI,GAClD,IAAK,IAAIjrI,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIwJ,EAAIi0H,GAAQsL,UAAY,EACxB3xF,EAAI,MAAQ,KAAWp3C,EAAI,GAC3B0iC,EAAI+6F,GAAQsL,UAAY,EAAI,EAChC,EAAG,CACD,IAAIuB,EAAID,EAAIG,EAAID,EAAInsE,EAChB9iE,EAAqB,IAAjBuvI,EAAOnoG,GAAK,GACpB4nG,EAAKb,EAASnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,GAC5CgnB,EAAIqrE,EAAS,IAAMnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACrDizF,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKf,EAASnuI,EAAI,IAAMX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,IACrDgnB,EAAIqrE,EAAS,GAAKnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACpDmzF,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV50D,GAAK,EACLuhI,EAAO/qI,GAAGwJ,EAAI,GAAK8gI,EAAKE,EACxBO,EAAO/qI,GAAGwJ,EAAI,GAAK8gI,EAAKE,EACxBO,EAAO/qI,GAAGwJ,EAAI,GAAK6gI,EAAKE,EACxBQ,EAAO/qI,GAAGwJ,EAAI,GAAK6gI,EAAKE,EACxBD,EAAKb,EAASnuI,EAAI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,GACpDgnB,EAAIqrE,EAAS,IAAMnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACrDizF,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKf,EAASnuI,EAAI,IAAMX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,IACrDgnB,EAAIqrE,EAAS,GAAKnuI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI87C,EAAI,KACpDmzF,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV2sE,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKuB,EAAKE,EAChDO,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKuB,EAAKE,EAChDO,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKsB,EAAKE,EAChDQ,EAAO/qI,GAAGwJ,EAAIi0H,GAAQsL,UAAY,EAAI,GAAKsB,EAAKE,CAClD,SAAW7nG,GAAK,GAChBinG,EAAIoB,EAAO/qI,GAAIwJ,EAAGi0H,GAAQsL,UAAY,EACxC,CACF,EACA3zI,KAAK81I,SAAW,SAASnL,EAAK9E,EAAG+P,EAAKrwI,EAAQswI,GAC5C,IAAIE,EAAK1N,GAAQwH,QAAU,EAAI,EAC3Bz7H,EAAIi0H,GAAQwH,QAAU,EAC1B,EAAG,CACD,IAAIqF,EAAID,EAAIG,EAAID,EAAInsE,EAChB9iE,EAAiB,IAAbuvI,EAAOM,GACfb,EAAKd,EAAQluI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,GACvC8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChD+uI,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKhB,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KACjD8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChDivI,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV50D,GAAK,EACLyxH,EAAEzxH,EAAI,GAAK8gI,EAAKE,EAChBvP,EAAEzxH,EAAI,GAAK8gI,EAAKE,EAChBvP,EAAEzxH,EAAI,GAAK6gI,EAAKE,EAChBtP,EAAEzxH,EAAI,GAAK6gI,EAAKE,EAChBD,EAAKd,EAAQluI,EAAI,GAAKX,EAAOqwI,GAAKC,EAAS3vI,EAAI,GAC/C8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChD+uI,EAAKC,EAAKlsE,EACVksE,GAAUlsE,EACVosE,EAAKhB,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KACjD8iE,EAAIorE,EAAQluI,EAAI,KAAOX,EAAOqwI,GAAKC,EAAS3vI,EAAI,KAChDivI,EAAKC,EAAKpsE,EACVosE,GAAUpsE,EACV68D,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKqF,EAAKE,EACtCvP,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKqF,EAAKE,EACtCvP,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKoF,EAAKE,EACtCtP,EAAEzxH,EAAIi0H,GAAQwH,QAAU,EAAI,GAAKoF,EAAKE,CACxC,SAAWY,GAAM,GACjBxB,EAAI1O,EAAGzxH,EAAGi0H,GAAQwH,QAAU,EAC9B,EACA7vI,KAAKg2I,SAAW,SAASrL,GACvB,IAAK,IAAIzkI,EAAI,EAAGA,EAAImiI,GAAQwH,QAAS3pI,IACnCkuI,EAAQluI,GAAK,IAAO,GAAM8K,KAAKilI,IAAI,EAAIjlI,KAAKklI,IAAMhwI,EAAI,IAAOmiI,GAAQwH,SAAW,IAAO7+H,KAAKilI,IAAI,EAAIjlI,KAAKklI,IAAMhwI,EAAI,IAAOmiI,GAAQwH,SAEpI,IAAS3pI,EAAI,EAAGA,EAAImiI,GAAQsL,UAAY,EAAGztI,IACzCmuI,EAASnuI,GAAK,IAAO,EAAI8K,KAAKilI,IAAI,EAAIjlI,KAAKklI,IAAMhwI,EAAI,IAAOmiI,GAAQsL,WAExE,CACF,CACA,IAAIwC,GAAYxzI,GAAOkkI,QACnBuP,GAAUzzI,GAAOmkI,MACjBuP,GAAe1zI,GAAOokI,WACtBuP,GAAS3zI,GAAOqkI,KAChBuP,GAAW5zI,GAAOskI,OAClBuP,GAAc7zI,GAAO0kI,UACrBoP,GAAgB9zI,GAAO2kI,YACvBoP,GAAY/zI,GAAO4kI,QACnBoP,GAAWh0I,GAAO+kI,OACtB,SAASkP,KACP,IAAIC,EAAM,IAAI1C,GACV2C,EAAQ,kBACRC,EAAS,EACTC,EAAU,GACVC,EAAW,EACXC,EAAY,GACZC,EAAU,IACVC,EAAW,EAAI,WAAmB/O,GAAQwH,QAAU,GACpDwH,EAA2B,IAC3BC,EAAkB,GAClBC,EAAkB,GAClBC,EAAkB,GAClBC,EAAW,IACXC,EAAW,GACXC,EAAc,YAClB,SAASC,EAAwBxjI,GAC/B,OAAOA,CACT,CACA,SAASyjI,EAAuBxF,EAAQ1H,GAEtC,IADA,IAAImN,EAAiB,EACZ5xI,EAAI,EAAGA,EAAImiI,GAAQwH,QAAU,IAAK3pI,EACzC4xI,GAAkBzF,EAAOnsI,GAAKykI,EAAI+D,IAAIqJ,MAAM7xI,GAG9C,OADA4xI,GAAkBV,EACXU,CACT,CACA,SAASE,EAAazI,EAAK0I,EAAWC,EAAaC,EAASC,EAAYC,EAASC,EAAYC,EAAQ3C,EAAKrwI,EAAQswI,GAChH,IAAIlL,EAAM4E,EAAIE,eACd,GAAImG,EAAM,EACRiB,EAAIf,SAASnL,EAAKwN,EAAQC,GAAaxC,EAAKrwI,EAAQswI,GACpDgB,EAAInB,UAAU/K,EAAK0N,EAAQC,GAAa1C,EAAKrwI,EAAQswI,QAChD,GAAW,GAAPD,EAAU,CACnB,IAAK,IAAItoG,EAAI+6F,GAAQwH,QAAU,EAAGviG,GAAK,IAAKA,EAAG,CAC7C,IAAI9iC,EAAI2tI,EAAQC,EAAa,GAAG9qG,GAC5BxjB,EAAIquH,EAAQC,EAAa,GAAG9qG,GAChC6qG,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GACtD0S,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EACxD,CACA,IAAK,IAAI76H,EAAI,EAAGA,GAAK,IAAKA,EACxB,IAAS0iC,EAAI+6F,GAAQsL,UAAY,EAAGrmG,GAAK,IAAKA,EAAG,CAC3C9iC,EAAI6tI,EAAQC,EAAa,GAAG1tI,GAAG0iC,GAC/BxjB,EAAIuuH,EAAQC,EAAa,GAAG1tI,GAAG0iC,GACnC+qG,EAAQC,EAAa,GAAG1tI,GAAG0iC,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GACzD4S,EAAQC,EAAa,GAAG1tI,GAAG0iC,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EAC3D,CAEJ,CACAwS,EAAU,GAAKL,EAAwBO,EAAQC,EAAa,GAAG,IAC/DH,EAAU,IAAMA,EAAU,GAC1B,IAAS3qG,EAAI+6F,GAAQwH,QAAU,EAAI,EAAGviG,GAAK,IAAKA,EAAG,CACjD,IAAIkrG,EAAKL,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACnDmrG,EAAKN,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACvD2qG,EAAU5P,GAAQwH,QAAU,EAAIviG,GAAKsqG,EACb,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CACA,IAAS7tI,EAAI,EAAGA,GAAK,IAAKA,EAAG,CAC3BstI,EAAYttI,GAAG,GAAKytI,EAAQC,EAAa,GAAG1tI,GAAG,GAC/CstI,EAAYttI,GAAG,IAAMstI,EAAYttI,GAAG,GACpC,IAAS0iC,EAAI+6F,GAAQsL,UAAY,EAAI,EAAGrmG,GAAK,IAAKA,EAAG,CAC/CkrG,EAAKH,EAAQC,EAAa,GAAG1tI,GAAGy9H,GAAQsL,UAAY,EAAIrmG,GACxDmrG,EAAKJ,EAAQC,EAAa,GAAG1tI,GAAGy9H,GAAQsL,UAAY,EAAIrmG,GAC5D4qG,EAAYttI,GAAGy9H,GAAQsL,UAAY,EAAIrmG,GAAKsqG,EACpB,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CACF,CAEE,IAAIC,EAAc,EAClB,IAASprG,EAAI,GAAIA,EAAI+6F,GAAQqL,SAAUpmG,IACrCorG,GAAeT,EAAU3qG,GAG7B,GAFEq9F,EAAI+F,SAASkF,GAAO8C,EAElBnJ,EAAI0C,SAAU,CAChB,IAAS3kG,EAAI,EAAGA,EAAI+6F,GAAQqL,SAAUpmG,IACpCq9F,EAAIuH,MAAMG,OAAOkG,GAAQ3C,GAAKtoG,GAAKq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAC9Dq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAAK2qG,EAAU3qG,GAE5Cq9F,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOjL,EAAIiG,GAAGgF,EACrC,CAC4B,GAAxBrG,EAAIqJ,kBAAyBhD,EAAM,IACrCjL,EAAIiE,YAAY2J,GAAQ3C,GAAOjL,EAAIkO,iBAAiBjD,GACpDjL,EAAIkO,iBAAiBjD,GAAOiC,EAAuBI,EAAWtN,GAElE,CACA,IAGImO,EACAC,EACAC,EALAC,EAAU,EACVC,EAAU,GACVC,EAAS,GAITC,EAAM,CACR,EACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEF,SAASC,IACPP,EAAY9nI,KAAKsoI,IAAI,IAAKL,EAAU,GAAK,IACzCF,EAAY/nI,KAAKsoI,IAAI,IAAKJ,EAAU,GAAK,IACzCF,EAAWhoI,KAAKsoI,IAAI,GAAIH,EAAS,GACnC,CACA,IAAII,EAAS,CACX,OAAS,OACT,QAAU,QACV,aACA,aACA,aACA,aACA,QAAU,QACV,MAAQ,MACR,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,aACA,aACA,QAAU,QACV,QAAU,QACV,aACA,aACA,QAAU,QACV,aACA,QAAU,QACV,OAAS,OACT,aACA,aACA,GAEEC,EAAS,CACX,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,OAAS,OACT,aACA,QAAU,QACV,aACA,GAEEC,EAAS,CACX,aACA,QAAU,QACV,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,aACA,cAEF,SAASC,EAASC,EAAIC,EAAIC,EAAIjvI,EAAG+/H,EAAKmP,GACpC,IAAI1tC,EACJ,GAAIwtC,EAAKD,EAAI,CACX,KAAIC,EAAKD,EAAKZ,GAGZ,OAAOY,EAAKC,EAFZxtC,EAAQwtC,EAAKD,CAGjB,KAAO,CACL,GAAIA,GAAMC,EAAKb,EACb,OAAOY,EAAKC,EACdxtC,EAAQutC,EAAKC,CACf,CAEA,GADAD,GAAMC,EACFhvI,EAAI,GAAK,EAAO,CAClB,GAAIwhG,GAAS0sC,EACX,OAAOa,EAET,IAAIzzI,EAAI,EAAIowI,GAAO1Q,aAAax5B,EAAO,IACvC,OAAOutC,EAAKH,EAAOtzI,EACrB,CACA,IAQQyH,EAAGmc,EARP5jB,EAAI,EAAIowI,GAAO1Q,aAAax5B,EAAO,IAMvC,OAJEwtC,EADgB,GAAdE,EACGnP,EAAI+D,IAAIqL,KAAKF,GAAMlP,EAAI+D,IAAInnD,OAE3BojD,EAAI+D,IAAIsL,KAAKH,GAAMlP,EAAI+D,IAAInnD,OAE9BoyD,EAAKX,EAAWY,EACdD,EAAKC,GAEPjsI,EAAI,EACAzH,GAAK,KACPyH,EAAI8rI,EAAOvzI,IACb4jB,EAAIwsH,GAAO1Q,aAAa+T,EAAKC,EAAI,GAAK,IAC/BD,IAAOJ,EAAOrzI,GAAKyH,GAAKmc,EAAInc,IAEjCzH,EAAI,GACCyzI,EACFA,EAAKF,EAAOvzI,GAEdyzI,EAAKJ,EAAOrzI,EACrB,CACA,IAAI+zI,EAAU,CACZ,aACA,QAAU,QACV,QAAU,QACV,QAAU,QACV,QAAU,QACV,OAAS,OACT,aACA,QAAU,QACV,aACA,GAEF,SAASC,EAAgBP,EAAIC,EAAIhvI,GAC/B,IAAIwhG,EAOJ,GANIutC,EAAK,IACPA,EAAK,GAEHC,EAAK,IACPA,EAAK,GAEHD,GAAM,EACR,OAAOC,EAET,GAAIA,GAAM,EACR,OAAOD,EAOT,GAJEvtC,EADEwtC,EAAKD,EACCC,EAAKD,EAELA,EAAKC,EAEXhvI,IAAM,GAAKA,GAAK,EAAG,CACrB,GAAIwhG,GAAS0sC,EACX,OAAOa,EAAKC,EAEZ,IAAI1zI,EAAI,EAAIowI,GAAO1Q,aAAax5B,EAAO,IACvC,OAAQutC,EAAKC,GAAMK,EAAQ/zI,EAE/B,CACA,OAAIkmG,EAAQ2sC,EACHY,EAAKC,GAEVD,EAAKC,IACPD,EAAKC,GAEAD,EACT,CACA,SAASQ,EAA0B5K,EAAKnjC,GACtC,IAAIu+B,EAAM4E,EAAIE,eACd,GAAI9E,EAAIM,aAAe,EAAG,CACxB,IAAK,IAAImP,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IAAM,CAC3C,IAAI5vI,EAAImgI,EAAIkC,IAAI,GAAGriI,EAAE4vI,GACjBtwH,EAAI6gH,EAAIkC,IAAI,GAAGriI,EAAE4vI,GACrBzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAOtwH,EAAIsiF,EACxBu+B,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAO5vI,EAAI4hG,CAC1B,CACA,IAASguC,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACrC7vI,EAAImgI,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACrBvwH,EAAI6gH,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACzB1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAAWvwH,EAAIsiF,EAChCu+B,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAAW7vI,EAAI4hG,CAClC,CAEJ,CACF,CACA,SAASkuC,EAAO3P,GACd,IAAK,IAAIyP,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IACrC,KAAIzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAM,KAAOzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAOzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAM,KAAOzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAAzF,CAGA,IAAIG,EAAM5P,EAAI6P,MAAMJ,GAAMzP,EAAImC,GAAG,GAAGtiI,EAAE4vI,GAClCK,EAAOzpI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKppI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKG,IACjEA,EAAM5P,EAAI6P,MAAMJ,GAAMzP,EAAImC,GAAG,GAAGtiI,EAAE4vI,GAClC,IAAIM,EAAQ1pI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKppI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKG,IAClE5P,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMK,EACnB9P,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMM,CANnB,CAQF,IAASN,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAC/B,KAAI1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAU,KAAO1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAAW1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAU,KAAO1P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,IAArH,CAGIE,EAAM5P,EAAIgQ,MAAMP,GAAMzP,EAAImC,GAAG,GAAGhyH,EAAEs/H,GAAIC,GACtCI,EAAOzpI,KAAKuF,IACdo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACjBrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASE,IAErCA,EAAM5P,EAAIgQ,MAAMP,GAAMzP,EAAImC,GAAG,GAAGhyH,EAAEs/H,GAAIC,GAClCK,EAAQ1pI,KAAKuF,IACfo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GACjBrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASE,IAErC5P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUI,EAC3B9P,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUK,CAZ3B,CAeN,CACA,SAASE,EAASjQ,EAAKkQ,EAAOC,GAC5B,IAAIC,EAASF,EACTG,EAAWhqI,KAAKsoI,IAAI,GAAIwB,GAC5BD,GAAS,EACTE,GAAU,EACV,IAAK,IAAIX,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IAAM,CAS3C,GAPAa,EAAMtQ,EAAI+D,IAAIsL,KAAKrP,EAAIuQ,KAAKd,IAAOY,EACnCG,EAAQnqI,KAAKwF,IACXxF,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,GAC3BjqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,IAE7BG,EAAOpqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,GAClCI,EAAOrqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAKa,GAC9BE,EAAQN,EAAQO,EAAOC,EAAM,CAC/B,IAAI1tI,EAAIwtI,EAAQJ,GAAUK,EAAOC,GACjCD,GAAQztI,EACR0tI,GAAQ1tI,CACV,CACAg9H,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMppI,KAAKwF,IAAI4kI,EAAMzQ,EAAIkC,IAAI,GAAGriI,EAAE4vI,IAC/CzP,EAAIkC,IAAI,GAAGriI,EAAE4vI,GAAMppI,KAAKwF,IAAI6kI,EAAM1Q,EAAIkC,IAAI,GAAGriI,EAAE4vI,GACjD,CACAY,GAAY3S,GAAQsL,UAAYtL,GAAQwH,QACxC,IAASuK,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAAIc,EAAOC,EAAMC,EAAMJ,EAQvB,GAPAA,EAAMtQ,EAAI+D,IAAIqL,KAAKpP,EAAI2Q,KAAKlB,IAAOY,EACnCG,EAAQnqI,KAAKwF,IACXxF,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,GACnCjqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,IAErCG,EAAOpqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,GAC1CI,EAAOrqI,KAAKuF,IAAIo0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASY,GACtCE,EAAQN,EAAQO,EAAOC,EAAM,CAC3B1tI,EAAIwtI,EAAQN,GAASO,EAAOC,GAChCD,GAAQztI,EACR0tI,GAAQ1tI,CACV,CACAg9H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASe,GAC9DzQ,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAAUrpI,KAAKwF,IAAIm0H,EAAIkC,IAAI,GAAG/xH,EAAEs/H,GAAIC,GAASgB,EAChE,CAEJ,CACA,SAASE,EAA6B5Q,EAAK6Q,EAAIC,EAAK7F,EAAKyE,GACvD,IAAID,EAAIxvI,EACJ8wI,EAAM,EACNC,EAAO,EACX,IAAKvB,EAAKxvI,EAAI,EAAGwvI,EAAK/R,GAAQqE,UAAW9hI,IAAKwvI,EAAI,CAChD,IAAIwB,EAAUjR,EAAIkR,KAAKzB,GACnB0B,EAAUnR,EAAImR,QACdC,EAAQH,EAAUE,EAAUF,EAAUE,EAC1C,MAAOlxI,EAAImxI,EACTpF,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GACnB8wI,GAAOF,EAAG5wI,GACV+wI,GAAQF,EAAI7wI,GACZA,IAIF,GAFA+/H,EAAImC,GAAG8I,GAAK96H,EAAEs/H,GAAIC,GAAUqB,EAC5B/Q,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAUsB,EACzB/wI,GAAKkxI,EAAS,GACd1B,EACF,KACF,CACAzD,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GAEjB,IAAIoxI,EAASrR,EAAIsR,IAAIC,YAAY9B,GAC7B+B,EAAS,EAAIH,EACjBN,EAAMM,EAASR,EAAG5wI,GAClB+wI,EAAOK,EAASP,EAAI7wI,GACpB+/H,EAAImC,GAAG8I,GAAK96H,EAAEs/H,GAAIC,IAAWqB,EAC7B/Q,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,IAAWsB,EAC9BD,EAAMS,EAASX,EAAG5wI,GAClB+wI,EAAOQ,EAASV,EAAI7wI,EAExB,CACA,KAAOwvI,EAAK/R,GAAQqE,UAAW0N,EAC7BzP,EAAImC,GAAG8I,GAAK96H,EAAEs/H,GAAIC,GAAU,EAC5B1P,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAU,CAEjC,CACA,SAAS+B,EAA6BzR,EAAK6Q,EAAIC,EAAK7F,GAClD,IAAIwE,EAAIxvI,EACJ8wI,EAAM,EACNC,EAAO,EACX,IAAKvB,EAAKxvI,EAAI,EAAGwvI,EAAK/R,GAAQoE,UAAW7hI,IAAKwvI,EAAI,CAChD,IAAIiC,EAAU1R,EAAI2R,KAAKlC,GACnBmC,EAAU5R,EAAI4R,QACdR,EAAQM,EAAUE,EAAUF,EAAUE,EAC1C,MAAO3xI,EAAImxI,EACTpF,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GACnB8wI,GAAOF,EAAG5wI,GACV+wI,GAAQF,EAAI7wI,GACZA,IAIF,GAFA+/H,EAAImC,GAAG8I,GAAKprI,EAAE4vI,GAAMsB,EACpB/Q,EAAIkC,IAAI+I,GAAKprI,EAAE4vI,GAAMuB,EACjB/wI,GAAK2xI,EAAS,GACdnC,EACF,KACF,CACAzD,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAAS8E,EAAI7wI,IAAM,GAEjB,IAAIoxI,EAASrR,EAAIsR,IAAIO,YAAYpC,GAC7B+B,EAAS,EAAIH,EACjBN,EAAMM,EAASR,EAAG5wI,GAClB+wI,EAAOK,EAASP,EAAI7wI,GACpB+/H,EAAImC,GAAG8I,GAAKprI,EAAE4vI,IAAOsB,EACrB/Q,EAAIkC,IAAI+I,GAAKprI,EAAE4vI,IAAOuB,EACtBD,EAAMS,EAASX,EAAG5wI,GAClB+wI,EAAOQ,EAASV,EAAI7wI,EAExB,CACA,KAAOwvI,EAAK/R,GAAQoE,UAAW2N,EAC7BzP,EAAImC,GAAG8I,GAAKprI,EAAE4vI,GAAM,EACpBzP,EAAIkC,IAAI+I,GAAKprI,EAAE4vI,GAAM,CAEzB,CACA,SAASqC,EAAkBlN,EAAK2I,EAAasD,EAAIC,EAAK7F,EAAKyE,GACzD,IACI/sG,EAAG1iC,EADH+/H,EAAM4E,EAAIE,eAEd,IAAK7kI,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAImR,UAAWlxI,EAAG,CAGpC,IAFA,IAAI8xI,EAAM,EACNroI,EAAIs2H,EAAIgS,WAAW/xI,GACd1E,EAAI,EAAGA,EAAImO,IAAKnO,IAAKonC,EAAG,CAC/B,IAAI7gC,EAAKyrI,EAAYmC,GAAQ/sG,GAC7BovG,GAAOjwI,CACT,CACA+uI,EAAG5wI,GAAK8xI,CACV,CAEA,IADA/F,GAAS/rI,GAAK+/H,EAAImR,SACbxuG,EAAI1iC,EAAI,EAAGA,EAAI+/H,EAAImR,QAASlxI,IAAK,CACpC,IAAIivI,EAAKlP,EAAIiS,QAAQhyI,GAAG,GACpBiyI,EAAMlS,EAAImS,MAAMxvG,KAAOkuG,EAAG3B,KAC5BA,EACF,MAAOA,GAAMlP,EAAIiS,QAAQhyI,GAAG,GAC1BiyI,GAAOlS,EAAImS,MAAMxvG,GAAKkuG,EAAG3B,KACvBvsG,IACAusG,EAGF,IAAIzlI,EAAI6iI,EAAWtM,EAAIoS,MAAMnH,GAAKhrI,GAGpC,GAFE6wI,EAAI7wI,GAAKoG,KAAKwF,IAAIqmI,EAAKzoI,GAErBu2H,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQC,WAAY,CAChDl0H,EAAI8iI,EAAYvM,EAAIsS,MAAMrH,GAAKhrI,GAAnC,IACIi7H,EAAI4V,EAAI7wI,GACZ6wI,EAAI7wI,GAAKoG,KAAKwF,IAAIpC,EAAGyxH,EACvB,CACA8E,EAAIsS,MAAMrH,GAAKhrI,GAAK+/H,EAAIoS,MAAMnH,GAAKhrI,GACnC+/H,EAAIoS,MAAMnH,GAAKhrI,GAAKiyI,EACpBlG,GAAS8E,EAAI7wI,IAAM,EACrB,CACA,KAAOA,GAAKy9H,GAAQgL,SAAUzoI,EAC5B4wI,EAAG5wI,GAAK,EACR6wI,EAAI7wI,GAAK,CAEb,CACA,SAASsyI,EAAe3N,EAAK4N,EAAcC,EAAa/L,GACtD,IAAI1G,EAAM4E,EAAIE,eACVF,EAAI8N,cAAgBhH,GAAatQ,qBAA4C,GAAnBoX,EAAa,IAA8B,GAAnBA,EAAa,KACjGA,EAAa,GAAKA,EAAa,GAAK,GAEtC,IAAK,IAAIvH,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IACxCvE,EAAUuE,GAAOvN,GAAQqJ,UACrBnC,EAAI8N,cAAgBhH,GAAarQ,wBACnCmX,EAAavH,GAAO,GAElBrG,EAAI8N,cAAgBhH,GAAapQ,qBACnCkX,EAAavH,GAAO,GAEG,GAArBuH,EAAavH,IACfe,GAAShM,EAAIqS,cAAcpH,IAAQvN,GAAQwL,YACvClJ,EAAIqS,cAAcpH,IAAQvN,GAAQC,aACpC+I,EAAUuE,GAAOvN,GAAQyL,aAG3BzC,EAAUuE,GAAOvN,GAAQC,WACrBqC,EAAIqS,cAAcpH,IAAQvN,GAAQqJ,YACpC/G,EAAIqS,cAAcpH,GAAOvN,GAAQwL,YAE/BlJ,EAAIqS,cAAcpH,IAAQvN,GAAQyL,YACpCnJ,EAAIqS,cAAcpH,GAAOvN,GAAQC,aAGrC8U,EAAYxH,GAAOjL,EAAIqS,cAAcpH,GACrCjL,EAAIqS,cAAcpH,GAAOvE,EAAUuE,EAEvC,CACA,SAAS0H,EAAUlpI,EAAGyxH,EAAG/7G,GACvB,OAAIA,GAAK,EACA1V,EAEL0V,GAAK,EACA+7G,EACLA,EAAI,EACC70H,KAAKsoI,IAAIllI,EAAIyxH,EAAG/7G,GAAK+7G,EAEvB,CACT,CACA,IAAI0X,EAAY,CACd,KACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAEF,SAASC,EAASC,EAAIC,GAEpB,IADA,IAAIC,EAAO,OACFvD,EAAK,EAAGA,EAAK/R,GAAQqE,QAAU,EAAG0N,IACzC,IAAK,IAAIC,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAAIxN,EAAM4Q,EAAG5Q,IAAI/xH,EAAEs/H,GAAIC,GACvB,GAAIxN,EAAM,EAAG,CACX,IAAIz4H,EAAIy4H,EAAM6Q,EACV5Q,EAAK2Q,EAAG3Q,GAAGhyH,EAAEs/H,GAAIC,GACjBvN,EAAK14H,IAELupI,GADE7Q,EAAS,KAAJ14H,EACCmpI,EAAUnD,IAAO,GAAKtD,GAEtByG,EAAUnD,GAAM9D,GAAO5Q,WAAWoH,EAAK14H,GAGrD,CACF,CAEF,OAAOupI,CACT,CACA,IAAIC,EAAY,CACd,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAEF,SAASC,EAASJ,EAAIC,GAEpB,IADA,IAAII,EAAO,SACF1D,EAAK,EAAGA,EAAK/R,GAAQoE,QAAU,EAAG2N,IAAM,CAC/C,IAAIvN,EAAM4Q,EAAG5Q,IAAIriI,EAAE4vI,GACnB,GAAIvN,EAAM,EAAG,CACX,IAAIz4H,EAAIy4H,EAAM6Q,EACV5Q,EAAK2Q,EAAG3Q,GAAGtiI,EAAE4vI,GACbtN,EAAK14H,IAEL0pI,GADEhR,EAAS,KAAJ14H,EACCwpI,EAAUxD,IAAO,GAAKtD,GAEtB8G,EAAUxD,GAAM9D,GAAO5Q,WAAWoH,EAAK14H,GAGrD,CACF,CACA,OAAO0pI,CACT,CACA,SAASC,EAAYpT,EAAKsN,EAAWuD,EAAIjlI,EAAKynI,GAC5C,IAAIpzI,EAAG0iC,EACP,IAAK1iC,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAI4R,UAAW3xI,EAAG,CACpC,IAEI1E,EAFAw2I,EAAM,EACN3qH,EAAI,EAER,IAAK7rB,EAAI,EAAGA,EAAIykI,EAAIsT,WAAWrzI,KAAM1E,IAAKonC,EAAG,CAC3C,IAAI7gC,EAAKwrI,EAAU3qG,GACnBovG,GAAOjwI,EACHslB,EAAItlB,IACNslB,EAAItlB,EACR,CACA+uI,EAAG5wI,GAAK8xI,EACRnmI,EAAI3L,GAAKmnB,EACTisH,EAAIpzI,GAAK8xI,EAAM/R,EAAIuT,YAAYtzI,GAC/B+rI,GAAShM,EAAIuT,YAAYtzI,IAAM,GAC/B+rI,GAAS6E,EAAG5wI,IAAM,GAClB+rI,GAASpgI,EAAI3L,IAAM,GACnB+rI,GAASqH,EAAIpzI,IAAM,EACrB,CACF,CACA,SAASuzI,EAAkBxT,EAAKp0H,EAAKynI,EAAKI,GACxC,IAAIC,EAAiBjF,EAAI93I,OAAS,EAC9BsJ,EAAI,EACJD,EAAIqzI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GACzB,GAAID,EAAI,EAAG,CACT,IAAIonB,EAAIxb,EAAI3L,GACRmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GAAShM,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,IACzE,IAAIo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB,IAAKA,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAU,EAAG3xI,IAE/B,GADAD,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GAC9BD,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACNmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GACEhM,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,EAAI,GAE1ED,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK+/H,EAAIsT,WAAWrzI,EAAI,GAAK,IAC7Fo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAKlB,GAFA+rI,GAAS/rI,GAAK+/H,EAAI4R,QAAU,GAC5B5xI,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GACjBD,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACV+rI,GAAShM,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIsT,WAAWrzI,EAAI,GAAK+/H,EAAIsT,WAAWrzI,GAAK,IACrEo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB+rI,GAAS/rI,GAAK+/H,EAAI4R,QAAU,EAC9B,CACA,IAAI/J,EAAU,EACZ,aACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,aACA,SA6RF,SAAS8L,EAAqB/O,EAAKhqI,EAAQswI,EAAQD,EAAK2C,EAAQN,EAAWE,EAASC,GAClF,IAAIzN,EAAM4E,EAAIE,eACd,GAAImG,EAAM,EACRiB,EAAIf,SAASnL,EAAKwN,EAAQC,GAAaxC,EAAKrwI,EAAQswI,QAC/C,GAAW,GAAPD,EACT,IAAK,IAAItoG,EAAI+6F,GAAQwH,QAAU,EAAGviG,GAAK,IAAKA,EAAG,CAC7C,IAAI9iC,EAAI2tI,EAAQC,EAAa,GAAG9qG,GAC5BxjB,EAAIquH,EAAQC,EAAa,GAAG9qG,GAChC6qG,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GACtD0S,EAAQC,EAAa,GAAG9qG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EACxD,CAEFwS,EAAU,GAAKL,EAAwBO,EAAQC,EAAa,GAAG,IAC/DH,EAAU,IAAMA,EAAU,GAC1B,IAAS3qG,EAAI+6F,GAAQwH,QAAU,EAAI,EAAGviG,GAAK,IAAKA,EAAG,CACjD,IAAIkrG,EAAKL,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACnDmrG,EAAKN,EAAQC,EAAa,GAAG/P,GAAQwH,QAAU,EAAIviG,GACvD2qG,EAAU5P,GAAQwH,QAAU,EAAIviG,GAAKsqG,EACb,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CAEE,IAAIC,EAAc,EAClB,IAASprG,EAAI,GAAIA,EAAI+6F,GAAQqL,SAAUpmG,IACrCorG,GAAeT,EAAU3qG,GAG7B,GAFEq9F,EAAI+F,SAASkF,GAAO8C,EAElBnJ,EAAI0C,SAAU,CAChB,IAAS3kG,EAAI,EAAGA,EAAI+6F,GAAQqL,SAAUpmG,IACpCq9F,EAAIuH,MAAMG,OAAOkG,GAAQ3C,GAAKtoG,GAAKq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAC9Dq9F,EAAIuH,MAAMyG,YAAY/C,GAAKtoG,GAAK2qG,EAAU3qG,GAE5Cq9F,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOjL,EAAIiG,GAAGgF,EACrC,CACF,CACA,SAAS2I,EAAqBhP,EAAKhqI,EAAQswI,EAAQD,EAAKyE,EAAQnC,EAAaG,EAASC,GACpF,IAAI3N,EAAM4E,EAAIE,eAId,GAHc,GAAV4K,GAAezE,EAAM,GACvBiB,EAAInB,UAAU/K,EAAK0N,EAAQC,GAAa1C,EAAKrwI,EAAQswI,GAE5C,GAAPD,EACF,IAAK,IAAItoG,EAAI+6F,GAAQsL,UAAY,EAAGrmG,GAAK,IAAKA,EAAG,CAC/C,IAAI9iC,EAAI6tI,EAAQC,EAAa,GAAG+B,GAAQ/sG,GACpCxjB,EAAIuuH,EAAQC,EAAa,GAAG+B,GAAQ/sG,GACxC+qG,EAAQC,EAAa,GAAG+B,GAAQ/sG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,GAC9D4S,EAAQC,EAAa,GAAG+B,GAAQ/sG,IAAM9iC,EAAIsf,GAAKwsH,GAAO7Q,MAAQ,EAChE,CAEFyS,EAAYmC,GAAQ,GAAKhC,EAAQC,EAAa,GAAG+B,GAAQ,GACzDnC,EAAYmC,GAAQ,IAAMnC,EAAYmC,GAAQ,GAC9C,IAAS/sG,EAAI+6F,GAAQsL,UAAY,EAAI,EAAGrmG,GAAK,IAAKA,EAAG,CACnD,IAAIkrG,EAAKH,EAAQC,EAAa,GAAG+B,GAAQhS,GAAQsL,UAAY,EAAIrmG,GAC7DmrG,EAAKJ,EAAQC,EAAa,GAAG+B,GAAQhS,GAAQsL,UAAY,EAAIrmG,GACjE4qG,EAAYmC,GAAQhS,GAAQsL,UAAY,EAAIrmG,GAAKsqG,EACzB,IAArBY,EAAKA,EAAKC,EAAKA,GAEpB,CACF,CACA,SAAS+F,EAAwCjP,EAAKgJ,EAAQ3C,EAAKqC,GACjE,IAAItN,EAAM4E,EAAIE,eACc,GAAxBF,EAAIqJ,kBAAyBhD,EAAM,IACrCjL,EAAIiE,YAAY2J,GAAQ3C,GAAOjL,EAAIkO,iBAAiBjD,GACpDjL,EAAIkO,iBAAiBjD,GAAOiC,EAAuBI,EAAWtN,GAElE,CA3VA3qI,KAAKwxI,iBAAmB,SAASjC,EAAKhqI,EAAQswI,EAAQ0C,EAAQkG,EAAeC,EAAkBC,EAAgBC,EAAmBvM,EAAQ+K,GACxI,IAQIyB,EAAQjJ,EACRhrI,EAAG1E,EAAGonC,EAAG0U,EACTo4F,EAAIC,EAEJyE,EA0OEjE,EAtPFlQ,EAAM4E,EAAIE,eACVsP,EAAUtI,GAAc,CAAC,EAAGpO,GAAQwH,UACpCmP,EAAUvI,GAAc,CAAC,EAAG,EAAGpO,GAAQsL,YACvCsL,EAAOzI,GAAYnO,GAAQgL,OAAS,GACpC6L,EAAO1I,GAAYnO,GAAQgL,OAAS,GACpCoI,EAAMjF,GAAYnO,GAAQgL,OAAS,GACnChC,EAAYqF,GAAU,GACtByG,EAAezG,GAAU,GAIzByI,EAAa1I,GAAc,CAAC,EAAG,MAE/B2I,EAAa1I,GAAUrO,GAAQgL,OAAS,GACxCgM,EAAa3I,GAAUrO,GAAQgL,OAAS,GAW5C,IAVAkD,GAASx2G,KAAKs/G,EAAY,GAC1BR,EAASlU,EAAIM,aACTsE,EAAIv5H,MAAQ+2H,GAASG,eACvB2R,EAAS,GAETC,EADEvP,EAAI+B,KAAO6E,GAAU9P,QACC,GAAfsE,EAAI2U,QAAe,EAAI3U,EAAI4U,SAAW5U,EAAI2U,QAAU,GACpD/P,EAAI+B,KAAO6E,GAAU5P,QAAUgJ,EAAI+B,KAAO6E,GAAU1P,UAAY8I,EAAI+B,KAAO6E,GAAU7P,OACrF,GAEA,EACNsP,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IAAO,CAC3C,IAAI4J,EAAUj6I,EAAOqwI,GACjB6J,GAAY5J,EAAS,IAAM,IAAM6B,EAAW,IAChD,IAAKxxI,EAAI,EAAGA,EAAI,IAAKA,IAAK,CACxB,IAAIw5I,GAAMC,GAGV,IAFAD,GAAOF,EAAQC,GAAYv5I,EAAI,IAC/By5I,GAAO,EACFryG,EAAI,EAAGA,GAAKoqG,EAAW,GAAK,EAAI,EAAGpqG,GAAK,EAC3CoyG,IAAQlN,EAAQllG,IAAMkyG,EAAQC,GAAYv5I,EAAIonC,GAAKkyG,EAAQC,GAAYv5I,EAAIwxI,EAAWpqG,IACtFqyG,IAAQnN,EAAQllG,EAAI,IAAMkyG,EAAQC,GAAYv5I,EAAIonC,EAAI,GAAKkyG,EAAQC,GAAYv5I,EAAIwxI,EAAWpqG,EAAI,IAEpG6xG,EAAWvJ,GAAK1vI,GAAKw5I,GAAOC,EAC9B,CACAlB,EAAclG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,IAC5C6I,EAAclG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,IAC1CiJ,EAAS,IACXH,EAAiBnG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,EAAM,IACrD8I,EAAiBnG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,EAAM,IAE3D,CACA,IAAKA,EAAM,EAAGA,EAAMiJ,EAAQjJ,IAAO,CACjC,IAAIuC,GACAE,GAKAuH,GAJAC,GAAcrJ,GAAY,IAC1BsJ,GAAW,CAAC,EAAG,EAAG,EAAG,GACrBC,GAAmBvJ,GAAY,IAC/BwJ,GAAkB,EAElBzpI,GAAMigI,GAAYnO,GAAQgL,QAC1B2K,GAAMxH,GAAYnO,GAAQgL,QAC1B4M,GAAa,CAAC,EAAG,EAAG,EAAG,GACvBhI,GAAYzB,GAAYnO,GAAQqL,UAChCwE,GAAczB,GAAc,CAAC,EAAGpO,GAAQuL,aAG5C,IAFA+C,GAAShM,EAAImR,SAAWzT,GAAQgL,QAChCsD,GAAShM,EAAI4R,SAAWlU,GAAQgL,QAC3BntI,EAAI,EAAGA,EAAI,EAAGA,IACjB25I,GAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GACrDywI,GAAShM,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAAK,GAClD65I,GAAiB75I,GAAK25I,GAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAC3E45I,GAAS,IAAMD,GAAY35I,GAE7B,GAAW,GAAP0vI,EACF,IAAK1vI,EAAI,EAAGA,EAAI,IAAKA,IAAK,CACxB,IAAIsE,GAAGsf,GACPtf,GAAI20I,EAAW,GAAGj5I,GAClB4jB,GAAIq1H,EAAW,GAAGj5I,GAClBi5I,EAAW,GAAGj5I,GAAKsE,GAAIsf,GACvBq1H,EAAW,GAAGj5I,GAAKsE,GAAIsf,EACzB,CAGA,IAAIq2H,GAAKhB,EAAiB,EAANvJ,GAChBwK,GAAQ,EACZ,IAAKl6I,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGtB,IAFA,IAAIm6I,GAAMD,GAAQ,GACdr0E,GAAK,EACFq0E,GAAQC,GAAKD,KACdr0E,GAAK/6D,KAAK01G,IAAIy5B,GAAGC,OACnBr0E,GAAK/6D,KAAK01G,IAAIy5B,GAAGC,MAErBzV,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,GAAK25I,GAAY35I,EAAI,GAAK6lE,GAC1D+zE,GAAS,EAAI55I,EAAI,IAAM6lE,GACnBA,GAAK8zE,GAAY35I,EAAI,EAAI,IAC3BywI,GAASkJ,GAAY35I,EAAI,EAAI,GAAK,GAClC6lE,IAAU8zE,GAAY35I,EAAI,EAAI,IAE9B6lE,GADS8zE,GAAY35I,EAAI,EAAI,GAAU,GAAL6lE,GAC7B8zE,GAAY35I,EAAI,EAAI,IAAW,GAAL6lE,IAE1B,EACPg0E,GAAiB75I,EAAI,GAAK6lE,EAC5B,CAEF,GAAIwjE,EAAI0C,SAAU,CAChB,IAAI79H,GAAI2rI,GAAiB,GACzB,IAAK75I,EAAI,EAAGA,EAAI,GAAIA,IACdkO,GAAI2rI,GAAiB75I,KACvBkO,GAAI2rI,GAAiB75I,IAEzBykI,EAAIuH,MAAME,IAAImG,GAAQ3C,GAAOjL,EAAIuH,MAAMoO,SAAS1K,GAChDjL,EAAIuH,MAAMoO,SAAS1K,GAAOxhI,EAC5B,CAEA,IADAwrI,GAAyB,GAAPhK,EAAWjL,EAAI2H,MAAMiO,aAAe5V,EAAI2H,MAAMkO,WAC3Dt6I,EAAI,EAAGA,EAAI,GAAIA,IACO,GAArB+5I,GAAW/5I,EAAI,IAAW65I,GAAiB75I,GAAK05I,KAClDK,GAAW/5I,EAAI,GAAKA,EAAI,EAAI,GAGhC,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAIkmG,GACA0zC,GAAS55I,EAAI,GAAK45I,GAAS55I,IAC7BywI,GAASmJ,GAAS55I,GAAK,GACvBkmG,GAAQ0zC,GAAS55I,EAAI,GAAK45I,GAAS55I,KAEnCywI,GAASmJ,GAAS55I,EAAI,GAAK,GAC3BkmG,GAAQ0zC,GAAS55I,GAAK45I,GAAS55I,EAAI,IAEjCkmG,GAAQ,MACV6zC,GAAW/5I,GAAK,EACP,GAALA,IACF+5I,GAAW,GAAK,GAEtB,CAsCA,IArCqB,GAAjBA,GAAW,IAAyC,GAA9BtV,EAAI2H,MAAMmO,YAAY7K,KAC9CqK,GAAW,GAAK,GAEgB,GAA9BtV,EAAI2H,MAAMmO,YAAY7K,IAAaqK,GAAW,GAAKA,GAAW,GAAKA,GAAW,GAAKA,GAAW,IAAM,IACtGD,GAAkB,EACG,GAAjBC,GAAW,IAA4B,GAAjBA,GAAW,KACnCA,GAAW,GAAK,GACG,GAAjBA,GAAW,IAA4B,GAAjBA,GAAW,KACnCA,GAAW,GAAK,GACG,GAAjBA,GAAW,IAA4B,GAAjBA,GAAW,KACnCA,GAAW,GAAK,IAEhBrK,EAAM,EACRuH,EAAavH,GAAOoK,GAEG,GAAnBA,KACF7C,EAAa,GAAKA,EAAa,GAAK,GAGxC9K,EAAOuD,GAAOjL,EAAI+F,SAASkF,GAC3ByC,GAAU2G,EACV7G,GAAU4G,EACV/G,EACEzI,EACA0I,GACAC,GACAC,GACM,EAANvC,EACAyC,GACM,EAANzC,EACA2C,EACA3C,EACArwI,EACAswI,GAEFkI,EAAYpT,EAAKsN,GAAWgH,EAAM1oI,GAAKynI,IACvCG,EAAkBxT,EAAKp0H,GAAKynI,GAAKoB,GAC5B/E,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACrC,IAAIqB,GAAKC,GAGT,IAFAc,EAAkBlN,EAAK2I,GAAagH,EAAMzD,EAAK7F,EAAKyE,GACpDkB,EAA6B5Q,EAAKuU,EAAMzD,EAAK7F,EAAKyE,GAC7CD,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IAAM,CAGvC,GAFAuB,GAAOhR,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAC1BsB,IAAQrE,EACJ2I,GAAW5F,IAAW,GAA+B,GAA1B4F,GAAW5F,EAAS,GAAS,CAC1D,IAAIhpC,GAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,GAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,IACnBsqC,GACApE,EAAkBuH,GAEpBnD,GAAO3qI,KAAKwF,IAAImlI,GAAM5vE,GACxB,CACA,GAA0B,GAAtBk0E,GAAW5F,GAAc,CACvBhpC,GAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,GAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,IACnBsqC,GACAnE,EAAkBsH,GAEpBnD,GAAO3qI,KAAKwF,IAAImlI,GAAM5vE,GACxB,MAAO,GAAc,GAAVsuE,GAAyC,GAA1B4F,GAAW5F,EAAS,IAAqB,GAAVA,GAA6C,GAA9B1P,EAAI2H,MAAMmO,YAAY7K,GAAW,CACnGvkC,GAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,GAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,IACnBsqC,GACAnE,EAAkBsH,GAEpBnD,GAAO3qI,KAAKwF,IAAImlI,GAAM5vE,GACxB,CACA2vE,GAAMmE,GAAqB,EAATxF,EAAa,GAAKwF,GAAqB,EAATxF,EAAa,GAAKwF,GAAqB,EAATxF,EAAa,GACzD,EAA9BwF,GAAqB,EAATxF,EAAa,GAASqB,KACpCC,IAAQ,GAC0B,EAA9BkE,GAAqB,EAATxF,EAAa,GAASqB,KACpCC,IAAQ,KAEZhR,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAUsB,EAC/B,CACF,CAIE,IAHFhR,EAAI2H,MAAMmO,YAAY7K,GAAOqK,GAAW,GACxCj+F,EAAI,EAEGp3C,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAAK,CAChC,IAAIivI,GAAKlP,EAAI+V,MAAM91I,GAAG,GAClB+1I,GAAM1B,EAAKpF,IAAMT,EAAIgG,EAAWvF,KAChCgD,GAAMlS,EAAIiW,MAAM5+F,KAAO2+F,GAC3B,QAAS9G,IAAMlP,EAAI+V,MAAM91I,GAAG,GAC1B+1I,GAAM1B,EAAKpF,IAAMT,EAAIgG,EAAWvF,KAChCgD,GAAMnD,EAASmD,GAAKlS,EAAIiW,MAAM5+F,KAAO2+F,GAAK9G,GAAIA,GAAKjvI,EAAG+/H,EAAK,GAE7DkS,IAAO,iBACHlS,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQC,WACxCmT,EAAI7wI,GAAKiyI,GAETpB,EAAI7wI,GAAK0yI,EACPtsI,KAAKwF,IACHqmI,GACA7rI,KAAKwF,IAAIugI,EAASpM,EAAIkW,KAAKjL,GAAKhrI,GAAIosI,EAAUrM,EAAImW,KAAKlL,GAAKhrI,KAE9DiyI,GACAiC,GAGJnU,EAAImW,KAAKlL,GAAKhrI,GAAK+/H,EAAIkW,KAAKjL,GAAKhrI,GACjC+/H,EAAIkW,KAAKjL,GAAKhrI,GAAKiyI,EACrB,CAEF,KAAOjyI,GAAKy9H,GAAQgL,SAAUzoI,EAC5Bq0I,EAAKr0I,GAAK,EACV6wI,EAAI7wI,GAAK,EAEXwxI,EAA6BzR,EAAKsU,EAAMxD,EAAK7F,EAC/C,EACIrG,EAAIv5H,MAAQ+2H,GAASE,QAAUsC,EAAIv5H,MAAQ+2H,GAASG,cAClDqC,EAAIwR,aAAe,GACrB5G,EAA0B5K,EAAKA,EAAIwR,cAGnCxR,EAAIv5H,MAAQ+2H,GAASG,gBAEvBoN,EAAO3P,GACPkQ,EAAQtL,EAAIsL,MACR7pI,KAAK01G,IAAIm0B,GAAS,GACpBD,EAASjQ,EAAKkQ,EAAOtL,EAAIyR,SAAWrW,EAAI+D,IAAInnD,SAIhD,IADA21D,EAAe3N,EAAK4N,EAAcC,EAAa/L,GAC1CuE,EAAM,EAAGA,EAAMiJ,EAAQjJ,IAAO,CACjC,IAAIqL,GAEA1uI,GACAkrI,GAFAyD,GAAS,EAGTtL,EAAM,GACRqL,GAAMrC,EACNsC,IAAU,EACV3uI,GAAO81H,GAAQqJ,UACX0L,EAAY,IAAM/U,GAAQC,YAAc8U,EAAY,IAAM/U,GAAQC,aACpE/1H,GAAO81H,GAAQC,YAEjBmV,GAAKiB,EAAiBnG,GAAQ3C,EAAM,KAEpCqL,GAAMtC,EACNuC,GAAS,EACT3uI,GAAO6qI,EAAYxH,GACnB6H,GAAKgB,EAAclG,GAAQ3C,IAEzBrjI,IAAQ81H,GAAQC,WAClB2Y,GAAIC,GAAStL,GAAO4H,EAASC,GAAI9S,EAAI+S,eAErCuD,GAAIC,GAAStL,GAAOiI,EAASJ,GAAI9S,EAAI+S,eACnCnO,EAAI0C,WACNtH,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOqL,GAAIC,GAAStL,GAC7C,CACA,OAAO,CACT,EAkEA,IAAIuL,EAAW,EACb,aACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,aACA,SAEF,SAASC,EAAwB7R,EAAKhqI,EAAQswI,EAAQ0C,EAAQkG,EAAeC,EAAkBrM,EAAQgP,EAAkBpB,EAAY9C,GAKnI,IAJA,IAAIgC,EAAa1I,GAAc,CAAC,EAAG,MAC/B9L,EAAM4E,EAAIE,eACV6R,EAAY3W,EAAIM,aAChBsW,EAAYhS,EAAIv5H,MAAQ+2H,GAASG,aAAe,EAAIoU,EAC/C1L,EAAM,EAAGA,EAAM0L,EAAW1L,IAAO,CACxC4L,OAASj8I,EAAOqwI,GAEhB,IADA,IAAI6J,EAAY5J,EAAS,IAAM,IAAM6B,EAAW,IACvCxxI,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5B,IAAIw5I,EAAMC,EACVD,EAAO8B,OAAO/B,EAAYv5I,EAAI,IAC9By5I,EAAO,EACP,IAAK,IAAIryG,EAAI,EAAGA,GAAKoqG,EAAW,GAAK,EAAI,EAAGpqG,GAAK,EAC/CoyG,GAAQyB,EAAS7zG,IAAMk0G,OAAO/B,EAAYv5I,EAAIonC,GAAKk0G,OAAO/B,EAAYv5I,EAAIwxI,EAAWpqG,IACrFqyG,GAAQwB,EAAS7zG,EAAI,IAAMk0G,OAAO/B,EAAYv5I,EAAIonC,EAAI,GAAKk0G,OAAO/B,EAAYv5I,EAAIwxI,EAAWpqG,EAAI,IAEnG6xG,EAAWvJ,GAAK1vI,GAAKw5I,EAAOC,CAC9B,CACAlB,EAAclG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,IAC5C6I,EAAclG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,IAC1C2L,EAAY,IACd7C,EAAiBnG,GAAQ3C,GAAK9I,GAAGxzH,OAAOqxH,EAAImC,GAAG8I,EAAM,IACrD8I,EAAiBnG,GAAQ3C,GAAK/I,IAAIvzH,OAAOqxH,EAAIkC,IAAI+I,EAAM,IAE3D,CACA,IAASA,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACxC,IAAImK,EAAmBvJ,GAAY,IAC/BqJ,EAAcrJ,GAAY,IAC1BsJ,EAAW,CAAC,EAAG,EAAG,EAAG,GACrBK,EAAKhB,EAAiB,EAANvJ,GAChBwK,EAAQ,EACRR,EAAyB,GAAPhK,EAAWjL,EAAI2H,MAAMiO,aAAe5V,EAAI2H,MAAMkO,WAChER,EAAkB,EACtB,GAAW,GAAPpK,EACF,IAAS1vI,EAAI,EAAGonC,EAAI,IAAKA,EAAI,IAAKpnC,IAAKonC,EAAG,CACxC,IAAI9iC,EAAI20I,EAAW,GAAGj5I,GAClB4jB,EAAIq1H,EAAW,GAAGj5I,GACtBi5I,EAAW,GAAGj5I,GAAKsE,EAAIsf,EACvBq1H,EAAW,GAAGj5I,GAAKsE,EAAIsf,CACzB,CAEF,IAAS5jB,EAAI,EAAGA,EAAI,EAAGA,IACrB25I,EAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GACrDywI,GAAShM,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAAK,GAClD65I,EAAiB75I,GAAK25I,EAAY35I,GAAKykI,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,EAAI,GAC3E45I,EAAS,IAAMD,EAAY35I,GAE7B,IAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAG1B,IAFA,IAAIm6I,EAAMD,EAAQ,GACdr0E,EAAK,EACFq0E,EAAQC,EAAKD,IACdr0E,EAAK/6D,KAAK01G,IAAIy5B,EAAGC,MACnBr0E,EAAK/6D,KAAK01G,IAAIy5B,EAAGC,KAErBzV,EAAI2H,MAAM4N,iBAAiBtK,GAAK1vI,GAAK25I,EAAY35I,EAAI,GAAK6lE,EAC1D+zE,EAAS,EAAI55I,EAAI,IAAM6lE,EACnBA,EAAK8zE,EAAY35I,EAAI,EAAI,IAC3BywI,GAASkJ,EAAY35I,EAAI,EAAI,GAAK,GAClC6lE,GAAU8zE,EAAY35I,EAAI,EAAI,IAE9B6lE,EADS8zE,EAAY35I,EAAI,EAAI,GAAU,GAAL6lE,EAC7B8zE,EAAY35I,EAAI,EAAI,IAAW,GAAL6lE,GAE1B,EAEPg0E,EAAiB75I,EAAI,GAAK6lE,CAC5B,CACA,IAAS7lE,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAIw1I,EAAMmE,EAAgB,EAAJ35I,EAAQ,GAAK25I,EAAgB,EAAJ35I,EAAQ,GAAK25I,EAAgB,EAAJ35I,EAAQ,GAC5Eu7I,EAAS,EACgB,EAAzB5B,EAAgB,EAAJ35I,EAAQ,GAASw1I,IAC/B+F,GAAU,GACmB,EAAzB5B,EAAgB,EAAJ35I,EAAQ,GAASw1I,IAC/B+F,GAAU,KAGdJ,EAAiBzL,GAAK1vI,GAAKu7I,CAC7B,CACA,GAAIlS,EAAI0C,SAAU,CAChB,IAAI79H,EAAI2rI,EAAiB,GACzB,IAAS75I,EAAI,EAAGA,EAAI,GAAIA,IAClBkO,EAAI2rI,EAAiB75I,KACvBkO,EAAI2rI,EAAiB75I,IAGzBykI,EAAIuH,MAAME,IAAImG,GAAQ3C,GAAOjL,EAAIuH,MAAMoO,SAAS1K,GAChDjL,EAAIuH,MAAMoO,SAAS1K,GAAOxhI,CAC5B,CACA,IAASlO,EAAI,EAAGA,EAAI,GAAIA,IACQ,GAA1B+5I,EAAWrK,GAAK1vI,EAAI,IAAW65I,EAAiB75I,GAAK05I,IACvDK,EAAWrK,GAAK1vI,EAAI,GAAKA,EAAI,EAAI,GAGrC,IAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIgjD,EAAI42F,EAAS55I,EAAI,GACjBK,EAAIu5I,EAAS55I,GACb6rB,EAAI/gB,KAAKuF,IAAI2yC,EAAG3iD,GAChBwrB,EAAI,KACFm3B,EAAI,IAAM3iD,GAAKA,EAAI,IAAM2iD,IAClB,GAALhjD,GAAU+5I,EAAWrK,GAAK,IAAMqK,EAAWrK,GAAK1vI,KAClD+5I,EAAWrK,GAAK,GAAK,GAEvBqK,EAAWrK,GAAK1vI,GAAK,EAG3B,CACI+5I,EAAWrK,GAAK,IAAMjL,EAAI2H,MAAMmO,YAAY7K,KAC9CqK,EAAWrK,GAAK,GAAK,GAEW,GAA9BjL,EAAI2H,MAAMmO,YAAY7K,IAAaqK,EAAWrK,GAAK,GAAKqK,EAAWrK,GAAK,GAAKqK,EAAWrK,GAAK,GAAKqK,EAAWrK,GAAK,IAAM,IAC1HoK,EAAkB,EACQ,GAAtBC,EAAWrK,GAAK,IAAiC,GAAtBqK,EAAWrK,GAAK,KAC7CqK,EAAWrK,GAAK,GAAK,GAEG,GAAtBqK,EAAWrK,GAAK,IAAiC,GAAtBqK,EAAWrK,GAAK,KAC7CqK,EAAWrK,GAAK,GAAK,GAEG,GAAtBqK,EAAWrK,GAAK,IAAiC,GAAtBqK,EAAWrK,GAAK,KAC7CqK,EAAWrK,GAAK,GAAK,IAGrBA,EAAM,EACRuH,EAAavH,GAAOoK,EAEG,GAAnBA,IACF7C,EAAa,GAAKA,EAAa,GAAK,GAGxC9K,EAAOuD,GAAOjL,EAAI+F,SAASkF,EAC7B,CACF,CACA,SAAS8L,EAAsB/W,EAAKiL,EAAKyE,GACvC,GAAc,GAAVA,EACF,IAAK,IAAIzvI,EAAI,EAAGA,EAAI+/H,EAAImR,QAASlxI,IAC/B+/H,EAAIsS,MAAMrH,GAAKhrI,GAAK+/H,EAAIoS,MAAMnH,GAAKhrI,GACnC+/H,EAAIoS,MAAMnH,GAAKhrI,GAAK,CAG1B,CACA,SAAS+2I,EAAsBhX,EAAKiL,GAClC,IAAK,IAAIhrI,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAC/B+/H,EAAImW,KAAKlL,GAAKhrI,GAAK+/H,EAAIkW,KAAKjL,GAAKhrI,GACjC+/H,EAAIkW,KAAKjL,GAAKhrI,GAAK,CAEvB,CACA,SAASg3I,GAAyBjX,EAAKp0H,EAAKynI,EAAKI,GAC/C,IAAIC,EAAiBjF,EAAI93I,OAAS,EAC9BsJ,EAAI,EACJD,EAAIqzI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GACzB,GAAID,EAAI,EAAG,CACT,IAAIonB,EAAIxb,EAAI3L,GACRmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GAAShM,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,IACzE,IAAIo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB,IAAKA,EAAI,EAAGA,EAAI+/H,EAAImR,QAAU,EAAGlxI,IAG/B,GAFAD,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GAAKozI,EAAIpzI,EAAI,GAClC+rI,GAAS/rI,EAAI,EAAI+/H,EAAImR,SACjBnxI,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACNmnB,EAAIxb,EAAI3L,EAAI,KACdmnB,EAAIxb,EAAI3L,EAAI,IACd+rI,GACEhM,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,EAAI,GAE1ED,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK+/H,EAAIgS,WAAW/xI,EAAI,GAAK,IAC7Fo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAKlB,GAFA+rI,GAAS/rI,GAAK+/H,EAAImR,QAAU,GAC5BnxI,EAAIqzI,EAAIpzI,EAAI,GAAKozI,EAAIpzI,GACjBD,EAAI,EAAG,CACLonB,EAAIxb,EAAI3L,EAAI,GACZmnB,EAAIxb,EAAI3L,KACVmnB,EAAIxb,EAAI3L,IACV+rI,GAAShM,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK,EAAI,GACzDD,EAAI,IAAU,EAAJonB,EAAQpnB,IAAMA,GAAKggI,EAAIgS,WAAW/xI,EAAI,GAAK+/H,EAAIgS,WAAW/xI,GAAK,IACrEo3C,EAAI,EAAIr3C,EACRq3C,EAAIq8F,IACNr8F,EAAIq8F,GACND,EAASxzI,GAAKo3C,CAChB,MACEo8F,EAASxzI,GAAK,EAEhB+rI,GAAS/rI,GAAK+/H,EAAImR,QAAU,EAC9B,CACA,SAAS+F,GAAyBtS,EAAK2I,EAAasD,EAAIC,EAAK7F,EAAKyE,GAChE,IAGIn0I,EAAGonC,EAAG1iC,EAHN+/H,EAAM4E,EAAIE,eACVl5H,EAAM,IAAIurI,MAAMzZ,GAAQgL,QACxB2K,EAAMxH,GAAYnO,GAAQgL,QAE1BgM,EAAa,IAAI0C,IAAI1Z,GAAQgL,QACjC,IAAKzoI,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAImR,UAAWlxI,EAAG,CACpC,IAAI8xI,EAAM,EACN3qH,EAAI,EACJ1d,EAAIs2H,EAAIgS,WAAW/xI,GACvB,IAAK1E,EAAI,EAAGA,EAAImO,IAAKnO,IAAKonC,EAAG,CAC3B,IAAI7gC,EAAKyrI,EAAYmC,GAAQ/sG,GAC7BovG,GAAOjwI,EACHslB,EAAItlB,IACNslB,EAAItlB,EACR,CACA+uI,EAAG5wI,GAAK8xI,EACRnmI,EAAI3L,GAAKmnB,EACTisH,EAAIpzI,GAAK8xI,EAAMroI,EACfsiI,GAASqH,EAAIpzI,IAAM,EACrB,CAEA,IADA+rI,GAAS/rI,GAAK+/H,EAAImR,SACXlxI,EAAIy9H,GAAQgL,SAAUzoI,EAC3B2L,EAAI3L,GAAK,EACTozI,EAAIpzI,GAAK,EAGX,IADAg3I,GAAyBjX,EAAKp0H,EAAKynI,EAAKqB,GACnC/xG,EAAI1iC,EAAI,EAAGA,EAAI+/H,EAAImR,QAASlxI,IAAK,CACpC,IAEIo3I,EAAIC,EACJ7tI,EAAGyoI,EAAKqF,EAHRrI,EAAKlP,EAAIiS,QAAQhyI,GAAG,GACpB6U,EAAOkrH,EAAIiS,QAAQhyI,GAAG,GAG1Bo3I,EAAK3C,EAAWxF,GAChBoI,EAAO,EACPpF,EAAMlS,EAAImS,MAAMxvG,GAAKkuG,EAAG3B,GAAMT,EAAIiG,EAAWxF,MAC3CvsG,IACAusG,EACF,MAAOA,GAAMp6H,EACXuiI,GAAM3C,EAAWxF,GACjBoI,GAAQ,EACR7tI,EAAIu2H,EAAImS,MAAMxvG,GAAKkuG,EAAG3B,GAAMT,EAAIiG,EAAWxF,IAC3CgD,EAAM3C,EAAgB2C,EAAKzoI,EAAGylI,EAAKjvI,KACjC0iC,IACAusG,EAEJmI,GAAM,EAAI,EAAIA,IAAO,EAAIC,GACzBC,EAAqB,GAAV9I,EAAI4I,GACfnF,GAAOqF,EACPzG,EAAI7wI,GAAKiyI,EACTlS,EAAIsS,MAAMrH,GAAKhrI,GAAK+/H,EAAIoS,MAAMnH,GAAKhrI,GACnC+/H,EAAIoS,MAAMnH,GAAKhrI,GAAKiyI,EAElBzoI,EAAImC,EAAI3L,GACRwJ,GAAKu2H,EAAIwX,SAASv3I,GAClBwJ,GAAK8tI,EACDzG,EAAI7wI,GAAKwJ,IACXqnI,EAAI7wI,GAAKwJ,GAGTu2H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEZjC,EAAI7wI,GAAK4wI,EAAG5wI,KACd6wI,EAAI7wI,GAAK4wI,EAAG5wI,IAEV+/H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEhB/G,GAAS8E,EAAI7wI,IAAM,EACrB,CACA,KAAOA,EAAIy9H,GAAQgL,SAAUzoI,EAC3B4wI,EAAG5wI,GAAK,EACR6wI,EAAI7wI,GAAK,CAEb,CACA,SAASw3I,GAAyBzX,EAAKsN,EAAWgH,EAAMxD,EAAK7F,GAC3D,IAGIhrI,EAHA2L,EAAMigI,GAAYnO,GAAQgL,QAC1B2K,EAAMxH,GAAYnO,GAAQgL,QAC1B+L,EAAa1I,GAAUrO,GAAQgL,OAAS,GAE5C0K,EAAYpT,EAAKsN,EAAWgH,EAAM1oI,EAAKynI,GACvCG,EAAkBxT,EAAKp0H,EAAKynI,EAAKoB,GACjC,IAAIp9F,EAAI,EACR,IAAKp3C,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAAK,CAChC,IAAIwJ,EAAGyoI,EAAKqF,EAAUv3G,EAClBkvG,EAAKlP,EAAI+V,MAAM91I,GAAG,GAClB6U,EAAOkrH,EAAI+V,MAAM91I,GAAG,GACpBo3I,EAAK,EACLC,EAAO,EACXD,EAAK5C,EAAWvF,GAChBoI,GAAQ,EACRpF,EAAMlS,EAAIiW,MAAM5+F,GAAKi9F,EAAKpF,GAAMT,EAAIgG,EAAWvF,MAC7C73F,IACA63F,EACF,MAAOA,GAAMp6H,EACXuiI,GAAM5C,EAAWvF,GACjBoI,GAAQ,EACR7tI,EAAIu2H,EAAIiW,MAAM5+F,GAAKi9F,EAAKpF,GAAMT,EAAIgG,EAAWvF,IAC7ClvG,EAAIuvG,EAAgB2C,EAAKzoI,EAAGylI,EAAKjvI,GACjCiyI,EAAMlyG,IACJqX,IACA63F,EAKJ,GAHAmI,GAAM,EAAI,EAAIA,IAAO,EAAIC,GACzBC,EAAqB,GAAV9I,EAAI4I,GACfnF,GAAOqF,EACHvX,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQC,WAAY,CACpD,IAAI+Z,EAAYtL,EAASpM,EAAIkW,KAAKjL,GAAKhrI,GAErC6wI,EAAI7wI,GADFy3I,EAAY,EACLrxI,KAAKwF,IAAIqmI,EAAKwF,GAEdrxI,KAAKwF,IAAIqmI,EAAKoC,EAAKr0I,GAAK4sI,EAErC,KAAO,CACL,IAAI8K,EAActL,EAAUrM,EAAImW,KAAKlL,GAAKhrI,GACtC23I,EAAcxL,EAASpM,EAAIkW,KAAKjL,GAAKhrI,GAErC03I,GAAe,IACjBA,EAAczF,GAEZ0F,GAAe,IACjBA,EAAc1F,GAGdwF,EADE1X,EAAIqS,cAAoB,EAANpH,IAAYvN,GAAQqJ,UAC5B1gI,KAAKwF,IAAI+rI,EAAaD,GAEtBC,EAEd9G,EAAI7wI,GAAKoG,KAAKwF,IAAIqmI,EAAKwF,EACzB,CACA1X,EAAImW,KAAKlL,GAAKhrI,GAAK+/H,EAAIkW,KAAKjL,GAAKhrI,GACjC+/H,EAAIkW,KAAKjL,GAAKhrI,GAAKiyI,EAEjBzoI,EAAImC,EAAI3L,GACRwJ,GAAKu2H,EAAI6X,SAAS53I,GAClBwJ,GAAK8tI,EACDzG,EAAI7wI,GAAKwJ,IACXqnI,EAAI7wI,GAAKwJ,GAGTu2H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEZjC,EAAI7wI,GAAKq0I,EAAKr0I,KAChB6wI,EAAI7wI,GAAKq0I,EAAKr0I,IAEZ+/H,EAAI+S,cAAgB,IACtBjC,EAAI7wI,IAAM+/H,EAAI+S,eAEhB/G,GAAS8E,EAAI7wI,IAAM,EACrB,CACA,KAAOA,EAAIy9H,GAAQgL,SAAUzoI,EAC3Bq0I,EAAKr0I,GAAK,EACV6wI,EAAI7wI,GAAK,CAEb,CACA,SAAS63I,GAA0BlT,EAAK4N,GACtC,IAAIxS,EAAM4E,EAAIE,eACVF,EAAI8N,cAAgBhH,GAAatQ,qBAA4C,GAAnBoX,EAAa,IAA8B,GAAnBA,EAAa,KACjGA,EAAa,GAAKA,EAAa,GAAK,GAEtC,IAAK,IAAIvH,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IACpCrG,EAAI8N,cAAgBhH,GAAarQ,wBACnCmX,EAAavH,GAAO,GAElBrG,EAAI8N,cAAgBhH,GAAapQ,qBACnCkX,EAAavH,GAAO,EAG1B,CACA,SAAS8M,GAAwBnT,EAAK4N,EAAcC,GAElD,IADA,IAAIzS,EAAM4E,EAAIE,eACLmG,EAAM,EAAGA,EAAMjL,EAAIM,aAAc2K,IAAO,CAC/C,IAAIvE,EAAYhJ,GAAQqJ,UACC,GAArByL,EAAavH,IACfe,GAAShM,EAAIqS,cAAcpH,IAAQvN,GAAQwL,YACvClJ,EAAIqS,cAAcpH,IAAQvN,GAAQC,aACpC+I,EAAYhJ,GAAQyL,aAGtBzC,EAAYhJ,GAAQC,WAChBqC,EAAIqS,cAAcpH,IAAQvN,GAAQqJ,YACpC/G,EAAIqS,cAAcpH,GAAOvN,GAAQwL,YAE/BlJ,EAAIqS,cAAcpH,IAAQvN,GAAQyL,YACpCnJ,EAAIqS,cAAcpH,GAAOvN,GAAQC,aAGrC8U,EAAYxH,GAAOjL,EAAIqS,cAAcpH,GACrCjL,EAAIqS,cAAcpH,GAAOvE,CAC3B,CACF,CACA,SAASsR,GAA6BnH,EAAIC,EAAKmH,EAAQC,EAAQ/H,EAAWD,EAAOxmI,GAI/E,IAHA,IAEIqmI,EAAOD,EAFPM,EAAiB,EAARF,EACTG,EAAWH,EAAQ,EAAI7pI,KAAKsoI,IAAI,GAAIwB,GAAa,EAE5ClwI,EAAI,EAAGA,EAAIyJ,IAAKzJ,EAAG,CAC1B,IAAIk4I,EAAMtH,EAAG,GAAG5wI,GACZm4I,EAAMvH,EAAG,GAAG5wI,GACZo4I,EAAOvH,EAAI,GAAG7wI,GACdq4I,EAAOxH,EAAI,GAAG7wI,GACdwwI,EAAOK,EAAI,GAAG7wI,GACdywI,EAAOI,EAAI,GAAG7wI,GAClB,GAAIo4I,GAAQ,KAAOC,GAAQA,GAAQ,KAAOD,EAAM,CAC9C,IAAIE,EAAQN,EAAOh4I,GAAKm4I,EACpBpI,EAAQiI,EAAOh4I,GAAKk4I,EACxBrI,EAAOzpI,KAAKuF,IAAI6kI,EAAMpqI,KAAKwF,IAAI6kI,EAAM6H,IACrCxI,EAAQ1pI,KAAKuF,IAAI8kI,EAAMrqI,KAAKwF,IAAI4kI,EAAMT,GACxC,MACEF,EAAOW,EACPV,EAAQW,EAEV,GAAIR,EAAQ,EAAG,CACb,IAAIM,EAAOgI,EACPlI,EAAM4H,EAAOj4I,GAAKowI,EAKtB,GAJAG,EAAQnqI,KAAKwF,IAAIxF,KAAKuF,IAAIysI,EAAM/H,GAAMjqI,KAAKuF,IAAI0sI,EAAMhI,IACrDG,EAAOpqI,KAAKuF,IAAIkkI,EAAMQ,GACtBI,EAAOrqI,KAAKuF,IAAImkI,EAAOO,GACvBkI,EAAQ/H,EAAOC,EACX8H,EAAQ,GAAKhI,EAAQJ,EAASoI,EAAO,CACvC,IAAIx1I,EAAIwtI,EAAQJ,EAASoI,EACzB/H,GAAQztI,EACR0tI,GAAQ1tI,CACV,CACA8sI,EAAOzpI,KAAKwF,IAAI4kI,EAAMX,GACtBC,EAAQ1pI,KAAKwF,IAAI6kI,EAAMX,EACzB,CACID,EAAOqI,IACTrI,EAAOqI,GAELpI,EAAQqI,IACVrI,EAAQqI,GAEVtH,EAAI,GAAG7wI,GAAK6vI,EACZgB,EAAI,GAAG7wI,GAAK8vI,CACd,CACF,CAyMA,SAAS0I,GAAUC,EAAMC,GACvB,IACIC,EADAC,EAAQH,EAOZ,OAJEE,EADEC,GAAS,EACM,IAARA,EAEDA,EAAQF,EAEdC,IAAU,GACL,EAEFvyI,KAAKyyI,IAAIF,EAAQ5L,EAC1B,CACA,SAAS+L,GAAeJ,GACtB,IAAIK,EAAQ,EACRC,EAAQ,EAENxvI,EAAI,EAGR,IAAKA,EAAI,EAAGgvI,GAAUhvI,EAAGkvI,GAAY,MAAOlvI,GAAK,GAEjD5J,EAAI4J,EACJohD,EAAK,EACL,MAAOxkD,KAAK01G,IAAIlxD,EAAKhrD,GAAK,MACxB4J,GAAKohD,EAAKhrD,GAAK,EACX44I,GAAUhvI,EAAGkvI,GAAY,EAC3B9tF,EAAKphD,EAEL5J,EAAI4J,EAGRuvI,EAAQn5I,EAGR,IACIA,EACAgrD,EAFAphD,EAAI,EAGR,IAAKA,EAAI,EAAGgvI,GAAUhvI,EAAGkvI,GAAY,MAAOlvI,GAAK,GAEjD5J,EAAI,EACJgrD,EAAKphD,EACL,MAAOpD,KAAK01G,IAAIlxD,EAAKhrD,GAAK,MACxB4J,GAAKohD,EAAKhrD,GAAK,EACX44I,GAAUhvI,EAAGkvI,GAAY,EAC3B94I,EAAI4J,EAEJohD,EAAKphD,EAGTwvI,EAAQpuF,EAGR,IAEItvD,EAFA29I,EAAM,EACN9xH,EAAI,IAER,IAAK7rB,EAAI,EAAGA,GAAK6rB,IAAK7rB,EAAG,CACnBkO,EAAIuvI,EAAQz9I,GAAK09I,EAAQD,GAAS5xH,EAAtC,IACI8zG,EAAIud,GAAUhvI,EAAGkvI,GACrBO,GAAOhe,CACT,CAEE,IAAIie,GAAQ/xH,EAAI,IAAM8xH,GAAOD,EAAQD,IACrC,OAAOG,CAGb,CACA,SAASC,GAAQV,GACf,IAAIG,EAAOpvI,EAAGmvI,EAAOS,EAarB,OAZAR,EAAQH,EAENG,GADEA,GAAS,EACF,EAEA,IACPA,GAAS,IAAOA,GAAS,KAC3BQ,EAAOR,EAAQ,GACfpvI,EAAI,GAAK4vI,EAAOA,EAAO,EAAIA,IAE3B5vI,EAAI,EACNovI,GAAS,KACTD,EAAQ,UAAY,IAAMC,EAAQ,KAAOxyI,KAAKizI,KAAK,EAAIT,EAAQA,GAC3DD,IAAU,GACL,GACTC,EAAQxyI,KAAKyyI,KAAKrvI,EAAImvI,GAAS5L,GAC/B6L,GAAS,SACFA,EACT,CACA,SAASU,GAAUC,GAIjB,OAHIA,EAAO,IACTA,EAAO,GACTA,GAAc,KACP,GAAKnzI,KAAKozI,KAAK,IAAOD,GAAQ,IAAMnzI,KAAKozI,KAAKD,EAAOA,EAAO,MACrE,CACA,SAASE,GAAaC,EAAUC,EAAI/6F,EAAIg7F,EAAMC,EAAYlK,EAAKmK,EAAMC,EAAOC,EAASC,EAAUC,EAAWC,GACxG,IAGI7+I,EAHA8+I,EAAQxO,GAAYnO,GAAQgL,OAAS,GACrC4R,EAAmBN,GAASI,EAAQ,GAAK,KAAU,KACnDG,EAAYxO,GAAUrO,GAAQqL,UAElCiR,GAASC,EACT,IAAIt3G,EAAI,EACJ63G,EAAK,EACT,IAAKj/I,EAAI,EAAGA,EAAImiI,GAAQgL,OAAQntI,IAAK,CACnC,IACIk/I,EAGJ,IAFAC,EAAQnB,GAAUS,EAAQr3G,GAC1B03G,EAAM9+I,GAAKy+I,EAAQr3G,EACd83G,EAAK93G,EAAG42G,GAAUS,EAAQS,GAAMC,EAAQlO,GAAWiO,GAAMR,EAAU,EAAGQ,KAE3Ed,EAASp+I,GAAKk/I,EAAK93G,EACnB63G,EAAKj/I,EAAI,EACT,MAAOonC,EAAI83G,EACTF,EAAU53G,KAAOpnC,EAEnB,GAAIonC,EAAIs3G,EAAU,EAAG,CACnBt3G,EAAIs3G,EAAU,IACZ1+I,EACF,KACF,CACF,CACA8+I,EAAM9+I,GAAKy+I,EAAQr3G,EACnB,IAAK,IAAIg4G,EAAM,EAAGA,EAAMP,EAAOO,IAAO,CACpC,IAAIC,EAAI/yF,EAAI3kC,EAAOC,EACf3S,EACJ0S,EAAQg3H,EAASS,GACjBx3H,EAAM+2H,EAASS,EAAM,GACrBC,EAAK,EAAIv0I,KAAKkD,MAAM,GAAM4wI,GAAaj3H,EAAQ,KAC3C03H,EAAK,IACPA,EAAK,GACP/yF,EAAK,EAAIxhD,KAAKkD,MAAM,GAAM4wI,GAAah3H,EAAM,KACzC0kC,EAAKoyF,EAAU,IACjBpyF,EAAKoyF,EAAU,GACjBp7F,EAAG87F,IAAQJ,EAAUK,GAAML,EAAU1yF,IAAO,EAC5C+xF,EAAGe,GAAOJ,EAAU1yF,GACpB,IAAIgzF,EAAQP,EAAmBn3H,EAC/B42H,EAAKY,IAAQE,EAAQR,EAAMT,EAAGe,MAAUN,EAAMT,EAAGe,GAAO,GAAKN,EAAMT,EAAGe,KAClEZ,EAAKY,GAAO,EACdZ,EAAKY,GAAO,EAERZ,EAAKY,GAAO,IACdZ,EAAKY,GAAO,GAGhBnqI,EAAM+oI,GAAUS,EAAQE,EAASS,GAAOR,GACxC3pI,EAAMnK,KAAKwF,IAAI2E,EAAK,MAAQ,KAC5Bo/H,EAAI+K,GAAOt0I,KAAKsoI,IAAI,GAAI,MAAQ,EAAItoI,KAAKilI,IAAIjlI,KAAKklI,GAAK/6H,IAAQ,IACjE,CACAmyB,EAAI,EACJ,IAAK,IAAI0U,EAAI,EAAGA,EAAImjG,EAAInjG,IAAK,CAC3B,IACIqjG,EAAOI,EADPz8E,EAAIs7E,EAAStiG,GAEjBqjG,EAAQnB,GAAUS,EAAQr3G,GAC1Bm4G,EAAQvB,GAAUS,GAASr3G,EAAI07B,EAAI,IACnCw7E,EAAKxiG,GAAK,IAAOqjG,EAAQI,GACzBJ,EAAQnB,GAAUS,GAASr3G,EAAI,KAC/Bm4G,EAAQvB,GAAUS,GAASr3G,EAAI07B,EAAI,KACnCy7E,EAAWziG,GAAKyjG,EAAQJ,EACxB/3G,GAAK07B,CACP,CACA,OAAOm8E,CACT,CACA,SAASO,GAAehF,EAAOiF,EAAOnB,EAAMC,EAAYX,EAAM8B,GAC5D,IACIt4G,EADAu4G,EAAKpP,GAAc,CAACpO,GAAQgL,OAAQhL,GAAQgL,SAE5CyS,EAAmB,EACvB,GAAIF,EACF,IAAK,IAAI1/I,EAAI,EAAGA,EAAIy/I,EAAOz/I,IACzB,IAAKonC,EAAI,EAAGA,EAAIq4G,EAAOr4G,IAAK,CAC1B,IAAI/mC,EAAIw9I,GAAQS,EAAKt+I,GAAKs+I,EAAKl3G,IAAMm3G,EAAWn3G,GAChDu4G,EAAG3/I,GAAGonC,GAAK/mC,EAAIu9I,EAAK59I,EACtB,MAGF,IAAKonC,EAAI,EAAGA,EAAIq4G,EAAOr4G,IACrB,KAAIg2G,EAAW,GAAKtyI,KAAKwF,IAAI,GAAKguI,EAAKl3G,GAAI,IACvCy4G,EAAYrC,GAAeJ,GAC/B,IAASp9I,EAAI,EAAGA,EAAIy/I,EAAOz/I,IAAK,CAC1BK,EAAIw/I,EAAY3C,GAAUoB,EAAKt+I,GAAKs+I,EAAKl3G,GAAIg2G,GAAYmB,EAAWn3G,GACxEu4G,EAAG3/I,GAAGonC,GAAK/mC,EAAIu9I,EAAK59I,EACtB,CAL8C,CAQlD,IAASA,EAAI,EAAGA,EAAIy/I,EAAOz/I,IAAK,CAC9B,IAAKonC,EAAI,EAAGA,EAAIq4G,EAAOr4G,IACrB,GAAIu4G,EAAG3/I,GAAGonC,GAAK,EACb,MAGJ,IADAozG,EAAMx6I,GAAG,GAAKonC,EACTA,EAAIq4G,EAAQ,EAAGr4G,EAAI,EAAGA,IACzB,GAAIu4G,EAAG3/I,GAAGonC,GAAK,EACb,MAEJozG,EAAMx6I,GAAG,GAAKonC,EACdw4G,GAAoBpF,EAAMx6I,GAAG,GAAKw6I,EAAMx6I,GAAG,GAAK,CAClD,CACA,IAAI6lE,EAAKyqE,GAAYsP,GACjB9jG,EAAI,EACR,IAAS97C,EAAI,EAAGA,EAAIy/I,EAAOz/I,IACzB,IAAKonC,EAAIozG,EAAMx6I,GAAG,GAAIonC,GAAKozG,EAAMx6I,GAAG,GAAIonC,IACtCy+B,EAAG/pB,KAAO6jG,EAAG3/I,GAAGonC,GAEpB,OAAOy+B,CACT,CACA,SAASi6E,GAAcr4I,GACrB,IAAIwN,EAAM+oI,GAAUv2I,GAEpB,OADAwN,EAAMnK,KAAKwF,IAAI2E,EAAK,MAAQ,KACrBnK,KAAKsoI,IAAI,GAAI,MAAQ,EAAItoI,KAAKilI,IAAIjlI,KAAKklI,GAAK/6H,IAAQ,IAC7D,CAkPA,SAAS8qI,GAAct4I,EAAGhN,GACpBgN,GAAK,KACPA,EAAI,MACNA,GAAK,IACLA,EAAIqD,KAAKuF,IAAI,GAAK5I,GAClB,IAAIstI,EAAM,KAAOjqI,KAAKsoI,IAAI3rI,GAAI,IAAO,IAAMqD,KAAKyyI,KAAK,GAAMzyI,KAAKsoI,IAAI3rI,EAAI,IAAK,IAAM,EAAIqD,KAAKyyI,KAAK,IAAOzyI,KAAKsoI,IAAI3rI,EAAI,IAAK,IAA6B,MAAtB,GAAM,IAAOhN,GAAgBqQ,KAAKsoI,IAAI3rI,EAAG,GAC1K,OAAOstI,CACT,CA/oBAj7I,KAAKuxI,kBAAoB,SAAShC,EAAKhqI,EAAQswI,EAAQ0C,EAAQkG,EAAeC,EAAkBC,EAAgBC,EAAmBvM,EAAQ+K,GACzI,IACIjF,EACAE,EAFA1N,EAAM4E,EAAIE,eAGVwI,EAAYzB,GAAYnO,GAAQqL,UAChCwE,EAAczB,GAAc,CAAC,EAAGpO,GAAQuL,aACxCmL,EAAUtI,GAAc,CAAC,EAAGpO,GAAQwH,UACpCmP,EAAUvI,GAAc,CAAC,EAAG,EAAGpO,GAAQsL,YACvC6H,EAAK/E,GAAc,CAAC,EAAGpO,GAAQgL,SAC/BoI,EAAMhF,GAAc,CAAC,EAAGpO,GAAQgL,SAChCgO,EAAmB5K,GAAc,CAAC,EAAG,IACrCqI,EAAS,GACTmB,EAAa,CACf,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAER9C,EAAezG,GAAU,GACzB6K,EAAYhS,EAAIv5H,MAAQ+2H,GAASG,aAAe,EAAIvC,EAAIM,aAC5DmW,EACE7R,EACAhqI,EACAswI,EACA0C,EACAkG,EACAC,EACArM,EACAgP,EACApB,EACA9C,GAEFsF,GAA0BlT,EAAK4N,GAE7B,IAAK,IAAIvH,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACxC,IAAIsQ,EAAa,EAANtQ,EACXuC,EAAU4G,EACVT,EACE/O,EACAhqI,EACAswI,EACAD,EACA2C,EACAN,EACAE,EACA+N,GAEF1H,EAAwCjP,EAAKgJ,EAAQ3C,EAAKqC,GAChC,GAAtBkF,EAAa+I,GACf9D,GAAyBzX,EAAKsN,EAAWuD,EAAG5F,GAAM6F,EAAI7F,GAAMA,GAE5D+L,EAAsBhX,EAAKiL,EAE/B,CACIuH,EAAa,GAAKA,EAAa,IAAM,GACnC5N,EAAIv5H,MAAQ+2H,GAASG,cACvByV,GACEnH,EACAC,EACA9Q,EAAIwb,SACJxb,EAAI+D,IAAIsL,KACRzK,EAAIyR,SAAWrW,EAAI+D,IAAInnD,OACvBgoD,EAAIsL,MACJlQ,EAAI4R,SAIV,IAAS3G,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACpCsQ,EAAa,EAANtQ,EACe,GAAtBuH,EAAa+I,IACf9J,EAA6BzR,EAAK6Q,EAAG5F,GAAM6F,EAAI7F,GAAMA,EAEzD,CAGA,IAAK,IAAIyE,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAASzE,EAAM,EAAGA,EAAM2L,IAAa3L,EAAK,CACpCsQ,EAAa,EAANtQ,EACe,GAAtBuH,EAAa+I,GACfxE,EAAsB/W,EAAKiL,EAAKyE,IAEhChC,EAAU2G,EACVT,EACEhP,EACAhqI,EACAswI,EACAD,EACAyE,EACAnC,EACAG,EACA6N,GAEFrE,GACEtS,EACA2I,EACAsD,EAAG5F,GACH6F,EAAI7F,GACJA,EACAyE,GAGN,CACI8C,EAAa,GAAKA,EAAa,IAAM,GACnC5N,EAAIv5H,MAAQ+2H,GAASG,cACvByV,GACEnH,EACAC,EACA9Q,EAAIyb,SACJzb,EAAI+D,IAAIqL,KACRxK,EAAIyR,SAAWrW,EAAI+D,IAAInnD,OACvBgoD,EAAIsL,MACJlQ,EAAImR,SAIV,IAASlG,EAAM,EAAGA,EAAM2L,IAAa3L,EAAK,CACpCsQ,EAAa,EAANtQ,EACe,GAAtBuH,EAAa+I,IACf3K,EAA6B5Q,EAAK6Q,EAAG5F,GAAM6F,EAAI7F,GAAMA,EAAKyE,EAE9D,CACF,CACA,IAASzE,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACpCsQ,EAAa,EAANtQ,EACX,GAA0B,GAAtBuH,EAAa+I,GAGjB,IAAK,IAAI9L,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IAAM,CAC3C,IAAIiM,EAAW7P,GAAY,GAC3B,IAAS6D,EAAS,EAAGA,EAAS,EAAGA,IAAU,CACzC,IAAIsB,EAAOhR,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAE9B,GADAsB,GAAQrE,EACJ2I,EAAWrK,GAAKyE,IAAW,GAAoC,GAA/B4F,EAAWrK,GAAKyE,EAAS,GAAS,CACpE,IAAIhpC,EAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,EAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,GACnBsqC,EACApE,EAAkBuH,GAEpBnD,EAAO3qI,KAAKwF,IAAImlI,EAAM5vE,EACxB,MAAO,GAA+B,GAA3Bk0E,EAAWrK,GAAKyE,GAAc,CACnChpC,EAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,EAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,GACnBsqC,EACAnE,EAAkBsH,GAEpBnD,EAAO3qI,KAAKwF,IAAImlI,EAAM5vE,EACxB,MAAO,GAAc,GAAVsuE,GAA8C,GAA/B4F,EAAWrK,GAAKyE,EAAS,IAAqB,GAAVA,GAA6C,GAA9B1P,EAAI2H,MAAMmO,YAAY7K,GAAW,CACxGvkC,EAAgB,GAAVgpC,EAAcA,EAAS,EAAI,EACjCtuE,EAAKuxE,EACP3S,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAI/oC,GACnBsqC,EACAnE,EAAkBsH,GAEpBnD,EAAO3qI,KAAKwF,IAAImlI,EAAM5vE,EACxB,CACA4vE,GAAQ0F,EAAiBzL,GAAKyE,GAC9BgM,EAAShM,GAAUsB,CACrB,CACA,IAAStB,EAAS,EAAGA,EAAS,EAAGA,IAC/B1P,EAAIkC,IAAI+I,GAAK96H,EAAEs/H,GAAIC,GAAUgM,EAAShM,EAE1C,CACF,CAEF,IAASzE,EAAM,EAAGA,EAAM2L,EAAW3L,IACjCjL,EAAI2H,MAAMmO,YAAY7K,GAAOqK,EAAWrK,GAAK,GAE/C8M,GAAwBnT,EAAK4N,EAAcC,GAC3C,IAASxH,EAAM,EAAGA,EAAM2L,EAAW3L,IAAO,CACxC,IAAIqL,EACAC,EACA3uI,EACAkrI,EACA7H,EAAM,GACRqL,EAAMrC,EACNsC,GAAU,EACV3uI,EAAO81H,GAAQqJ,UACX0L,EAAY,IAAM/U,GAAQC,YAAc8U,EAAY,IAAM/U,GAAQC,aACpE/1H,EAAO81H,GAAQC,YAEjBmV,EAAKiB,EAAiBnG,GAAQ3C,EAAM,KAEpCqL,EAAMtC,EACNuC,EAAS,EACT3uI,EAAO6qI,EAAYxH,GACnB6H,EAAKgB,EAAclG,GAAQ3C,IAEzBrjI,GAAQ81H,GAAQC,WAClB2Y,EAAIC,EAAStL,GAAO4H,EAASC,EAAI9S,EAAI+S,eAErCuD,EAAIC,EAAStL,GAAOiI,EAASJ,EAAI9S,EAAI+S,eAEnCnO,EAAI0C,WACNtH,EAAIuH,MAAMtB,GAAG2H,GAAQ3C,GAAOqL,EAAIC,EAAStL,GAE7C,CACA,OAAO,CACT,EAgNA51I,KAAKsmJ,cAAgB,SAAS/W,GAC5B,IACIrpI,EADAykI,EAAM4E,EAAIE,eAEV8W,GAAW,EACXC,EAAQ,GACRC,EAAQ,GACRC,EAAU,EACVC,EAAU,EACVC,GAAW,KACXC,GAAW,IACXrC,EAAOhO,GAAYnO,GAAQgL,QAC3BoR,EAAajO,GAAYnO,GAAQgL,QACjCyQ,EAAOtN,GAAYnO,GAAQgL,QAC3BsR,EAAQpV,EAAI0B,eAChB,OAAQ1B,EAAIuX,eACV,QACA,KAAK,EACHP,GAAW,EACX,MACF,KAAK,EACHA,IAAahX,EAAI+B,KAAO6E,GAAU1P,UAAY8I,EAAI+B,KAAO6E,GAAU7P,QACnE,MACF,KAAK,EACHigB,GAAW,EACX,MACF,KAAK,EACHC,EAAQ,EACRE,GAAW,KACXC,GAAW,MACXC,GAAW,KACXC,GAAW,KACX,MAIJ,IAFAlc,EAAIoc,kBAAoB,IACxBpc,EAAIqS,cAAc,GAAKrS,EAAIqS,cAAc,GAAK3U,GAAQqJ,UACjDxrI,EAAI,EAAGA,EAAI,IAAKA,EAAG,CACtB,IAAK,IAAIonC,EAAI,EAAGA,EAAI+6F,GAAQgL,SAAU/lG,EACpCq9F,EAAIkW,KAAK36I,GAAGonC,GAAK,KACjBq9F,EAAImW,KAAK56I,GAAGonC,GAAK,KACjBq9F,EAAIoS,MAAM72I,GAAGonC,GAAKq9F,EAAIsS,MAAM/2I,GAAGonC,GAAK,EAEtC,IAAK,IAAI8sG,EAAK,EAAGA,EAAK/R,GAAQoE,QAAS2N,IACrCzP,EAAImC,GAAG5mI,GAAGsE,EAAE4vI,GAAM,KAClBzP,EAAIkC,IAAI3mI,GAAGsE,EAAE4vI,GAAM,KAErB,IAAS9sG,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAS8sG,EAAK,EAAGA,EAAK/R,GAAQqE,QAAS0N,IACrCzP,EAAImC,GAAG5mI,GAAG4U,EAAEs/H,GAAI9sG,GAAK,KACrBq9F,EAAIkC,IAAI3mI,GAAG4U,EAAEs/H,GAAI9sG,GAAK,KAExBq9F,EAAI2H,MAAMmO,YAAYv6I,GAAK,CAC7B,CACA,IAASonC,EAAI,EAAGA,EAAI,EAAGA,IACrBq9F,EAAI2H,MAAM4N,iBAAiBh6I,GAAGonC,GAAK,EACvC,CAiBA,IAhBAq9F,EAAIkO,iBAAiB,GAAKlO,EAAIkO,iBAAiB,GAAK,EACpDlO,EAAI4R,QAAU8H,GACZ1Z,EAAIsT,WACJtT,EAAI2R,KACJ3R,EAAIuQ,KACJsJ,EACAC,EACA9Z,EAAI6P,MACJ7P,EAAIsR,IAAIO,YACRmI,EACAtc,GAAQwH,QACRlF,EAAIqc,cAAcx8I,EAClB69H,GAAQwH,QAAU,KAClBxH,GAAQoE,SAEVkK,GAAShM,EAAI4R,QAAUlU,GAAQgL,QAC1BntI,EAAI,EAAGA,EAAIykI,EAAI4R,QAASr2I,IAAK,CAChC,IAAI+gJ,EAAMP,EACNlC,EAAKt+I,IAAMsgJ,IACbS,EAAMN,GAAWnC,EAAKt+I,GAAKsgJ,IAAUC,EAAQD,GAASE,GAAWD,EAAQjC,EAAKt+I,KAAOugJ,EAAQD,IAE/F1C,EAAK59I,GAAK8K,KAAKsoI,IAAI,GAAI2N,EAAM,IACzBtc,EAAIsT,WAAW/3I,GAAK,EACtBykI,EAAIuT,YAAYh4I,GAAK,EAAIykI,EAAIsT,WAAW/3I,GAExCykI,EAAIuT,YAAYh4I,GAAK,CAEzB,CACAykI,EAAIiW,MAAQ8E,GACV/a,EAAI+V,MACJ/V,EAAI4R,QACJiI,EACAC,EACAX,EACAyC,GAEF,IAqFM1L,EArFFvtG,EAAI,EACR,IAAKpnC,EAAI,EAAGA,EAAIykI,EAAI4R,QAASr2I,IAAK,CAEhCkO,EAAIgiI,GAAQhQ,UACZ,IAAK,IAAIpkF,EAAI,EAAGA,EAAI2oF,EAAIsT,WAAW/3I,GAAI87C,IAAK1U,IAAK,CAC/C,IAAI62G,EAAOQ,EAAQr3G,GAAK,IAAM+6F,GAAQwH,SAEtCpX,EAAQz4H,KAAKknJ,WAAkB,IAAP/C,EAAY5U,GAAO,GAC3C9W,EAAQznH,KAAKsoI,IAAI,GAAI,GAAM7gB,GAC3BA,GAASkS,EAAIsT,WAAW/3I,GACpBkO,EAAIqkH,IACNrkH,EAAIqkH,EACR,CACAkS,EAAI+D,IAAIsL,KAAK9zI,GAAKkO,EAClBA,EAAoB,GAAVowI,EAAKt+I,GAAU,GAApB,GACDkO,EAAI,IACNA,EAAI,KAEFA,GAAK,KACPA,GAAK,IAEPA,GAAK,EACLu2H,EAAI6X,SAASt8I,GAAK8K,KAAKsoI,IAAI,GAAIllI,EAAI,IAAMu2H,EAAIsT,WAAW/3I,EAC1D,CAiBA,IAhBAykI,EAAImR,QAAUuI,GACZ1Z,EAAIgS,WACJhS,EAAIkR,KACJlR,EAAI2Q,KACJkJ,EACAC,EACA9Z,EAAIgQ,MACJhQ,EAAIsR,IAAIC,YACRyI,EACAtc,GAAQsL,UACRhJ,EAAIqc,cAAclsI,EAClButH,GAAQsL,UAAY,IACpBtL,GAAQqE,SAEViK,GAAShM,EAAImR,QAAUzT,GAAQgL,QAC/B/lG,EAAI,EACCpnC,EAAI,EAAGA,EAAIykI,EAAImR,QAAS51I,IAAK,CAChC,IAAIkO,EACA6yI,EAAML,EACNpC,EAAKt+I,IAAMsgJ,IACbS,EAAMJ,GAAWrC,EAAKt+I,GAAKsgJ,IAAUC,EAAQD,GAASI,GAAWH,EAAQjC,EAAKt+I,KAAOugJ,EAAQD,IAE/F1C,EAAK59I,GAAK8K,KAAKsoI,IAAI,GAAI2N,EAAM,IAC7B7yI,EAAIgiI,GAAQhQ,UACZ,IAASpkF,EAAI,EAAGA,EAAI2oF,EAAIgS,WAAWz2I,GAAI87C,IAAK1U,IAAK,CAC/C,IACImrF,EADA0rB,EAAOQ,EAAQr3G,GAAK,IAAM+6F,GAAQsL,WAEtClb,EAAQz4H,KAAKknJ,WAAkB,IAAP/C,EAAY5U,GAAO,GAC3C9W,EAAQznH,KAAKsoI,IAAI,GAAI,GAAM7gB,GAC3BA,GAASkS,EAAIgS,WAAWz2I,GACpBkO,EAAIqkH,IACNrkH,EAAIqkH,EACR,CACAkS,EAAI+D,IAAIqL,KAAK7zI,GAAKkO,EAClBA,EAAmB,EAAVowI,EAAKt+I,GAAS,GAAlB,EACDs+I,EAAKt+I,GAAK,KACZkO,GAAK,EAAsB,IAAlBpD,KAAKo0H,IAAI,EAAIhxH,IAEpBowI,EAAKt+I,GAAK,KACZkO,GAAK,EAAsB,IAAlBpD,KAAKo0H,IAAI,EAAIhxH,IAEpBA,GAAK,KACPA,GAAK,IAEPA,GAAK,EACLu2H,EAAIwX,SAASj8I,GAAK8K,KAAKsoI,IAAI,GAAIllI,EAAI,IAAMu2H,EAAIgS,WAAWz2I,EAC1D,CACAykI,EAAImS,MAAQ4I,GACV/a,EAAIiS,QACJjS,EAAImR,QACJ0I,EACAC,EACAX,EACAyC,GAEFlN,IACAxC,EAAIb,SAASrL,GACbA,EAAIwc,MAAQn2I,KAAKyyI,KACd,EAAI3M,GAASO,EAA2BsN,EAAQ,MAIjD9J,EAAQpD,EACuB,IAAN,EAApBlI,EAAI6X,iBACPvM,EAAQ,GACN7pI,KAAK01G,IAAI6oB,EAAIsL,OAAS,IACxBA,EAAQtL,EAAIsL,OACdtL,EAAIsL,MAAQA,EACZ,IAAK,IAAIjwI,EAAI,EAAGA,EAAI+/H,EAAI4R,QAAS3xI,IAC3B+/H,EAAI+V,MAAM91I,GAAG,GAAK+/H,EAAI4R,QAAU,IAClC5R,EAAI+V,MAAM91I,GAAG,GAAK+/H,EAAI4R,QAAU,GAGtC,IAAI8K,EAAiB,IAAM1c,EAAIQ,QAAUwZ,EAMzC,GALAha,EAAI+D,IAAIyY,MAAQn2I,KAAKsoI,IAAI,IAAI,IAAW+N,GACxC1c,EAAI+D,IAAInnD,OAAS,IACjBojD,EAAI+D,IAAII,YAAc,EACtB6H,GAAShM,EAAI2R,KAAKjU,GAAQoE,QAAU,IAAM9B,EAAI4R,SAC9C5F,GAAShM,EAAIkR,KAAKxT,GAAQqE,QAAU,IAAM/B,EAAImR,UAC1B,GAAhBvM,EAAI+X,QAAe,CACrB,IACIC,EAAWhY,EAAI0B,eAAiB5I,GAAQwH,QACxC2X,EAAc,EAElB,IADArD,EAAO,EACFj+I,EAAI,EAAGA,EAAImiI,GAAQwH,QAAU,IAAK3pI,EACrCi+I,GAAQoD,EACR5c,EAAI+D,IAAIqJ,MAAM7xI,GAAK,EAAI8K,KAAKsoI,IAAI,GAAIt5I,KAAKknJ,WAAW/C,EAAM5U,GAAO,IACjEiY,GAAe7c,EAAI+D,IAAIqJ,MAAM7xI,GAG/B,IADAshJ,EAAc,EAAIA,EACbthJ,EAAImiI,GAAQwH,QAAU,IAAK3pI,GAAK,GACnCykI,EAAI+D,IAAIqJ,MAAM7xI,IAAMshJ,CAExB,CAEE,IAAS58I,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAImR,UAAWlxI,EACrC,IAAK1E,EAAI,EAAGA,EAAIykI,EAAIgS,WAAW/xI,KAAM1E,IACjConC,EAGN,IAAS1iC,EAAI0iC,EAAI,EAAG1iC,EAAI+/H,EAAI4R,UAAW3xI,EACrC,IAAK1E,EAAI,EAAGA,EAAIykI,EAAIsT,WAAWrzI,KAAM1E,IACjConC,EAKR,IADAA,EAAI,EACCpnC,EAAI,EAAGA,EAAIykI,EAAI4R,QAASr2I,IAAK,CAC5Bi+I,EAAOQ,GAASr3G,EAAIq9F,EAAIsT,WAAW/3I,GAAK,IAAM,EAAImiI,GAAQwH,SAC9DlF,EAAIwb,SAASjgJ,GAAK8/I,GAAc7B,GAChC72G,GAAKq9F,EAAIsT,WAAW/3I,EACtB,CACA,KAAOA,EAAImiI,GAAQgL,SAAUntI,EAC3BykI,EAAIwb,SAASjgJ,GAAK,EAGpB,IADAonC,EAAI,EACCpnC,EAAI,EAAGA,EAAIykI,EAAImR,QAAS51I,IAAK,CAC5Bi+I,EAAOQ,GAASr3G,EAAIq9F,EAAIgS,WAAWz2I,GAAK,IAAM,EAAImiI,GAAQsL,WAC9DhJ,EAAIyb,SAASlgJ,GAAK8/I,GAAc7B,GAChC72G,GAAKq9F,EAAIgS,WAAWz2I,EACtB,CACA,KAAOA,EAAImiI,GAAQgL,SAAUntI,EAC3BykI,EAAIyb,SAASlgJ,GAAK,EAEpB,OAAO,CACT,EASAlG,KAAKknJ,WAAa,SAASv5I,EAAG4hI,GAC5B,IAAI0L,EACJ,OAAQ1L,EAAI+X,SACV,KAAK,EACHrM,EAAMgL,GAAct4I,EAAG,GACvB,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,GAAI,GACxB,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,EAAG,GACvB,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,EAAG,GAAK,EAC5B,MACF,KAAK,EACHstI,EAAMgL,GAAct4I,EAAG4hI,EAAIkY,UAC3B,MACF,QACExM,EAAMgL,GAAct4I,EAAG,GACvB,MAEJ,OAAOstI,CACT,CACF,CACA,SAASyM,KACP1nJ,KAAK2nJ,SAAW,EAChB3nJ,KAAK4nJ,YAAc,EACnB5nJ,KAAK6nJ,aAAe,EACpB7nJ,KAAK8nJ,cAAgB,EACrB9nJ,KAAKixI,eAAiB,EACtBjxI,KAAK4pH,MAAQ,EACb5pH,KAAK+nJ,WAAa,EAClB/nJ,KAAKgoJ,YAAc,EACnBhoJ,KAAKiyI,UAAW,EAChBjyI,KAAK4yI,cAAe,EACpB5yI,KAAKioJ,aAAc,EACnBjoJ,KAAKkoJ,QAAU,EACfloJ,KAAKgW,KAAO+2H,GAASE,OACrBjtI,KAAK4xI,UAAW,EAChB5xI,KAAKmoJ,aAAc,EACnBnoJ,KAAKooJ,gBAAiB,EACtBpoJ,KAAKqoJ,mBAAoB,EACzBroJ,KAAKsoJ,wBAAyB,EAC9BtoJ,KAAKuoJ,MAAQ,EACbvoJ,KAAKwoJ,kBAAoB,EACzBxoJ,KAAKiW,UAAY,EACjBjW,KAAKyoJ,SAAW,EAChBzoJ,KAAK0yE,UAAY,EACjB1yE,KAAKs2E,SAAW,EAChBt2E,KAAK0oJ,iBAAmB,EACxB1oJ,KAAK2oJ,YAAa,EAClB3oJ,KAAK4oJ,mBAAoB,EACzB5oJ,KAAK6oJ,WAAa,EAClB7oJ,KAAK8oJ,iBAAmB,EACxB9oJ,KAAK+oJ,eAAgB,EACrB/oJ,KAAK8mJ,cAAgB,EACrB9mJ,KAAKonJ,cAAgB,EACrBpnJ,KAAKgpJ,OAAS,EACdhpJ,KAAKsxI,IAAM,KACXtxI,KAAKipJ,WAAa,EAClBjpJ,KAAKkpJ,MAAQ,EACblpJ,KAAKmpJ,sBAAwB,EAC7BnpJ,KAAKopJ,qBAAuB,EAC5BppJ,KAAKqpJ,qBAAuB,EAC5BrpJ,KAAKspJ,aAAe,EACpBtpJ,KAAKupJ,YAAc,EACnBvpJ,KAAKwpJ,aAAe,EACpBxpJ,KAAKypJ,aAAe,EACpBzpJ,KAAK0pJ,cAAgB,EACrB1pJ,KAAK2pJ,cAAgB,EACrB3pJ,KAAK4pJ,oBAAsB,EAC3B5pJ,KAAK6pJ,SAAU,EACf7pJ,KAAK8pJ,UAAW,EAChB9pJ,KAAK+pJ,OAAQ,EACb/pJ,KAAKsnJ,QAAU,EACftnJ,KAAKynJ,SAAW,EAChBznJ,KAAKghJ,SAAW,EAChBhhJ,KAAKgqJ,WAAa,EAClBhqJ,KAAK44I,iBAAmB,EACxB54I,KAAKiqJ,kBAAoB,EACzBjqJ,KAAKq9I,aAAe,KACpBr9I,KAAKkqJ,aAAc,EACnBlqJ,KAAK+gJ,aAAe,EACpB/gJ,KAAK66I,MAAQ,EACb76I,KAAKmqJ,MAAO,EACZnqJ,KAAKoqJ,aAAe,EACpBpqJ,KAAK6O,QAAU,EACf7O,KAAKqqJ,cAAgB,EACrBrqJ,KAAKsqJ,gBAAkB,EACvBtqJ,KAAK8vI,UAAY,EACjB9vI,KAAKuqJ,SAAW,EAChBvqJ,KAAKwqJ,mBAAqB,EAC1BxqJ,KAAKyvI,eAAiB,IACxB,CACA,IAAIgb,GAAW,CAAC,EAChBA,GAASC,OAA2B,EAAlBriB,GAAQqE,QAC1B,IAAIie,GAAchoJ,GAAO0kI,UACrBujB,GAAYjoJ,GAAO4kI,QACvB,SAASsjB,KACP7qJ,KAAK6oI,GAAK8hB,GAAY,KACtB3qJ,KAAK8qJ,OAASF,GAAU,KACxB5qJ,KAAK+qJ,SAAWH,GAAUH,GAASC,QACnC1qJ,KAAKgrJ,UAAY,EACjBhrJ,KAAKirJ,eAAiB,EACtBjrJ,KAAKkrJ,WAAa,EAClBlrJ,KAAKmrJ,OAAS,EACdnrJ,KAAKorJ,YAAc,EACnBprJ,KAAKqrJ,kBAAoB,EACzBrrJ,KAAK6rI,WAAa,EAClB7rI,KAAKgsI,iBAAmB,EACxBhsI,KAAKsrJ,aAAeV,GAAU,GAC9B5qJ,KAAKurJ,cAAgBX,GAAU,GAC/B5qJ,KAAKwrJ,cAAgB,EACrBxrJ,KAAKyrJ,cAAgB,EACrBzrJ,KAAK0rJ,QAAU,EACf1rJ,KAAK2rJ,eAAiB,EACtB3rJ,KAAK4rJ,mBAAqB,EAC1B5rJ,KAAK6rJ,aAAe,EACpB7rJ,KAAK8rJ,SAAW,EAChB9rJ,KAAK+rJ,SAAW,EAChB/rJ,KAAKgsJ,SAAW,EAChBhsJ,KAAKisJ,OAAS,EACdjsJ,KAAKksJ,OAAS,EACdlsJ,KAAKmsJ,UAAY,EACjBnsJ,KAAK+wE,MAAQ65E,GAAUH,GAASC,QAChC1qJ,KAAKgJ,OAAS4hJ,GAAUH,GAASC,QACjC1qJ,KAAKosJ,WAAa,EAClBpsJ,KAAKqsJ,oBAAsB,KAC3BrsJ,KAAKssJ,KAAO1B,GAAU,GACtB5qJ,KAAKusJ,kBAAoB,EACzB,IAAI9hF,EAAQzqE,KACZ,SAASwsJ,EAAUtxC,GACjB,OAAO,IAAI8oB,WAAW9oB,EACxB,CACA,SAASuxC,EAAYvxC,GACnB,OAAO,IAAIgpB,aAAahpB,EAC1B,CACAl7G,KAAKsZ,OAAS,SAASozI,GACrBjiF,EAAMo+D,GAAK4jB,EAAYC,EAAM7jB,IAC7Bp+D,EAAMqgF,OAAS0B,EAAUE,EAAM5B,QAC/BrgF,EAAMsgF,SAAWyB,EAAUE,EAAM3B,UACjCtgF,EAAMugF,UAAY0B,EAAM1B,UACxBvgF,EAAMwgF,eAAiByB,EAAMzB,eAC7BxgF,EAAMygF,WAAawB,EAAMxB,WACzBzgF,EAAM0gF,OAASuB,EAAMvB,OACrB1gF,EAAM2gF,YAAcsB,EAAMtB,YAC1B3gF,EAAM4gF,kBAAoBqB,EAAMrB,kBAChC5gF,EAAMohE,WAAa6gB,EAAM7gB,WACzBphE,EAAMuhE,iBAAmB0gB,EAAM1gB,iBAC/BvhE,EAAM6gF,aAAekB,EAAUE,EAAMpB,cACrC7gF,EAAM8gF,cAAgBiB,EAAUE,EAAMnB,eACtC9gF,EAAM+gF,cAAgBkB,EAAMlB,cAC5B/gF,EAAMghF,cAAgBiB,EAAMjB,cAC5BhhF,EAAMihF,QAAUgB,EAAMhB,QACtBjhF,EAAMkhF,eAAiBe,EAAMf,eAC7BlhF,EAAMmhF,mBAAqBc,EAAMd,mBACjCnhF,EAAMohF,aAAea,EAAMb,aAC3BphF,EAAMqhF,SAAWY,EAAMZ,SACvBrhF,EAAMshF,SAAWW,EAAMX,SACvBthF,EAAMuhF,SAAWU,EAAMV,SACvBvhF,EAAMwhF,OAASS,EAAMT,OACrBxhF,EAAMyhF,OAASQ,EAAMR,OACrBzhF,EAAM0hF,UAAYO,EAAMP,UACxB1hF,EAAMsG,MAAQy7E,EAAUE,EAAM37E,OAC9BtG,EAAMzhE,OAASwjJ,EAAUE,EAAM1jJ,QAC/ByhE,EAAM2hF,WAAaM,EAAMN,WACzB3hF,EAAM4hF,oBAAsBK,EAAML,oBAAoBroJ,MAAM,GAC5DymE,EAAM6hF,KAAOE,EAAUE,EAAMJ,MAC7B7hF,EAAM8hF,kBAAoBG,EAAMH,iBAClC,CACF,CACA,IAAII,GAAYhqJ,GAAO4kI,QACvB,SAASqlB,KACP5sJ,KAAKurI,GAAK,CACR,CAAC,KAAM,MACP,CAAC,KAAM,OAETvrI,KAAK6sJ,gBAAkB,EACvB7sJ,KAAK8sJ,aAAe,EACpB9sJ,KAAK+sJ,cAAgB,EACrB/sJ,KAAKgtJ,eAAiB,EACtBhtJ,KAAKitJ,MAAQ,CAACN,GAAU,GAAIA,GAAU,IACtC,IAAK,IAAIzhB,EAAK,EAAGA,EAAK,EAAGA,IACvB,IAAK,IAAIF,EAAK,EAAGA,EAAK,EAAGA,IACvBhrI,KAAKurI,GAAGL,GAAIF,GAAM,IAAI6f,EAG5B,CACA,IAAIqC,GAAWvqJ,GAAOikI,OAClBumB,GAAYxqJ,GAAO4kI,QACvB,SAAS6lB,GAASC,EAAMC,EAAMC,EAAOC,GACnCxtJ,KAAKwK,EAAI2iJ,GAAU,EAAI9kB,GAAQoE,SAC/BzsI,KAAK8a,EAAIqyI,GAAU,EAAI9kB,GAAQqE,SAC/B1sI,KAAKytJ,OAASN,GAAU,EAAI9kB,GAAQmL,QACpCxzI,KAAK0tJ,OAASP,GAAU,EAAI9kB,GAAQoL,QACpC,IAAIjpI,EAAIxK,KAAKwK,EACTsQ,EAAI9a,KAAK8a,EACW,GAApB/Z,UAAUO,SACZtB,KAAKqtJ,KAAOtsJ,UAAU,GACtBf,KAAKstJ,KAAOvsJ,UAAU,GACtBf,KAAKutJ,MAAQxsJ,UAAU,GACvBf,KAAKwtJ,MAAQzsJ,UAAU,GACvBmsJ,GAAS9gB,UACPpsI,KAAKqtJ,KACL,EACA7iJ,EACA,EACAwG,KAAKwF,IAAIxW,KAAKqtJ,KAAK/rJ,OAAQtB,KAAKwK,EAAElJ,SAEpC4rJ,GAAS9gB,UACPpsI,KAAKstJ,KACL,EACAxyI,EACA,EACA9J,KAAKwF,IAAIxW,KAAKstJ,KAAKhsJ,OAAQtB,KAAK8a,EAAExZ,SAEpC4rJ,GAAS9gB,UACPpsI,KAAKutJ,MACL,EACAvtJ,KAAKytJ,OACL,EACAz8I,KAAKwF,IAAIxW,KAAKutJ,MAAMjsJ,OAAQtB,KAAKytJ,OAAOnsJ,SAE1C4rJ,GAAS9gB,UACPpsI,KAAKwtJ,MACL,EACAxtJ,KAAK0tJ,OACL,EACA18I,KAAKwF,IAAIxW,KAAKwtJ,MAAMlsJ,OAAQtB,KAAK0tJ,OAAOpsJ,SAG9C,CACA,IAAIqsJ,GAAchrJ,GAAO0kI,UACrBumB,GAAgBjrJ,GAAO2kI,YACvBumB,GAAYlrJ,GAAO4kI,QACvB,SAASumB,KACP9tJ,KAAKkgJ,iBAAmB0N,GAAc,CAAC,EAAG,IAC1C5tJ,KAAKygJ,YAAcoN,GAAU,GAC7B7tJ,KAAKuyI,SAAWob,GAAY,IAC5B3tJ,KAAK+tJ,SAAWJ,GAAYtlB,GAAQoE,SACpCzsI,KAAKguJ,UAAYL,GAAYtlB,GAAQqE,SACrC1sI,KAAKwgJ,WAAa,EAClBxgJ,KAAKugJ,aAAe,CACtB,CACA,SAAS0N,KACPjuJ,KAAK6jJ,IAAM,EACX7jJ,KAAK4uB,KAAO,EACZ5uB,KAAKkuJ,KAAO,EACZluJ,KAAK8+H,IAAM,EACX9+H,KAAKie,KAAO,EACZje,KAAKmuJ,IAAM,KACXnuJ,KAAKouJ,cAAgB,EACrBpuJ,KAAKquJ,cAAgB,EACrBruJ,KAAKsuJ,eAAiB,CACxB,CACA,IAAIC,GAAa5rJ,GAAOwkI,SACpBC,GAAazkI,GAAOykI,WACpBonB,GAAc7rJ,GAAO0kI,UACrBonB,GAAgB9rJ,GAAO2kI,YACvBonB,GAAY/rJ,GAAO4kI,QACnBonB,GAAchsJ,GAAO6kI,UAMzB,SAASonB,KACP,IAAIC,EAAiB,GAgDrB,SAASC,IACP9uJ,KAAK+uJ,aAAe,EACpB/uJ,KAAKspE,IAAM,EACXtpE,KAAKk9E,IAAMqxE,GAAWM,EACxB,CAnDA7uJ,KAAKgvJ,SAAW,EAChBhvJ,KAAKsvI,uBAAyB,EAC9BtvI,KAAKivJ,oBAAsB,EAC3BjvJ,KAAKkvJ,0BAA4B,EACjClvJ,KAAKmvJ,MAAQV,GAAc,CAAC,EAAGG,GAAoBQ,SACnDpvJ,KAAKmrI,QAAU,EACfnrI,KAAKqvJ,YAAc,EACnBrvJ,KAAKirI,aAAe,EACpBjrI,KAAKsvJ,eAAiB,EACtBtvJ,KAAKuvJ,qBAAuB,EAC5BvvJ,KAAK4vI,QAAU,EACf5vI,KAAKwvJ,gBAAkB,EACvBxvJ,KAAKyvJ,gBAAkB,EACvBzvJ,KAAKivI,cAAgB,EACrBjvI,KAAK0vJ,iBAAmB,EACxB1vJ,KAAKkvI,SAAW,EAChBlvI,KAAK2vJ,SAAW,EAChB3vJ,KAAK4vJ,SAAW,EAChB5vJ,KAAK6vJ,UAAY,EACjB7vJ,KAAK8vJ,UAAY,EACjB9vJ,KAAK+vJ,cAAgB,EACrB/vJ,KAAKgwJ,kBAAoB,EACzBhwJ,KAAKiwJ,gBAAkB,EACvBjwJ,KAAKkxI,SAAW,EAChBlxI,KAAKkwJ,mBAAqB,EAC1BlwJ,KAAKurJ,cAAgB,EACrBvrJ,KAAKmwJ,iBAAmB,EACxBnwJ,KAAKowJ,gBAAkB,EACvBpwJ,KAAKsrI,QAAU,IAAIshB,GACnB5sJ,KAAKmyI,SAAWqc,GAAY,GAC5BxuJ,KAAK8wI,QAAU,EACf9wI,KAAKgxI,SAAW,EAChBhxI,KAAK+wI,SAAW,EAChB/wI,KAAKqwJ,SAAW,KAChBrwJ,KAAKswJ,UAAY,EACjBtwJ,KAAKuwJ,SAAW7B,GAAU,GAC1B1uJ,KAAKwwJ,YAAc9B,GAAU,GAC7B1uJ,KAAK09I,cAAgB,EACrB19I,KAAKywJ,OAAS/B,GAAU,KACxB1uJ,KAAK0wJ,WAAahC,GAAUjE,GAASC,QACrC1qJ,KAAK2wJ,aAAc,EACnB3wJ,KAAK4wJ,UAAY,IAAI3qJ,MAAM,GAC3BjG,KAAK6wJ,UAAY,IAAI5qJ,MAAM,EAAI2oJ,GAAoBkC,IAAM,GACzD9wJ,KAAK+wJ,MAAQ3pB,GAAW,GACxBpnI,KAAKgxJ,aAAe,EACpBhxJ,KAAK2rI,UAAY8iB,GAAc,CAAC,EAAG,EAAG,GAAIpmB,GAAQ+K,UAClDpzI,KAAKisI,WAAauiB,GAAY,IAM9BxuJ,KAAKixJ,OAAS,IAAIhrJ,MAAM2oJ,GAAoBsC,gBAC5ClxJ,KAAKmxJ,MAAQ,EACbnxJ,KAAKoxJ,MAAQ,EACbpxJ,KAAKqxJ,eAAiB,EACtBrxJ,KAAKu/I,SAAW,EAChBv/I,KAAKs/I,QAAU,EACft/I,KAAKgnJ,cAAgB,IAAIoG,GACzBptJ,KAAKwiJ,SAAWgM,GAAYnmB,GAAQgL,QACpCrzI,KAAKmiJ,SAAWqM,GAAYnmB,GAAQgL,QACpCrzI,KAAK6gJ,KAAO4N,GAAc,CAAC,EAAGpmB,GAAQgL,SACtCrzI,KAAK8gJ,KAAO2N,GAAc,CAAC,EAAGpmB,GAAQgL,SACtCrzI,KAAK+8I,MAAQ0R,GAAc,CAAC,EAAGpmB,GAAQgL,SACvCrzI,KAAKi9I,MAAQwR,GAAc,CAAC,EAAGpmB,GAAQgL,SACvCrzI,KAAK88I,MAAQ,KACb98I,KAAK4gJ,MAAQ,KACb5gJ,KAAKmnJ,MAAQ,EACbnnJ,KAAK6sI,IAAM,IAAI5mI,MAAM,GACrBjG,KAAK8sI,GAAK,IAAI7mI,MAAM,GACpBjG,KAAK0wI,SAAW8d,GAAY,GAC5BxuJ,KAAK4uI,YAAc6f,GAAc,CAAC,EAAG,IACrCzuJ,KAAK64I,iBAAmB2V,GAAY,GACpCxuJ,KAAKw6I,MAAQgU,GAAYnmB,GAAQoE,SACjCzsI,KAAK26I,MAAQ6T,GAAYnmB,GAAQqE,SACjC1sI,KAAKk7I,KAAOwT,GAAUrmB,GAAQoE,SAC9BzsI,KAAKs8I,KAAOoS,GAAUrmB,GAAQoE,SAC9BzsI,KAAKs7I,KAAOoT,GAAUrmB,GAAQqE,SAC9B1sI,KAAK67I,KAAO6S,GAAUrmB,GAAQqE,SAC9B1sI,KAAKu8I,QAAU,EACfv8I,KAAK87I,QAAU,EACf97I,KAAK0gJ,MAAQiO,GAAY,CAACtmB,GAAQgL,OAAQ,IAC1CrzI,KAAK48I,QAAU+R,GAAY,CAACtmB,GAAQgL,OAAQ,IAC5CrzI,KAAK28I,WAAa+R,GAAUrmB,GAAQgL,QACpCrzI,KAAKi+I,WAAayQ,GAAUrmB,GAAQgL,QACpCrzI,KAAKk+I,YAAcsQ,GAAYnmB,GAAQgL,QACvCrzI,KAAKmmJ,SAAWqI,GAAYnmB,GAAQgL,QACpCrzI,KAAKomJ,SAAWoI,GAAYnmB,GAAQgL,QACpCrzI,KAAKsxJ,gBAAkB,EACvBtxJ,KAAKuxJ,gBAAkB,EACvBvxJ,KAAK4wI,GAAK4d,GAAY,GACtBxuJ,KAAKwxJ,eAAiB,EACtBxxJ,KAAKyxJ,eAAiB,EACtBzxJ,KAAK+mJ,kBAAoB,EACzB/mJ,KAAKg9I,cAAgB0R,GAAU,GAC/B1uJ,KAAKsyI,MAAQ,IAAIwb,GACjB9tJ,KAAK0xJ,eAAiB,IAAIzD,GAC1BjuJ,KAAK0uI,IAAM,KACX1uI,KAAKi8I,IAAM,KACXj8I,KAAK2xJ,YAAc,EACnB3xJ,KAAK4xJ,cAAgB,EACrB5xJ,KAAKqoJ,mBAAoB,EACzBroJ,KAAKooJ,gBAAiB,EACtBpoJ,KAAK6xJ,gBAAiB,EACtB7xJ,KAAK8xJ,WAAa,EAClB9xJ,KAAK+xJ,UAAY,EACjB/xJ,KAAKgyJ,eAAiB,EACtBhyJ,KAAKiyJ,OAAS,KACdjyJ,KAAKkyJ,iBAAmB,EACxBlyJ,KAAKmyJ,YAAc,EACnBnyJ,KAAKmvI,wBAA0Bwf,GAAY,CAAC,GAAI,IAChD3uJ,KAAKqvI,uBAAyBsf,GAAY,CAAC,GAAI,IAC/C3uJ,KAAKkyI,MAAQ,KACblyI,KAAKoyJ,IAAM,KACXpyJ,KAAKqyJ,mBAAqB,EAC1BryJ,KAAKsyJ,YAAc,KACnBtyJ,KAAKuyJ,YAAc,KACnBvyJ,KAAKyyI,eAAiB,KACtB,IAAK,IAAIvsI,EAAI,EAAGA,EAAIlG,KAAK8sI,GAAGxrI,OAAQ4E,IAClClG,KAAK8sI,GAAG5mI,GAAK,IAAIsmI,GAEnB,IAAStmI,EAAI,EAAGA,EAAIlG,KAAK6sI,IAAIvrI,OAAQ4E,IACnClG,KAAK6sI,IAAI3mI,GAAK,IAAIsmI,GAEpB,IAAStmI,EAAI,EAAGA,EAAIlG,KAAKixJ,OAAO3vJ,OAAQ4E,IACtClG,KAAKixJ,OAAO/qJ,GAAK,IAAI4oJ,CAEzB,CAtIAF,GAAoBQ,OAAS,KAAW/mB,GAAQ2K,SAAW3K,GAAQ6K,UACnE0b,GAAoBsC,eAAiB,IACrCtC,GAAoB4D,qBAAuB,KAC3C5D,GAAoB6D,qBAAuB,KAC3C7D,GAAoBkC,IAAM,IAmI1B,IAAI4B,GAAc/vJ,GAAO0kI,UACzB,SAASqH,KACP1uI,KAAK2uI,UAAY,EACjB3uI,KAAK6uI,eAAiB,EACtB7uI,KAAKunF,OAAS,EACdvnF,KAAK8uI,YAAc,EACnB9uI,KAAKmnJ,MAAQ,EACbnnJ,KAAKkU,MAAQ,EACblU,KAAKwK,EAAIkoJ,GAAYrqB,GAAQoE,SAC7BzsI,KAAK8a,EAAI43I,GAAYrqB,GAAQqE,SAC7B1sI,KAAKytJ,OAASiF,GAAYrqB,GAAQmL,QAClCxzI,KAAK0tJ,OAASgF,GAAYrqB,GAAQoL,QAClCzzI,KAAKg6I,KAAO0Y,GAAYrqB,GAAQgL,QAChCrzI,KAAK+5I,KAAO2Y,GAAYrqB,GAAQgL,QAChCrzI,KAAK+3I,MAAQ2a,GAAYrqB,GAAQwH,QAAU,EAC7C,CACA,IAAI8iB,GAAWhwJ,GAAOikI,OAClBgsB,GAAWjwJ,GAAOskI,OActB,SAAS4rB,KACP,IAAIC,EAAW,MACXC,EAAiB,IACjBC,EAA4BH,GAAeG,0BAC3CC,EAA8BJ,GAAeI,4BAC7CC,EAAS,CACX,CACE,eACC,kBACA,gBACD,kBACC,iBACA,mBACA,eACD,mBACC,iBACA,kBACD,gBACA,iBACC,iBACA,iBACD,gBACA,iBACA,iBACC,gBACD,gBACA,gBACA,iBAEF,CACE,gBACC,kBACA,gBACD,kBACC,iBACA,kBACA,gBACD,iBACC,iBACA,iBACD,gBACA,kBACC,iBACA,iBACD,gBACA,kBACC,iBACA,gBACD,gBACA,iBACC,iBAEH,CACE,iBACC,kBACA,gBACD,kBACC,iBACA,iBACD,gBACA,kBACC,iBACA,iBACD,gBACA,iBACA,iBACC,gBACD,gBACA,iBACC,iBACA,gBACD,gBACA,gBACC,iBAEH,CACE,iBACC,kBACA,gBACD,iBACC,iBACA,eACD,iBACC,gBACA,iBACA,iBACA,gBACD,iBACC,iBACA,gBACD,gBACA,iBACC,cACD,gBACA,gBACA,iBACC,iBAEH,CACE,iBACC,kBACA,eACD,iBACC,gBACD,gBACA,iBACC,iBACA,gBACD,iBACC,gBACA,iBACA,gBACA,gBACD,gBACA,gBACA,iBACC,iBACA,eACD,iBACC,gBAEH,CACE,gBACC,iBACA,gBACD,iBACC,iBACA,eACA,gBACD,gBACA,iBACC,iBACA,gBACD,gBACA,gBACA,gBACA,gBACA,iBACC,gBACD,iBACC,gBACD,gBACA,iBAEF,CACE,iBACC,kBACA,gBACD,gBACA,gBACC,gBACD,gBACA,iBACC,gBACD,gBACA,gBACC,iBACA,gBACD,eACA,iBACC,gBACD,gBACA,iBACC,eACD,iBACC,iBAEH,CACE,iBACC,iBACA,iBACA,iBACA,iBACA,gBACD,gBACA,eACA,gBACA,gBACA,iBACC,iBACA,iBACA,gBACD,iBACC,gBACD,gBACA,iBACC,gBACD,iBACC,iBAEH,CACE,iBACC,gBACA,iBACA,iBACA,iBACA,gBACD,iBACC,iBACA,gBACD,gBACA,gBACA,iBACC,iBACA,iBACA,iBACA,iBACA,aACD,gBACA,eACA,gBACC,kBAGDC,EAAW,CACb,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,eACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,iBAEF,CACE,iBACC,iBACA,iBACD,gBACA,iBAEF,CACE,iBACC,kBACA,iBACD,gBACA,kBAGJ,SAASC,EAAW59I,EAAO69I,EAAUC,EAAQC,EAAWC,EAAUC,GAChE,MAAqB,GAAdD,IACLF,EAAOC,GAAa,MAAQ/9I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,GAAKH,EAAOC,EAAY,GAAKE,EAAO,GAAKj+I,EAAM69I,EAAW,GAAKI,EAAO,IAAMH,EAAOC,EAAY,GAAKE,EA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,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEFA,KAAgB,CACd,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFA,MAAiB,CACf,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,IAEFA,MAAiB,CACf,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GAEFA,IAAe,CAAC,EAAG,EAAG,EAAG,GACzBA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxCA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxCA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAC9DA,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7DA,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,IAEFA,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,OAAkB,CAChB,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEFA,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEFA,GAASh3D,GAAK,CACZ,IAAI22D,GAAY,EAAG,EAAG,KAAM,MAC5B,IAAIA,GAAY,EAAG,EAAGK,GAASC,KAAMD,GAASE,KAC9C,IAAIP,GAAY,EAAG,EAAGK,GAASG,KAAMH,GAASI,KAC9C,IAAIT,GAAY,EAAG,EAAGK,GAASK,KAAML,GAASM,KAC9C,IAAIX,GAAY,EAAG,EAAG,KAAM,MAC5B,IAAIA,GAAY,EAAG,EAAGK,GAASO,KAAMP,GAASQ,KAC9C,IAAIb,GAAY,EAAG,EAAGK,GAASS,KAAMT,GAASU,KAC9C,IAAIf,GAAY,EAAG,EAAGK,GAASW,KAAMX,GAASY,KAC9C,IAAIjB,GAAY,EAAG,EAAGK,GAASa,KAAMb,GAASc,KAC9C,IAAInB,GAAY,EAAG,EAAGK,GAASe,KAAMf,GAASgB,KAC9C,IAAIrB,GAAY,EAAG,EAAGK,GAASiB,MAAOjB,GAASkB,MAC/C,IAAIvB,GAAY,EAAG,EAAGK,GAASmB,MAAOnB,GAASoB,MAC/C,IAAIzB,GAAY,EAAG,EAAGK,GAASqB,MAAOrB,GAASsB,MAC/C,IAAI3B,GAAY,GAAI,EAAGK,GAASuB,MAAOvB,GAASwB,MAChD,IAAI7B,GAAY,EAAG,EAAG,KAAMK,GAASyB,QACrC,IAAI9B,GAAY,GAAI,EAAGK,GAAS0B,MAAO1B,GAAS2B,MAChD,IAAIhC,GAAY,EAAG,EAAGK,GAAS4B,MAAO5B,GAAS6B,MAC/C,IAAIlC,GAAY,EAAG,EAAGK,GAAS4B,MAAO5B,GAAS6B,MAC/C,IAAIlC,GAAY,EAAG,EAAGK,GAAS4B,MAAO5B,GAAS6B,MAC/C,IAAIlC,GAAY,EAAG,GAAIK,GAAS4B,MAAO5B,GAAS6B,MAChD,IAAIlC,GAAY,EAAG,GAAIK,GAAS4B,MAAO5B,GAAS6B,MAChD,IAAIlC,GAAY,EAAG,IAAKK,GAAS4B,MAAO5B,GAAS6B,MACjD,IAAIlC,GAAY,GAAI,KAAMK,GAAS4B,MAAO5B,GAAS6B,MACnD,IAAIlC,GAAY,GAAI,KAAMK,GAAS4B,MAAO5B,GAAS6B,MACnD,IAAIlC,GAAY,EAAG,GAAIK,GAAS8B,MAAO9B,GAAS+B,MAChD,IAAIpC,GAAY,EAAG,GAAIK,GAAS8B,MAAO9B,GAAS+B,MAChD,IAAIpC,GAAY,EAAG,GAAIK,GAAS8B,MAAO9B,GAAS+B,MAChD,IAAIpC,GAAY,EAAG,IAAKK,GAAS8B,MAAO9B,GAAS+B,MACjD,IAAIpC,GAAY,EAAG,IAAKK,GAAS8B,MAAO9B,GAAS+B,MACjD,IAAIpC,GAAY,EAAG,IAAKK,GAAS8B,MAAO9B,GAAS+B,MACjD,IAAIpC,GAAY,GAAI,KAAMK,GAAS8B,MAAO9B,GAAS+B,MACnD,IAAIpC,GAAY,GAAI,KAAMK,GAAS8B,MAAO9B,GAAS+B,MACnD,IAAIpC,GAAY,EAAG,EAAGK,GAASgC,MAAOhC,GAASiC,MAC/C,IAAItC,GAAY,EAAG,EAAGK,GAASkC,MAAOlC,GAASmC,OAEjDnC,GAASoC,SAAW,CAClB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFpC,GAASqC,QAAU,CACjB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFrC,GAASsC,QAAU,CACjB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFtC,GAASuC,cAAgB,CACvB,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KACC,GAEH,CACE,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,KACC,GAEH,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE9DvC,GAASwC,iBAAmB,CAC1B,CAAC,MAAO,KAAM,MAAO,GACrB,CAAC,MAAO,KAAM,MAAO,GACrB,CAAC,MAAO,KAAM,KAAM,IAEtBxC,GAASyC,WAAa,CAAC,EAAG,EAAG,GAAI,GAAI,IACrC,IAAIC,GAAYt5J,GAAOkkI,QACnBC,GAAQnkI,GAAOmkI,MACfo1B,GAASv5J,GAAOqkI,KAChBm1B,GAAcx5J,GAAO0kI,UACrB+0B,GAAYz5J,GAAO4kI,QACnB80B,GAAW15J,GAAO+kI,OAKtB,SAAS40B,KACP,IAAIC,EAAM,KACNnE,EAAK,KACLtqB,EAAM,KAMV,SAAS0uB,EAAMpoJ,GACb,OAAOqoJ,EAAMroJ,EAAIkoJ,GAAYI,OAC/B,CAPA18J,KAAKiuI,WAAa,SAAS0uB,EAAKC,EAAKzuB,GACnCouB,EAAMI,EACNvE,EAAKwE,EACL9uB,EAAMK,CACR,EAIAnuI,KAAK68J,OAAS,SAASzoJ,GACrB,OAAO0oJ,EAAO1oJ,EAChB,EACA,IAAI2oJ,EAAc,qBACdC,EA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IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAGvB,IAAIqP,EAAQN,GAAYe,EAAQR,EAAS,GACrCI,EAASX,GAAYe,GACrBK,EAAQpB,GAAYc,GACpBO,EAAQrB,GAAYc,GAExB,SAASQ,EAAQluB,EAAK5hI,GACpB,IAAIstI,EAAMnN,EAAIoZ,WAAWv5I,EAAG4hI,GAG5B,OAFA0L,GAAOkiB,EACPliB,EAAMjqI,KAAKsoI,IAAI,GAAI2B,EAAM,GAAK1L,EAAIyR,UAC3B/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ACf,CACA,SAASc,EAAWC,EAAM1mJ,EAAMilJ,EAAOS,EAAOC,EAAKT,EAAaC,EAAc1Y,EAAMka,EAAIC,EAAMtB,EAAOC,EAAOsB,EAASC,GACnHx4K,KAAK6oJ,WAAan3H,EAClB1xB,KAAKu3K,aAAeZ,EACpB32K,KAAKi4K,UAAYb,EACjBp3K,KAAKy4K,QAAUpB,EACfr3K,KAAKy3K,OAASb,EACd52K,KAAK03K,KAAOb,EACZ72K,KAAK04K,OAASva,EACdn+J,KAAK4pH,MAAQyuD,EACbr4K,KAAK23K,YAAcW,EACnBt4K,KAAK63K,UAAYb,EACjBh3K,KAAK83K,UAAYb,EACjBj3K,KAAKg4K,QAAUO,EACfv4K,KAAK24K,QAAUH,CACjB,CACA,IAAII,EACJ54K,KAAKiuI,WAAa,SAAS4qC,GACzBD,EAAOC,CACT,EACA,IAAIC,EAAqB,CACvB,IAAIrC,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,EACA,EACA,EACA,EACA,GACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,IACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,EACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,GACC,EACD,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,EACA,KACC,IACA,IACD,IACA,KACC,EACD,EACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,GACA,IACC,IACD,GACC,GACD,KACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,KACC,KACD,KACC,GACD,KACA,EACA,EACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,GACA,KACC,KACD,GACC,GACD,KACA,EACA,EACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,MACC,KACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,KACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,IACA,EACA,GACC,GACD,IACC,GACD,KACA,EACA,EACA,IAGAsC,EAAqB,CACvB,IAAItC,EACF,EACA,EACA,EACA,EACA,IACA,IACC,GACA,EACD,IACA,EACA,EACA,EACA,EACA,GACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,KACA,IACD,IACA,IACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,KAAM,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,MACnE,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,KACA,KACD,IACA,GACC,EACD,EACA,EACA,GACA,MAEF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,MACpE,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,EACD,MACC,IACD,GACC,GACD,KACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,EACD,MACC,IACD,KACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,GACA,GACC,KACD,GACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,EACA,KACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,IACA,MACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,GACA,EACA,MACC,GACD,IACC,GACD,KACA,EACA,EACA,IA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5C,GAAX/lK,EACFo9H,EAAIsL,MAAQ5tE,EAAK4tE,MACR7pI,KAAK01G,IAAI6oB,EAAIsL,QAAS,GAAK,IACpCtL,EAAIsL,MAAQ5tE,EAAK4tE,OACJ,GAAX1oI,IACFo9H,EAAI2Z,MAAQv+I,EACZ4kI,EAAI0Z,WAAa70I,EAErB,CACA,IAAIglK,EAAiB,CACnB,IAAIjB,EACF,EACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,MACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,EACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,EACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,EACA,EACA,EACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,IACA,IACA,EACA,IACA,EACA,EACA,IACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,IACA,EACA,EACA,IACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,IACA,EACA,EACA,EACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EA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ACF,CACA,IAAIj5C,GAASjkI,GAAOikI,OAChBC,GAAUlkI,GAAOkkI,QACjBE,GAAapkI,GAAOokI,WACpBE,GAAStkI,GAAOskI,OAChB64C,GAAan9K,GAAOwkI,SACpB44C,GAAWp9K,GAAO+kI,OAGtB,SAASs4C,KACP,IAAIpH,EACAt2E,EACA/7F,EACJvG,KAAKiuI,WAAa,SAAS4qC,EAAO3qC,EAAK/7F,GACrCymI,EAAOC,EACPv2E,EAAK4rC,EACL3nI,EAAI4rC,CACN,EACA,IAAI8tI,EAAc,EACdC,EAAa,EACbC,EAAW,EACXC,EAAiB,EACjBC,EAAgBL,GAAOK,cACvBC,EAAeN,GAAOM,aACtBC,EAAgBF,EAAgB,EAAI,EAAI,EAAI,EAAI,EAChDG,EAAiBD,EAAgB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EACjFE,EAAgB,IAChBC,EAAgB,GAChBC,EAAiB,GACjBC,EAAa,KACbC,EAAU,OACVC,EAAU,OACVC,EAAc,CAChB,EACA,MACA,MACA,IACA,MACA,IACA,IACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEF,SAASC,EAAOC,EAAIxR,GAIlB,GAHAwR,EAAG7yB,gBACH6yB,EAAGp9B,KAAO4rB,EACVwR,EAAGryJ,SACCqyJ,EAAGryJ,KAAOqyJ,EAAG/yB,QAGb+yB,EAAGniD,IAAMmiD,EAAGhjK,OACdgjK,EAAG9yB,IAAI8yB,EAAGniD,KAAOmiD,EAAGp9B,IACpBo9B,EAAGniD,MACHmiD,EAAGryJ,KAAO,GAERqyJ,EAAGniD,KAAOmiD,EAAGhjK,MAAM,CACrB,IAAK,IAAI/X,EAAI,EAAGA,EAAI+6K,EAAGhjK,KAAM/X,GAAK,EAChC+6K,EAAG9yB,IAAIjoJ,EAAI,GAAK+6K,EAAG9yB,IAAIjoJ,GAEzB+6K,EAAG/yB,MAAQ,EACX+yB,EAAGniD,KAAO,CACZ,CACF,CACA,SAASoiD,EAAcD,EAAIt2I,GACzB,KAAIs2I,EAAGniD,KAAO,GAEd,IAAK,IAAI54H,EAAI,EAAGA,EAAIm6K,IAAiBn6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","sources":["webpack://src/./node_modules/axios/index.js","webpack://src/./node_modules/axios/lib/adapters/xhr.js","webpack://src/./node_modules/axios/lib/axios.js","webpack://src/./node_modules/axios/lib/cancel/Cancel.js","webpack://src/./node_modules/axios/lib/cancel/CancelToken.js","webpack://src/./node_modules/axios/lib/cancel/isCancel.js","webpack://src/./node_modules/axios/lib/core/Axios.js","webpack://src/./node_modules/axios/lib/core/InterceptorManager.js","webpack://src/./node_modules/axios/lib/core/buildFullPath.js","webpack://src/./node_modules/axios/lib/core/createError.js","webpack://src/./node_modules/axios/lib/core/dispatchRequest.js","webpack://src/./node_modules/axios/lib/core/enhanceError.js","webpack://src/./node_modules/axios/lib/core/mergeConfig.js","webpack://src/./node_modules/axios/lib/core/settle.js","webpack://src/./node_modules/axios/lib/core/transformData.js","webpack://src/./node_modules/axios/lib/defaults.js","webpack://src/./node_modules/axios/lib/helpers/bind.js","webpack://src/./node_modules/axios/lib/helpers/buildURL.js","webpack://src/./node_modules/axios/lib/helpers/combineURLs.js","webpack://src/./node_modules/axios/lib/helpers/cookies.js","webpack://src/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://src/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://src/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://src/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://src/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://src/./node_modules/axios/lib/helpers/spread.js","webpack://src/./node_modules/axios/lib/utils.js","webpack://src/./js/compatibility.ts","webpack://src/./node_modules/vue-loader/dist/exportHelper.js","webpack://src/./node_modules/core-js/internals/a-callable.js","webpack://src/./node_modules/core-js/internals/an-object.js","webpack://src/./node_modules/core-js/internals/array-includes.js","webpack://src/./node_modules/core-js/internals/array-set-length.js","webpack://src/./node_modules/core-js/internals/classof-raw.js","webpack://src/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://src/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://src/./node_modules/core-js/internals/create-property-descriptor.js","webpack://src/./node_modules/core-js/internals/define-built-in.js","webpack://src/./node_modules/core-js/internals/define-global-property.js","webpack://src/./node_modules/core-js/internals/descriptors.js","webpack://src/./node_modules/core-js/internals/document-create-element.js","webpack://src/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://src/./node_modules/core-js/internals/engine-user-agent.js","webpack://src/./node_modules/core-js/internals/engine-v8-version.js","webpack://src/./node_modules/core-js/internals/enum-bug-keys.js","webpack://src/./node_modules/core-js/internals/export.js","webpack://src/./node_modules/core-js/internals/fails.js","webpack://src/./node_modules/core-js/internals/function-bind-native.js","webpack://src/./node_modules/core-js/internals/function-call.js","webpack://src/./node_modules/core-js/internals/function-name.js","webpack://src/./node_modules/core-js/internals/function-uncurry-this.js","webpack://src/./node_modules/core-js/internals/get-built-in.js","webpack://src/./node_modules/core-js/internals/get-method.js","webpack://src/./node_modules/core-js/internals/global.js","webpack://src/./node_modules/core-js/internals/has-own-property.js","webpack://src/./node_modules/core-js/internals/hidden-keys.js","webpack://src/./node_modules/core-js/internals/ie8-dom-define.js","webpack://src/./node_modules/core-js/internals/indexed-object.js","webpack://src/./node_modules/core-js/internals/inspect-source.js","webpack://src/./node_modules/core-js/internals/internal-state.js","webpack://src/./node_modules/core-js/internals/is-array.js","webpack://src/./node_modules/core-js/internals/is-callable.js","webpack://src/./node_modules/core-js/internals/is-forced.js","webpack://src/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://src/./node_modules/core-js/internals/is-object.js","webpack://src/./node_modules/core-js/internals/is-pure.js","webpack://src/./node_modules/core-js/internals/is-symbol.js","webpack://src/./node_modules/core-js/internals/length-of-array-like.js","webpack://src/./node_modules/core-js/internals/make-built-in.js","webpack://src/./node_modules/core-js/internals/math-trunc.js","webpack://src/./node_modules/core-js/internals/object-define-property.js","webpack://src/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://src/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://src/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://src/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://src/./node_modules/core-js/internals/object-keys-internal.js","webpack://src/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://src/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://src/./node_modules/core-js/internals/own-keys.js","webpack://src/./node_modules/core-js/internals/require-object-coercible.js","webpack://src/./node_modules/core-js/internals/shared-key.js","webpack://src/./node_modules/core-js/internals/shared-store.js","webpack://src/./node_modules/core-js/internals/shared.js","webpack://src/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://src/./node_modules/core-js/internals/to-absolute-index.js","webpack://src/./node_modules/core-js/internals/to-indexed-object.js","webpack://src/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://src/./node_modules/core-js/internals/to-length.js","webpack://src/./node_modules/core-js/internals/to-object.js","webpack://src/./node_modules/core-js/internals/to-primitive.js","webpack://src/./node_modules/core-js/internals/to-property-key.js","webpack://src/./node_modules/core-js/internals/try-to-string.js","webpack://src/./node_modules/core-js/internals/uid.js","webpack://src/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://src/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://src/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://src/./node_modules/core-js/internals/well-known-symbol.js","webpack://src/./node_modules/core-js/modules/es.array.push.js","webpack://src/webpack/bootstrap","webpack://src/webpack/runtime/compat get default export","webpack://src/webpack/runtime/define property getters","webpack://src/webpack/runtime/global","webpack://src/webpack/runtime/hasOwnProperty shorthand","webpack://src/./node_modules/@vue/compat/dist/vue.runtime.esm-bundler.js","webpack://src/./js/components/ChatComponent.vue?e262","webpack://src/./js/components/ChatComponent.vue","webpack://src/./node_modules/vue-advanced-chat/dist/vue-advanced-chat.es.js","webpack://src/./js/components/ChatComponent.vue?ef42","webpack://src/./js/components/NotificationsBell.vue?641f","webpack://src/./js/components/NotificationsBell.vue","webpack://src/./js/components/sub/NotificationMessage.vue?cc67","webpack://src/./js/components/sub/NotificationMessage.vue","webpack://src/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://src/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://src/./node_modules/date-fns/esm/toDate/index.js","webpack://src/./node_modules/date-fns/esm/startOfDay/index.js","webpack://src/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://src/./node_modules/date-fns/esm/isDate/index.js","webpack://src/./node_modules/date-fns/esm/isValid/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://src/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://src/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://src/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://src/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://src/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://src/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://src/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://src/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://src/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://src/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://src/./node_modules/date-fns/esm/format/index.js","webpack://src/./node_modules/date-fns/esm/formatRelative/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/_lib/match/index.js","webpack://src/./node_modules/date-fns/esm/locale/fr/index.js","webpack://src/./js/components/sub/NotificationMessage.vue?4cf0","webpack://src/./js/components/NotificationsBell.vue?67bf","webpack://src/./js/video/constants.ts","webpack://src/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://src/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://src/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://src/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://src/./js/video/utils.ts","webpack://src/./js/video/VideoPlayer.ts","webpack://src/./js/video/SyncVideoPlayer.ts","webpack://src/./js/video/VideoComponent.vue?c30e","webpack://src/./js/video/VideoComponent.vue","webpack://src/./js/video/VideoComponent.vue?eef0","webpack://src/./js/main.ts"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request.onreadystatechange = function handleLoad() {\n      if (!request || request.readyState !== 4) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  var valueFromConfig2Keys = ['url', 'method', 'data'];\n  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n  var defaultToConfig2Keys = [\n    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n  ];\n  var directMergeKeys = ['validateStatus'];\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    }\n  });\n\n  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  utils.forEach(directMergeKeys, function merge(prop) {\n    if (prop in config2) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  var axiosKeys = valueFromConfig2Keys\n    .concat(mergeDeepPropertiesKeys)\n    .concat(defaultToConfig2Keys)\n    .concat(directMergeKeys);\n\n  var otherKeys = Object\n    .keys(config1)\n    .concat(Object.keys(config2))\n    .filter(function filterAxiosKeys(key) {\n      return axiosKeys.indexOf(key) === -1;\n    });\n\n  utils.forEach(otherKeys, mergeDeepProperties);\n\n  return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (toString.call(val) !== '[object Object]') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM\n};\n","window.addEventListener(\"DOMContentLoaded\", () => {\n\n    const testVideo = document.createElement(\"video\");\n    if (testVideo.canPlayType) {\n        // Check for Webm support\n        const webm = \"\" !== testVideo.canPlayType('video/webm; codecs=\"vp8, vorbis\"');\n        if (!webm){\n            const container = document.getElementById(\"content\");\n            if(container){\n                const p = document.createElement(\"p\");\n                p.classList.add(\"warning\");\n                container.prepend(p);\n                p.innerHTML = `\n                    Votre navigateur n'est pas compatible avec le format video <abbr title=\"WebM est un format de fichier multimédia ouvert, principalement destiné à un usage sur le web.\">WebM</abbr> des cours en direct.\n                    Veuillez téléchargez Firefox ou Google Chrome dans leur dernière version.\n                `;\n            }\n        }\n        \n    }\n});","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = global[TARGET] && global[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.35.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.35.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","/**\n* @vue/compat v3.4.15\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nfunction makeMap(str, expectsLowerCase) {\n  const set = new Set(str.split(\",\"));\n  return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty$1.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n  const s = str ? `on${capitalize(str)}` : ``;\n  return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](arg);\n  }\n};\nconst def = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  let ret = \"\";\n  if (!styles || isString(styles)) {\n    return ret;\n  }\n  for (const key in styles) {\n    const value = styles[key];\n    const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n    if (isString(value) || typeof value === \"number\") {\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props)\n    return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length)\n    return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b)\n    return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (val && val.__v_isRef) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nfunction warn$2(msg, ...args) {\n  console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$2(`cannot run an inactive effect scope.`);\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    activeEffectScope = this;\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this._active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n      this._active = false;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n  if (scope && scope.active) {\n    scope.effects.push(effect);\n  }\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$2(\n      `onScopeDispose() is called when there is no active effect scope to be associated with.`\n    );\n  }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n  constructor(fn, trigger, scheduler, scope) {\n    this.fn = fn;\n    this.trigger = trigger;\n    this.scheduler = scheduler;\n    this.active = true;\n    this.deps = [];\n    /**\n     * @internal\n     */\n    this._dirtyLevel = 2;\n    /**\n     * @internal\n     */\n    this._trackId = 0;\n    /**\n     * @internal\n     */\n    this._runnings = 0;\n    /**\n     * @internal\n     */\n    this._shouldSchedule = false;\n    /**\n     * @internal\n     */\n    this._depsLength = 0;\n    recordEffectScope(this, scope);\n  }\n  get dirty() {\n    if (this._dirtyLevel === 1) {\n      pauseTracking();\n      for (let i = 0; i < this._depsLength; i++) {\n        const dep = this.deps[i];\n        if (dep.computed) {\n          triggerComputed(dep.computed);\n          if (this._dirtyLevel >= 2) {\n            break;\n          }\n        }\n      }\n      if (this._dirtyLevel < 2) {\n        this._dirtyLevel = 0;\n      }\n      resetTracking();\n    }\n    return this._dirtyLevel >= 2;\n  }\n  set dirty(v) {\n    this._dirtyLevel = v ? 2 : 0;\n  }\n  run() {\n    this._dirtyLevel = 0;\n    if (!this.active) {\n      return this.fn();\n    }\n    let lastShouldTrack = shouldTrack;\n    let lastEffect = activeEffect;\n    try {\n      shouldTrack = true;\n      activeEffect = this;\n      this._runnings++;\n      preCleanupEffect(this);\n      return this.fn();\n    } finally {\n      postCleanupEffect(this);\n      this._runnings--;\n      activeEffect = lastEffect;\n      shouldTrack = lastShouldTrack;\n    }\n  }\n  stop() {\n    var _a;\n    if (this.active) {\n      preCleanupEffect(this);\n      postCleanupEffect(this);\n      (_a = this.onStop) == null ? void 0 : _a.call(this);\n      this.active = false;\n    }\n  }\n}\nfunction triggerComputed(computed) {\n  return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n  effect2._trackId++;\n  effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n  if (effect2.deps && effect2.deps.length > effect2._depsLength) {\n    for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n      cleanupDepEffect(effect2.deps[i], effect2);\n    }\n    effect2.deps.length = effect2._depsLength;\n  }\n}\nfunction cleanupDepEffect(dep, effect2) {\n  const trackId = dep.get(effect2);\n  if (trackId !== void 0 && effect2._trackId !== trackId) {\n    dep.delete(effect2);\n    if (dep.size === 0) {\n      dep.cleanup();\n    }\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect instanceof ReactiveEffect) {\n    fn = fn.effect.fn;\n  }\n  const _effect = new ReactiveEffect(fn, NOOP, () => {\n    if (_effect.dirty) {\n      _effect.run();\n    }\n  });\n  if (options) {\n    extend(_effect, options);\n    if (options.scope)\n      recordEffectScope(_effect, options.scope);\n  }\n  if (!options || !options.lazy) {\n    _effect.run();\n  }\n  const runner = _effect.run.bind(_effect);\n  runner.effect = _effect;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n  pauseScheduleStack++;\n}\nfunction resetScheduling() {\n  pauseScheduleStack--;\n  while (!pauseScheduleStack && queueEffectSchedulers.length) {\n    queueEffectSchedulers.shift()();\n  }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n  var _a;\n  if (dep.get(effect2) !== effect2._trackId) {\n    dep.set(effect2, effect2._trackId);\n    const oldDep = effect2.deps[effect2._depsLength];\n    if (oldDep !== dep) {\n      if (oldDep) {\n        cleanupDepEffect(oldDep, effect2);\n      }\n      effect2.deps[effect2._depsLength++] = dep;\n    } else {\n      effect2._depsLength++;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n    }\n  }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n  var _a;\n  pauseScheduling();\n  for (const effect2 of dep.keys()) {\n    if (effect2._dirtyLevel < dirtyLevel && dep.get(effect2) === effect2._trackId) {\n      const lastDirtyLevel = effect2._dirtyLevel;\n      effect2._dirtyLevel = dirtyLevel;\n      if (lastDirtyLevel === 0) {\n        effect2._shouldSchedule = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n        }\n        effect2.trigger();\n      }\n    }\n  }\n  scheduleEffects(dep);\n  resetScheduling();\n}\nfunction scheduleEffects(dep) {\n  for (const effect2 of dep.keys()) {\n    if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse) && dep.get(effect2) === effect2._trackId) {\n      effect2._shouldSchedule = false;\n      queueEffectSchedulers.push(effect2.scheduler);\n    }\n  }\n}\n\nconst createDep = (cleanup, computed) => {\n  const dep = /* @__PURE__ */ new Map();\n  dep.cleanup = cleanup;\n  dep.computed = computed;\n  return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n  if (shouldTrack && activeEffect) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n    }\n    trackEffect(\n      activeEffect,\n      dep,\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target,\n        type,\n        key\n      } : void 0\n    );\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  let deps = [];\n  if (type === \"clear\") {\n    deps = [...depsMap.values()];\n  } else if (key === \"length\" && isArray(target)) {\n    const newLength = Number(newValue);\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n        deps.push(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      deps.push(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          deps.push(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  pauseScheduling();\n  for (const dep of deps) {\n    if (dep) {\n      triggerEffects(\n        dep,\n        2,\n        !!(process.env.NODE_ENV !== \"production\") ? {\n          target,\n          type,\n          key,\n          newValue,\n          oldValue,\n          oldTarget\n        } : void 0\n      );\n    }\n  }\n  resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n  var _a;\n  return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      pauseScheduling();\n      const res = toRaw(this)[key].apply(this, args);\n      resetScheduling();\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction hasOwnProperty(key) {\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n  constructor(_isReadonly = false, _shallow = false) {\n    this._isReadonly = _isReadonly;\n    this._shallow = _shallow;\n  }\n  get(target, key, receiver) {\n    const isReadonly2 = this._isReadonly, shallow = this._shallow;\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return shallow;\n    } else if (key === \"__v_raw\") {\n      if (receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n      // this means the reciever is a user proxy of the reactive proxy\n      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n        return target;\n      }\n      return;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly2) {\n      if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n        return Reflect.get(arrayInstrumentations, key, receiver);\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n  constructor(shallow = false) {\n    super(false, shallow);\n  }\n  set(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!this._shallow) {\n      const isOldValueReadonly = isReadonly(oldValue);\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        if (isOldValueReadonly) {\n          return false;\n        } else {\n          oldValue.value = value;\n          return true;\n        }\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  }\n  deleteProperty(target, key) {\n    const hadKey = hasOwn(target, key);\n    const oldValue = target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) {\n      trigger(target, \"delete\", key, void 0, oldValue);\n    }\n    return result;\n  }\n  has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!isSymbol(key) || !builtInSymbols.has(key)) {\n      track(target, \"has\", key);\n    }\n    return result;\n  }\n  ownKeys(target) {\n    track(\n      target,\n      \"iterate\",\n      isArray(target) ? \"length\" : ITERATE_KEY\n    );\n    return Reflect.ownKeys(target);\n  }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n  constructor(shallow = false) {\n    super(true, shallow);\n  }\n  set(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$2(\n        `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n  deleteProperty(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$2(\n        `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n  true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (hasChanged(key, rawKey)) {\n      track(rawTarget, \"get\", key);\n    }\n    track(rawTarget, \"get\", rawKey);\n  }\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has(key, isReadonly = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (hasChanged(key, rawKey)) {\n      track(rawTarget, \"has\", key);\n    }\n    track(rawTarget, \"has\", rawKey);\n  }\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2 ? get2.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      console.warn(\n        `${capitalize(type)} operation ${key}failed: target is readonly.`,\n        toRaw(this)\n      );\n    }\n    return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      false\n    );\n    readonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      false\n    );\n    shallowInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      true\n    );\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      true\n    );\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nconst [\n  mutableInstrumentations,\n  readonlyInstrumentations,\n  shallowInstrumentations,\n  shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    console.warn(\n      `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n    );\n  }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      console.warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  def(value, \"__v_skip\", true);\n  return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nclass ComputedRefImpl {\n  constructor(getter, _setter, isReadonly, isSSR) {\n    this._setter = _setter;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this[\"__v_isReadonly\"] = false;\n    this.effect = new ReactiveEffect(\n      () => getter(this._value),\n      () => triggerRefValue(this, 1),\n      () => this.dep && scheduleEffects(this.dep)\n    );\n    this.effect.computed = this;\n    this.effect.active = this._cacheable = !isSSR;\n    this[\"__v_isReadonly\"] = isReadonly;\n  }\n  get value() {\n    const self = toRaw(this);\n    if (!self._cacheable || self.effect.dirty) {\n      if (hasChanged(self._value, self._value = self.effect.run())) {\n        triggerRefValue(self, 2);\n      }\n    }\n    trackRefValue(self);\n    if (self.effect._dirtyLevel >= 1) {\n      triggerRefValue(self, 1);\n    }\n    return self._value;\n  }\n  set value(newValue) {\n    this._setter(newValue);\n  }\n  // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n  get _dirty() {\n    return this.effect.dirty;\n  }\n  set _dirty(v) {\n    this.effect.dirty = v;\n  }\n  // #endregion\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  const onlyGetter = isFunction(getterOrOptions);\n  if (onlyGetter) {\n    getter = getterOrOptions;\n    setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n      console.warn(\"Write operation failed: computed value is readonly\");\n    } : NOOP;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n  if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n    cRef.effect.onTrack = debugOptions.onTrack;\n    cRef.effect.onTrigger = debugOptions.onTrigger;\n  }\n  return cRef;\n}\n\nfunction trackRefValue(ref2) {\n  if (shouldTrack && activeEffect) {\n    ref2 = toRaw(ref2);\n    trackEffect(\n      activeEffect,\n      ref2.dep || (ref2.dep = createDep(\n        () => ref2.dep = void 0,\n        ref2 instanceof ComputedRefImpl ? ref2 : void 0\n      )),\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target: ref2,\n        type: \"get\",\n        key: \"value\"\n      } : void 0\n    );\n  }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 2, newVal) {\n  ref2 = toRaw(ref2);\n  const dep = ref2.dep;\n  if (dep) {\n    triggerEffects(\n      dep,\n      dirtyLevel,\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target: ref2,\n        type: \"set\",\n        key: \"value\",\n        newValue: newVal\n      } : void 0\n    );\n  }\n}\nfunction isRef(r) {\n  return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, __v_isShallow) {\n    this.__v_isShallow = __v_isShallow;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this._rawValue = __v_isShallow ? value : toRaw(value);\n    this._value = __v_isShallow ? value : toReactive(value);\n  }\n  get value() {\n    trackRefValue(this);\n    return this._value;\n  }\n  set value(newVal) {\n    const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n    newVal = useDirectValue ? newVal : toRaw(newVal);\n    if (hasChanged(newVal, this._rawValue)) {\n      this._rawValue = newVal;\n      this._value = useDirectValue ? newVal : toReactive(newVal);\n      triggerRefValue(this, 2, newVal);\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  triggerRefValue(ref2, 2, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this.dep = void 0;\n    this.__v_isRef = true;\n    const { get, set } = factory(\n      () => trackRefValue(this),\n      () => triggerRefValue(this)\n    );\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n    console.warn(`toRefs() expects a reactive object but received a plain one.`);\n  }\n  const ret = isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this.__v_isRef = true;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this.__v_isRef = true;\n    this.__v_isReadonly = true;\n  }\n  get value() {\n    return this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst TrackOpTypes = {\n  \"GET\": \"get\",\n  \"HAS\": \"has\",\n  \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n  \"SET\": \"set\",\n  \"ADD\": \"add\",\n  \"DELETE\": \"delete\",\n  \"CLEAR\": \"clear\"\n};\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n  stack.push(vnode);\n}\nfunction popWarningContext() {\n  stack.pop();\n}\nfunction warn$1(msg, ...args) {\n  pauseTracking();\n  const instance = stack.length ? stack[stack.length - 1].component : null;\n  const appWarnHandler = instance && instance.appContext.config.warnHandler;\n  const trace = getComponentTrace();\n  if (appWarnHandler) {\n    callWithErrorHandling(\n      appWarnHandler,\n      instance,\n      11,\n      [\n        msg + args.join(\"\"),\n        instance && instance.proxy,\n        trace.map(\n          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n        ).join(\"\\n\"),\n        trace\n      ]\n    );\n  } else {\n    const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n    if (trace.length && // avoid spamming console during tests\n    true) {\n      warnArgs.push(`\n`, ...formatTrace(trace));\n    }\n    console.warn(...warnArgs);\n  }\n  resetTracking();\n}\nfunction getComponentTrace() {\n  let currentVNode = stack[stack.length - 1];\n  if (!currentVNode) {\n    return [];\n  }\n  const normalizedStack = [];\n  while (currentVNode) {\n    const last = normalizedStack[0];\n    if (last && last.vnode === currentVNode) {\n      last.recurseCount++;\n    } else {\n      normalizedStack.push({\n        vnode: currentVNode,\n        recurseCount: 0\n      });\n    }\n    const parentInstance = currentVNode.component && currentVNode.component.parent;\n    currentVNode = parentInstance && parentInstance.vnode;\n  }\n  return normalizedStack;\n}\nfunction formatTrace(trace) {\n  const logs = [];\n  trace.forEach((entry, i) => {\n    logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n  });\n  return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n  const isRoot = vnode.component ? vnode.component.parent == null : false;\n  const open = ` at <${formatComponentName(\n    vnode.component,\n    vnode.type,\n    isRoot\n  )}`;\n  const close = `>` + postfix;\n  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n  const res = [];\n  const keys = Object.keys(props);\n  keys.slice(0, 3).forEach((key) => {\n    res.push(...formatProp(key, props[key]));\n  });\n  if (keys.length > 3) {\n    res.push(` ...`);\n  }\n  return res;\n}\nfunction formatProp(key, value, raw) {\n  if (isString(value)) {\n    value = JSON.stringify(value);\n    return raw ? value : [`${key}=${value}`];\n  } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n    return raw ? value : [`${key}=${value}`];\n  } else if (isRef(value)) {\n    value = formatProp(key, toRaw(value.value), true);\n    return raw ? value : [`${key}=Ref<`, value, `>`];\n  } else if (isFunction(value)) {\n    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n  } else {\n    value = toRaw(value);\n    return raw ? value : [`${key}=`, value];\n  }\n}\nfunction assertNumber(val, type) {\n  if (!!!(process.env.NODE_ENV !== \"production\"))\n    return;\n  if (val === void 0) {\n    return;\n  } else if (typeof val !== \"number\") {\n    warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n  } else if (isNaN(val)) {\n    warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n  }\n}\n\nconst ErrorCodes = {\n  \"SETUP_FUNCTION\": 0,\n  \"0\": \"SETUP_FUNCTION\",\n  \"RENDER_FUNCTION\": 1,\n  \"1\": \"RENDER_FUNCTION\",\n  \"WATCH_GETTER\": 2,\n  \"2\": \"WATCH_GETTER\",\n  \"WATCH_CALLBACK\": 3,\n  \"3\": \"WATCH_CALLBACK\",\n  \"WATCH_CLEANUP\": 4,\n  \"4\": \"WATCH_CLEANUP\",\n  \"NATIVE_EVENT_HANDLER\": 5,\n  \"5\": \"NATIVE_EVENT_HANDLER\",\n  \"COMPONENT_EVENT_HANDLER\": 6,\n  \"6\": \"COMPONENT_EVENT_HANDLER\",\n  \"VNODE_HOOK\": 7,\n  \"7\": \"VNODE_HOOK\",\n  \"DIRECTIVE_HOOK\": 8,\n  \"8\": \"DIRECTIVE_HOOK\",\n  \"TRANSITION_HOOK\": 9,\n  \"9\": \"TRANSITION_HOOK\",\n  \"APP_ERROR_HANDLER\": 10,\n  \"10\": \"APP_ERROR_HANDLER\",\n  \"APP_WARN_HANDLER\": 11,\n  \"11\": \"APP_WARN_HANDLER\",\n  \"FUNCTION_REF\": 12,\n  \"12\": \"FUNCTION_REF\",\n  \"ASYNC_COMPONENT_LOADER\": 13,\n  \"13\": \"ASYNC_COMPONENT_LOADER\",\n  \"SCHEDULER\": 14,\n  \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  let res;\n  try {\n    res = args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n  return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  const values = [];\n  for (let i = 0; i < fn.length; i++) {\n    values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n  }\n  return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    const appErrorHandler = instance.appContext.config.errorHandler;\n    if (appErrorHandler) {\n      callWithErrorHandling(\n        appErrorHandler,\n        null,\n        10,\n        [err, exposedInstance, errorInfo]\n      );\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const info = ErrorTypeStrings$1[type];\n    if (contextVNode) {\n      pushWarningContext(contextVNode);\n    }\n    warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n    if (contextVNode) {\n      popWarningContext();\n    }\n    if (throwInDev) {\n      throw err;\n    } else {\n      console.error(err);\n    }\n  } else {\n    console.error(err);\n  }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJob = queue[middle];\n    const middleJobId = getId(middleJob);\n    if (middleJobId < id || middleJobId === id && middleJob.pre) {\n      start = middle + 1;\n    } else {\n      end = middle;\n    }\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!queue.length || !queue.includes(\n    job,\n    isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n  )) {\n    if (job.id == null) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(job.id), 0, job);\n    }\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!isFlushing && !isFlushPending) {\n    isFlushPending = true;\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction invalidateJob(job) {\n  const i = queue.indexOf(job);\n  if (i > flushIndex) {\n    queue.splice(i, 1);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!isArray(cb)) {\n    if (!activePostFlushCbs || !activePostFlushCbs.includes(\n      cb,\n      cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n    )) {\n      pendingPostFlushCbs.push(cb);\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.pre) {\n      if (instance && cb.id !== instance.uid) {\n        continue;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      cb();\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)].sort(\n      (a, b) => getId(a) - getId(b)\n    );\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      seen = seen || /* @__PURE__ */ new Map();\n    }\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n        continue;\n      }\n      activePostFlushCbs[postFlushIndex]();\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n  const diff = getId(a) - getId(b);\n  if (diff === 0) {\n    if (a.pre && !b.pre)\n      return -1;\n    if (b.pre && !a.pre)\n      return 1;\n  }\n  return diff;\n};\nfunction flushJobs(seen) {\n  isFlushPending = false;\n  isFlushing = true;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  queue.sort(comparator);\n  const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && job.active !== false) {\n        if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n          continue;\n        }\n        callWithErrorHandling(job, null, 14);\n      }\n    }\n  } finally {\n    flushIndex = 0;\n    queue.length = 0;\n    flushPostFlushCbs(seen);\n    isFlushing = false;\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n  if (!seen.has(fn)) {\n    seen.set(fn, 1);\n  } else {\n    const count = seen.get(fn);\n    if (count > RECURSION_LIMIT) {\n      const instance = fn.ownerInstance;\n      const componentName = instance && getComponentName(instance.type);\n      handleError(\n        `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n        null,\n        10\n      );\n      return true;\n    } else {\n      seen.set(fn, count + 1);\n    }\n  }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  getGlobalThis().__VUE_HMR_RUNTIME__ = {\n    createRecord: tryWrap(createRecord),\n    rerender: tryWrap(rerender),\n    reload: tryWrap(reload)\n  };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n  const id = instance.type.__hmrId;\n  let record = map.get(id);\n  if (!record) {\n    createRecord(id, instance.type);\n    record = map.get(id);\n  }\n  record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n  map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n  if (map.has(id)) {\n    return false;\n  }\n  map.set(id, {\n    initialDef: normalizeClassComponent(initialDef),\n    instances: /* @__PURE__ */ new Set()\n  });\n  return true;\n}\nfunction normalizeClassComponent(component) {\n  return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n  const record = map.get(id);\n  if (!record) {\n    return;\n  }\n  record.initialDef.render = newRender;\n  [...record.instances].forEach((instance) => {\n    if (newRender) {\n      instance.render = newRender;\n      normalizeClassComponent(instance.type).render = newRender;\n    }\n    instance.renderCache = [];\n    isHmrUpdating = true;\n    instance.effect.dirty = true;\n    instance.update();\n    isHmrUpdating = false;\n  });\n}\nfunction reload(id, newComp) {\n  const record = map.get(id);\n  if (!record)\n    return;\n  newComp = normalizeClassComponent(newComp);\n  updateComponentDef(record.initialDef, newComp);\n  const instances = [...record.instances];\n  for (const instance of instances) {\n    const oldComp = normalizeClassComponent(instance.type);\n    if (!hmrDirtyComponents.has(oldComp)) {\n      if (oldComp !== record.initialDef) {\n        updateComponentDef(oldComp, newComp);\n      }\n      hmrDirtyComponents.add(oldComp);\n    }\n    instance.appContext.propsCache.delete(instance.type);\n    instance.appContext.emitsCache.delete(instance.type);\n    instance.appContext.optionsCache.delete(instance.type);\n    if (instance.ceReload) {\n      hmrDirtyComponents.add(oldComp);\n      instance.ceReload(newComp.styles);\n      hmrDirtyComponents.delete(oldComp);\n    } else if (instance.parent) {\n      instance.parent.effect.dirty = true;\n      queueJob(instance.parent.update);\n    } else if (instance.appContext.reload) {\n      instance.appContext.reload();\n    } else if (typeof window !== \"undefined\") {\n      window.location.reload();\n    } else {\n      console.warn(\n        \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n      );\n    }\n  }\n  queuePostFlushCb(() => {\n    for (const instance of instances) {\n      hmrDirtyComponents.delete(\n        normalizeClassComponent(instance.type)\n      );\n    }\n  });\n}\nfunction updateComponentDef(oldComp, newComp) {\n  extend(oldComp, newComp);\n  for (const key in oldComp) {\n    if (key !== \"__file\" && !(key in newComp)) {\n      delete oldComp[key];\n    }\n  }\n}\nfunction tryWrap(fn) {\n  return (id, arg) => {\n    try {\n      return fn(id, arg);\n    } catch (e) {\n      console.error(e);\n      console.warn(\n        `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n      );\n    }\n  };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$2(event, ...args) {\n  if (devtools$1) {\n    devtools$1.emit(event, ...args);\n  } else if (!devtoolsNotInstalled) {\n    buffer.push({ event, args });\n  }\n}\nfunction setDevtoolsHook$1(hook, target) {\n  var _a, _b;\n  devtools$1 = hook;\n  if (devtools$1) {\n    devtools$1.enabled = true;\n    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n    buffer = [];\n  } else if (\n    // handle late devtools injection - only do this if we are in an actual\n    // browser environment to avoid the timer handle stalling test runner exit\n    // (#4815)\n    typeof window !== \"undefined\" && // some envs mock window but not fully\n    window.HTMLElement && // also exclude jsdom\n    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n  ) {\n    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n    replay.push((newHook) => {\n      setDevtoolsHook$1(newHook, target);\n    });\n    setTimeout(() => {\n      if (!devtools$1) {\n        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n        devtoolsNotInstalled = true;\n        buffer = [];\n      }\n    }, 3e3);\n  } else {\n    devtoolsNotInstalled = true;\n    buffer = [];\n  }\n}\nfunction devtoolsInitApp(app, version) {\n  emit$2(\"app:init\" /* APP_INIT */, app, version, {\n    Fragment,\n    Text,\n    Comment,\n    Static\n  });\n}\nfunction devtoolsUnmountApp(app) {\n  emit$2(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n  if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n  !devtools$1.cleanupBuffer(component)) {\n    _devtoolsComponentRemoved(component);\n  }\n};\nfunction createDevtoolsComponentHook(hook) {\n  return (component) => {\n    emit$2(\n      hook,\n      component.appContext.app,\n      component.uid,\n      component.parent ? component.parent.uid : void 0,\n      component\n    );\n  };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n  return (component, type, time) => {\n    emit$2(hook, component.appContext.app, component.uid, component, type, time);\n  };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n  emit$2(\n    \"component:emit\" /* COMPONENT_EMIT */,\n    component.appContext.app,\n    component,\n    event,\n    params\n  );\n}\n\nconst DeprecationTypes$1 = {\n  \"GLOBAL_MOUNT\": \"GLOBAL_MOUNT\",\n  \"GLOBAL_MOUNT_CONTAINER\": \"GLOBAL_MOUNT_CONTAINER\",\n  \"GLOBAL_EXTEND\": \"GLOBAL_EXTEND\",\n  \"GLOBAL_PROTOTYPE\": \"GLOBAL_PROTOTYPE\",\n  \"GLOBAL_SET\": \"GLOBAL_SET\",\n  \"GLOBAL_DELETE\": \"GLOBAL_DELETE\",\n  \"GLOBAL_OBSERVABLE\": \"GLOBAL_OBSERVABLE\",\n  \"GLOBAL_PRIVATE_UTIL\": \"GLOBAL_PRIVATE_UTIL\",\n  \"CONFIG_SILENT\": \"CONFIG_SILENT\",\n  \"CONFIG_DEVTOOLS\": \"CONFIG_DEVTOOLS\",\n  \"CONFIG_KEY_CODES\": \"CONFIG_KEY_CODES\",\n  \"CONFIG_PRODUCTION_TIP\": \"CONFIG_PRODUCTION_TIP\",\n  \"CONFIG_IGNORED_ELEMENTS\": \"CONFIG_IGNORED_ELEMENTS\",\n  \"CONFIG_WHITESPACE\": \"CONFIG_WHITESPACE\",\n  \"CONFIG_OPTION_MERGE_STRATS\": \"CONFIG_OPTION_MERGE_STRATS\",\n  \"INSTANCE_SET\": \"INSTANCE_SET\",\n  \"INSTANCE_DELETE\": \"INSTANCE_DELETE\",\n  \"INSTANCE_DESTROY\": \"INSTANCE_DESTROY\",\n  \"INSTANCE_EVENT_EMITTER\": \"INSTANCE_EVENT_EMITTER\",\n  \"INSTANCE_EVENT_HOOKS\": \"INSTANCE_EVENT_HOOKS\",\n  \"INSTANCE_CHILDREN\": \"INSTANCE_CHILDREN\",\n  \"INSTANCE_LISTENERS\": \"INSTANCE_LISTENERS\",\n  \"INSTANCE_SCOPED_SLOTS\": \"INSTANCE_SCOPED_SLOTS\",\n  \"INSTANCE_ATTRS_CLASS_STYLE\": \"INSTANCE_ATTRS_CLASS_STYLE\",\n  \"OPTIONS_DATA_FN\": \"OPTIONS_DATA_FN\",\n  \"OPTIONS_DATA_MERGE\": \"OPTIONS_DATA_MERGE\",\n  \"OPTIONS_BEFORE_DESTROY\": \"OPTIONS_BEFORE_DESTROY\",\n  \"OPTIONS_DESTROYED\": \"OPTIONS_DESTROYED\",\n  \"WATCH_ARRAY\": \"WATCH_ARRAY\",\n  \"PROPS_DEFAULT_THIS\": \"PROPS_DEFAULT_THIS\",\n  \"V_ON_KEYCODE_MODIFIER\": \"V_ON_KEYCODE_MODIFIER\",\n  \"CUSTOM_DIR\": \"CUSTOM_DIR\",\n  \"ATTR_FALSE_VALUE\": \"ATTR_FALSE_VALUE\",\n  \"ATTR_ENUMERATED_COERCION\": \"ATTR_ENUMERATED_COERCION\",\n  \"TRANSITION_CLASSES\": \"TRANSITION_CLASSES\",\n  \"TRANSITION_GROUP_ROOT\": \"TRANSITION_GROUP_ROOT\",\n  \"COMPONENT_ASYNC\": \"COMPONENT_ASYNC\",\n  \"COMPONENT_FUNCTIONAL\": \"COMPONENT_FUNCTIONAL\",\n  \"COMPONENT_V_MODEL\": \"COMPONENT_V_MODEL\",\n  \"RENDER_FUNCTION\": \"RENDER_FUNCTION\",\n  \"FILTERS\": \"FILTERS\",\n  \"PRIVATE_APIS\": \"PRIVATE_APIS\"\n};\nconst deprecationData = {\n  [\"GLOBAL_MOUNT\"]: {\n    message: `The global app bootstrapping API has changed: vm.$mount() and the \"el\" option have been removed. Use createApp(RootComponent).mount() instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`\n  },\n  [\"GLOBAL_MOUNT_CONTAINER\"]: {\n    message: `Vue detected directives on the mount container. In Vue 3, the container is no longer considered part of the template and will not be processed/replaced.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`\n  },\n  [\"GLOBAL_EXTEND\"]: {\n    message: `Vue.extend() has been removed in Vue 3. Use defineComponent() instead.`,\n    link: `https://vuejs.org/api/general.html#definecomponent`\n  },\n  [\"GLOBAL_PROTOTYPE\"]: {\n    message: `Vue.prototype is no longer available in Vue 3. Use app.config.globalProperties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`\n  },\n  [\"GLOBAL_SET\"]: {\n    message: `Vue.set() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"GLOBAL_DELETE\"]: {\n    message: `Vue.delete() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"GLOBAL_OBSERVABLE\"]: {\n    message: `Vue.observable() has been removed. Use \\`import { reactive } from \"vue\"\\` from Composition API instead.`,\n    link: `https://vuejs.org/api/reactivity-core.html#reactive`\n  },\n  [\"GLOBAL_PRIVATE_UTIL\"]: {\n    message: `Vue.util has been removed. Please refactor to avoid its usage since it was an internal API even in Vue 2.`\n  },\n  [\"CONFIG_SILENT\"]: {\n    message: `config.silent has been removed because it is not good practice to intentionally suppress warnings. You can use your browser console's filter features to focus on relevant messages.`\n  },\n  [\"CONFIG_DEVTOOLS\"]: {\n    message: `config.devtools has been removed. To enable devtools for production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,\n    link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`\n  },\n  [\"CONFIG_KEY_CODES\"]: {\n    message: `config.keyCodes has been removed. In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`\n  },\n  [\"CONFIG_PRODUCTION_TIP\"]: {\n    message: `config.productionTip has been removed.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`\n  },\n  [\"CONFIG_IGNORED_ELEMENTS\"]: {\n    message: () => {\n      let msg = `config.ignoredElements has been removed.`;\n      if (isRuntimeOnly()) {\n        msg += ` Pass the \"isCustomElement\" option to @vue/compiler-dom instead.`;\n      } else {\n        msg += ` Use config.isCustomElement instead.`;\n      }\n      return msg;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`\n  },\n  [\"CONFIG_WHITESPACE\"]: {\n    // this warning is only relevant in the full build when using runtime\n    // compilation, so it's put in the runtime compatConfig list.\n    message: `Vue 3 compiler's whitespace option will default to \"condense\" instead of \"preserve\". To suppress this warning, provide an explicit value for \\`config.compilerOptions.whitespace\\`.`\n  },\n  [\"CONFIG_OPTION_MERGE_STRATS\"]: {\n    message: `config.optionMergeStrategies no longer exposes internal strategies. Use custom merge functions instead.`\n  },\n  [\"INSTANCE_SET\"]: {\n    message: `vm.$set() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"INSTANCE_DELETE\"]: {\n    message: `vm.$delete() has been removed as it is no longer needed in Vue 3. Simply use native JavaScript mutations.`\n  },\n  [\"INSTANCE_DESTROY\"]: {\n    message: `vm.$destroy() has been removed. Use app.unmount() instead.`,\n    link: `https://vuejs.org/api/application.html#app-unmount`\n  },\n  [\"INSTANCE_EVENT_EMITTER\"]: {\n    message: `vm.$on/$once/$off() have been removed. Use an external event emitter library instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`\n  },\n  [\"INSTANCE_EVENT_HOOKS\"]: {\n    message: (event) => `\"${event}\" lifecycle events are no longer supported. From templates, use the \"vue:\" prefix instead of \"hook:\". For example, @${event} should be changed to @vue:${event.slice(5)}. From JavaScript, use Composition API to dynamically register lifecycle hooks.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`\n  },\n  [\"INSTANCE_CHILDREN\"]: {\n    message: `vm.$children has been removed. Consider refactoring your logic to avoid relying on direct access to child components.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/children.html`\n  },\n  [\"INSTANCE_LISTENERS\"]: {\n    message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are included in vm.$attrs and it is no longer necessary to separately use v-on=\"$listeners\" if you are already using v-bind=\"$attrs\". (Note: the Vue 3 behavior only applies if this compat config is disabled)`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`\n  },\n  [\"INSTANCE_SCOPED_SLOTS\"]: {\n    message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`\n  },\n  [\"INSTANCE_ATTRS_CLASS_STYLE\"]: {\n    message: (componentName) => `Component <${componentName || \"Anonymous\"}> has \\`inheritAttrs: false\\` but is relying on class/style fallthrough from parent. In Vue 3, class/style are now included in $attrs and will no longer fallthrough when inheritAttrs is false. If you are already using v-bind=\"$attrs\" on component root it should render the same end result. If you are binding $attrs to a non-root element and expecting class/style to fallthrough on root, you will need to now manually bind them on root via :class=\"$attrs.class\".`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`\n  },\n  [\"OPTIONS_DATA_FN\"]: {\n    message: `The \"data\" option can no longer be a plain object. Always use a function.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`\n  },\n  [\"OPTIONS_DATA_MERGE\"]: {\n    message: (key) => `Detected conflicting key \"${key}\" when merging data option values. In Vue 3, data keys are merged shallowly and will override one another.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`\n  },\n  [\"OPTIONS_BEFORE_DESTROY\"]: {\n    message: `\\`beforeDestroy\\` has been renamed to \\`beforeUnmount\\`.`\n  },\n  [\"OPTIONS_DESTROYED\"]: {\n    message: `\\`destroyed\\` has been renamed to \\`unmounted\\`.`\n  },\n  [\"WATCH_ARRAY\"]: {\n    message: `\"watch\" option or vm.$watch on an array value will no longer trigger on array mutation unless the \"deep\" option is specified. If current usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"WATCH_ARRAY\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`\n  },\n  [\"PROPS_DEFAULT_THIS\"]: {\n    message: (key) => `props default value function no longer has access to \"this\". The compat build only offers access to this.$options.(found in prop \"${key}\")`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`\n  },\n  [\"CUSTOM_DIR\"]: {\n    message: (legacyHook, newHook) => `Custom directive hook \"${legacyHook}\" has been removed. Use \"${newHook}\" instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`\n  },\n  [\"V_ON_KEYCODE_MODIFIER\"]: {\n    message: `Using keyCode as v-on modifier is no longer supported. Use kebab-case key name modifiers instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`\n  },\n  [\"ATTR_FALSE_VALUE\"]: {\n    message: (name) => `Attribute \"${name}\" with v-bind value \\`false\\` will render ${name}=\"false\" instead of removing it in Vue 3. To remove the attribute, use \\`null\\` or \\`undefined\\` instead. If the usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"ATTR_FALSE_VALUE\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`\n  },\n  [\"ATTR_ENUMERATED_COERCION\"]: {\n    message: (name, value, coerced) => `Enumerated attribute \"${name}\" with v-bind value \\`${value}\\` will ${value === null ? `be removed` : `render the value as-is`} instead of coercing the value to \"${coerced}\" in Vue 3. Always use explicit \"true\" or \"false\" values for enumerated attributes. If the usage is intended, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"ATTR_ENUMERATED_COERCION\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`\n  },\n  [\"TRANSITION_CLASSES\"]: {\n    message: ``\n    // this feature cannot be runtime-detected\n  },\n  [\"TRANSITION_GROUP_ROOT\"]: {\n    message: `<TransitionGroup> no longer renders a root <span> element by default if no \"tag\" prop is specified. If you do not rely on the span for styling, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"TRANSITION_GROUP_ROOT\"}: false })\n`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`\n  },\n  [\"COMPONENT_ASYNC\"]: {\n    message: (comp) => {\n      const name = getComponentName(comp);\n      return `Async component${name ? ` <${name}>` : `s`} should be explicitly created via \\`defineAsyncComponent()\\` in Vue 3. Plain functions will be treated as functional components in non-compat build. If you have already migrated all async component usage and intend to use plain functions for functional components, you can disable the compat behavior and suppress this warning with:\n\n  configureCompat({ ${\"COMPONENT_ASYNC\"}: false })\n`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`\n  },\n  [\"COMPONENT_FUNCTIONAL\"]: {\n    message: (comp) => {\n      const name = getComponentName(comp);\n      return `Functional component${name ? ` <${name}>` : `s`} should be defined as a plain function in Vue 3. The \"functional\" option has been removed. NOTE: Before migrating to use plain functions for functional components, first make sure that all async components usage have been migrated and its compat behavior has been disabled.`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`\n  },\n  [\"COMPONENT_V_MODEL\"]: {\n    message: (comp) => {\n      const configMsg = `opt-in to Vue 3 behavior on a per-component basis with \\`compatConfig: { ${\"COMPONENT_V_MODEL\"}: false }\\`.`;\n      if (comp.props && (isArray(comp.props) ? comp.props.includes(\"modelValue\") : hasOwn(comp.props, \"modelValue\"))) {\n        return `Component declares \"modelValue\" prop, which is Vue 3 usage, but is running under Vue 2 compat v-model behavior. You can ${configMsg}`;\n      }\n      return `v-model usage on component has changed in Vue 3. Component that expects to work with v-model should now use the \"modelValue\" prop and emit the \"update:modelValue\" event. You can update the usage and then ${configMsg}`;\n    },\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\n  },\n  [\"RENDER_FUNCTION\"]: {\n    message: `Vue 3's render function API has changed. You can opt-in to the new API with:\n\n  configureCompat({ ${\"RENDER_FUNCTION\"}: false })\n\n  (This can also be done per-component via the \"compatConfig\" option.)`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`\n  },\n  [\"FILTERS\"]: {\n    message: `filters have been removed in Vue 3. The \"|\" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\n  },\n  [\"PRIVATE_APIS\"]: {\n    message: (name) => `\"${name}\" is a Vue 2 private API that no longer exists in Vue 3. If you are seeing this warning only due to a dependency, you can suppress this warning via { PRIVATE_APIS: 'suppress-warning' }.`\n  }\n};\nconst instanceWarned = /* @__PURE__ */ Object.create(null);\nconst warnCount = /* @__PURE__ */ Object.create(null);\nfunction warnDeprecation(key, instance, ...args) {\n  if (!!!(process.env.NODE_ENV !== \"production\")) {\n    return;\n  }\n  instance = instance || getCurrentInstance();\n  const config = getCompatConfigForKey(key, instance);\n  if (config === \"suppress-warning\") {\n    return;\n  }\n  const dupKey = key + args.join(\"\");\n  let compId = instance && formatComponentName(instance, instance.type);\n  if (compId === \"Anonymous\" && instance) {\n    compId = instance.uid;\n  }\n  const componentDupKey = dupKey + compId;\n  if (componentDupKey in instanceWarned) {\n    return;\n  }\n  instanceWarned[componentDupKey] = true;\n  if (dupKey in warnCount) {\n    warn$1(`(deprecation ${key}) (${++warnCount[dupKey] + 1})`);\n    return;\n  }\n  warnCount[dupKey] = 0;\n  const { message, link } = deprecationData[key];\n  warn$1(\n    `(deprecation ${key}) ${typeof message === \"function\" ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`\n  );\n  if (!isCompatEnabled(key, instance, true)) {\n    console.error(\n      `^ The above deprecation's compat behavior is disabled and will likely lead to runtime errors.`\n    );\n  }\n}\nconst globalCompatConfig = {\n  MODE: 2\n};\nfunction configureCompat$1(config) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateCompatConfig(config);\n  }\n  extend(globalCompatConfig, config);\n}\nconst seenConfigObjects = /* @__PURE__ */ new WeakSet();\nconst warnedInvalidKeys = {};\nfunction validateCompatConfig(config, instance) {\n  if (seenConfigObjects.has(config)) {\n    return;\n  }\n  seenConfigObjects.add(config);\n  for (const key of Object.keys(config)) {\n    if (key !== \"MODE\" && !(key in deprecationData) && !(key in warnedInvalidKeys)) {\n      if (key.startsWith(\"COMPILER_\")) {\n        if (isRuntimeOnly()) {\n          warn$1(\n            `Deprecation config \"${key}\" is compiler-specific and you are running a runtime-only build of Vue. This deprecation should be configured via compiler options in your build setup instead.\nDetails: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`\n          );\n        }\n      } else {\n        warn$1(`Invalid deprecation config \"${key}\".`);\n      }\n      warnedInvalidKeys[key] = true;\n    }\n  }\n  if (instance && config[\"OPTIONS_DATA_MERGE\"] != null) {\n    warn$1(\n      `Deprecation config \"${\"OPTIONS_DATA_MERGE\"}\" can only be configured globally.`\n    );\n  }\n}\nfunction getCompatConfigForKey(key, instance) {\n  const instanceConfig = instance && instance.type.compatConfig;\n  if (instanceConfig && key in instanceConfig) {\n    return instanceConfig[key];\n  }\n  return globalCompatConfig[key];\n}\nfunction isCompatEnabled(key, instance, enableForBuiltIn = false) {\n  if (!enableForBuiltIn && instance && instance.type.__isBuiltIn) {\n    return false;\n  }\n  const rawMode = getCompatConfigForKey(\"MODE\", instance) || 2;\n  const val = getCompatConfigForKey(key, instance);\n  const mode = isFunction(rawMode) ? rawMode(instance && instance.type) : rawMode;\n  if (mode === 2) {\n    return val !== false;\n  } else {\n    return val === true || val === \"suppress-warning\";\n  }\n}\nfunction assertCompatEnabled(key, instance, ...args) {\n  if (!isCompatEnabled(key, instance)) {\n    throw new Error(`${key} compat has been disabled.`);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnDeprecation(key, instance, ...args);\n  }\n}\nfunction softAssertCompatEnabled(key, instance, ...args) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnDeprecation(key, instance, ...args);\n  }\n  return isCompatEnabled(key, instance);\n}\nfunction checkCompatEnabled(key, instance, ...args) {\n  const enabled = isCompatEnabled(key, instance);\n  if (!!(process.env.NODE_ENV !== \"production\") && enabled) {\n    warnDeprecation(key, instance, ...args);\n  }\n  return enabled;\n}\n\nconst eventRegistryMap = /* @__PURE__ */ new WeakMap();\nfunction getRegistry(instance) {\n  let events = eventRegistryMap.get(instance);\n  if (!events) {\n    eventRegistryMap.set(instance, events = /* @__PURE__ */ Object.create(null));\n  }\n  return events;\n}\nfunction on(instance, event, fn) {\n  if (isArray(event)) {\n    event.forEach((e) => on(instance, e, fn));\n  } else {\n    if (event.startsWith(\"hook:\")) {\n      assertCompatEnabled(\n        \"INSTANCE_EVENT_HOOKS\",\n        instance,\n        event\n      );\n    } else {\n      assertCompatEnabled(\"INSTANCE_EVENT_EMITTER\", instance);\n    }\n    const events = getRegistry(instance);\n    (events[event] || (events[event] = [])).push(fn);\n  }\n  return instance.proxy;\n}\nfunction once(instance, event, fn) {\n  const wrapped = (...args) => {\n    off(instance, event, wrapped);\n    fn.call(instance.proxy, ...args);\n  };\n  wrapped.fn = fn;\n  on(instance, event, wrapped);\n  return instance.proxy;\n}\nfunction off(instance, event, fn) {\n  assertCompatEnabled(\"INSTANCE_EVENT_EMITTER\", instance);\n  const vm = instance.proxy;\n  if (!event) {\n    eventRegistryMap.set(instance, /* @__PURE__ */ Object.create(null));\n    return vm;\n  }\n  if (isArray(event)) {\n    event.forEach((e) => off(instance, e, fn));\n    return vm;\n  }\n  const events = getRegistry(instance);\n  const cbs = events[event];\n  if (!cbs) {\n    return vm;\n  }\n  if (!fn) {\n    events[event] = void 0;\n    return vm;\n  }\n  events[event] = cbs.filter((cb) => !(cb === fn || cb.fn === fn));\n  return vm;\n}\nfunction emit$1(instance, event, args) {\n  const cbs = getRegistry(instance)[event];\n  if (cbs) {\n    callWithAsyncErrorHandling(\n      cbs.map((cb) => cb.bind(instance.proxy)),\n      instance,\n      6,\n      args\n    );\n  }\n  return instance.proxy;\n}\n\nconst compatModelEventPrefix = `onModelCompat:`;\nconst warnedTypes = /* @__PURE__ */ new WeakSet();\nfunction convertLegacyVModelProps(vnode) {\n  const { type, shapeFlag, props, dynamicProps } = vnode;\n  const comp = type;\n  if (shapeFlag & 6 && props && \"modelValue\" in props) {\n    if (!isCompatEnabled(\n      \"COMPONENT_V_MODEL\",\n      // this is a special case where we want to use the vnode component's\n      // compat config instead of the current rendering instance (which is the\n      // parent of the component that exposes v-model)\n      { type }\n    )) {\n      return;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && !warnedTypes.has(comp)) {\n      pushWarningContext(vnode);\n      warnDeprecation(\"COMPONENT_V_MODEL\", { type }, comp);\n      popWarningContext();\n      warnedTypes.add(comp);\n    }\n    const model = comp.model || {};\n    applyModelFromMixins(model, comp.mixins);\n    const { prop = \"value\", event = \"input\" } = model;\n    if (prop !== \"modelValue\") {\n      props[prop] = props.modelValue;\n      delete props.modelValue;\n    }\n    if (dynamicProps) {\n      dynamicProps[dynamicProps.indexOf(\"modelValue\")] = prop;\n    }\n    props[compatModelEventPrefix + event] = props[\"onUpdate:modelValue\"];\n    delete props[\"onUpdate:modelValue\"];\n  }\n}\nfunction applyModelFromMixins(model, mixins) {\n  if (mixins) {\n    mixins.forEach((m) => {\n      if (m.model)\n        extend(model, m.model);\n      if (m.mixins)\n        applyModelFromMixins(model, m.mixins);\n    });\n  }\n}\nfunction compatModelEmit(instance, event, args) {\n  if (!isCompatEnabled(\"COMPONENT_V_MODEL\", instance)) {\n    return;\n  }\n  const props = instance.vnode.props;\n  const modelHandler = props && props[compatModelEventPrefix + event];\n  if (modelHandler) {\n    callWithErrorHandling(\n      modelHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted)\n    return;\n  const props = instance.vnode.props || EMPTY_OBJ;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const {\n      emitsOptions,\n      propsOptions: [propsOptions]\n    } = instance;\n    if (emitsOptions) {\n      if (!(event in emitsOptions) && !(event.startsWith(\"hook:\") || event.startsWith(compatModelEventPrefix))) {\n        if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n          warn$1(\n            `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n          );\n        }\n      } else {\n        const validator = emitsOptions[event];\n        if (isFunction(validator)) {\n          const isValid = validator(...rawArgs);\n          if (!isValid) {\n            warn$1(\n              `Invalid event arguments: event validation failed for event \"${event}\".`\n            );\n          }\n        }\n      }\n    }\n  }\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modelArg = isModelListener && event.slice(7);\n  if (modelArg && modelArg in props) {\n    const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n    const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n    if (trim) {\n      args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n    }\n    if (number) {\n      args = rawArgs.map(looseToNumber);\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsComponentEmit(instance, event, args);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const lowerCaseEvent = event.toLowerCase();\n    if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n      warn$1(\n        `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n          instance,\n          instance.type\n        )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n          event\n        )}\" instead of \"${event}\".`\n      );\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = toHandlerKey(camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = toHandlerKey(hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n  {\n    compatModelEmit(instance, event, args);\n    return emit$1(instance, event, args);\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend(normalized, raw);\n  }\n  if (isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn(key)) {\n    return false;\n  }\n  if (key.startsWith(compatModelEventPrefix)) {\n    return true;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  if (!currentScopeId) {\n    currentScopeId = instance && instance.type._scopeId || null;\n  }\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx)\n    return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentUpdated(ctx);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  if (isNonScopedSlot) {\n    renderFnWithContext._ns = true;\n  }\n  return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n  accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    props,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  let result;\n  let fallthroughAttrs;\n  const prev = setCurrentRenderingInstance(instance);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    accessedAttrs = false;\n  }\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n        get(target, key, receiver) {\n          warn$1(\n            `Property '${String(\n              key\n            )}' was accessed via 'this'. Avoid using 'this' in templates.`\n          );\n          return Reflect.get(target, key, receiver);\n        }\n      }) : proxyToUse;\n      result = normalizeVNode(\n        render.call(\n          thisProxy,\n          proxyToUse,\n          renderCache,\n          props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n        markAttrsAccessed();\n      }\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          props,\n          !!(process.env.NODE_ENV !== \"production\") ? {\n            get attrs() {\n              markAttrsAccessed();\n              return attrs;\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          props,\n          null\n          /* we know it doesn't need it */\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  let setRoot = void 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n    [root, setRoot] = getChildRoot(result);\n  }\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n        const allAttrs = Object.keys(attrs);\n        const eventAttrs = [];\n        const extraAttrs = [];\n        for (let i = 0, l = allAttrs.length; i < l; i++) {\n          const key = allAttrs[i];\n          if (isOn(key)) {\n            if (!isModelListener(key)) {\n              eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n            }\n          } else {\n            extraAttrs.push(key);\n          }\n        }\n        if (extraAttrs.length) {\n          warn$1(\n            `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n          );\n        }\n        if (eventAttrs.length) {\n          warn$1(\n            `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n          );\n        }\n      }\n    }\n  }\n  if (isCompatEnabled(\"INSTANCE_ATTRS_CLASS_STYLE\", instance) && vnode.shapeFlag & 4 && root.shapeFlag & (1 | 6)) {\n    const { class: cls, style } = vnode.props || {};\n    if (cls || style) {\n      if (!!(process.env.NODE_ENV !== \"production\") && inheritAttrs === false) {\n        warnDeprecation(\n          \"INSTANCE_ATTRS_CLASS_STYLE\",\n          instance,\n          getComponentName(instance.type)\n        );\n      }\n      root = cloneVNode(root, {\n        class: cls,\n        style\n      });\n    }\n  }\n  if (vnode.dirs) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n      );\n    }\n    root = cloneVNode(root);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Component inside <Transition> renders non-element root node that cannot be animated.`\n      );\n    }\n    root.transition = vnode.transition;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n    setRoot(root);\n  } else {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getChildRoot = (vnode) => {\n  const rawChildren = vnode.children;\n  const dynamicChildren = vnode.dynamicChildren;\n  const childRoot = filterSingleRoot(rawChildren, false);\n  if (!childRoot) {\n    return [vnode, void 0];\n  } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n    return getChildRoot(childRoot);\n  }\n  const index = rawChildren.indexOf(childRoot);\n  const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n  const setRoot = (updatedRoot) => {\n    rawChildren[index] = updatedRoot;\n    if (dynamicChildren) {\n      if (dynamicIndex > -1) {\n        dynamicChildren[dynamicIndex] = updatedRoot;\n      } else if (updatedRoot.patchFlag > 0) {\n        vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n      }\n    }\n  };\n  return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n          if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n            return filterSingleRoot(singleRoot.children);\n          }\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst isElementRoot = (vnode) => {\n  return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n    return true;\n  }\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent) {\n    const root = parent.subTree;\n    if (root.suspense && root.suspense.activeBranch === vnode) {\n      root.el = vnode.el;\n    }\n    if (root === vnode) {\n      (vnode = parent.vnode).el = el;\n      parent = parent.parent;\n    } else {\n      break;\n    }\n  }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nconst FILTERS = \"filters\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveFilter$1(name) {\n  return resolveAsset(FILTERS, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n      );\n      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n      const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n      warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n    }\n    return res;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n    );\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      if (parentSuspense && parentSuspense.deps > 0) {\n        n2.suspense = n1.suspense;\n        return;\n      }\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  create: createSuspenseBoundary,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    namespace,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      namespace,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        if (!isHydrating) {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      }\n    } else {\n      suspense.pendingId = suspenseId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      if (newBranch.shapeFlag & 512) {\n        suspense.pendingId = newBranch.component.suspenseId;\n      } else {\n        suspense.pendingId = suspenseId++;\n      }\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n    hasWarned = true;\n    console[console.info ? \"info\" : \"log\"](\n      `<Suspense> is an experimental feature and its API will likely change.`\n    );\n  }\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(timeout, `Suspense timeout`);\n  }\n  const initialAnchor = anchor;\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    namespace,\n    container,\n    hiddenContainer,\n    deps: 0,\n    pendingId: suspenseId++,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: !isHydrating,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!resume && !suspense.pendingBranch) {\n          throw new Error(\n            `suspense.resolve() is called without a pending branch.`\n          );\n        }\n        if (suspense.isUnmounted) {\n          throw new Error(\n            `suspense.resolve() is called on an already unmounted suspense boundary.`\n          );\n        }\n      }\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      let delayEnter = false;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(\n                pendingBranch,\n                container2,\n                anchor === initialAnchor ? next(activeBranch) : anchor,\n                0\n              );\n              queuePostFlushCb(effects);\n            }\n          };\n        }\n        if (activeBranch) {\n          if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n            anchor = next(activeBranch);\n          }\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor && !delayEnter) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          namespace2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(vnode2);\n        }\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          namespace,\n          optimized\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    // eslint-disable-next-line no-restricted-globals\n    document.createElement(\"div\"),\n    null,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n      warn$1(`<Suspense> slots expect a single root node.`);\n    }\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  let el = branch.el;\n  while (!el && branch.component) {\n    branch = branch.component.subTree;\n    el = branch.el;\n  }\n  vnode.el = el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  var _a;\n  return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst legacyDirectiveHookMap = {\n  beforeMount: \"bind\",\n  mounted: \"inserted\",\n  updated: [\"update\", \"componentUpdated\"],\n  unmounted: \"unbind\"\n};\nfunction mapCompatDirectiveHook(name, dir, instance) {\n  const mappedName = legacyDirectiveHookMap[name];\n  if (mappedName) {\n    if (isArray(mappedName)) {\n      const hook = [];\n      mappedName.forEach((mapped) => {\n        const mappedHook = dir[mapped];\n        if (mappedHook) {\n          softAssertCompatEnabled(\n            \"CUSTOM_DIR\",\n            instance,\n            mapped,\n            name\n          );\n          hook.push(mappedHook);\n        }\n      });\n      return hook.length ? hook : void 0;\n    } else {\n      if (dir[mappedName]) {\n        softAssertCompatEnabled(\n          \"CUSTOM_DIR\",\n          instance,\n          mappedName,\n          name\n        );\n      }\n      return dir[mappedName];\n    }\n  }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    if (!ctx) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n      );\n    }\n    return ctx;\n  }\n};\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n  );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n    warn$1(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n    );\n  }\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n  immediate,\n  deep,\n  flush,\n  once,\n  onTrack,\n  onTrigger\n} = EMPTY_OBJ) {\n  if (cb && once) {\n    const _cb = cb;\n    cb = (...args) => {\n      _cb(...args);\n      unwatch();\n    };\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n    warn$1(\n      `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n    );\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n    if (immediate !== void 0) {\n      warn$1(\n        `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (deep !== void 0) {\n      warn$1(\n        `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (once !== void 0) {\n      warn$1(\n        `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n  }\n  const warnInvalidSource = (s) => {\n    warn$1(\n      `Invalid watch source: `,\n      s,\n      `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n    );\n  };\n  const instance = currentInstance;\n  const reactiveGetter = (source2) => deep === true ? source2 : (\n    // for deep: false, only traverse root-level properties\n    traverse(source2, deep === false ? 1 : void 0)\n  );\n  let getter;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => reactiveGetter(source);\n    forceTrigger = true;\n  } else if (isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return reactiveGetter(s);\n      } else if (isFunction(s)) {\n        return callWithErrorHandling(s, instance, 2);\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n      }\n    });\n  } else if (isFunction(source)) {\n    if (cb) {\n      getter = () => callWithErrorHandling(source, instance, 2);\n    } else {\n      getter = () => {\n        if (cleanup) {\n          cleanup();\n        }\n        return callWithAsyncErrorHandling(\n          source,\n          instance,\n          3,\n          [onCleanup]\n        );\n      };\n    }\n  } else {\n    getter = NOOP;\n    !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n  }\n  if (cb && !deep) {\n    const baseGetter = getter;\n    getter = () => {\n      const val = baseGetter();\n      if (isArray(val) && checkCompatEnabled(\"WATCH_ARRAY\", instance)) {\n        traverse(val);\n      }\n      return val;\n    };\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    getter = () => traverse(baseGetter());\n  }\n  let cleanup;\n  let onCleanup = (fn) => {\n    cleanup = effect.onStop = () => {\n      callWithErrorHandling(fn, instance, 4);\n      cleanup = effect.onStop = void 0;\n    };\n  };\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    onCleanup = NOOP;\n    if (!cb) {\n      getter();\n    } else if (immediate) {\n      callWithAsyncErrorHandling(cb, instance, 3, [\n        getter(),\n        isMultiSource ? [] : void 0,\n        onCleanup\n      ]);\n    }\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else {\n      return NOOP;\n    }\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = () => {\n    if (!effect.active || !effect.dirty) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || isArray(newValue) && isCompatEnabled(\"WATCH_ARRAY\", instance)) {\n        if (cleanup) {\n          cleanup();\n        }\n        callWithAsyncErrorHandling(cb, instance, 3, [\n          newValue,\n          // pass undefined as the old value when it's changed for the first time\n          oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n          onCleanup\n        ]);\n        oldValue = newValue;\n      }\n    } else {\n      effect.run();\n    }\n  };\n  job.allowRecurse = !!cb;\n  let scheduler;\n  if (flush === \"sync\") {\n    scheduler = job;\n  } else if (flush === \"post\") {\n    scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n  } else {\n    job.pre = true;\n    if (instance)\n      job.id = instance.uid;\n    scheduler = () => queueJob(job);\n  }\n  const effect = new ReactiveEffect(getter, NOOP, scheduler);\n  const scope = getCurrentScope();\n  const unwatch = () => {\n    effect.stop();\n    if (scope) {\n      remove(scope.effects, effect);\n    }\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    effect.onTrack = onTrack;\n    effect.onTrigger = onTrigger;\n  }\n  if (cb) {\n    if (immediate) {\n      job();\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (flush === \"post\") {\n    queuePostRenderEffect(\n      effect.run.bind(effect),\n      instance && instance.suspense\n    );\n  } else {\n    effect.run();\n  }\n  if (ssrCleanup)\n    ssrCleanup.push(unwatch);\n  return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const reset = setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  reset();\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n  if (!isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  if (depth && depth > 0) {\n    if (currentDepth >= depth) {\n      return value;\n    }\n    currentDepth++;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  if (isRef(value)) {\n    traverse(value.value, depth, currentDepth, seen);\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], depth, currentDepth, seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, depth, currentDepth, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], depth, currentDepth, seen);\n    }\n  }\n  return value;\n}\n\nfunction validateDirectiveName(name) {\n  if (isBuiltInDirective(name)) {\n    warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n  }\n}\nfunction withDirectives(vnode, directives) {\n  if (currentRenderingInstance === null) {\n    !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n    return vnode;\n  }\n  const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (!hook) {\n      hook = mapCompatDirectiveHook(name, binding.dir, instance);\n    }\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey$1 = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevTransitionKey;\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      let child = children[0];\n      if (children.length > 1) {\n        let hasFound = false;\n        for (const c of children) {\n          if (c.type !== Comment) {\n            if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n              warn$1(\n                \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n              );\n              break;\n            }\n            child = c;\n            hasFound = true;\n            if (!!!(process.env.NODE_ENV !== \"production\"))\n              break;\n          }\n        }\n      }\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n        warn$1(`invalid <transition> mode: ${mode}`);\n      }\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getKeepAliveChild(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      const enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance\n      );\n      setTransitionHooks(innerChild, enterHooks);\n      const oldChild = instance.subTree;\n      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n      let transitionKeyChanged = false;\n      const { getTransitionKey } = innerChild.type;\n      if (getTransitionKey) {\n        const key = getTransitionKey();\n        if (prevTransitionKey === void 0) {\n          prevTransitionKey = key;\n        } else if (key !== prevTransitionKey) {\n          prevTransitionKey = key;\n          transitionKeyChanged = true;\n        }\n      }\n      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n        const leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\") {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (instance.update.active !== false) {\n              instance.effect.dirty = true;\n              instance.update();\n            }\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el[leaveCbKey] = () => {\n              earlyRemove();\n              el[leaveCbKey] = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\n{\n  BaseTransitionImpl.__isBuiltIn = true;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1))\n        done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el[leaveCbKey]) {\n        el[leaveCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n        leavingVNode.el[leaveCbKey]();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el[enterCbKey$1] = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el[enterCbKey$1] = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el[enterCbKey$1]) {\n        el[enterCbKey$1](\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el[leaveCbKey] = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el[leaveCbKey] = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      return resolveTransitionHooks(vnode2, props, state, instance);\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getKeepAliveChild(vnode) {\n  return isKeepAlive(vnode) ? (\n    // #7121 ensure get the child component subtree in case\n    // it's been replaced during HMR\n    !!(process.env.NODE_ENV !== \"production\") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0\n  ) : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128)\n        keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n  return isFunction(options) ? (\n    // #8326: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n  if (isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n        warn$1(\n          `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n        );\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n        throw new Error(`Invalid async component load result: ${comp}`);\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = ref(false);\n      const error = ref();\n      const delayed = ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          instance.parent.effect.dirty = true;\n          queueJob(instance.parent.update);\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.__v_cache = cache;\n    }\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        namespace,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && (!filter || !filter(name))) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (!current || !isSameVNodeType(cached, current)) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`KeepAlive should contain exactly one component child.`);\n        }\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\n{\n  KeepAliveImpl.__isBuildIn = true;\n}\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= ~256;\n  vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      if (target.isUnmounted) {\n        return;\n      }\n      pauseTracking();\n      const reset = setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      reset();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n    warn$1(\n      `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n    );\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n  (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n  \"rtg\"\n);\nconst onRenderTracked = createHook(\n  \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nfunction getCompatChildren(instance) {\n  assertCompatEnabled(\"INSTANCE_CHILDREN\", instance);\n  const root = instance.subTree;\n  const children = [];\n  if (root) {\n    walk(root, children);\n  }\n  return children;\n}\nfunction walk(vnode, children) {\n  if (vnode.component) {\n    children.push(vnode.component.proxy);\n  } else if (vnode.shapeFlag & 16) {\n    const vnodes = vnode.children;\n    for (let i = 0; i < vnodes.length; i++) {\n      walk(vnodes[i], children);\n    }\n  }\n}\n\nfunction getCompatListeners(instance) {\n  assertCompatEnabled(\"INSTANCE_LISTENERS\", instance);\n  const listeners = {};\n  const rawProps = instance.vnode.props;\n  if (!rawProps) {\n    return listeners;\n  }\n  for (const key in rawProps) {\n    if (isOn(key)) {\n      listeners[key[2].toLowerCase() + key.slice(3)] = rawProps[key];\n    }\n  }\n  return listeners;\n}\n\nfunction convertLegacyRenderFn(instance) {\n  const Component = instance.type;\n  const render = Component.render;\n  if (!render || render._rc || render._compatChecked || render._compatWrapped) {\n    return;\n  }\n  if (render.length >= 2) {\n    render._compatChecked = true;\n    return;\n  }\n  if (checkCompatEnabled(\"RENDER_FUNCTION\", instance)) {\n    const wrapped = Component.render = function compatRender() {\n      return render.call(this, compatH);\n    };\n    wrapped._compatWrapped = true;\n  }\n}\nfunction compatH(type, propsOrChildren, children) {\n  if (!type) {\n    type = Comment;\n  }\n  if (typeof type === \"string\") {\n    const t = hyphenate(type);\n    if (t === \"transition\" || t === \"transition-group\" || t === \"keep-alive\") {\n      type = `__compat__${t}`;\n    }\n    type = resolveDynamicComponent(type);\n  }\n  const l = arguments.length;\n  const is2ndArgArrayChildren = isArray(propsOrChildren);\n  if (l === 2 || is2ndArgArrayChildren) {\n    if (isObject(propsOrChildren) && !is2ndArgArrayChildren) {\n      if (isVNode(propsOrChildren)) {\n        return convertLegacySlots(createVNode(type, null, [propsOrChildren]));\n      }\n      return convertLegacySlots(\n        convertLegacyDirectives(\n          createVNode(type, convertLegacyProps(propsOrChildren, type)),\n          propsOrChildren\n        )\n      );\n    } else {\n      return convertLegacySlots(createVNode(type, null, propsOrChildren));\n    }\n  } else {\n    if (isVNode(children)) {\n      children = [children];\n    }\n    return convertLegacySlots(\n      convertLegacyDirectives(\n        createVNode(type, convertLegacyProps(propsOrChildren, type), children),\n        propsOrChildren\n      )\n    );\n  }\n}\nconst skipLegacyRootLevelProps = /* @__PURE__ */ makeMap(\n  \"staticStyle,staticClass,directives,model,hook\"\n);\nfunction convertLegacyProps(legacyProps, type) {\n  if (!legacyProps) {\n    return null;\n  }\n  const converted = {};\n  for (const key in legacyProps) {\n    if (key === \"attrs\" || key === \"domProps\" || key === \"props\") {\n      extend(converted, legacyProps[key]);\n    } else if (key === \"on\" || key === \"nativeOn\") {\n      const listeners = legacyProps[key];\n      for (const event in listeners) {\n        let handlerKey = convertLegacyEventKey(event);\n        if (key === \"nativeOn\")\n          handlerKey += `Native`;\n        const existing = converted[handlerKey];\n        const incoming = listeners[event];\n        if (existing !== incoming) {\n          if (existing) {\n            converted[handlerKey] = [].concat(existing, incoming);\n          } else {\n            converted[handlerKey] = incoming;\n          }\n        }\n      }\n    } else if (!skipLegacyRootLevelProps(key)) {\n      converted[key] = legacyProps[key];\n    }\n  }\n  if (legacyProps.staticClass) {\n    converted.class = normalizeClass([legacyProps.staticClass, converted.class]);\n  }\n  if (legacyProps.staticStyle) {\n    converted.style = normalizeStyle([legacyProps.staticStyle, converted.style]);\n  }\n  if (legacyProps.model && isObject(type)) {\n    const { prop = \"value\", event = \"input\" } = type.model || {};\n    converted[prop] = legacyProps.model.value;\n    converted[compatModelEventPrefix + event] = legacyProps.model.callback;\n  }\n  return converted;\n}\nfunction convertLegacyEventKey(event) {\n  if (event[0] === \"&\") {\n    event = event.slice(1) + \"Passive\";\n  }\n  if (event[0] === \"~\") {\n    event = event.slice(1) + \"Once\";\n  }\n  if (event[0] === \"!\") {\n    event = event.slice(1) + \"Capture\";\n  }\n  return toHandlerKey(event);\n}\nfunction convertLegacyDirectives(vnode, props) {\n  if (props && props.directives) {\n    return withDirectives(\n      vnode,\n      props.directives.map(({ name, value, arg, modifiers }) => {\n        return [\n          resolveDirective(name),\n          value,\n          arg,\n          modifiers\n        ];\n      })\n    );\n  }\n  return vnode;\n}\nfunction convertLegacySlots(vnode) {\n  const { props, children } = vnode;\n  let slots;\n  if (vnode.shapeFlag & 6 && isArray(children)) {\n    slots = {};\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      const slotName = isVNode(child) && child.props && child.props.slot || \"default\";\n      const slot = slots[slotName] || (slots[slotName] = []);\n      if (isVNode(child) && child.type === \"template\") {\n        slot.push(child.children);\n      } else {\n        slot.push(child);\n      }\n    }\n    if (slots) {\n      for (const key in slots) {\n        const slotChildren = slots[key];\n        slots[key] = () => slotChildren;\n        slots[key]._ns = true;\n      }\n    }\n  }\n  const scopedSlots = props && props.scopedSlots;\n  if (scopedSlots) {\n    delete props.scopedSlots;\n    if (slots) {\n      extend(slots, scopedSlots);\n    } else {\n      slots = scopedSlots;\n    }\n  }\n  if (slots) {\n    normalizeChildren(vnode, slots);\n  }\n  return vnode;\n}\nfunction defineLegacyVNodeProperties(vnode) {\n  if (isCompatEnabled(\n    \"RENDER_FUNCTION\",\n    currentRenderingInstance,\n    true\n  ) && isCompatEnabled(\n    \"PRIVATE_APIS\",\n    currentRenderingInstance,\n    true\n  )) {\n    const context = currentRenderingInstance;\n    const getInstance = () => vnode.component && vnode.component.proxy;\n    let componentOptions;\n    Object.defineProperties(vnode, {\n      tag: { get: () => vnode.type },\n      data: { get: () => vnode.props || {}, set: (p) => vnode.props = p },\n      elm: { get: () => vnode.el },\n      componentInstance: { get: getInstance },\n      child: { get: getInstance },\n      text: { get: () => isString(vnode.children) ? vnode.children : null },\n      context: { get: () => context && context.proxy },\n      componentOptions: {\n        get: () => {\n          if (vnode.shapeFlag & 4) {\n            if (componentOptions) {\n              return componentOptions;\n            }\n            return componentOptions = {\n              Ctor: vnode.type,\n              propsData: vnode.props,\n              children: vnode.children\n            };\n          }\n        }\n      }\n    });\n  }\n}\n\nconst normalizedFunctionalComponentMap = /* @__PURE__ */ new WeakMap();\nconst legacySlotProxyHandlers = {\n  get(target, key) {\n    const slot = target[key];\n    return slot && slot();\n  }\n};\nfunction convertLegacyFunctionalComponent(comp) {\n  if (normalizedFunctionalComponentMap.has(comp)) {\n    return normalizedFunctionalComponentMap.get(comp);\n  }\n  const legacyFn = comp.render;\n  const Func = (props, ctx) => {\n    const instance = getCurrentInstance();\n    const legacyCtx = {\n      props,\n      children: instance.vnode.children || [],\n      data: instance.vnode.props || {},\n      scopedSlots: ctx.slots,\n      parent: instance.parent && instance.parent.proxy,\n      slots() {\n        return new Proxy(ctx.slots, legacySlotProxyHandlers);\n      },\n      get listeners() {\n        return getCompatListeners(instance);\n      },\n      get injections() {\n        if (comp.inject) {\n          const injections = {};\n          resolveInjections(comp.inject, injections);\n          return injections;\n        }\n        return {};\n      }\n    };\n    return legacyFn(compatH, legacyCtx);\n  };\n  Func.props = comp.props;\n  Func.displayName = comp.name;\n  Func.compatConfig = comp.compatConfig;\n  Func.inheritAttrs = false;\n  normalizedFunctionalComponentMap.set(comp, Func);\n  return Func;\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  if (isArray(source) || isString(source)) {\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n    }\n  } else if (typeof source === \"number\") {\n    if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n      warn$1(`The v-for range expect an integer value but got ${source}.`);\n    }\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res)\n          res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n    if (name !== \"default\")\n      props.name = name;\n    return createVNode(\"slot\", props, fallback && fallback());\n  }\n  let slot = slots[name];\n  if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n    warn$1(\n      `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n    );\n    slot = () => [];\n  }\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: props.key || // slot content array of a dynamic conditional slot may have a branch\n      // key attached in the `createSlots` helper, respect that\n      validSlotContent && validSlotContent.key || `_${name}`\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child))\n      return true;\n    if (child.type === Comment)\n      return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n    warn$1(`v-on with no argument expects an object value.`);\n    return ret;\n  }\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nfunction toObject(arr) {\n  const res = {};\n  for (let i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res;\n}\nfunction legacyBindObjectProps(data, _tag, value, _asProp, isSync) {\n  if (value && isObject(value)) {\n    if (isArray(value)) {\n      value = toObject(value);\n    }\n    for (const key in value) {\n      if (isReservedProp(key)) {\n        data[key] = value[key];\n      } else if (key === \"class\") {\n        data.class = normalizeClass([data.class, value.class]);\n      } else if (key === \"style\") {\n        data.style = normalizeClass([data.style, value.style]);\n      } else {\n        const attrs = data.attrs || (data.attrs = {});\n        const camelizedKey = camelize(key);\n        const hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in attrs) && !(hyphenatedKey in attrs)) {\n          attrs[key] = value[key];\n          if (isSync) {\n            const on = data.on || (data.on = {});\n            on[`update:${key}`] = function($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      }\n    }\n  }\n  return data;\n}\nfunction legacyBindObjectListeners(props, listeners) {\n  return mergeProps(props, toHandlers(listeners));\n}\nfunction legacyRenderSlot(instance, name, fallback, props, bindObject) {\n  if (bindObject) {\n    props = mergeProps(props, bindObject);\n  }\n  return renderSlot(instance.slots, name, props, fallback && (() => fallback));\n}\nfunction legacyresolveScopedSlots(fns, raw, hasDynamicKeys) {\n  return createSlots(\n    raw || { $stable: !hasDynamicKeys },\n    mapKeyToName(fns)\n  );\n}\nfunction mapKeyToName(slots) {\n  for (let i = 0; i < slots.length; i++) {\n    const fn = slots[i];\n    if (fn) {\n      if (isArray(fn)) {\n        mapKeyToName(fn);\n      } else {\n        fn.name = fn.key || \"default\";\n      }\n    }\n  }\n  return slots;\n}\nconst staticCacheMap = /* @__PURE__ */ new WeakMap();\nfunction legacyRenderStatic(instance, index) {\n  let cache = staticCacheMap.get(instance);\n  if (!cache) {\n    staticCacheMap.set(instance, cache = []);\n  }\n  if (cache[index]) {\n    return cache[index];\n  }\n  const fn = instance.type.staticRenderFns[index];\n  const ctx = instance.proxy;\n  return cache[index] = fn.call(ctx, null, ctx);\n}\nfunction legacyCheckKeyCodes(instance, eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n  const config = instance.appContext.config;\n  const configKeyCodes = config.keyCodes || {};\n  const mappedKeyCode = configKeyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !configKeyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName);\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key;\n  }\n}\nfunction isKeyNotMatch(expect, actual) {\n  if (isArray(expect)) {\n    return !expect.includes(actual);\n  } else {\n    return expect !== actual;\n  }\n}\nfunction legacyMarkOnce(tree) {\n  return tree;\n}\nfunction legacyBindDynamicKeys(props, values) {\n  for (let i = 0; i < values.length; i += 2) {\n    const key = values[i];\n    if (typeof key === \"string\" && key) {\n      props[values[i]] = values[i + 1];\n    }\n  }\n  return props;\n}\nfunction legacyPrependModifier(value, symbol) {\n  return typeof value === \"string\" ? symbol + value : value;\n}\n\nfunction installCompatInstanceProperties(map) {\n  const set = (target, key, val) => {\n    target[key] = val;\n    return target[key];\n  };\n  const del = (target, key) => {\n    delete target[key];\n  };\n  extend(map, {\n    $set: (i) => {\n      assertCompatEnabled(\"INSTANCE_SET\", i);\n      return set;\n    },\n    $delete: (i) => {\n      assertCompatEnabled(\"INSTANCE_DELETE\", i);\n      return del;\n    },\n    $mount: (i) => {\n      assertCompatEnabled(\n        \"GLOBAL_MOUNT\",\n        null\n      );\n      return i.ctx._compat_mount || NOOP;\n    },\n    $destroy: (i) => {\n      assertCompatEnabled(\"INSTANCE_DESTROY\", i);\n      return i.ctx._compat_destroy || NOOP;\n    },\n    // overrides existing accessor\n    $slots: (i) => {\n      if (isCompatEnabled(\"RENDER_FUNCTION\", i) && i.render && i.render._compatWrapped) {\n        return new Proxy(i.slots, legacySlotProxyHandlers);\n      }\n      return !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots;\n    },\n    $scopedSlots: (i) => {\n      assertCompatEnabled(\"INSTANCE_SCOPED_SLOTS\", i);\n      const res = {};\n      for (const key in i.slots) {\n        const fn = i.slots[key];\n        if (!fn._ns) {\n          res[key] = fn;\n        }\n      }\n      return res;\n    },\n    $on: (i) => on.bind(null, i),\n    $once: (i) => once.bind(null, i),\n    $off: (i) => off.bind(null, i),\n    $children: getCompatChildren,\n    $listeners: getCompatListeners\n  });\n  if (isCompatEnabled(\"PRIVATE_APIS\", null)) {\n    extend(map, {\n      // needed by many libs / render fns\n      $vnode: (i) => i.vnode,\n      // inject additional properties into $options for compat\n      // e.g. vuex needs this.$options.parent\n      $options: (i) => {\n        const res = extend({}, resolveMergedOptions(i));\n        res.parent = i.proxy.$parent;\n        res.propsData = i.vnode.props;\n        return res;\n      },\n      // some private properties that are likely accessed...\n      _self: (i) => i.proxy,\n      _uid: (i) => i.uid,\n      _data: (i) => i.data,\n      _isMounted: (i) => i.isMounted,\n      _isDestroyed: (i) => i.isUnmounted,\n      // v2 render helpers\n      $createElement: () => compatH,\n      _c: () => compatH,\n      _o: () => legacyMarkOnce,\n      _n: () => looseToNumber,\n      _s: () => toDisplayString,\n      _l: () => renderList,\n      _t: (i) => legacyRenderSlot.bind(null, i),\n      _q: () => looseEqual,\n      _i: () => looseIndexOf,\n      _m: (i) => legacyRenderStatic.bind(null, i),\n      _f: () => resolveFilter$1,\n      _k: (i) => legacyCheckKeyCodes.bind(null, i),\n      _b: () => legacyBindObjectProps,\n      _v: () => createTextVNode,\n      _e: () => createCommentVNode,\n      _u: () => legacyresolveScopedSlots,\n      _g: () => legacyBindObjectListeners,\n      _d: () => legacyBindDynamicKeys,\n      _p: () => legacyPrependModifier\n    });\n  }\n}\n\nconst getPublicInstance = (i) => {\n  if (!i)\n    return null;\n  if (isStatefulComponent(i))\n    return getExposeProxy(i) || i.proxy;\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n    $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n    $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n    $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $emit: (i) => i.emit,\n    $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n    $forceUpdate: (i) => i.f || (i.f = () => {\n      i.effect.dirty = true;\n      queueJob(i.update);\n    }),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n  })\n);\n{\n  installCompatInstanceProperties(publicPropertiesMap);\n}\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n      return true;\n    }\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance, \"get\", key);\n        !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n      } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n        track(instance, \"get\", key);\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n    ) {\n      {\n        const desc = Object.getOwnPropertyDescriptor(globalProperties, key);\n        if (desc.get) {\n          return desc.get.call(instance.proxy);\n        } else {\n          const val = globalProperties[key];\n          return isFunction(val) ? Object.assign(val.bind(instance.proxy), val) : val;\n        }\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n    // to infinite warning loop\n    key.indexOf(\"__v\") !== 0)) {\n      if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n        );\n      } else if (instance === currentRenderingInstance) {\n        warn$1(\n          `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n        );\n      }\n    }\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n      warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n      return false;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance.props, key)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n      );\n      return false;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          value\n        });\n      } else {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n  PublicInstanceProxyHandlers.ownKeys = (target) => {\n    warn$1(\n      `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n    );\n    return Reflect.ownKeys(target);\n  };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(\n  {},\n  PublicInstanceProxyHandlers,\n  {\n    get(target, key) {\n      if (key === Symbol.unscopables) {\n        return;\n      }\n      return PublicInstanceProxyHandlers.get(target, key, target);\n    },\n    has(_, key) {\n      const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n      if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} should not start with _ which is a reserved prefix for Vue internals.`\n        );\n      }\n      return has;\n    }\n  }\n);\nfunction createDevRenderContext(instance) {\n  const target = {};\n  Object.defineProperty(target, `_`, {\n    configurable: true,\n    enumerable: false,\n    get: () => instance\n  });\n  Object.keys(publicPropertiesMap).forEach((key) => {\n    Object.defineProperty(target, key, {\n      configurable: true,\n      enumerable: false,\n      get: () => publicPropertiesMap[key](instance),\n      // intercepted by the proxy so no need for implementation,\n      // but needed to prevent set errors\n      set: NOOP\n    });\n  });\n  return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n  const {\n    ctx,\n    propsOptions: [propsOptions]\n  } = instance;\n  if (propsOptions) {\n    Object.keys(propsOptions).forEach((key) => {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => instance.props[key],\n        set: NOOP\n      });\n    });\n  }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n  const { ctx, setupState } = instance;\n  Object.keys(toRaw(setupState)).forEach((key) => {\n    if (!setupState.__isScriptSetup) {\n      if (isReservedPrefix(key[0])) {\n        warn$1(\n          `setup() return property ${JSON.stringify(\n            key\n          )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n        );\n        return;\n      }\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => setupState[key],\n        set: NOOP\n      });\n    }\n  });\n}\n\nfunction deepMergeData(to, from) {\n  for (const key in from) {\n    const toVal = to[key];\n    const fromVal = from[key];\n    if (key in to && isPlainObject(toVal) && isPlainObject(fromVal)) {\n      !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\"OPTIONS_DATA_MERGE\", null, key);\n      deepMergeData(toVal, fromVal);\n    } else {\n      to[key] = fromVal;\n    }\n  }\n  return to;\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineProps`);\n  }\n  return null;\n}\nfunction defineEmits() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineEmits`);\n  }\n  return null;\n}\nfunction defineExpose(exposed) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineExpose`);\n  }\n}\nfunction defineOptions(options) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineOptions`);\n  }\n}\nfunction defineSlots() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineSlots`);\n  }\n  return null;\n}\nfunction defineModel() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(\"defineModel\");\n  }\n}\nfunction withDefaults(props, defaults) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`withDefaults`);\n  }\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction getContext() {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useContext() called without active instance.`);\n  }\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\"))\n      continue;\n    let opt = props[key];\n    if (opt) {\n      if (isArray(opt) || isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n    }\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b)\n    return a || b;\n  if (isArray(a) && isArray(b))\n    return a.concat(b);\n  return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n    warn$1(\n      `withAsyncContext called without active current instance. This is likely a bug.`\n    );\n  }\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (type, key) => {\n    if (cache[key]) {\n      warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n    } else {\n      cache[key] = type;\n    }\n  };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook$1(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const [propsOptions] = instance.propsOptions;\n    if (propsOptions) {\n      for (const key in propsOptions) {\n        checkDuplicateProperties(\"Props\" /* PROPS */, key);\n      }\n    }\n  }\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction(methodHandler)) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          Object.defineProperty(ctx, key, {\n            value: methodHandler.bind(publicThis),\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n        } else {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(\n          `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n        );\n      }\n    }\n  }\n  if (dataOptions) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n      warn$1(\n        `The data option must be a function. Plain object usage is no longer supported.`\n      );\n    }\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n      warn$1(\n        `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n      );\n    }\n    if (!isObject(data)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n    } else {\n      instance.data = reactive(data);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (const key in data) {\n          checkDuplicateProperties(\"Data\" /* DATA */, key);\n          if (!isReservedPrefix(key[0])) {\n            Object.defineProperty(ctx, key, {\n              configurable: true,\n              enumerable: true,\n              get: () => data[key],\n              set: NOOP\n            });\n          }\n        }\n      }\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n        warn$1(`Computed property \"${key}\" has no getter.`);\n      }\n      const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n        warn$1(\n          `Write operation failed: computed property \"${key}\" is readonly.`\n        );\n      } : NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n      }\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook$1(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  {\n    if (beforeDestroy && softAssertCompatEnabled(\"OPTIONS_BEFORE_DESTROY\", instance)) {\n      registerLifecycleHook(onBeforeUnmount, beforeDestroy);\n    }\n    if (destroyed && softAssertCompatEnabled(\"OPTIONS_DESTROYED\", instance)) {\n      registerLifecycleHook(onUnmounted, destroyed);\n    }\n  }\n  if (isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components)\n    instance.components = components;\n  if (directives)\n    instance.directives = directives;\n  if (filters && isCompatEnabled(\"FILTERS\", instance)) {\n    instance.filters = filters;\n  }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n  if (isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n    }\n  }\n}\nfunction callHook$1(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString(raw)) {\n    const handler = ctx[raw];\n    if (isFunction(handler)) {\n      watch(getter, handler);\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n    }\n  } else if (isFunction(raw)) {\n    watch(getter, raw.bind(publicThis));\n  } else if (isObject(raw)) {\n    if (isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction(handler)) {\n        watch(getter, handler, raw);\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n      }\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid watch option: \"${key}\"`, raw);\n  }\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    if (isCompatEnabled(\"PRIVATE_APIS\", instance)) {\n      resolved = extend({}, base);\n      resolved.parent = instance.parent && instance.parent.proxy;\n      resolved.propsData = instance.vnode.props;\n    } else {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  if (isFunction(from)) {\n    from = from.options;\n  }\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n      );\n    } else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\n{\n  internalOptionMergeStrats.filters = mergeObjectOptions;\n}\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (isCompatEnabled(\"OPTIONS_DATA_MERGE\", null) ? deepMergeData : extend)(\n      isFunction(to) ? to.call(this, this) : to,\n      isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (isArray(to) && isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to)\n    return from;\n  if (!from)\n    return to;\n  const merged = extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction installLegacyConfigWarnings(config) {\n  const legacyConfigOptions = {\n    silent: \"CONFIG_SILENT\",\n    devtools: \"CONFIG_DEVTOOLS\",\n    ignoredElements: \"CONFIG_IGNORED_ELEMENTS\",\n    keyCodes: \"CONFIG_KEY_CODES\",\n    productionTip: \"CONFIG_PRODUCTION_TIP\"\n  };\n  Object.keys(legacyConfigOptions).forEach((key) => {\n    let val = config[key];\n    Object.defineProperty(config, key, {\n      enumerable: true,\n      get() {\n        return val;\n      },\n      set(newVal) {\n        if (!isCopyingConfig) {\n          warnDeprecation(legacyConfigOptions[key], null);\n        }\n        val = newVal;\n      }\n    });\n  });\n}\nfunction installLegacyOptionMergeStrats(config) {\n  config.optionMergeStrategies = new Proxy({}, {\n    get(target, key) {\n      if (key in target) {\n        return target[key];\n      }\n      if (key in internalOptionMergeStrats && softAssertCompatEnabled(\n        \"CONFIG_OPTION_MERGE_STRATS\",\n        null\n      )) {\n        return internalOptionMergeStrats[key];\n      }\n    }\n  });\n}\n\nlet isCopyingConfig = false;\nlet singletonApp;\nlet singletonCtor;\nfunction createCompatVue$1(createApp, createSingletonApp) {\n  singletonApp = createSingletonApp({});\n  const Vue = singletonCtor = function Vue2(options = {}) {\n    return createCompatApp(options, Vue2);\n  };\n  function createCompatApp(options = {}, Ctor) {\n    assertCompatEnabled(\"GLOBAL_MOUNT\", null);\n    const { data } = options;\n    if (data && !isFunction(data) && softAssertCompatEnabled(\"OPTIONS_DATA_FN\", null)) {\n      options.data = () => data;\n    }\n    const app = createApp(options);\n    if (Ctor !== Vue) {\n      applySingletonPrototype(app, Ctor);\n    }\n    const vm = app._createRoot(options);\n    if (options.el) {\n      return vm.$mount(options.el);\n    } else {\n      return vm;\n    }\n  }\n  Vue.version = `2.6.14-compat:${\"3.4.15\"}`;\n  Vue.config = singletonApp.config;\n  Vue.use = (p, ...options) => {\n    if (p && isFunction(p.install)) {\n      p.install(Vue, ...options);\n    } else if (isFunction(p)) {\n      p(Vue, ...options);\n    }\n    return Vue;\n  };\n  Vue.mixin = (m) => {\n    singletonApp.mixin(m);\n    return Vue;\n  };\n  Vue.component = (name, comp) => {\n    if (comp) {\n      singletonApp.component(name, comp);\n      return Vue;\n    } else {\n      return singletonApp.component(name);\n    }\n  };\n  Vue.directive = (name, dir) => {\n    if (dir) {\n      singletonApp.directive(name, dir);\n      return Vue;\n    } else {\n      return singletonApp.directive(name);\n    }\n  };\n  Vue.options = { _base: Vue };\n  let cid = 1;\n  Vue.cid = cid;\n  Vue.nextTick = nextTick;\n  const extendCache = /* @__PURE__ */ new WeakMap();\n  function extendCtor(extendOptions = {}) {\n    assertCompatEnabled(\"GLOBAL_EXTEND\", null);\n    if (isFunction(extendOptions)) {\n      extendOptions = extendOptions.options;\n    }\n    if (extendCache.has(extendOptions)) {\n      return extendCache.get(extendOptions);\n    }\n    const Super = this;\n    function SubVue(inlineOptions) {\n      if (!inlineOptions) {\n        return createCompatApp(SubVue.options, SubVue);\n      } else {\n        return createCompatApp(\n          mergeOptions(\n            extend({}, SubVue.options),\n            inlineOptions,\n            internalOptionMergeStrats\n          ),\n          SubVue\n        );\n      }\n    }\n    SubVue.super = Super;\n    SubVue.prototype = Object.create(Vue.prototype);\n    SubVue.prototype.constructor = SubVue;\n    const mergeBase = {};\n    for (const key in Super.options) {\n      const superValue = Super.options[key];\n      mergeBase[key] = isArray(superValue) ? superValue.slice() : isObject(superValue) ? extend(/* @__PURE__ */ Object.create(null), superValue) : superValue;\n    }\n    SubVue.options = mergeOptions(\n      mergeBase,\n      extendOptions,\n      internalOptionMergeStrats\n    );\n    SubVue.options._base = SubVue;\n    SubVue.extend = extendCtor.bind(SubVue);\n    SubVue.mixin = Super.mixin;\n    SubVue.use = Super.use;\n    SubVue.cid = ++cid;\n    extendCache.set(extendOptions, SubVue);\n    return SubVue;\n  }\n  Vue.extend = extendCtor.bind(Vue);\n  Vue.set = (target, key, value) => {\n    assertCompatEnabled(\"GLOBAL_SET\", null);\n    target[key] = value;\n  };\n  Vue.delete = (target, key) => {\n    assertCompatEnabled(\"GLOBAL_DELETE\", null);\n    delete target[key];\n  };\n  Vue.observable = (target) => {\n    assertCompatEnabled(\"GLOBAL_OBSERVABLE\", null);\n    return reactive(target);\n  };\n  Vue.filter = (name, filter) => {\n    if (filter) {\n      singletonApp.filter(name, filter);\n      return Vue;\n    } else {\n      return singletonApp.filter(name);\n    }\n  };\n  const util = {\n    warn: !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP,\n    extend,\n    mergeOptions: (parent, child, vm) => mergeOptions(\n      parent,\n      child,\n      vm ? void 0 : internalOptionMergeStrats\n    ),\n    defineReactive\n  };\n  Object.defineProperty(Vue, \"util\", {\n    get() {\n      assertCompatEnabled(\"GLOBAL_PRIVATE_UTIL\", null);\n      return util;\n    }\n  });\n  Vue.configureCompat = configureCompat$1;\n  return Vue;\n}\nfunction installAppCompatProperties(app, context, render) {\n  installFilterMethod(app, context);\n  installLegacyOptionMergeStrats(app.config);\n  if (!singletonApp) {\n    return;\n  }\n  installCompatMount(app, context, render);\n  installLegacyAPIs(app);\n  applySingletonAppMutations(app);\n  if (!!(process.env.NODE_ENV !== \"production\"))\n    installLegacyConfigWarnings(app.config);\n}\nfunction installFilterMethod(app, context) {\n  context.filters = {};\n  app.filter = (name, filter) => {\n    assertCompatEnabled(\"FILTERS\", null);\n    if (!filter) {\n      return context.filters[name];\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && context.filters[name]) {\n      warn$1(`Filter \"${name}\" has already been registered.`);\n    }\n    context.filters[name] = filter;\n    return app;\n  };\n}\nfunction installLegacyAPIs(app) {\n  Object.defineProperties(app, {\n    // so that app.use() can work with legacy plugins that extend prototypes\n    prototype: {\n      get() {\n        !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\"GLOBAL_PROTOTYPE\", null);\n        return app.config.globalProperties;\n      }\n    },\n    nextTick: { value: nextTick },\n    extend: { value: singletonCtor.extend },\n    set: { value: singletonCtor.set },\n    delete: { value: singletonCtor.delete },\n    observable: { value: singletonCtor.observable },\n    util: {\n      get() {\n        return singletonCtor.util;\n      }\n    }\n  });\n}\nfunction applySingletonAppMutations(app) {\n  app._context.mixins = [...singletonApp._context.mixins];\n  [\"components\", \"directives\", \"filters\"].forEach((key) => {\n    app._context[key] = Object.create(singletonApp._context[key]);\n  });\n  isCopyingConfig = true;\n  for (const key in singletonApp.config) {\n    if (key === \"isNativeTag\")\n      continue;\n    if (isRuntimeOnly() && (key === \"isCustomElement\" || key === \"compilerOptions\")) {\n      continue;\n    }\n    const val = singletonApp.config[key];\n    app.config[key] = isObject(val) ? Object.create(val) : val;\n    if (key === \"ignoredElements\" && isCompatEnabled(\"CONFIG_IGNORED_ELEMENTS\", null) && !isRuntimeOnly() && isArray(val)) {\n      app.config.compilerOptions.isCustomElement = (tag) => {\n        return val.some((v) => isString(v) ? v === tag : v.test(tag));\n      };\n    }\n  }\n  isCopyingConfig = false;\n  applySingletonPrototype(app, singletonCtor);\n}\nfunction applySingletonPrototype(app, Ctor) {\n  const enabled = isCompatEnabled(\"GLOBAL_PROTOTYPE\", null);\n  if (enabled) {\n    app.config.globalProperties = Object.create(Ctor.prototype);\n  }\n  let hasPrototypeAugmentations = false;\n  const descriptors = Object.getOwnPropertyDescriptors(Ctor.prototype);\n  for (const key in descriptors) {\n    if (key !== \"constructor\") {\n      hasPrototypeAugmentations = true;\n      if (enabled) {\n        Object.defineProperty(\n          app.config.globalProperties,\n          key,\n          descriptors[key]\n        );\n      }\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && hasPrototypeAugmentations) {\n    warnDeprecation(\"GLOBAL_PROTOTYPE\", null);\n  }\n}\nfunction installCompatMount(app, context, render) {\n  let isMounted = false;\n  app._createRoot = (options) => {\n    const component = app._component;\n    const vnode = createVNode(component, options.propsData || null);\n    vnode.appContext = context;\n    const hasNoRender = !isFunction(component) && !component.render && !component.template;\n    const emptyRender = () => {\n    };\n    const instance = createComponentInstance(vnode, null, null);\n    if (hasNoRender) {\n      instance.render = emptyRender;\n    }\n    setupComponent(instance);\n    vnode.component = instance;\n    vnode.isCompatRoot = true;\n    instance.ctx._compat_mount = (selectorOrEl) => {\n      if (isMounted) {\n        !!(process.env.NODE_ENV !== \"production\") && warn$1(`Root instance is already mounted.`);\n        return;\n      }\n      let container;\n      if (typeof selectorOrEl === \"string\") {\n        const result = document.querySelector(selectorOrEl);\n        if (!result) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(\n            `Failed to mount root instance: selector \"${selectorOrEl}\" returned null.`\n          );\n          return;\n        }\n        container = result;\n      } else {\n        container = selectorOrEl || document.createElement(\"div\");\n      }\n      let namespace;\n      if (container instanceof SVGElement)\n        namespace = \"svg\";\n      else if (typeof MathMLElement === \"function\" && container instanceof MathMLElement)\n        namespace = \"mathml\";\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        context.reload = () => {\n          const cloned = cloneVNode(vnode);\n          cloned.component = null;\n          render(cloned, container, namespace);\n        };\n      }\n      if (hasNoRender && instance.render === emptyRender) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          for (let i = 0; i < container.attributes.length; i++) {\n            const attr = container.attributes[i];\n            if (attr.name !== \"v-cloak\" && /^(v-|:|@)/.test(attr.name)) {\n              warnDeprecation(\"GLOBAL_MOUNT_CONTAINER\", null);\n              break;\n            }\n          }\n        }\n        instance.render = null;\n        component.template = container.innerHTML;\n        finishComponentSetup(\n          instance,\n          false,\n          true\n          /* skip options */\n        );\n      }\n      container.innerHTML = \"\";\n      render(vnode, container, namespace);\n      if (container instanceof Element) {\n        container.removeAttribute(\"v-cloak\");\n        container.setAttribute(\"data-v-app\", \"\");\n      }\n      isMounted = true;\n      app._container = container;\n      container.__vue_app__ = app;\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsInitApp(app, version);\n      }\n      return instance.proxy;\n    };\n    instance.ctx._compat_destroy = () => {\n      if (isMounted) {\n        render(null, app._container);\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsUnmountApp(app);\n        }\n        delete app._container.__vue_app__;\n      } else {\n        const { bum, scope, um } = instance;\n        if (bum) {\n          invokeArrayFns(bum);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeDestroy\");\n        }\n        if (scope) {\n          scope.stop();\n        }\n        if (um) {\n          invokeArrayFns(um);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:destroyed\");\n        }\n      }\n    };\n    return instance.proxy;\n  };\n}\nconst methodsToPatch = [\n  \"push\",\n  \"pop\",\n  \"shift\",\n  \"unshift\",\n  \"splice\",\n  \"sort\",\n  \"reverse\"\n];\nconst patched = /* @__PURE__ */ new WeakSet();\nfunction defineReactive(obj, key, val) {\n  if (isObject(val) && !isReactive(val) && !patched.has(val)) {\n    const reactiveVal = reactive(val);\n    if (isArray(val)) {\n      methodsToPatch.forEach((m) => {\n        val[m] = (...args) => {\n          Array.prototype[m].call(reactiveVal, ...args);\n        };\n      });\n    } else {\n      Object.keys(val).forEach((key2) => {\n        try {\n          defineReactiveSimple(val, key2, val[key2]);\n        } catch (e) {\n        }\n      });\n    }\n  }\n  const i = obj.$;\n  if (i && obj === i.proxy) {\n    defineReactiveSimple(i.ctx, key, val);\n    i.accessCache = /* @__PURE__ */ Object.create(null);\n  } else if (isReactive(obj)) {\n    obj[key] = val;\n  } else {\n    defineReactiveSimple(obj, key, val);\n  }\n}\nfunction defineReactiveSimple(obj, key, val) {\n  val = isObject(val) ? reactive(val) : val;\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get() {\n      track(obj, \"get\", key);\n      return val;\n    },\n    set(newVal) {\n      val = isObject(newVal) ? reactive(newVal) : newVal;\n      trigger(obj, \"set\", key, newVal);\n    }\n  });\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction(rootComponent)) {\n      rootComponent = extend({}, rootComponent);\n    }\n    if (rootProps != null && !isObject(rootProps)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new WeakSet();\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `app.config cannot be replaced. Modify individual options instead.`\n          );\n        }\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n        } else if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `A plugin must either be a function or an object with an \"install\" function.`\n          );\n        }\n        return app;\n      },\n      mixin(mixin) {\n        if (__VUE_OPTIONS_API__) {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n            );\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Mixins are only available in builds supporting Options API\");\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateComponentName(name, context.config);\n        }\n        if (!component) {\n          return context.components[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n          warn$1(`Component \"${name}\" has already been registered in target app.`);\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateDirectiveName(name);\n        }\n        if (!directive) {\n          return context.directives[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n          warn$1(`Directive \"${name}\" has already been registered in target app.`);\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, namespace) {\n        if (!isMounted) {\n          if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n            warn$1(\n              `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n            );\n          }\n          const vnode = createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (namespace === true) {\n            namespace = \"svg\";\n          } else if (namespace === false) {\n            namespace = void 0;\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            context.reload = () => {\n              render(\n                cloneVNode(vnode),\n                rootContainer,\n                namespace\n              );\n            };\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, namespace);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = vnode.component;\n            devtoolsInitApp(app, version);\n          }\n          return getExposeProxy(vnode.component) || vnode.component.proxy;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n          );\n        }\n      },\n      unmount() {\n        if (isMounted) {\n          render(null, app._container);\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = null;\n            devtoolsUnmountApp(app);\n          }\n          delete app._container.__vue_app__;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`Cannot unmount an app that is not mounted.`);\n        }\n      },\n      provide(key, value) {\n        if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n          warn$1(\n            `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n          );\n        }\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = null;\n        }\n      }\n    };\n    {\n      installAppCompatProperties(app, context, render);\n    }\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`provide() can only be used inside setup().`);\n    }\n  } else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = currentInstance || currentRenderingInstance;\n  if (instance || currentApp) {\n    const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`injection \"${String(key)}\" not found.`);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`inject() can only be used inside setup() or functional components.`);\n  }\n}\nfunction hasInjectionContext() {\n  return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nfunction createPropsDefaultThis(instance, rawProps, propKey) {\n  return new Proxy(\n    {},\n    {\n      get(_, key) {\n        !!(process.env.NODE_ENV !== \"production\") && warnDeprecation(\"PROPS_DEFAULT_THIS\", null, propKey);\n        if (key === \"$options\") {\n          return resolveMergedOptions(instance);\n        }\n        if (key in rawProps) {\n          return rawProps[key];\n        }\n        const injections = instance.type.inject;\n        if (injections) {\n          if (isArray(injections)) {\n            if (injections.includes(key)) {\n              return inject(key);\n            }\n          } else if (key in injections) {\n            return inject(key);\n          }\n        }\n      }\n    }\n  );\n}\n\nfunction shouldSkipAttr(key, instance) {\n  if (key === \"is\") {\n    return true;\n  }\n  if ((key === \"class\" || key === \"style\") && isCompatEnabled(\"INSTANCE_ATTRS_CLASS_STYLE\", instance)) {\n    return true;\n  }\n  if (isOn(key) && isCompatEnabled(\"INSTANCE_LISTENERS\", instance)) {\n    return true;\n  }\n  if (key.startsWith(\"routerView\") || key === \"registerRouteInstance\") {\n    return true;\n  }\n  return false;\n}\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = {};\n  def(attrs, InternalObjectKey, 1);\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n  while (instance) {\n    if (instance.type.__hmrId)\n      return true;\n    instance = instance.parent;\n  }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n            );\n          }\n        } else {\n          {\n            if (isOn(key) && key.endsWith(\"Native\")) {\n              key = key.slice(0, -6);\n            } else if (shouldSkipAttr(key, instance)) {\n              continue;\n            }\n          }\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && !hasOwn(rawProps, key + \"Native\")) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance, \"set\", \"$attrs\");\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      {\n        if (key.startsWith(\"onHook:\")) {\n          softAssertCompatEnabled(\n            \"INSTANCE_EVENT_HOOKS\",\n            instance,\n            key.slice(2).toLowerCase()\n          );\n        }\n        if (key === \"inline-template\") {\n          continue;\n        }\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        {\n          if (isOn(key) && key.endsWith(\"Native\")) {\n            key = key.slice(0, -6);\n          } else if (shouldSkipAttr(key, instance)) {\n            continue;\n          }\n        }\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          const reset = setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            isCompatEnabled(\"PROPS_DEFAULT_THIS\", instance) ? createPropsDefaultThis(instance, props, key) : null,\n            props\n          );\n          reset();\n        }\n      } else {\n        value = defaultValue;\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendProps = (raw2) => {\n      if (isFunction(raw2)) {\n        raw2 = raw2.options;\n      }\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend(normalized, props);\n      if (keys)\n        needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, EMPTY_ARR);\n    }\n    return EMPTY_ARR;\n  }\n  if (isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n        warn$1(`props must be strings when using array syntax.`, raw[i]);\n      }\n      const normalizedKey = camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n      warn$1(`invalid props options`, raw);\n    }\n    for (const key in raw) {\n      const normalizedKey = camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n        if (prop) {\n          const booleanIndex = getTypeIndex(Boolean, prop.type);\n          const stringIndex = getTypeIndex(String, prop.type);\n          prop[0 /* shouldCast */] = booleanIndex > -1;\n          prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;\n          if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n            needCastKeys.push(normalizedKey);\n          }\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\") {\n    return true;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n  }\n  return false;\n}\nfunction getType(ctor) {\n  const match = ctor && ctor.toString().match(/^\\s*(function|class) (\\w+)/);\n  return match ? match[2] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n  if (isArray(expectedTypes)) {\n    return expectedTypes.findIndex((t) => isSameType(t, type));\n  } else if (isFunction(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n  return -1;\n}\nfunction validateProps(rawProps, props, instance) {\n  const resolvedValues = toRaw(props);\n  const options = instance.propsOptions[0];\n  for (const key in options) {\n    let opt = options[key];\n    if (opt == null)\n      continue;\n    validateProp(\n      key,\n      resolvedValues[key],\n      opt,\n      !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n      !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))\n    );\n  }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n  const { type, required, validator, skipCheck } = prop;\n  if (required && isAbsent) {\n    warn$1('Missing required prop: \"' + name + '\"');\n    return;\n  }\n  if (value == null && !required) {\n    return;\n  }\n  if (type != null && type !== true && !skipCheck) {\n    let isValid = false;\n    const types = isArray(type) ? type : [type];\n    const expectedTypes = [];\n    for (let i = 0; i < types.length && !isValid; i++) {\n      const { valid, expectedType } = assertType(value, types[i]);\n      expectedTypes.push(expectedType || \"\");\n      isValid = valid;\n    }\n    if (!isValid) {\n      warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n      return;\n    }\n  }\n  if (validator && !validator(value, props)) {\n    warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n  }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n  \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n  let valid;\n  const expectedType = getType(type);\n  if (isSimpleType(expectedType)) {\n    const t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    if (!valid && t === \"object\") {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === \"Object\") {\n    valid = isObject(value);\n  } else if (expectedType === \"Array\") {\n    valid = isArray(value);\n  } else if (expectedType === \"null\") {\n    valid = value === null;\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid,\n    expectedType\n  };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  if (expectedTypes.length === 0) {\n    return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n  }\n  let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n  const expectedType = expectedTypes[0];\n  const receivedType = toRawType(value);\n  const expectedValue = styleValue(value, expectedType);\n  const receivedValue = styleValue(value, receivedType);\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n    message += ` with value ${expectedValue}`;\n  }\n  message += `, got ${receivedType} `;\n  if (isExplicable(receivedType)) {\n    message += `with value ${receivedValue}.`;\n  }\n  return message;\n}\nfunction styleValue(value, type) {\n  if (type === \"String\") {\n    return `\"${value}\"`;\n  } else if (type === \"Number\") {\n    return `${Number(value)}`;\n  } else {\n    return `${value}`;\n  }\n}\nfunction isExplicable(type) {\n  const explicitTypes = [\"string\", \"number\", \"boolean\"];\n  return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n  return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && (!ctx || ctx.root === currentInstance.root)) {\n      warn$1(\n        `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n      );\n    }\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key))\n      continue;\n    const value = rawSlots[key];\n    if (isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isCompatEnabled(\"RENDER_FUNCTION\", instance)) {\n        warn$1(\n          `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n        );\n      }\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && !isCompatEnabled(\"RENDER_FUNCTION\", instance)) {\n    warn$1(\n      `Non-function value encountered for default slot. Prefer function slots for better performance.`\n    );\n  }\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n  if (instance.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      instance.slots = toRaw(children);\n      def(children, \"_\", type);\n    } else {\n      normalizeObjectSlots(\n        children,\n        instance.slots = {},\n        instance\n      );\n    }\n  } else {\n    instance.slots = {};\n    if (children) {\n      normalizeVNodeSlots(instance, children);\n    }\n  }\n  def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n        extend(slots, children);\n        trigger(instance, \"set\", \"$slots\");\n      } else if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        extend(slots, children);\n        if (!optimized && type === 1) {\n          delete slots._;\n        }\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots, instance);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n    warn$1(\n      `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n    );\n    return;\n  }\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  if (oldRef != null && oldRef !== ref) {\n    if (isString(oldRef)) {\n      refs[oldRef] = null;\n      if (hasOwn(setupState, oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString(ref);\n    const _isRef = isRef(ref);\n    const isVFor = rawRef.f;\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (isVFor) {\n          const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (hasOwn(setupState, ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k)\n                  refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (hasOwn(setupState, ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k)\n            refs[rawRef.k] = value;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n        }\n      };\n      if (isUnmount || isVFor) {\n        doSet();\n      } else {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n    }\n  }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n  if (isSVGContainer(container))\n    return \"svg\";\n  if (isMathMLContainer(container))\n    return \"mathml\";\n  return void 0;\n};\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n      );\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hasMismatch = false;\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n    if (hasMismatch && true) {\n      console.error(`Hydration completed but contains mismatches.`);\n    }\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      if (!(\"__vnode\" in node)) {\n        Object.defineProperty(node, \"__vnode\", {\n          value: vnode,\n          enumerable: false\n        });\n      }\n      if (!(\"__vueParentComponent\" in node)) {\n        Object.defineProperty(node, \"__vueParentComponent\", {\n          value: parentComponent,\n          enumerable: false\n        });\n      }\n    }\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3 /* TEXT */) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            hasMismatch = true;\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text mismatch in`,\n              node.parentNode,\n              `\n  - rendered on server: ${JSON.stringify(\n                node.data\n              )}\n  - expected on client: ${JSON.stringify(vnode.children)}`\n            );\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (isTemplateNode(node)) {\n          nextNode = nextSibling(node);\n          replaceNode(\n            vnode.el = node.content.firstChild,\n            node,\n            parentComponent\n          );\n        } else if (domType !== 8 /* COMMENT */ || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          if (isFragmentStart) {\n            nextNode = locateClosingAnchor(node);\n          } else if (isComment(node) && node.data === \"teleport start\") {\n            nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n          } else {\n            nextNode = nextSibling(node);\n          }\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            getContainerType(container),\n            optimized\n          );\n          if (isAsyncWrapper(vnode)) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8 /* COMMENT */) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            getContainerType(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n          warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n    const forcePatch = type === \"input\" || type === \"option\";\n    if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      let needCallTransitionHooks = false;\n      if (isTemplateNode(el)) {\n        needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n        const content = el.content.firstChild;\n        if (needCallTransitionHooks) {\n          transition.beforeEnter(content);\n        }\n        replaceNode(content, el, parentComponent);\n        vnode.el = el = content;\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        let hasWarned = false;\n        while (next) {\n          hasMismatch = true;\n          if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n            warn$1(\n              `Hydration children mismatch on`,\n              el,\n              `\nServer rendered element contains more child nodes than client vdom.`\n            );\n            hasWarned = true;\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        if (el.textContent !== vnode.children) {\n          hasMismatch = true;\n          (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n            `Hydration text content mismatch on`,\n            el,\n            `\n  - rendered on server: ${el.textContent}\n  - expected on client: ${vnode.children}`\n          );\n          el.textContent = vnode.children;\n        }\n      }\n      if (props) {\n        if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || !optimized || patchFlag & (16 | 32)) {\n          for (const key in props) {\n            if (!!(process.env.NODE_ENV !== \"production\") && propHasMismatch(el, key, props[key], vnode)) {\n              hasMismatch = true;\n            }\n            if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n            key[0] === \".\") {\n              patchProp(\n                el,\n                key,\n                null,\n                props[key],\n                void 0,\n                void 0,\n                parentComponent\n              );\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            void 0,\n            void 0,\n            parentComponent\n          );\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          needCallTransitionHooks && transition.enter(el);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    let hasWarned = false;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      if (node) {\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (vnode.type === Text && !vnode.children) {\n        continue;\n      } else {\n        hasMismatch = true;\n        if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n          warn$1(\n            `Hydration children mismatch on`,\n            container,\n            `\nServer rendered element contains fewer child nodes than client vdom.`\n          );\n          hasWarned = true;\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          getContainerType(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      hasMismatch = true;\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    hasMismatch = true;\n    (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n      `Hydration node mismatch:\n- rendered on server:`,\n      node,\n      node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n      `\n- expected on client:`,\n      vnode.type\n    );\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      getContainerType(container),\n      slotScopeIds\n    );\n    return next;\n  };\n  const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === open)\n          match++;\n        if (node.data === close) {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  const replaceNode = (newNode, oldNode, parentComponent) => {\n    const parentNode2 = oldNode.parentNode;\n    if (parentNode2) {\n      parentNode2.replaceChild(newNode, oldNode);\n    }\n    let parent = parentComponent;\n    while (parent) {\n      if (parent.vnode.el === oldNode) {\n        parent.vnode.el = parent.subTree.el = newNode;\n      }\n      parent = parent.parent;\n    }\n  };\n  const isTemplateNode = (node) => {\n    return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === \"template\";\n  };\n  return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode) {\n  let mismatchType;\n  let mismatchKey;\n  let actual;\n  let expected;\n  if (key === \"class\") {\n    actual = el.getAttribute(\"class\");\n    expected = normalizeClass(clientValue);\n    if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n      mismatchType = mismatchKey = `class`;\n    }\n  } else if (key === \"style\") {\n    actual = el.getAttribute(\"style\");\n    expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n    const actualMap = toStyleMap(actual);\n    const expectedMap = toStyleMap(expected);\n    if (vnode.dirs) {\n      for (const { dir, value } of vnode.dirs) {\n        if (dir.name === \"show\" && !value) {\n          expectedMap.set(\"display\", \"none\");\n        }\n      }\n    }\n    if (!isMapEqual(actualMap, expectedMap)) {\n      mismatchType = mismatchKey = \"style\";\n    }\n  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n    if (isBooleanAttr(key)) {\n      actual = el.hasAttribute(key);\n      expected = includeBooleanAttr(clientValue);\n    } else if (clientValue == null) {\n      actual = el.hasAttribute(key);\n      expected = false;\n    } else {\n      if (el.hasAttribute(key)) {\n        actual = el.getAttribute(key);\n      } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n        actual = el.value;\n      } else {\n        actual = false;\n      }\n      expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n    }\n    if (actual !== expected) {\n      mismatchType = `attribute`;\n      mismatchKey = key;\n    }\n  }\n  if (mismatchType) {\n    const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n    const preSegment = `Hydration ${mismatchType} mismatch on`;\n    const postSegment = `\n  - rendered on server: ${format(actual)}\n  - expected on client: ${format(expected)}\n  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n  You should fix the source of the mismatch.`;\n    {\n      warn$1(preSegment, el, postSegment);\n    }\n    return true;\n  }\n  return false;\n}\nfunction toClassSet(str) {\n  return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const s of a) {\n    if (!b.has(s)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction toStyleMap(str) {\n  const styleMap = /* @__PURE__ */ new Map();\n  for (const item of str.split(\";\")) {\n    let [key, value] = item.split(\":\");\n    key = key == null ? void 0 : key.trim();\n    value = value == null ? void 0 : value.trim();\n    if (key && value) {\n      styleMap.set(key, value);\n    }\n  }\n  return styleMap;\n}\nfunction isMapEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const [key, value] of a) {\n    if (value !== b.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    perf.mark(`vue-${type}-${instance.uid}`);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction endMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    const startTag = `vue-${type}-${instance.uid}`;\n    const endTag = startTag + `:end`;\n    perf.mark(endTag);\n    perf.measure(\n      `<${formatComponentName(instance, instance.type)}> ${type}`,\n      startTag,\n      endTag\n    );\n    perf.clearMarks(startTag);\n    perf.clearMarks(endTag);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction isSupported() {\n  if (supported !== void 0) {\n    return supported;\n  }\n  if (typeof window !== \"undefined\" && window.performance) {\n    supported = true;\n    perf = window.performance;\n  } else {\n    supported = false;\n  }\n  return supported;\n}\n\nfunction initFeatureFlags() {\n  const needWarn = [];\n  if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n    getGlobalThis().__VUE_OPTIONS_API__ = true;\n  }\n  if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n    getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n  }\n  if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n    getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n    const multi = needWarn.length > 1;\n    console.warn(\n      `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n    );\n  }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  {\n    initFeatureFlags();\n  }\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n  }\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, namespace);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          patchStaticNode(n1, n2, container, namespace);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, namespace) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      namespace,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const patchStaticNode = (n1, n2, container, namespace) => {\n    if (n2.children !== n1.children) {\n      const anchor = hostNextSibling(n1.anchor);\n      removeStaticNode(n1);\n      [n2.el, n2.anchor] = hostInsertStaticContent(\n        n2.children,\n        container,\n        anchor,\n        namespace\n      );\n    } else {\n      n2.el = n1.el;\n      n2.anchor = n1.anchor;\n    }\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    if (n2.type === \"svg\") {\n      namespace = \"svg\";\n    } else if (n2.type === \"math\") {\n      namespace = \"mathml\";\n    }\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      namespace,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(vnode, namespace),\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !isReservedProp(key)) {\n          hostPatchProp(\n            el,\n            key,\n            null,\n            props[key],\n            namespace,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value, namespace);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      Object.defineProperty(el, \"__vnode\", {\n        value: vnode,\n        enumerable: false\n      });\n      Object.defineProperty(el, \"__vueParentComponent\", {\n        value: parentComponent,\n        enumerable: false\n      });\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = needTransition(parentSuspense, transition);\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n        subTree = filterSingleRoot(subTree.children) || subTree;\n      }\n      if (vnode === subTree) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds\n      );\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        traverseStaticChildren(n1, n2);\n      }\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(\n          el,\n          n2,\n          oldProps,\n          newProps,\n          parentComponent,\n          parentSuspense,\n          namespace\n        );\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, namespace);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(\n                el,\n                key,\n                prev,\n                next,\n                namespace,\n                n1.children,\n                parentComponent,\n                parentSuspense,\n                unmountChildren\n              );\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(\n        el,\n        n2,\n        oldProps,\n        newProps,\n        parentComponent,\n        parentSuspense,\n        namespace\n      );\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, namespace) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              namespace,\n              vnode.children,\n              parentComponent,\n              parentSuspense,\n              unmountChildren\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (isReservedProp(key))\n          continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(\n            el,\n            key,\n            prev,\n            next,\n            namespace,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n    (isHmrUpdating || patchFlag & 2048)) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        // #10007\n        // such fragment like `<></>` will be compiled into\n        // a fragment which doesn't have a children.\n        // In this case fallback to an empty array\n        n2.children || [],\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          traverseStaticChildren(n1, n2);\n        } else if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          namespace,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n    const compatMountInstance = initialVNode.isCompatRoot && initialVNode.component;\n    const instance = compatMountInstance || (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      registerHMR(instance);\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      pushWarningContext(initialVNode);\n      startMeasure(instance, `mount`);\n    }\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    if (!compatMountInstance) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        startMeasure(instance, `init`);\n      }\n      setupComponent(instance);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        endMeasure(instance, `init`);\n      }\n    }\n    if (instance.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n    } else {\n      setupRenderEffect(\n        instance,\n        initialVNode,\n        container,\n        anchor,\n        parentSuspense,\n        namespace,\n        optimized\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      popWarningContext();\n      endMeasure(instance, `mount`);\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(n2);\n        }\n        updateComponentPreRender(instance, n2, optimized);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        return;\n      } else {\n        instance.next = n2;\n        invalidateJob(instance.update);\n        instance.effect.dirty = true;\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeMount\");\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `render`);\n            }\n            instance.subTree = renderComponentRoot(instance);\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `render`);\n            }\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `hydrate`);\n            }\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `hydrate`);\n            }\n          };\n          if (isAsyncWrapperVNode) {\n            initialVNode.type.__asyncLoader().then(\n              // note: we are moving the render call into an async callback,\n              // which means it won't track dependencies - but it's ok because\n              // a server-rendered async wrapper is already in resolved state\n              // and it will never need to change.\n              () => !instance.isUnmounted && hydrateSubTree()\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `render`);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `render`);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `patch`);\n          }\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            namespace\n          );\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `patch`);\n          }\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          queuePostRenderEffect(\n            () => instance.emit(\"hook:mounted\"),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n          if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n            queuePostRenderEffect(\n              () => instance.emit(\"hook:activated\"),\n              parentSuspense\n            );\n          }\n        }\n        instance.isMounted = true;\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentAdded(instance);\n        }\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        {\n          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n          if (nonHydratedAsyncRoot) {\n            if (next) {\n              next.el = vnode.el;\n              updateComponentPreRender(instance, next, optimized);\n            }\n            nonHydratedAsyncRoot.asyncDep.then(() => {\n              if (!instance.isUnmounted) {\n                componentUpdateFn();\n              }\n            });\n            return;\n          }\n        }\n        let originNext = next;\n        let vnodeHook;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(next || instance.vnode);\n        }\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          instance.emit(\"hook:beforeUpdate\");\n        }\n        toggleRecurse(instance, true);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `render`);\n        }\n        const nextTree = renderComponentRoot(instance);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `render`);\n        }\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `patch`);\n        }\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          namespace\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `patch`);\n        }\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n        if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n          queuePostRenderEffect(\n            () => instance.emit(\"hook:updated\"),\n            parentSuspense\n          );\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentUpdated(instance);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n      }\n    };\n    const effect = instance.effect = new ReactiveEffect(\n      componentUpdateFn,\n      NOOP,\n      () => queueJob(update),\n      instance.scope\n      // track it in component's effect scope\n    );\n    const update = instance.update = () => {\n      if (effect.dirty) {\n        effect.run();\n      }\n    };\n    update.id = instance.uid;\n    toggleRecurse(instance, true);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n      effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n      update.ownerInstance = instance;\n    }\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(instance);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n            warn$1(\n              `Duplicate keys found during update:`,\n              JSON.stringify(nextChild.key),\n              `Make sure keys are unique.`\n            );\n          }\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++)\n        newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition2) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs\n    } = vnode;\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          optimized,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n        vnode.children.forEach((child) => {\n          if (child.type === Comment) {\n            hostRemove(child.el);\n          } else {\n            remove(child);\n          }\n        });\n      } else {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      unregisterHMR(instance);\n    }\n    const { bum, scope, update, subTree, um } = instance;\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n      instance.emit(\"hook:beforeDestroy\");\n    }\n    scope.stop();\n    if (update) {\n      update.active = false;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    if (isCompatEnabled(\"INSTANCE_EVENT_HOOKS\", instance)) {\n      queuePostRenderEffect(\n        () => instance.emit(\"hook:destroyed\"),\n        parentSuspense\n      );\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentRemoved(instance);\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    return hostNextSibling(vnode.anchor || vnode.el);\n  };\n  let isFlushing = false;\n  const render = (vnode, container, namespace) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(\n        container._vnode || null,\n        vnode,\n        container,\n        null,\n        null,\n        null,\n        namespace\n      );\n    }\n    if (!isFlushing) {\n      isFlushing = true;\n      flushPreFlushCbs();\n      flushPostFlushCbs();\n      isFlushing = false;\n    }\n    container._vnode = vnode;\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n  return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n  effect.allowRecurse = update.allowRecurse = allowed;\n}\nfunction needTransition(parentSuspense, transition) {\n  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray(ch1) && isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n  const subComponent = instance.subTree.component;\n  if (subComponent) {\n    if (subComponent.asyncDep && !subComponent.asyncResolved) {\n      return subComponent;\n    } else {\n      return locateNonHydratedAsyncRoot(subComponent);\n    }\n  }\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (isString(targetSelector)) {\n    if (!select) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n      );\n      return null;\n    } else {\n      const target = select(targetSelector);\n      if (!target) {\n        !!(process.env.NODE_ENV !== \"production\") && warn$1(\n          `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n        );\n      }\n      return target;\n    }\n  } else {\n    if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n      warn$1(`Invalid Teleport target: ${targetSelector}`);\n    }\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  name: \"Teleport\",\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (n1 == null) {\n      const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n      const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const target = n2.target = resolveTarget(n2.props, querySelector);\n      const targetAnchor = n2.targetAnchor = createText(\"\");\n      if (target) {\n        insert(targetAnchor, target);\n        if (namespace === \"svg\" || isTargetSVG(target)) {\n          namespace = \"svg\";\n        } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n          namespace = \"mathml\";\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n        warn$1(\"Invalid Teleport target on mount:\", target, `(${typeof target})`);\n      }\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n      } else if (target) {\n        mount(target, targetAnchor);\n      }\n    } else {\n      n2.el = n1.el;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      if (namespace === \"svg\" || isTargetSVG(target)) {\n        namespace = \"svg\";\n      } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n        namespace = \"mathml\";\n      }\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        } else {\n          if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n            n2.props.to = n1.props.to;\n          }\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Invalid Teleport target on update:\",\n              target,\n              `(${typeof target})`\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n    }\n    updateCssVars(n2);\n  },\n  remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n    if (target) {\n      hostRemove(targetAnchor);\n    }\n    doRemove && hostRemove(anchor);\n    if (shapeFlag & 16) {\n      const shouldRemove = doRemove || !isTeleportDisabled(props);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        unmount(\n          child,\n          parentComponent,\n          parentSuspense,\n          shouldRemove,\n          !!child.dynamicChildren\n        );\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (isTeleportDisabled(vnode.props)) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetAnchor = targetNode;\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          targetAnchor = nextSibling(targetAnchor);\n          if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === \"teleport anchor\") {\n            vnode.targetAnchor = targetAnchor;\n            target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n            break;\n          }\n        }\n        hydrateChildren(\n          targetNode,\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node = vnode.children[0].el;\n    while (node && node !== vnode.targetAnchor) {\n      if (node.nodeType === 1)\n        node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\n\nconst normalizedAsyncComponentMap = /* @__PURE__ */ new WeakMap();\nfunction convertLegacyAsyncComponent(comp) {\n  if (normalizedAsyncComponentMap.has(comp)) {\n    return normalizedAsyncComponentMap.get(comp);\n  }\n  let resolve;\n  let reject;\n  const fallbackPromise = new Promise((r, rj) => {\n    resolve = r, reject = rj;\n  });\n  const res = comp(resolve, reject);\n  let converted;\n  if (isPromise(res)) {\n    converted = defineAsyncComponent(() => res);\n  } else if (isObject(res) && !isVNode(res) && !isArray(res)) {\n    converted = defineAsyncComponent({\n      loader: () => res.component,\n      loadingComponent: res.loading,\n      errorComponent: res.error,\n      delay: res.delay,\n      timeout: res.timeout\n    });\n  } else if (res == null) {\n    converted = defineAsyncComponent(() => fallbackPromise);\n  } else {\n    converted = comp;\n  }\n  normalizedAsyncComponentMap.set(comp, converted);\n  return converted;\n}\n\nfunction convertLegacyComponent(comp, instance) {\n  if (comp.__isBuiltIn) {\n    return comp;\n  }\n  if (isFunction(comp) && comp.cid) {\n    comp = comp.options;\n  }\n  if (isFunction(comp) && checkCompatEnabled(\"COMPONENT_ASYNC\", instance, comp)) {\n    return convertLegacyAsyncComponent(comp);\n  }\n  if (isObject(comp) && comp.functional && softAssertCompatEnabled(\n    \"COMPONENT_FUNCTIONAL\",\n    instance,\n    comp\n  )) {\n    return convertLegacyFunctionalComponent(comp);\n  }\n  return comp;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {\n    n1.shapeFlag &= ~256;\n    n2.shapeFlag &= ~512;\n    return false;\n  }\n  return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n  vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n  return _createVNode(\n    ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n  );\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString(children) ? 8 : 16;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n    warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  {\n    convertLegacyVModelProps(vnode);\n    defineLegacyVNodeProperties(vnode);\n  }\n  return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n      warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n    }\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag |= -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  {\n    type = convertLegacyComponent(type, currentRenderingInstance);\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject(style)) {\n      if (isProxy(style) && !isArray(style)) {\n        style = extend({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n    type = toRaw(type);\n    warn$1(\n      `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n      `\nComponent that was made reactive: `,\n      type\n    );\n  }\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props)\n    return null;\n  return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n  const { props, ref, patchFlag, children } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n    target: vnode.target,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition: vnode.transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  {\n    defineLegacyVNodeProperties(cloned);\n  }\n  return cloned;\n}\nfunction deepCloneVNode(vnode) {\n  const cloned = cloneVNode(vnode);\n  if (isArray(vnode.children)) {\n    cloned.children = vnode.children.map(deepCloneVNode);\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (typeof child === \"object\") {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !(InternalObjectKey in children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    scope: new EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    attrsProxy: null,\n    slotsProxy: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.ctx = createDevRenderContext(instance);\n  } else {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n  const g = getGlobalThis();\n  const registerGlobalSetter = (key, setter) => {\n    let setters;\n    if (!(setters = g[key]))\n      setters = g[key] = [];\n    setters.push(setter);\n    return (v) => {\n      if (setters.length > 1)\n        setters.forEach((set) => set(v));\n      else\n        setters[0](v);\n    };\n  };\n  internalSetCurrentInstance = registerGlobalSetter(\n    `__VUE_INSTANCE_SETTERS__`,\n    (v) => currentInstance = v\n  );\n  setInSSRSetupState = registerGlobalSetter(\n    `__VUE_SSR_SETTERS__`,\n    (v) => isInSSRComponentSetup = v\n  );\n}\nconst setCurrentInstance = (instance) => {\n  const prev = currentInstance;\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n  return () => {\n    instance.scope.off();\n    internalSetCurrentInstance(prev);\n  };\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, config) {\n  const appIsNativeTag = config.isNativeTag || NO;\n  if (isBuiltInTag(name) || appIsNativeTag(name)) {\n    warn$1(\n      \"Do not use built-in or reserved HTML elements as component id: \" + name\n    );\n  }\n}\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n  isSSR && setInSSRSetupState(isSSR);\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isSSR && setInSSRSetupState(false);\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  var _a;\n  const Component = instance.type;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (Component.name) {\n      validateComponentName(Component.name, instance.appContext.config);\n    }\n    if (Component.components) {\n      const names = Object.keys(Component.components);\n      for (let i = 0; i < names.length; i++) {\n        validateComponentName(names[i], instance.appContext.config);\n      }\n    }\n    if (Component.directives) {\n      const names = Object.keys(Component.directives);\n      for (let i = 0; i < names.length; i++) {\n        validateDirectiveName(names[i]);\n      }\n    }\n    if (Component.compilerOptions && isRuntimeOnly()) {\n      warn$1(\n        `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n      );\n    }\n  }\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    exposePropsOnRenderContext(instance);\n  }\n  const { setup } = Component;\n  if (setup) {\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [\n        !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n        setupContext\n      ]\n    );\n    resetTracking();\n    reset();\n    if (isPromise(setupResult)) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n        if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n          const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n          warn$1(\n            `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n          );\n        }\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (isObject(setupResult)) {\n    if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n      warn$1(\n        `setup() should not return VNodes directly - return a render function instead.`\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.devtoolsRawSetupState = setupResult;\n    }\n    instance.setupState = proxyRefs(setupResult);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      exposeSetupStateOnRenderContext(instance);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n    warn$1(\n      `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n    );\n  }\n  finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  {\n    convertLegacyRenderFn(instance);\n    if (!!(process.env.NODE_ENV !== \"production\") && Component.compatConfig) {\n      validateCompatConfig(Component.compatConfig);\n    }\n  }\n  if (!instance.render) {\n    if (!isSSR && compile && !Component.render) {\n      const template = instance.vnode.props && instance.vnode.props[\"inline-template\"] || Component.template || resolveMergedOptions(instance).template;\n      if (template) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `compile`);\n        }\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend(\n          extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        {\n          finalCompilerOptions.compatConfig = Object.create(globalCompatConfig);\n          if (Component.compatConfig) {\n            extend(finalCompilerOptions.compatConfig, Component.compatConfig);\n          }\n        }\n        Component.render = compile(template, finalCompilerOptions);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `compile`);\n        }\n      }\n    }\n    instance.render = Component.render || NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  if (__VUE_OPTIONS_API__ && !skipOptions) {\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    try {\n      applyOptions(instance);\n    } finally {\n      resetTracking();\n      reset();\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n    if (!compile && Component.template) {\n      warn$1(\n        `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n      );\n    } else {\n      warn$1(`Component is missing template or render function.`);\n    }\n  }\n}\nfunction getAttrsProxy(instance) {\n  return instance.attrsProxy || (instance.attrsProxy = new Proxy(\n    instance.attrs,\n    !!(process.env.NODE_ENV !== \"production\") ? {\n      get(target, key) {\n        markAttrsAccessed();\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      },\n      set() {\n        warn$1(`setupContext.attrs is readonly.`);\n        return false;\n      },\n      deleteProperty() {\n        warn$1(`setupContext.attrs is readonly.`);\n        return false;\n      }\n    } : {\n      get(target, key) {\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      }\n    }\n  ));\n}\nfunction getSlotsProxy(instance) {\n  return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {\n    get(target, key) {\n      track(instance, \"get\", \"$slots\");\n      return target[key];\n    }\n  }));\n}\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (instance.exposed) {\n        warn$1(`expose() should be called only once per setup().`);\n      }\n      if (exposed != null) {\n        let exposedType = typeof exposed;\n        if (exposedType === \"object\") {\n          if (isArray(exposed)) {\n            exposedType = \"array\";\n          } else if (isRef(exposed)) {\n            exposedType = \"ref\";\n          }\n        }\n        if (exposedType !== \"object\") {\n          warn$1(\n            `expose() should be passed a plain object, received ${exposedType}.`\n          );\n        }\n      }\n    }\n    instance.exposed = exposed || {};\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    return Object.freeze({\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      get slots() {\n        return getSlotsProxy(instance);\n      },\n      get emit() {\n        return (event, ...args) => instance.emit(event, ...args);\n      },\n      expose\n    });\n  } else {\n    return {\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getExposeProxy(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n  let name = getComponentName(Component);\n  if (!name && Component.__file) {\n    const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n  if (!name && instance && instance.parent) {\n    const inferFromRegistry = (registry) => {\n      for (const key in registry) {\n        if (registry[key] === Component) {\n          return key;\n        }\n      }\n    };\n    name = inferFromRegistry(\n      instance.components || instance.parent.type.components\n    ) || inferFromRegistry(instance.appContext.components);\n  }\n  return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n  return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useModel() called without active instance.`);\n    return ref();\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][name]) {\n    warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n    return ref();\n  }\n  const camelizedName = camelize(name);\n  const hyphenatedName = hyphenate(name);\n  const res = customRef((track, trigger) => {\n    let localValue;\n    watchSyncEffect(() => {\n      const propValue = props[name];\n      if (hasChanged(localValue, propValue)) {\n        localValue = propValue;\n        trigger();\n      }\n    });\n    return {\n      get() {\n        track();\n        return options.get ? options.get(localValue) : localValue;\n      },\n      set(value) {\n        const rawProps = i.vnode.props;\n        if (!(rawProps && // check if parent has passed v-model\n        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps)) && hasChanged(value, localValue)) {\n          localValue = value;\n          trigger();\n        }\n        i.emit(`update:${name}`, options.set ? options.set(value) : value);\n      }\n    };\n  });\n  const modifierKey = name === \"modelValue\" ? \"modelModifiers\" : `${name}Modifiers`;\n  res[Symbol.iterator] = () => {\n    let i2 = 0;\n    return {\n      next() {\n        if (i2 < 2) {\n          return { value: i2++ ? props[modifierKey] || {} : res, done: false };\n        } else {\n          return { done: true };\n        }\n      }\n    };\n  };\n  return res;\n}\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nfunction initCustomFormatter() {\n  if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n    return;\n  }\n  const vueStyle = { style: \"color:#3ba776\" };\n  const numberStyle = { style: \"color:#1677ff\" };\n  const stringStyle = { style: \"color:#f5222d\" };\n  const keywordStyle = { style: \"color:#eb2f96\" };\n  const formatter = {\n    header(obj) {\n      if (!isObject(obj)) {\n        return null;\n      }\n      if (obj.__isVue) {\n        return [\"div\", vueStyle, `VueInstance`];\n      } else if (isRef(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, genRefFlag(obj)],\n          \"<\",\n          formatValue(obj.value),\n          `>`\n        ];\n      } else if (isReactive(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n          \"<\",\n          formatValue(obj),\n          `>${isReadonly(obj) ? ` (readonly)` : ``}`\n        ];\n      } else if (isReadonly(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n          \"<\",\n          formatValue(obj),\n          \">\"\n        ];\n      }\n      return null;\n    },\n    hasBody(obj) {\n      return obj && obj.__isVue;\n    },\n    body(obj) {\n      if (obj && obj.__isVue) {\n        return [\n          \"div\",\n          {},\n          ...formatInstance(obj.$)\n        ];\n      }\n    }\n  };\n  function formatInstance(instance) {\n    const blocks = [];\n    if (instance.type.props && instance.props) {\n      blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n    }\n    if (instance.setupState !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n    }\n    if (instance.data !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n    }\n    const computed = extractKeys(instance, \"computed\");\n    if (computed) {\n      blocks.push(createInstanceBlock(\"computed\", computed));\n    }\n    const injected = extractKeys(instance, \"inject\");\n    if (injected) {\n      blocks.push(createInstanceBlock(\"injected\", injected));\n    }\n    blocks.push([\n      \"div\",\n      {},\n      [\n        \"span\",\n        {\n          style: keywordStyle.style + \";opacity:0.66\"\n        },\n        \"$ (internal): \"\n      ],\n      [\"object\", { object: instance }]\n    ]);\n    return blocks;\n  }\n  function createInstanceBlock(type, target) {\n    target = extend({}, target);\n    if (!Object.keys(target).length) {\n      return [\"span\", {}];\n    }\n    return [\n      \"div\",\n      { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n      [\n        \"div\",\n        {\n          style: \"color:#476582\"\n        },\n        type\n      ],\n      [\n        \"div\",\n        {\n          style: \"padding-left:1.25em\"\n        },\n        ...Object.keys(target).map((key) => {\n          return [\n            \"div\",\n            {},\n            [\"span\", keywordStyle, key + \": \"],\n            formatValue(target[key], false)\n          ];\n        })\n      ]\n    ];\n  }\n  function formatValue(v, asRaw = true) {\n    if (typeof v === \"number\") {\n      return [\"span\", numberStyle, v];\n    } else if (typeof v === \"string\") {\n      return [\"span\", stringStyle, JSON.stringify(v)];\n    } else if (typeof v === \"boolean\") {\n      return [\"span\", keywordStyle, v];\n    } else if (isObject(v)) {\n      return [\"object\", { object: asRaw ? toRaw(v) : v }];\n    } else {\n      return [\"span\", stringStyle, String(v)];\n    }\n  }\n  function extractKeys(instance, type) {\n    const Comp = instance.type;\n    if (isFunction(Comp)) {\n      return;\n    }\n    const extracted = {};\n    for (const key in instance.ctx) {\n      if (isKeyOfType(Comp, key, type)) {\n        extracted[key] = instance.ctx[key];\n      }\n    }\n    return extracted;\n  }\n  function isKeyOfType(Comp, key, type) {\n    const opts = Comp[type];\n    if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n      return true;\n    }\n    if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n      return true;\n    }\n    if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n      return true;\n    }\n  }\n  function genRefFlag(v) {\n    if (isShallow(v)) {\n      return `ShallowRef`;\n    }\n    if (v.effect) {\n      return `ComputedRef`;\n    }\n    return `Ref`;\n  }\n  if (window.devtoolsFormatters) {\n    window.devtoolsFormatters.push(formatter);\n  } else {\n    window.devtoolsFormatters = [formatter];\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.4.15\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = resolveFilter$1 ;\nconst _compatUtils = {\n  warnDeprecation,\n  createCompatVue: createCompatVue$1,\n  isCompatEnabled,\n  checkCompatEnabled,\n  softAssertCompatEnabled\n};\nconst compatUtils = _compatUtils ;\nconst DeprecationTypes = DeprecationTypes$1 ;\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, namespace, is, props) => {\n    const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text) => doc.createTextNode(text),\n  createComment: (text) => doc.createComment(text),\n  setText: (node, text) => {\n    node.nodeValue = text;\n  },\n  setElementText: (el, text) => {\n    el.textContent = text;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  // __UNSAFE__\n  // Reason: innerHTML.\n  // Static content here can only come from compiled templates.\n  // As long as the user only uses trusted templates, this is safe.\n  insertStaticContent(content, parent, anchor, namespace, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling))\n          break;\n      }\n    } else {\n      templateContainer.innerHTML = namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content;\n      const template = templateContainer.content;\n      if (namespace === \"svg\" || namespace === \"mathml\") {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      // first\n      before ? before.nextSibling : parent.firstChild,\n      // last\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\n{\n  Transition.__isBuiltIn = true;\n}\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(\n  {},\n  BaseTransitionPropsValidators,\n  DOMTransitionPropsValidators\n);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const {\n    name = \"v\",\n    type,\n    duration,\n    enterFromClass = `${name}-enter-from`,\n    enterActiveClass = `${name}-enter-active`,\n    enterToClass = `${name}-enter-to`,\n    appearFromClass = enterFromClass,\n    appearActiveClass = enterActiveClass,\n    appearToClass = enterToClass,\n    leaveFromClass = `${name}-leave-from`,\n    leaveActiveClass = `${name}-leave-active`,\n    leaveToClass = `${name}-leave-to`\n  } = rawProps;\n  const legacyClassEnabled = compatUtils.isCompatEnabled(\"TRANSITION_CLASSES\", null);\n  let legacyEnterFromClass;\n  let legacyAppearFromClass;\n  let legacyLeaveFromClass;\n  if (legacyClassEnabled) {\n    const toLegacyClass = (cls) => cls.replace(/-from$/, \"\");\n    if (!rawProps.enterFromClass) {\n      legacyEnterFromClass = toLegacyClass(enterFromClass);\n    }\n    if (!rawProps.appearFromClass) {\n      legacyAppearFromClass = toLegacyClass(appearFromClass);\n    }\n    if (!rawProps.leaveFromClass) {\n      legacyLeaveFromClass = toLegacyClass(leaveFromClass);\n    }\n  }\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const {\n    onBeforeEnter,\n    onEnter,\n    onEnterCancelled,\n    onLeave,\n    onLeaveCancelled,\n    onBeforeAppear = onBeforeEnter,\n    onAppear = onEnter,\n    onAppearCancelled = onEnterCancelled\n  } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        if (legacyClassEnabled) {\n          const legacyClass = isAppear ? legacyAppearFromClass : legacyEnterFromClass;\n          if (legacyClass) {\n            removeTransitionClass(el, legacyClass);\n          }\n        }\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      if (legacyClassEnabled && legacyEnterFromClass) {\n        addTransitionClass(el, legacyEnterFromClass);\n      }\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      if (legacyClassEnabled && legacyAppearFromClass) {\n        addTransitionClass(el, legacyAppearFromClass);\n      }\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      if (legacyClassEnabled && legacyLeaveFromClass) {\n        addTransitionClass(el, legacyLeaveFromClass);\n      }\n      forceReflow();\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        if (legacyClassEnabled && legacyLeaveFromClass) {\n          removeTransitionClass(el, legacyLeaveFromClass);\n        }\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve);\n        }\n      });\n      callHook(onLeave, [el, resolve]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(res, \"<transition> explicit duration\");\n  }\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el[vtcKey] = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve();\n    }\n  };\n  if (explicitTimeout) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n  const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n    getStyleProperties(`${TRANSITION}Property`).toString()\n  );\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  if (s === \"auto\")\n    return 0;\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el[vtcKey];\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\n\nconst vShowOldKey = Symbol(\"_vod\");\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el[vShowOldKey] = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue)\n      return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  vShow.name = \"show\";\n}\nfunction setDisplay(el, value) {\n  el.style.display = value ? el[vShowOldKey] : \"none\";\n}\nfunction initVShowForSSR() {\n  vShow.getSSRProps = ({ value }) => {\n    if (!value) {\n      return { style: { display: \"none\" } };\n    }\n  };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n  const instance = getCurrentInstance();\n  if (!instance) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n    return;\n  }\n  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n    Array.from(\n      document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n    ).forEach((node) => setVarsOnNode(node, vars));\n  };\n  const setVars = () => {\n    const vars = getter(instance.proxy);\n    setVarsOnVNode(instance.subTree, vars);\n    updateTeleports(vars);\n  };\n  watchPostEffect(setVars);\n  onMounted(() => {\n    const ob = new MutationObserver(setVars);\n    ob.observe(instance.subTree.el.parentNode, { childList: true });\n    onUnmounted(() => ob.disconnect());\n  });\n}\nfunction setVarsOnVNode(vnode, vars) {\n  if (vnode.shapeFlag & 128) {\n    const suspense = vnode.suspense;\n    vnode = suspense.activeBranch;\n    if (suspense.pendingBranch && !suspense.isHydrating) {\n      suspense.effects.push(() => {\n        setVarsOnVNode(suspense.activeBranch, vars);\n      });\n    }\n  }\n  while (vnode.component) {\n    vnode = vnode.component.subTree;\n  }\n  if (vnode.shapeFlag & 1 && vnode.el) {\n    setVarsOnNode(vnode.el, vars);\n  } else if (vnode.type === Fragment) {\n    vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n  } else if (vnode.type === Static) {\n    let { el, anchor } = vnode;\n    while (el) {\n      setVarsOnNode(el, vars);\n      if (el === anchor)\n        break;\n      el = el.nextSibling;\n    }\n  }\n}\nfunction setVarsOnNode(el, vars) {\n  if (el.nodeType === 1) {\n    const style = el.style;\n    let cssText = \"\";\n    for (const key in vars) {\n      style.setProperty(`--${key}`, vars[key]);\n      cssText += `--${key}: ${vars[key]};`;\n    }\n    style[CSS_VAR_TEXT] = cssText;\n  }\n}\n\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const currentDisplay = style.display;\n  const isCssString = isString(next);\n  if (next && !isCssString) {\n    if (prev && !isString(prev)) {\n      for (const key in prev) {\n        if (next[key] == null) {\n          setStyle(style, key, \"\");\n        }\n      }\n    }\n    for (const key in next) {\n      setStyle(style, key, next[key]);\n    }\n  } else {\n    if (isCssString) {\n      if (prev !== next) {\n        const cssVarText = style[CSS_VAR_TEXT];\n        if (cssVarText) {\n          next += \";\" + cssVarText;\n        }\n        style.cssText = next;\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n  }\n  if (vShowOldKey in el) {\n    style.display = currentDisplay;\n  }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null)\n      val = \"\";\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (semicolonRE.test(val)) {\n        warn(\n          `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n        );\n      }\n    }\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(\n          hyphenate(prefixed),\n          val.replace(importantRE, \"\"),\n          \"important\"\n        );\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    if (compatCoerceAttr(el, key, value, instance)) {\n      return;\n    }\n    const isBoolean = isSpecialBooleanAttr(key);\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, isBoolean ? \"\" : value);\n    }\n  }\n}\nconst isEnumeratedAttr = /* @__PURE__ */ makeMap(\"contenteditable,draggable,spellcheck\") ;\nfunction compatCoerceAttr(el, key, value, instance = null) {\n  if (isEnumeratedAttr(key)) {\n    const v2CoercedValue = value === null ? \"false\" : typeof value !== \"boolean\" && value !== void 0 ? \"true\" : null;\n    if (v2CoercedValue && compatUtils.softAssertCompatEnabled(\n      \"ATTR_ENUMERATED_COERCION\",\n      instance,\n      key,\n      value,\n      v2CoercedValue\n    )) {\n      el.setAttribute(key, v2CoercedValue);\n      return true;\n    }\n  } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.softAssertCompatEnabled(\n    \"ATTR_FALSE_VALUE\",\n    instance,\n    key\n  )) {\n    el.removeAttribute(key);\n    return true;\n  }\n  return false;\n}\n\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (prevChildren) {\n      unmountChildren(prevChildren, parentComponent, parentSuspense);\n    }\n    el[key] = value == null ? \"\" : value;\n    return;\n  }\n  const tag = el.tagName;\n  if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n  !tag.includes(\"-\")) {\n    el._value = value;\n    const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (oldValue !== newValue) {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  } else {\n    if (value === false && compatUtils.isCompatEnabled(\n      \"ATTR_FALSE_VALUE\",\n      parentComponent\n    )) {\n      const type = typeof el[key];\n      if (type === \"string\" || type === \"number\") {\n        !!(process.env.NODE_ENV !== \"production\") && compatUtils.warnDeprecation(\n          \"ATTR_FALSE_VALUE\",\n          parentComponent,\n          key\n        );\n        value = type === \"number\" ? 0 : \"\";\n        needRemove = true;\n      }\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n      warn(\n        `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n        e\n      );\n    }\n  }\n  needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n  const invokers = el[veiKey] || (el[veiKey] = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(nextValue, instance);\n      addEventListener(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n  return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n  const invoker = (e) => {\n    if (!e._vts) {\n      e._vts = Date.now();\n    } else if (e._vts <= invoker.attached) {\n      return;\n    }\n    callWithAsyncErrorHandling(\n      patchStopImmediatePropagation(e, invoker.value),\n      instance,\n      5,\n      [e]\n    );\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n  } else {\n    return value;\n  }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n  const isSVG = namespace === \"svg\";\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(\n      el,\n      key,\n      nextValue,\n      prevChildren,\n      parentComponent,\n      parentSuspense,\n      unmountChildren\n    );\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG, parentComponent);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && isNativeOn(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (key === \"width\" || key === \"height\") {\n    const tag = el.tagName;\n    if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n      return false;\n    }\n  }\n  if (isNativeOn(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, hydrate2) {\n  const Comp = defineComponent(options);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, hydrate2);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => {\n  return /* @__PURE__ */ defineCustomElement(options, hydrate);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, hydrate2) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    /**\n     * @internal\n     */\n    this._instance = null;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    this._ob = null;\n    if (this.shadowRoot && hydrate2) {\n      hydrate2(this._createVNode(), this.shadowRoot);\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n        warn(\n          `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n        );\n      }\n      this.attachShadow({ mode: \"open\" });\n      if (!this._def.__asyncLoader) {\n        this._resolveProps(this._def);\n      }\n    }\n  }\n  connectedCallback() {\n    this._connected = true;\n    if (!this._instance) {\n      if (this._resolved) {\n        this._update();\n      } else {\n        this._resolveDef();\n      }\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    if (this._ob) {\n      this._ob.disconnect();\n      this._ob = null;\n    }\n    nextTick(() => {\n      if (!this._connected) {\n        render(null, this.shadowRoot);\n        this._instance = null;\n      }\n    });\n  }\n  /**\n   * resolve inner component definition (handle possible async component)\n   */\n  _resolveDef() {\n    this._resolved = true;\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    this._ob = new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    });\n    this._ob.observe(this, { attributes: true });\n    const resolve = (def, isAsync = false) => {\n      const { props, styles } = def;\n      let numberProps;\n      if (props && !isArray(props)) {\n        for (const key in props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            if (key in this._props) {\n              this._props[key] = toNumber(this._props[key]);\n            }\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      if (isAsync) {\n        this._resolveProps(def);\n      }\n      this._applyStyles(styles);\n      this._update();\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      asyncDef().then((def) => resolve(def, true));\n    } else {\n      resolve(this._def);\n    }\n  }\n  _resolveProps(def) {\n    const { props } = def;\n    const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n    for (const key of Object.keys(this)) {\n      if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n        this._setProp(key, this[key], true, false);\n      }\n    }\n    for (const key of declaredPropKeys.map(camelize)) {\n      Object.defineProperty(this, key, {\n        get() {\n          return this._getProp(key);\n        },\n        set(val) {\n          this._setProp(key, val);\n        }\n      });\n    }\n  }\n  _setAttr(key) {\n    let value = this.getAttribute(key);\n    const camelKey = camelize(key);\n    if (this._numberProps && this._numberProps[camelKey]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelKey, value, false);\n  }\n  /**\n   * @internal\n   */\n  _getProp(key) {\n    return this._props[key];\n  }\n  /**\n   * @internal\n   */\n  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n    if (val !== this._props[key]) {\n      this._props[key] = val;\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this.shadowRoot);\n  }\n  _createVNode() {\n    const vnode = createVNode(this._def, extend({}, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance) => {\n        this._instance = instance;\n        instance.isCE = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          instance.ceReload = (newStyles) => {\n            if (this._styles) {\n              this._styles.forEach((s) => this.shadowRoot.removeChild(s));\n              this._styles.length = 0;\n            }\n            this._applyStyles(newStyles);\n            this._instance = null;\n            this._update();\n          };\n        }\n        const dispatch = (event, args) => {\n          this.dispatchEvent(\n            new CustomEvent(event, {\n              detail: args\n            })\n          );\n        };\n        instance.emit = (event, ...args) => {\n          dispatch(event, args);\n          if (hyphenate(event) !== event) {\n            dispatch(hyphenate(event), args);\n          }\n        };\n        let parent = this;\n        while (parent = parent && (parent.parentNode || parent.host)) {\n          if (parent instanceof VueElement) {\n            instance.parent = parent._instance;\n            instance.provides = parent._instance.provides;\n            break;\n          }\n        }\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles) {\n    if (styles) {\n      styles.forEach((css) => {\n        const s = document.createElement(\"style\");\n        s.textContent = css;\n        this.shadowRoot.appendChild(s);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          (this._styles || (this._styles = [])).push(s);\n        }\n      });\n    }\n  }\n}\n\nfunction useCssModule(name = \"$style\") {\n  {\n    const instance = getCurrentInstance();\n    if (!instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n      return EMPTY_OBJ;\n    }\n    const modules = instance.type.__cssModules;\n    if (!modules) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n      return EMPTY_OBJ;\n    }\n    const mod = modules[name];\n    if (!mod) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n      return EMPTY_OBJ;\n    }\n    return mod;\n  }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst TransitionGroupImpl = {\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(\n        prevChildren[0].el,\n        instance.vnode.el,\n        moveClass\n      )) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el[moveCbKey] = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el[moveCbKey] = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      if (!rawProps.tag && compatUtils.checkCompatEnabled(\n        \"TRANSITION_GROUP_ROOT\",\n        instance.parent\n      )) {\n        tag = \"span\";\n      }\n      prevChildren = children;\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(`<TransitionGroup> children must be keyed.`);\n        }\n      }\n      if (prevChildren) {\n        for (let i = 0; i < prevChildren.length; i++) {\n          const child = prevChildren[i];\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n          positionMap.set(child, child.el.getBoundingClientRect());\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n};\n{\n  TransitionGroupImpl.__isBuiltIn = true;\n}\nconst removeMode = (props) => delete props.mode;\n/* @__PURE__ */ removeMode(TransitionGroupImpl.props);\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el[moveCbKey]) {\n    el[moveCbKey]();\n  }\n  if (el[enterCbKey]) {\n    el[enterCbKey]();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n  const fn = vnode.props[\"onUpdate:modelValue\"] || vnode.props[\"onModelCompat:input\"];\n  return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n  const target = e.target;\n  if (target.composing) {\n    target.composing = false;\n    target.dispatchEvent(new Event(\"input\"));\n  }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n  created(el, { modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n    addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n      if (e.target.composing)\n        return;\n      let domValue = el.value;\n      if (trim) {\n        domValue = domValue.trim();\n      }\n      if (castToNumber) {\n        domValue = looseToNumber(domValue);\n      }\n      el[assignKey](domValue);\n    });\n    if (trim) {\n      addEventListener(el, \"change\", () => {\n        el.value = el.value.trim();\n      });\n    }\n    if (!lazy) {\n      addEventListener(el, \"compositionstart\", onCompositionStart);\n      addEventListener(el, \"compositionend\", onCompositionEnd);\n      addEventListener(el, \"change\", onCompositionEnd);\n    }\n  },\n  // set value on mounted so it's after min/max for type=\"range\"\n  mounted(el, { value }) {\n    el.value = value == null ? \"\" : value;\n  },\n  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (el.composing)\n      return;\n    const elValue = number || el.type === \"number\" ? looseToNumber(el.value) : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (elValue === newValue) {\n      return;\n    }\n    if (document.activeElement === el && el.type !== \"range\") {\n      if (lazy) {\n        return;\n      }\n      if (trim && el.value.trim() === newValue) {\n        return;\n      }\n    }\n    el.value = newValue;\n  }\n};\nconst vModelCheckbox = {\n  // #4096 array checkboxes need to be deep traversed\n  deep: true,\n  created(el, _, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      const modelValue = el._modelValue;\n      const elementValue = getValue(el);\n      const checked = el.checked;\n      const assign = el[assignKey];\n      if (isArray(modelValue)) {\n        const index = looseIndexOf(modelValue, elementValue);\n        const found = index !== -1;\n        if (checked && !found) {\n          assign(modelValue.concat(elementValue));\n        } else if (!checked && found) {\n          const filtered = [...modelValue];\n          filtered.splice(index, 1);\n          assign(filtered);\n        }\n      } else if (isSet(modelValue)) {\n        const cloned = new Set(modelValue);\n        if (checked) {\n          cloned.add(elementValue);\n        } else {\n          cloned.delete(elementValue);\n        }\n        assign(cloned);\n      } else {\n        assign(getCheckboxValue(el, checked));\n      }\n    });\n  },\n  // set initial checked on mount to wait for true-value/false-value\n  mounted: setChecked,\n  beforeUpdate(el, binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    setChecked(el, binding, vnode);\n  }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n  el._modelValue = value;\n  if (isArray(value)) {\n    el.checked = looseIndexOf(value, vnode.props.value) > -1;\n  } else if (isSet(value)) {\n    el.checked = value.has(vnode.props.value);\n  } else if (value !== oldValue) {\n    el.checked = looseEqual(value, getCheckboxValue(el, true));\n  }\n}\nconst vModelRadio = {\n  created(el, { value }, vnode) {\n    el.checked = looseEqual(value, vnode.props.value);\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      el[assignKey](getValue(el));\n    });\n  },\n  beforeUpdate(el, { value, oldValue }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (value !== oldValue) {\n      el.checked = looseEqual(value, vnode.props.value);\n    }\n  }\n};\nconst vModelSelect = {\n  // <select multiple> value need to be deep traversed\n  deep: true,\n  created(el, { value, modifiers: { number } }, vnode) {\n    const isSetModel = isSet(value);\n    addEventListener(el, \"change\", () => {\n      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n        (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n      );\n      el[assignKey](\n        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n      );\n      el._assigning = true;\n      nextTick(() => {\n        el._assigning = false;\n      });\n    });\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  // set value in mounted & updated because <select> relies on its children\n  // <option>s.\n  mounted(el, { value, oldValue, modifiers: { number } }) {\n    setSelected(el, value, oldValue, number);\n  },\n  beforeUpdate(el, _binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  updated(el, { value, oldValue, modifiers: { number } }) {\n    if (!el._assigning) {\n      setSelected(el, value, oldValue, number);\n    }\n  }\n};\nfunction setSelected(el, value, oldValue, number) {\n  const isMultiple = el.multiple;\n  const isArrayValue = isArray(value);\n  if (isMultiple && !isArrayValue && !isSet(value)) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(\n      `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n    );\n    return;\n  }\n  if (isArrayValue && looseEqual(value, oldValue)) {\n    return;\n  }\n  for (let i = 0, l = el.options.length; i < l; i++) {\n    const option = el.options[i];\n    const optionValue = getValue(option);\n    if (isMultiple) {\n      if (isArrayValue) {\n        const optionType = typeof optionValue;\n        if (optionType === \"string\" || optionType === \"number\") {\n          option.selected = value.includes(\n            number ? looseToNumber(optionValue) : optionValue\n          );\n        } else {\n          option.selected = looseIndexOf(value, optionValue) > -1;\n        }\n      } else {\n        option.selected = value.has(optionValue);\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i)\n          el.selectedIndex = i;\n        return;\n      }\n    }\n  }\n  if (!isMultiple && el.selectedIndex !== -1) {\n    el.selectedIndex = -1;\n  }\n}\nfunction getValue(el) {\n  return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n  const key = checked ? \"_trueValue\" : \"_falseValue\";\n  return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n  created(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"created\");\n  },\n  mounted(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"mounted\");\n  },\n  beforeUpdate(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n  },\n  updated(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"updated\");\n  }\n};\nfunction resolveDynamicModel(tagName, type) {\n  switch (tagName) {\n    case \"SELECT\":\n      return vModelSelect;\n    case \"TEXTAREA\":\n      return vModelText;\n    default:\n      switch (type) {\n        case \"checkbox\":\n          return vModelCheckbox;\n        case \"radio\":\n          return vModelRadio;\n        default:\n          return vModelText;\n      }\n  }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n  const modelToUse = resolveDynamicModel(\n    el.tagName,\n    vnode.props && vnode.props.type\n  );\n  const fn = modelToUse[hook];\n  fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n  vModelText.getSSRProps = ({ value }) => ({ value });\n  vModelRadio.getSSRProps = ({ value }, vnode) => {\n    if (vnode.props && looseEqual(vnode.props.value, value)) {\n      return { checked: true };\n    }\n  };\n  vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n    if (isArray(value)) {\n      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n        return { checked: true };\n      }\n    } else if (isSet(value)) {\n      if (vnode.props && value.has(vnode.props.value)) {\n        return { checked: true };\n      }\n    } else if (value) {\n      return { checked: true };\n    }\n  };\n  vModelDynamic.getSSRProps = (binding, vnode) => {\n    if (typeof vnode.type !== \"string\") {\n      return;\n    }\n    const modelToUse = resolveDynamicModel(\n      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n      vnode.type.toUpperCase(),\n      vnode.props && vnode.props.type\n    );\n    if (modelToUse.getSSRProps) {\n      return modelToUse.getSSRProps(binding, vnode);\n    }\n  };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  const cache = fn._withMods || (fn._withMods = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers))\n        return;\n    }\n    return fn(event, ...args);\n  });\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  let globalKeyCodes;\n  let instance = null;\n  {\n    instance = getCurrentInstance();\n    if (compatUtils.isCompatEnabled(\"CONFIG_KEY_CODES\", instance)) {\n      if (instance) {\n        globalKeyCodes = instance.appContext.config.keyCodes;\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && modifiers.some((m) => /^\\d+$/.test(m))) {\n      compatUtils.warnDeprecation(\n        \"V_ON_KEYCODE_MODIFIER\",\n        instance\n      );\n    }\n  }\n  const cache = fn._withKeys || (fn._withKeys = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n      return fn(event);\n    }\n    {\n      const keyCode = String(event.keyCode);\n      if (compatUtils.isCompatEnabled(\n        \"V_ON_KEYCODE_MODIFIER\",\n        instance\n      ) && modifiers.some((mod) => mod == keyCode)) {\n        return fn(event);\n      }\n      if (globalKeyCodes) {\n        for (const mod of modifiers) {\n          const codes = globalKeyCodes[mod];\n          if (codes) {\n            const matches = isArray(codes) ? codes.some((code) => String(code) === keyCode) : String(codes) === keyCode;\n            if (matches) {\n              return fn(event);\n            }\n          }\n        }\n      }\n    }\n  });\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n  renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n  enabledHydration = true;\n  return renderer;\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n  ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n  const app = ensureRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (!container)\n      return;\n    const component = app._component;\n    if (!isFunction(component) && !component.render && !component.template) {\n      component.template = container.innerHTML;\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (let i = 0; i < container.attributes.length; i++) {\n          const attr = container.attributes[i];\n          if (attr.name !== \"v-cloak\" && /^(v-|:|@)/.test(attr.name)) {\n            compatUtils.warnDeprecation(\n              \"GLOBAL_MOUNT_CONTAINER\",\n              null\n            );\n            break;\n          }\n        }\n      }\n    }\n    container.innerHTML = \"\";\n    const proxy = mount(container, false, resolveRootNamespace(container));\n    if (container instanceof Element) {\n      container.removeAttribute(\"v-cloak\");\n      container.setAttribute(\"data-v-app\", \"\");\n    }\n    return proxy;\n  };\n  return app;\n};\nconst createSSRApp = (...args) => {\n  const app = ensureHydrationRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (container) {\n      return mount(container, true, resolveRootNamespace(container));\n    }\n  };\n  return app;\n};\nfunction resolveRootNamespace(container) {\n  if (container instanceof SVGElement) {\n    return \"svg\";\n  }\n  if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n    return \"mathml\";\n  }\n}\nfunction injectNativeTagCheck(app) {\n  Object.defineProperty(app.config, \"isNativeTag\", {\n    value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n    writable: false\n  });\n}\nfunction injectCompilerOptionsCheck(app) {\n  if (isRuntimeOnly()) {\n    const isCustomElement = app.config.isCustomElement;\n    Object.defineProperty(app.config, \"isCustomElement\", {\n      get() {\n        return isCustomElement;\n      },\n      set() {\n        warn(\n          `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n        );\n      }\n    });\n    const compilerOptions = app.config.compilerOptions;\n    const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n    Object.defineProperty(app.config, \"compilerOptions\", {\n      get() {\n        warn(msg);\n        return compilerOptions;\n      },\n      set() {\n        warn(msg);\n      }\n    });\n  }\n}\nfunction normalizeContainer(container) {\n  if (isString(container)) {\n    const res = document.querySelector(container);\n    if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n      warn(\n        `Failed to mount app: mount target selector \"${container}\" returned null.`\n      );\n    }\n    return res;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n    warn(\n      `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n    );\n  }\n  return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n  if (!ssrDirectiveInitialized) {\n    ssrDirectiveInitialized = true;\n    initVModelForSSR();\n    initVShowForSSR();\n  }\n} ;\n\nvar runtimeDom = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  BaseTransition: BaseTransition,\n  BaseTransitionPropsValidators: BaseTransitionPropsValidators,\n  Comment: Comment,\n  DeprecationTypes: DeprecationTypes,\n  EffectScope: EffectScope,\n  ErrorCodes: ErrorCodes,\n  ErrorTypeStrings: ErrorTypeStrings,\n  Fragment: Fragment,\n  KeepAlive: KeepAlive,\n  ReactiveEffect: ReactiveEffect,\n  Static: Static,\n  Suspense: Suspense,\n  Teleport: Teleport,\n  Text: Text,\n  TrackOpTypes: TrackOpTypes,\n  Transition: Transition,\n  TransitionGroup: TransitionGroup,\n  TriggerOpTypes: TriggerOpTypes,\n  VueElement: VueElement,\n  assertNumber: assertNumber,\n  callWithAsyncErrorHandling: callWithAsyncErrorHandling,\n  callWithErrorHandling: callWithErrorHandling,\n  camelize: camelize,\n  capitalize: capitalize,\n  cloneVNode: cloneVNode,\n  compatUtils: compatUtils,\n  computed: computed,\n  createApp: createApp,\n  createBlock: createBlock,\n  createCommentVNode: createCommentVNode,\n  createElementBlock: createElementBlock,\n  createElementVNode: createBaseVNode,\n  createHydrationRenderer: createHydrationRenderer,\n  createPropsRestProxy: createPropsRestProxy,\n  createRenderer: createRenderer,\n  createSSRApp: createSSRApp,\n  createSlots: createSlots,\n  createStaticVNode: createStaticVNode,\n  createTextVNode: createTextVNode,\n  createVNode: createVNode,\n  customRef: customRef,\n  defineAsyncComponent: defineAsyncComponent,\n  defineComponent: defineComponent,\n  defineCustomElement: defineCustomElement,\n  defineEmits: defineEmits,\n  defineExpose: defineExpose,\n  defineModel: defineModel,\n  defineOptions: defineOptions,\n  defineProps: defineProps,\n  defineSSRCustomElement: defineSSRCustomElement,\n  defineSlots: defineSlots,\n  devtools: devtools,\n  effect: effect,\n  effectScope: effectScope,\n  getCurrentInstance: getCurrentInstance,\n  getCurrentScope: getCurrentScope,\n  getTransitionRawChildren: getTransitionRawChildren,\n  guardReactiveProps: guardReactiveProps,\n  h: h,\n  handleError: handleError,\n  hasInjectionContext: hasInjectionContext,\n  hydrate: hydrate,\n  initCustomFormatter: initCustomFormatter,\n  initDirectivesForSSR: initDirectivesForSSR,\n  inject: inject,\n  isMemoSame: isMemoSame,\n  isProxy: isProxy,\n  isReactive: isReactive,\n  isReadonly: isReadonly,\n  isRef: isRef,\n  isRuntimeOnly: isRuntimeOnly,\n  isShallow: isShallow,\n  isVNode: isVNode,\n  markRaw: markRaw,\n  mergeDefaults: mergeDefaults,\n  mergeModels: mergeModels,\n  mergeProps: mergeProps,\n  nextTick: nextTick,\n  normalizeClass: normalizeClass,\n  normalizeProps: normalizeProps,\n  normalizeStyle: normalizeStyle,\n  onActivated: onActivated,\n  onBeforeMount: onBeforeMount,\n  onBeforeUnmount: onBeforeUnmount,\n  onBeforeUpdate: onBeforeUpdate,\n  onDeactivated: onDeactivated,\n  onErrorCaptured: onErrorCaptured,\n  onMounted: onMounted,\n  onRenderTracked: onRenderTracked,\n  onRenderTriggered: onRenderTriggered,\n  onScopeDispose: onScopeDispose,\n  onServerPrefetch: onServerPrefetch,\n  onUnmounted: onUnmounted,\n  onUpdated: onUpdated,\n  openBlock: openBlock,\n  popScopeId: popScopeId,\n  provide: provide,\n  proxyRefs: proxyRefs,\n  pushScopeId: pushScopeId,\n  queuePostFlushCb: queuePostFlushCb,\n  reactive: reactive,\n  readonly: readonly,\n  ref: ref,\n  registerRuntimeCompiler: registerRuntimeCompiler,\n  render: render,\n  renderList: renderList,\n  renderSlot: renderSlot,\n  resolveComponent: resolveComponent,\n  resolveDirective: resolveDirective,\n  resolveDynamicComponent: resolveDynamicComponent,\n  resolveFilter: resolveFilter,\n  resolveTransitionHooks: resolveTransitionHooks,\n  setBlockTracking: setBlockTracking,\n  setDevtoolsHook: setDevtoolsHook,\n  setTransitionHooks: setTransitionHooks,\n  shallowReactive: shallowReactive,\n  shallowReadonly: shallowReadonly,\n  shallowRef: shallowRef,\n  ssrContextKey: ssrContextKey,\n  ssrUtils: ssrUtils,\n  stop: stop,\n  toDisplayString: toDisplayString,\n  toHandlerKey: toHandlerKey,\n  toHandlers: toHandlers,\n  toRaw: toRaw,\n  toRef: toRef,\n  toRefs: toRefs,\n  toValue: toValue,\n  transformVNodeArgs: transformVNodeArgs,\n  triggerRef: triggerRef,\n  unref: unref,\n  useAttrs: useAttrs,\n  useCssModule: useCssModule,\n  useCssVars: useCssVars,\n  useModel: useModel,\n  useSSRContext: useSSRContext,\n  useSlots: useSlots,\n  useTransitionState: useTransitionState,\n  vModelCheckbox: vModelCheckbox,\n  vModelDynamic: vModelDynamic,\n  vModelRadio: vModelRadio,\n  vModelSelect: vModelSelect,\n  vModelText: vModelText,\n  vShow: vShow,\n  version: version,\n  warn: warn,\n  watch: watch,\n  watchEffect: watchEffect,\n  watchPostEffect: watchPostEffect,\n  watchSyncEffect: watchSyncEffect,\n  withAsyncContext: withAsyncContext,\n  withCtx: withCtx,\n  withDefaults: withDefaults,\n  withDirectives: withDirectives,\n  withKeys: withKeys,\n  withMemo: withMemo,\n  withModifiers: withModifiers,\n  withScopeId: withScopeId\n});\n\nfunction initDev() {\n  {\n    initCustomFormatter();\n  }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  initDev();\n}\nfunction wrappedCreateApp(...args) {\n  const app = createApp(...args);\n  if (compatUtils.isCompatEnabled(\"RENDER_FUNCTION\", null)) {\n    app.component(\"__compat__transition\", Transition);\n    app.component(\"__compat__transition-group\", TransitionGroup);\n    app.component(\"__compat__keep-alive\", KeepAlive);\n    app._context.directives.show = vShow;\n    app._context.directives.model = vModelDynamic;\n  }\n  return app;\n}\nfunction createCompatVue() {\n  const Vue = compatUtils.createCompatVue(createApp, wrappedCreateApp);\n  extend(Vue, runtimeDom);\n  return Vue;\n}\n\nconst Vue = createCompatVue();\nVue.compile = () => {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(\n      `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"@vue/compat/dist/vue.esm-bundler.js\".` )\n    );\n  }\n};\nvar Vue$1 = Vue;\n\nconst { configureCompat } = Vue$1;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue$1 as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  const _component_vue_advanced_chat = _resolveComponent(\"vue-advanced-chat\")!\n\n  return (_openBlock(), _createBlock(_component_vue_advanced_chat, {\n    \"current-user-id\": _ctx.currentUserId,\n    \"rooms-loaded\": _ctx.rooms.length > 0,\n    \"messages-loaded\": _ctx.messagesLoaded || null,\n    \"single-room\": \"true\",\n    rooms: JSON.stringify(_ctx.rooms),\n    \"room-id\": _ctx.rooms[0].roomId,\n    \"show-files\": \"false\",\n    \"show-emojis\": \"true\",\n    \"show-reaction-emojis\": \"false\",\n    \"show-audio\": \"false\",\n    messages: JSON.stringify(_ctx.messages),\n    \"message-actions\": \n      JSON.stringify([\n        {\n          name: 'replyMessage',\n          title: 'Répondre'\n        }\n      ])\n    ,\n    \"link-options\": JSON.stringify({ disabled: false, target: '_self' }),\n    \"text-messages\": \n      JSON.stringify({\n        ROOMS_EMPTY: 'Aucune conversation',\n        ROOM_EMPTY: 'Aucune conversation sélectionnée',\n        NEW_MESSAGES: 'Nouveaux messages',\n        MESSAGE_DELETED: 'Ce message a été supprimé',\n        MESSAGES_EMPTY: 'Aucun message',\n        CONVERSATION_STARTED: 'La conversation a commencée le :',\n        TYPE_MESSAGE: 'Tapez votre message',\n        SEARCH: 'Rechercher',\n        IS_ONLINE: 'est en ligne',\n        LAST_SEEN: 'dernière connexion ',\n        IS_TYPING: 'est en train de taper...'\n      })\n    ,\n    onSendMessage: _cache[0] || (_cache[0] = ($event: any) => (_ctx.sendMessage($event.detail[0])))\n  }, null, 8, [\"current-user-id\", \"rooms-loaded\", \"messages-loaded\", \"rooms\", \"room-id\", \"messages\", \"message-actions\", \"link-options\", \"text-messages\"]))\n}","<template>\n  <vue-advanced-chat\n    :current-user-id=\"currentUserId\"\n    :rooms-loaded=\"rooms.length > 0\"\n    :messages-loaded=\"messagesLoaded || null\"\n    single-room=\"true\"\n    :rooms=\"JSON.stringify(rooms)\"\n    :room-id=\"rooms[0].roomId\"\n    show-files=\"false\"\n    show-emojis=\"true\"\n    show-reaction-emojis=\"false\"\n    show-audio=\"false\"\n    :messages=\"JSON.stringify(messages)\"\n    :message-actions=\"\n      JSON.stringify([\n        {\n          name: 'replyMessage',\n          title: 'Répondre'\n        }\n      ])\n    \"\n    :link-options=\"JSON.stringify({ disabled: false, target: '_self' })\"\n    :text-messages=\"\n      JSON.stringify({\n        ROOMS_EMPTY: 'Aucune conversation',\n        ROOM_EMPTY: 'Aucune conversation sélectionnée',\n        NEW_MESSAGES: 'Nouveaux messages',\n        MESSAGE_DELETED: 'Ce message a été supprimé',\n        MESSAGES_EMPTY: 'Aucun message',\n        CONVERSATION_STARTED: 'La conversation a commencée le :',\n        TYPE_MESSAGE: 'Tapez votre message',\n        SEARCH: 'Rechercher',\n        IS_ONLINE: 'est en ligne',\n        LAST_SEEN: 'dernière connexion ',\n        IS_TYPING: 'est en train de taper...'\n      })\n    \"\n    @send-message=\"sendMessage($event.detail[0])\"\n  />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\nimport { Message, Room, register } from \"vue-advanced-chat\"\nregister()\n\ninterface BaseComponentData {\n  socket: WebSocket | null\n  rooms: Room[]\n  messagesLoaded: boolean\n  messages: Message[]\n  currentUserId: string | null\n}\n\nexport default defineComponent({\n  data(): BaseComponentData {\n    return {\n      socket: null,\n      rooms: [\n        {\n          roomId: \"global\",\n          roomName: \"\",\n          avatar: \"\",\n          users: []\n        }\n      ],\n      messagesLoaded: false,\n      messages: [],\n      currentUserId: null\n    }\n  },\n\n  mounted() {\n    // get room info\n    let roomInfoStr: string | null = \"\"\n    const roomInfoElm = document.getElementById(\"room-info\")\n    if (roomInfoElm) roomInfoStr = roomInfoElm.textContent\n    let roomInfo: any = null\n    if (roomInfoStr) roomInfo = JSON.parse(roomInfoStr)\n    else throw \"No room info provided\"\n    this.rooms = [\n      {\n        roomId: roomInfo.room_name,\n        roomName: roomInfo.room_title,\n        avatar: \"\",\n        // add fake users to make sure username are displayed in the chat (if less than two, name are not displayed)\n        users: [\n          {\n            _id: \"1\",\n            username: \"Fake user 1\",\n            avatar: \"assets/imgs/doe.png\",\n            status: {\n              state: \"online\",\n              lastChanged: \"today, 14:30\"\n            }\n          },\n          {\n            _id: \"2\",\n            username: \"Fake user 2\",\n            avatar: \"assets/imgs/snow.png\",\n            status: {\n              state: \"online\",\n              lastChanged: \"14 July, 20:00\"\n            }\n          },\n          {\n            _id: \"3\",\n            username: \"Fake user 3\",\n            avatar: \"assets/imgs/snow.png\",\n            status: {\n              state: \"online\",\n              lastChanged: \"14 July, 20:00\"\n            }\n          }\n        ]\n      }\n    ]\n    this.connect(roomInfo.room_name)\n    this.currentUserId = roomInfo.user_id\n  },\n\n  methods: {\n    connect(roomName: string) {\n      // connect to socket\n      let protocol = \"wss\"\n      if (window.location.protocol != \"https:\") protocol = \"ws\"\n      this.socket = new WebSocket(protocol + \"://\" + window.location.host + \"/ws/chat/\" + roomName + \"/\")\n      this.fetchMessages()\n\n      this.socket.onclose = () => {\n        console.log(\"Chat socket closed\")\n        // try to reconnect\n        // setTimeout(() => {\n        //   this.connect(roomName)\n        // }, 10000)\n      }\n    },\n\n    async fetchMessages() {\n      this.socket!.onmessage = (e) => {\n        const data = JSON.parse(e.data)\n        const type = data.type\n        // do not load messages in case of socket reconnect\n        if (type == \"initial\" && this.messagesLoaded) return\n        const newMessages = data.messages as Message[]\n        this.messages = [...this.messages, ...newMessages]\n        if (type == \"initial\") {\n          this.messagesLoaded = true\n        }\n      }\n    },\n\n    sendMessage({ content, replyMessage }: Message) {\n      /** send message to socket */\n      this.socket!.send(\n        JSON.stringify({\n          message: content,\n          replyTo: replyMessage ? replyMessage._id : null\n        })\n      )\n    }\n  },\n\n  computed: {\n    showAudio() {\n      return undefined\n    }\n  }\n})\n</script>\n\n<style>\n.vac-message-wrapper .vac-offset-current {\n  margin-left: 15%;\n}\n.vac-message-wrapper .vac-message-box {\n  max-width: 80%;\n}\n</style>\n","function makeMap$2(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list2 = str.split(\",\");\n  for (let i = 0; i < list2.length; i++) {\n    map[list2[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nconst NOOP$1 = () => {\n};\nconst extend$2 = Object.assign;\nconst hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nconst hasOwn$1 = (val, key) => hasOwnProperty$3.call(val, key);\nconst isArray$2 = Array.isArray;\nconst isMap$1 = (val) => toTypeString$1(val) === \"[object Map]\";\nconst isFunction$2 = (val) => typeof val === \"function\";\nconst isString$2 = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject$2 = (val) => val !== null && typeof val === \"object\";\nconst objectToString$1 = Object.prototype.toString;\nconst toTypeString$1 = (value) => objectToString$1.call(value);\nconst toRawType = (value) => {\n  return toTypeString$1(value).slice(8, -1);\n};\nconst isIntegerKey = (key) => isString$2(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst hasChanged$1 = (value, oldValue) => !Object.is(value, oldValue);\nconst def$1 = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.active = true;\n    this.effects = [];\n    this.cleanups = [];\n    if (!detached && activeEffectScope) {\n      this.parent = activeEffectScope;\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n    }\n  }\n  run(fn) {\n    if (this.active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    }\n  }\n  on() {\n    activeEffectScope = this;\n  }\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this.active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.active = false;\n    }\n  }\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n  if (scope && scope.active) {\n    scope.effects.push(effect);\n  }\n}\nconst createDep = (effects) => {\n  const dep = new Set(effects);\n  dep.w = 0;\n  dep.n = 0;\n  return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].w |= trackOpBit;\n    }\n  }\n};\nconst finalizeDepMarkers = (effect) => {\n  const { deps } = effect;\n  if (deps.length) {\n    let ptr = 0;\n    for (let i = 0; i < deps.length; i++) {\n      const dep = deps[i];\n      if (wasTracked(dep) && !newTracked(dep)) {\n        dep.delete(effect);\n      } else {\n        deps[ptr++] = dep;\n      }\n      dep.w &= ~trackOpBit;\n      dep.n &= ~trackOpBit;\n    }\n    deps.length = ptr;\n  }\n};\nconst targetMap = /* @__PURE__ */ new WeakMap();\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol(\"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(\"\");\nclass ReactiveEffect {\n  constructor(fn, scheduler = null, scope) {\n    this.fn = fn;\n    this.scheduler = scheduler;\n    this.active = true;\n    this.deps = [];\n    this.parent = void 0;\n    recordEffectScope(this, scope);\n  }\n  run() {\n    if (!this.active) {\n      return this.fn();\n    }\n    let parent = activeEffect;\n    let lastShouldTrack = shouldTrack;\n    while (parent) {\n      if (parent === this) {\n        return;\n      }\n      parent = parent.parent;\n    }\n    try {\n      this.parent = activeEffect;\n      activeEffect = this;\n      shouldTrack = true;\n      trackOpBit = 1 << ++effectTrackDepth;\n      if (effectTrackDepth <= maxMarkerBits) {\n        initDepMarkers(this);\n      } else {\n        cleanupEffect(this);\n      }\n      return this.fn();\n    } finally {\n      if (effectTrackDepth <= maxMarkerBits) {\n        finalizeDepMarkers(this);\n      }\n      trackOpBit = 1 << --effectTrackDepth;\n      activeEffect = this.parent;\n      shouldTrack = lastShouldTrack;\n      this.parent = void 0;\n      if (this.deferStop) {\n        this.stop();\n      }\n    }\n  }\n  stop() {\n    if (activeEffect === this) {\n      this.deferStop = true;\n    } else if (this.active) {\n      cleanupEffect(this);\n      if (this.onStop) {\n        this.onStop();\n      }\n      this.active = false;\n    }\n  }\n}\nfunction cleanupEffect(effect) {\n  const { deps } = effect;\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].delete(effect);\n    }\n    deps.length = 0;\n  }\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n  if (shouldTrack && activeEffect) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = createDep());\n    }\n    trackEffects(dep);\n  }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n  let shouldTrack2 = false;\n  if (effectTrackDepth <= maxMarkerBits) {\n    if (!newTracked(dep)) {\n      dep.n |= trackOpBit;\n      shouldTrack2 = !wasTracked(dep);\n    }\n  } else {\n    shouldTrack2 = !dep.has(activeEffect);\n  }\n  if (shouldTrack2) {\n    dep.add(activeEffect);\n    activeEffect.deps.push(dep);\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  let deps = [];\n  if (type === \"clear\") {\n    deps = [...depsMap.values()];\n  } else if (key === \"length\" && isArray$2(target)) {\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || key2 >= newValue) {\n        deps.push(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      deps.push(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray$2(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap$1(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          deps.push(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray$2(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap$1(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap$1(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  if (deps.length === 1) {\n    if (deps[0]) {\n      {\n        triggerEffects(deps[0]);\n      }\n    }\n  } else {\n    const effects = [];\n    for (const dep of deps) {\n      if (dep) {\n        effects.push(...dep);\n      }\n    }\n    {\n      triggerEffects(createDep(effects));\n    }\n  }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n  const effects = isArray$2(dep) ? dep : [...dep];\n  for (const effect of effects) {\n    if (effect.computed) {\n      triggerEffect(effect);\n    }\n  }\n  for (const effect of effects) {\n    if (!effect.computed) {\n      triggerEffect(effect);\n    }\n  }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n  if (effect !== activeEffect || effect.allowRecurse) {\n    if (effect.scheduler) {\n      effect.scheduler();\n    } else {\n      effect.run();\n    }\n  }\n}\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap$2(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst get$1 = /* @__PURE__ */ createGetter();\nconst shallowGet = /* @__PURE__ */ createGetter(false, true);\nconst readonlyGet = /* @__PURE__ */ createGetter(true);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      const res = toRaw(this)[key].apply(this, args);\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction createGetter(isReadonly2 = false, shallow = false) {\n  return function get2(target, key, receiver) {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return shallow;\n    } else if (key === \"__v_raw\" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n      return target;\n    }\n    const targetIsArray = isArray$2(target);\n    if (!isReadonly2 && targetIsArray && hasOwn$1(arrayInstrumentations, key)) {\n      return Reflect.get(arrayInstrumentations, key, receiver);\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject$2(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  };\n}\nconst set$1 = /* @__PURE__ */ createSetter();\nconst shallowSet = /* @__PURE__ */ createSetter(true);\nfunction createSetter(shallow = false) {\n  return function set2(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n      return false;\n    }\n    if (!shallow && !isReadonly(value)) {\n      if (!isShallow(value)) {\n        value = toRaw(value);\n        oldValue = toRaw(oldValue);\n      }\n      if (!isArray$2(target) && isRef(oldValue) && !isRef(value)) {\n        oldValue.value = value;\n        return true;\n      }\n    }\n    const hadKey = isArray$2(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn$1(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged$1(value, oldValue)) {\n        trigger(target, \"set\", key, value);\n      }\n    }\n    return result;\n  };\n}\nfunction deleteProperty(target, key) {\n  const hadKey = hasOwn$1(target, key);\n  target[key];\n  const result = Reflect.deleteProperty(target, key);\n  if (result && hadKey) {\n    trigger(target, \"delete\", key, void 0);\n  }\n  return result;\n}\nfunction has(target, key) {\n  const result = Reflect.has(target, key);\n  if (!isSymbol(key) || !builtInSymbols.has(key)) {\n    track(target, \"has\", key);\n  }\n  return result;\n}\nfunction ownKeys(target) {\n  track(target, \"iterate\", isArray$2(target) ? \"length\" : ITERATE_KEY);\n  return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n  get: get$1,\n  set: set$1,\n  deleteProperty,\n  has,\n  ownKeys\n};\nconst readonlyHandlers = {\n  get: readonlyGet,\n  set(target, key) {\n    return true;\n  },\n  deleteProperty(target, key) {\n    return true;\n  }\n};\nconst shallowReactiveHandlers = /* @__PURE__ */ extend$2({}, mutableHandlers, {\n  get: shallowGet,\n  set: shallowSet\n});\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1$1(target, key, isReadonly2 = false, isShallow2 = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly2) {\n    if (key !== rawKey) {\n      track(rawTarget, \"get\", key);\n    }\n    track(rawTarget, \"get\", rawKey);\n  }\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has$1(key, isReadonly2 = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly2) {\n    if (key !== rawKey) {\n      track(rawTarget, \"has\", key);\n    }\n    track(rawTarget, \"has\", rawKey);\n  }\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly2 = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly2 && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set$1$1(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  }\n  const oldValue = get2.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged$1(value, oldValue)) {\n    trigger(target, \"set\", key, value);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  }\n  get2 ? get2.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0);\n  }\n  return result;\n}\nfunction createForEach(isReadonly2, isShallow2) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap$1(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n    return {\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    return type === \"delete\" ? false : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get$1$1(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n    readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n    shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n  const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(hasOwn$1(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\nfunction readonly(target) {\n  return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject$2(target)) {\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0) {\n    return target;\n  }\n  const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  def$1(value, \"__v_skip\", true);\n  return value;\n}\nconst toReactive = (value) => isObject$2(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject$2(value) ? readonly(value) : value;\nfunction trackRefValue(ref) {\n  if (shouldTrack && activeEffect) {\n    ref = toRaw(ref);\n    {\n      trackEffects(ref.dep || (ref.dep = createDep()));\n    }\n  }\n}\nfunction triggerRefValue(ref, newVal) {\n  ref = toRaw(ref);\n  if (ref.dep) {\n    {\n      triggerEffects(ref.dep);\n    }\n  }\n}\nfunction isRef(r) {\n  return !!(r && r.__v_isRef === true);\n}\nfunction unref(ref) {\n  return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass ComputedRefImpl {\n  constructor(getter, _setter, isReadonly2, isSSR) {\n    this._setter = _setter;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this._dirty = true;\n    this.effect = new ReactiveEffect(getter, () => {\n      if (!this._dirty) {\n        this._dirty = true;\n        triggerRefValue(this);\n      }\n    });\n    this.effect.computed = this;\n    this.effect.active = this._cacheable = !isSSR;\n    this[\"__v_isReadonly\"] = isReadonly2;\n  }\n  get value() {\n    const self2 = toRaw(this);\n    trackRefValue(self2);\n    if (self2._dirty || !self2._cacheable) {\n      self2._dirty = false;\n      self2._value = self2.effect.run();\n    }\n    return self2._value;\n  }\n  set value(newValue) {\n    this._setter(newValue);\n  }\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  const onlyGetter = isFunction$2(getterOrOptions);\n  if (onlyGetter) {\n    getter = getterOrOptions;\n    setter = NOOP$1;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n  return cRef;\n}\nfunction makeMap$1(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list2 = str.split(\",\");\n  for (let i = 0; i < list2.length; i++) {\n    map[list2[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nfunction normalizeStyle(value) {\n  if (isArray$1(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString$1(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString$1(value)) {\n    return value;\n  } else if (isObject$1(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:(.+)/;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString$1(value)) {\n    res = value;\n  } else if (isArray$1(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject$1(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props)\n    return null;\n  let { class: klass, style } = props;\n  if (klass && !isString$1(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\nconst toDisplayString = (val) => {\n  return isString$1(val) ? val : val == null ? \"\" : isArray$1(val) || isObject$1(val) && (val.toString === objectToString || !isFunction$1(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (val && val.__v_isRef) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {\n        entries[`${key} =>`] = val2;\n        return entries;\n      }, {})\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()]\n    };\n  } else if (isObject$1(val) && !isArray$1(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst onRE$1 = /^on[^a-z]/;\nconst isOn$1 = (key) => onRE$1.test(key);\nconst isModelListener$1 = (key) => key.startsWith(\"onUpdate:\");\nconst extend$1 = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty$2.call(val, key);\nconst isArray$1 = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isFunction$1 = (val) => typeof val === \"function\";\nconst isString$1 = (val) => typeof val === \"string\";\nconst isObject$1 = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return isObject$1(val) && isFunction$1(val.then) && isFunction$1(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isReservedProp = /* @__PURE__ */ makeMap$1(\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst cacheStringFunction$1 = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE$1 = /-(\\w)/g;\nconst camelize$1 = cacheStringFunction$1((str) => {\n  return str.replace(camelizeRE$1, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE$1 = /\\B([A-Z])/g;\nconst hyphenate$1 = cacheStringFunction$1((str) => str.replace(hyphenateRE$1, \"-$1\").toLowerCase());\nconst capitalize$1 = cacheStringFunction$1((str) => str.charAt(0).toUpperCase() + str.slice(1));\nconst toHandlerKey = cacheStringFunction$1((str) => str ? `on${capitalize$1(str)}` : ``);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](arg);\n  }\n};\nconst def = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nconst toNumber$1 = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nfunction callWithErrorHandling(fn, instance2, type, args) {\n  let res;\n  try {\n    res = args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance2, type);\n  }\n  return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance2, type, args) {\n  if (isFunction$1(fn)) {\n    const res = callWithErrorHandling(fn, instance2, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance2, type);\n      });\n    }\n    return res;\n  }\n  const values = [];\n  for (let i = 0; i < fn.length; i++) {\n    values.push(callWithAsyncErrorHandling(fn[i], instance2, type, args));\n  }\n  return values;\n}\nfunction handleError(err, instance2, type, throwInDev = true) {\n  const contextVNode = instance2 ? instance2.vnode : null;\n  if (instance2) {\n    let cur = instance2.parent;\n    const exposedInstance = instance2.proxy;\n    const errorInfo = type;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    const appErrorHandler = instance2.appContext.config.errorHandler;\n    if (appErrorHandler) {\n      callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]);\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n  {\n    console.error(err);\n  }\n}\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPreFlushCbs = [];\nlet activePreFlushCbs = null;\nlet preFlushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nlet currentPreFlushParentJob = null;\nfunction nextTick(fn) {\n  const p2 = currentFlushPromise || resolvedPromise;\n  return fn ? p2.then(this ? fn.bind(this) : fn) : p2;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJobId = getId(queue[middle]);\n    middleJobId < id ? start = middle + 1 : end = middle;\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if ((!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) && job !== currentPreFlushParentJob) {\n    if (job.id == null) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(job.id), 0, job);\n    }\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!isFlushing && !isFlushPending) {\n    isFlushPending = true;\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction invalidateJob(job) {\n  const i = queue.indexOf(job);\n  if (i > flushIndex) {\n    queue.splice(i, 1);\n  }\n}\nfunction queueCb(cb, activeQueue, pendingQueue, index) {\n  if (!isArray$1(cb)) {\n    if (!activeQueue || !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {\n      pendingQueue.push(cb);\n    }\n  } else {\n    pendingQueue.push(...cb);\n  }\n  queueFlush();\n}\nfunction queuePreFlushCb(cb) {\n  queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);\n}\nfunction queuePostFlushCb(cb) {\n  queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);\n}\nfunction flushPreFlushCbs(seen, parentJob = null) {\n  if (pendingPreFlushCbs.length) {\n    currentPreFlushParentJob = parentJob;\n    activePreFlushCbs = [...new Set(pendingPreFlushCbs)];\n    pendingPreFlushCbs.length = 0;\n    for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {\n      activePreFlushCbs[preFlushIndex]();\n    }\n    activePreFlushCbs = null;\n    preFlushIndex = 0;\n    currentPreFlushParentJob = null;\n    flushPreFlushCbs(seen, parentJob);\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  flushPreFlushCbs();\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)];\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      activePostFlushCbs[postFlushIndex]();\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nfunction flushJobs(seen) {\n  isFlushPending = false;\n  isFlushing = true;\n  flushPreFlushCbs(seen);\n  queue.sort((a, b) => getId(a) - getId(b));\n  const check = NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && job.active !== false) {\n        if (false)\n          ;\n        callWithErrorHandling(job, null, 14);\n      }\n    }\n  } finally {\n    flushIndex = 0;\n    queue.length = 0;\n    flushPostFlushCbs();\n    isFlushing = false;\n    currentFlushPromise = null;\n    if (queue.length || pendingPreFlushCbs.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction emit$1(instance2, event, ...rawArgs) {\n  if (instance2.isUnmounted)\n    return;\n  const props = instance2.vnode.props || EMPTY_OBJ;\n  let args = rawArgs;\n  const isModelListener2 = event.startsWith(\"update:\");\n  const modelArg = isModelListener2 && event.slice(7);\n  if (modelArg && modelArg in props) {\n    const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n    const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n    if (trim) {\n      args = rawArgs.map((a) => a.trim());\n    }\n    if (number) {\n      args = rawArgs.map(toNumber$1);\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || props[handlerName = toHandlerKey(camelize$1(event))];\n  if (!handler && isModelListener2) {\n    handler = props[handlerName = toHandlerKey(hyphenate$1(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(handler, instance2, 6, args);\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance2.emitted) {\n      instance2.emitted = {};\n    } else if (instance2.emitted[handlerName]) {\n      return;\n    }\n    instance2.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(onceHandler, instance2, 6, args);\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (!isFunction$1(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend$1(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    cache.set(comp, null);\n    return null;\n  }\n  if (isArray$1(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend$1(normalized, raw);\n  }\n  cache.set(comp, normalized);\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn$1(key)) {\n    return false;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate$1(key)) || hasOwn(options, key);\n}\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance2) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance2;\n  currentScopeId = instance2 && instance2.type.__scopeId || null;\n  return prev;\n}\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx)\n    return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    const res = fn(...args);\n    setCurrentRenderingInstance(prevInstance);\n    if (renderFnWithContext._d) {\n      setBlockTracking(1);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  return renderFnWithContext;\n}\nfunction markAttrsAccessed() {\n}\nfunction renderComponentRoot(instance2) {\n  const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render: render2, renderCache, data, setupState, ctx, inheritAttrs } = instance2;\n  let result;\n  let fallthroughAttrs;\n  const prev = setCurrentRenderingInstance(instance2);\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      result = normalizeVNode(render2.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n      fallthroughAttrs = attrs;\n    } else {\n      const render3 = Component;\n      if (false)\n        ;\n      result = normalizeVNode(render3.length > 1 ? render3(props, false ? {\n        get attrs() {\n          markAttrsAccessed();\n          return attrs;\n        },\n        slots,\n        emit\n      } : { attrs, slots, emit }) : render3(props, null));\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance2, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener$1)) {\n          fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n        }\n        root = cloneVNode(root, fallthroughAttrs);\n      }\n    }\n  }\n  if (vnode.dirs) {\n    root = cloneVNode(root);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    root.transition = vnode.transition;\n  }\n  {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn$1(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener$1(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent && parent.subTree === vnode) {\n    (vnode = parent.vnode).el = el;\n    parent = parent.parent;\n  }\n}\nconst isSuspense = (type) => type.__isSuspense;\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray$1(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction provide(key, value) {\n  if (!currentInstance)\n    ;\n  else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance2 = currentInstance || currentRenderingInstance;\n  if (instance2) {\n    const provides = instance2.parent == null ? instance2.vnode.appContext && instance2.vnode.appContext.provides : instance2.parent.provides;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction$1(defaultValue) ? defaultValue.call(instance2.proxy) : defaultValue;\n    } else\n      ;\n  }\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush: flush2, onTrack, onTrigger } = EMPTY_OBJ) {\n  const instance2 = currentInstance;\n  let getter;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => source;\n    deep = true;\n  } else if (isArray$1(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return traverse(s);\n      } else if (isFunction$1(s)) {\n        return callWithErrorHandling(s, instance2, 2);\n      } else\n        ;\n    });\n  } else if (isFunction$1(source)) {\n    if (cb) {\n      getter = () => callWithErrorHandling(source, instance2, 2);\n    } else {\n      getter = () => {\n        if (instance2 && instance2.isUnmounted) {\n          return;\n        }\n        if (cleanup) {\n          cleanup();\n        }\n        return callWithAsyncErrorHandling(source, instance2, 3, [onCleanup]);\n      };\n    }\n  } else {\n    getter = NOOP;\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    getter = () => traverse(baseGetter());\n  }\n  let cleanup;\n  let onCleanup = (fn) => {\n    cleanup = effect.onStop = () => {\n      callWithErrorHandling(fn, instance2, 4);\n    };\n  };\n  if (isInSSRComponentSetup) {\n    onCleanup = NOOP;\n    if (!cb) {\n      getter();\n    } else if (immediate) {\n      callWithAsyncErrorHandling(cb, instance2, 3, [\n        getter(),\n        isMultiSource ? [] : void 0,\n        onCleanup\n      ]);\n    }\n    return NOOP;\n  }\n  let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n  const job = () => {\n    if (!effect.active) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n        if (cleanup) {\n          cleanup();\n        }\n        callWithAsyncErrorHandling(cb, instance2, 3, [\n          newValue,\n          oldValue === INITIAL_WATCHER_VALUE ? void 0 : oldValue,\n          onCleanup\n        ]);\n        oldValue = newValue;\n      }\n    } else {\n      effect.run();\n    }\n  };\n  job.allowRecurse = !!cb;\n  let scheduler;\n  if (flush2 === \"sync\") {\n    scheduler = job;\n  } else if (flush2 === \"post\") {\n    scheduler = () => queuePostRenderEffect(job, instance2 && instance2.suspense);\n  } else {\n    scheduler = () => queuePreFlushCb(job);\n  }\n  const effect = new ReactiveEffect(getter, scheduler);\n  if (cb) {\n    if (immediate) {\n      job();\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (flush2 === \"post\") {\n    queuePostRenderEffect(effect.run.bind(effect), instance2 && instance2.suspense);\n  } else {\n    effect.run();\n  }\n  return () => {\n    effect.stop();\n    if (instance2 && instance2.scope) {\n      remove(instance2.scope.effects, effect);\n    }\n  };\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString$1(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction$1(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const cur = currentInstance;\n  setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  if (cur) {\n    setCurrentInstance(cur);\n  } else {\n    unsetCurrentInstance();\n  }\n  return res;\n}\nfunction createPathGetter(ctx, path2) {\n  const segments = path2.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\nfunction traverse(value, seen) {\n  if (!isObject$1(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  if (isRef(value)) {\n    traverse(value.value, seen);\n  } else if (isArray$1(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], seen);\n    }\n  }\n  return value;\n}\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: {\n    mode: String,\n    appear: Boolean,\n    persisted: Boolean,\n    onBeforeEnter: TransitionHookValidator,\n    onEnter: TransitionHookValidator,\n    onAfterEnter: TransitionHookValidator,\n    onEnterCancelled: TransitionHookValidator,\n    onBeforeLeave: TransitionHookValidator,\n    onLeave: TransitionHookValidator,\n    onAfterLeave: TransitionHookValidator,\n    onLeaveCancelled: TransitionHookValidator,\n    onBeforeAppear: TransitionHookValidator,\n    onAppear: TransitionHookValidator,\n    onAfterAppear: TransitionHookValidator,\n    onAppearCancelled: TransitionHookValidator\n  },\n  setup(props, { slots }) {\n    const instance2 = getCurrentInstance();\n    const state = useTransitionState();\n    let prevTransitionKey;\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      let child = children[0];\n      if (children.length > 1) {\n        for (const c of children) {\n          if (c.type !== Comment) {\n            child = c;\n            break;\n          }\n        }\n      }\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getKeepAliveChild(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance2);\n      setTransitionHooks(innerChild, enterHooks);\n      const oldChild = instance2.subTree;\n      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n      let transitionKeyChanged = false;\n      const { getTransitionKey } = innerChild.type;\n      if (getTransitionKey) {\n        const key = getTransitionKey();\n        if (prevTransitionKey === void 0) {\n          prevTransitionKey = key;\n        } else if (key !== prevTransitionKey) {\n          prevTransitionKey = key;\n          transitionKeyChanged = true;\n        }\n      }\n      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n        const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance2);\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\") {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            instance2.update();\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el._leaveCb = () => {\n              earlyRemove();\n              el._leaveCb = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance2) {\n  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook2 = (hook, args) => {\n    hook && callWithAsyncErrorHandling(hook, instance2, 9, args);\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook2(hook, args);\n    if (isArray$1(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1))\n        done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el._leaveCb) {\n        el._leaveCb(true);\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {\n        leavingVNode.el._leaveCb();\n      }\n      callHook2(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el._enterCb = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        if (cancelled) {\n          callHook2(cancelHook, [el]);\n        } else {\n          callHook2(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el._enterCb = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove2) {\n      const key2 = String(vnode.key);\n      if (el._enterCb) {\n        el._enterCb(true);\n      }\n      if (state.isUnmounting) {\n        return remove2();\n      }\n      callHook2(onBeforeLeave, [el]);\n      let called = false;\n      const done = el._leaveCb = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        remove2();\n        if (cancelled) {\n          callHook2(onLeaveCancelled, [el]);\n        } else {\n          callHook2(onAfterLeave, [el]);\n        }\n        el._leaveCb = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      return resolveTransitionHooks(vnode2, props, state, instance2);\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getKeepAliveChild(vnode) {\n  return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128)\n        keyedFragmentCount++;\n      ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\nfunction defineComponent(options) {\n  return isFunction$1(options) ? { setup: options, name: options.name } : options;\n}\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(type, hook, keepAliveRoot, true);\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      if (target.isUnmounted) {\n        return;\n      }\n      pauseTracking();\n      setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      unsetCurrentInstance();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, hook, target);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\nfunction withDirectives(vnode, directives) {\n  const internalInstance = currentRenderingInstance;\n  if (internalInstance === null) {\n    return vnode;\n  }\n  const instance2 = getExposeProxy(internalInstance) || internalInstance.proxy;\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (isFunction$1(dir)) {\n      dir = {\n        mounted: dir,\n        updated: dir\n      };\n    }\n    if (dir.deep) {\n      traverse(value);\n    }\n    bindings.push({\n      dir,\n      instance: instance2,\n      value,\n      oldValue: void 0,\n      arg,\n      modifiers\n    });\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance2, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance2, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\nfunction resolveDynamicComponent(component) {\n  if (isString$1(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance2 = currentRenderingInstance || currentInstance;\n  if (instance2) {\n    const Component = instance2.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(Component, false);\n      if (selfName && (selfName === name || selfName === camelize$1(name) || selfName === capitalize$1(camelize$1(name)))) {\n        return Component;\n      }\n    }\n    const res = resolve(instance2[type] || Component[type], name) || resolve(instance2.appContext[type], name);\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    return res;\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize$1(name)] || registry[capitalize$1(camelize$1(name))]);\n}\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  if (isArray$1(source) || isString$1(source)) {\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n    }\n  } else if (typeof source === \"number\") {\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject$1(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(source, (item, i) => renderItem(item, i, void 0, cached && cached[i]));\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray$1(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.fn;\n    }\n  }\n  return slots;\n}\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n    return createVNode(\"slot\", name === \"default\" ? null : { name }, fallback && fallback());\n  }\n  let slot = slots[name];\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 ? 64 : -2);\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child))\n      return true;\n    if (child.type === Comment)\n      return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\nconst getPublicInstance = (i) => {\n  if (!i)\n    return null;\n  if (isStatefulComponent(i))\n    return getExposeProxy(i) || i.proxy;\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = /* @__PURE__ */ extend$1(/* @__PURE__ */ Object.create(null), {\n  $: (i) => i,\n  $el: (i) => i.vnode.el,\n  $data: (i) => i.data,\n  $props: (i) => i.props,\n  $attrs: (i) => i.attrs,\n  $slots: (i) => i.slots,\n  $refs: (i) => i.refs,\n  $parent: (i) => getPublicInstance(i.parent),\n  $root: (i) => getPublicInstance(i.root),\n  $emit: (i) => i.emit,\n  $options: (i) => resolveMergedOptions(i),\n  $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),\n  $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n  $watch: (i) => instanceWatch.bind(i)\n});\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance2 }, key) {\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance2;\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1:\n            return setupState[key];\n          case 2:\n            return data[key];\n          case 4:\n            return ctx[key];\n          case 3:\n            return props[key];\n        }\n      } else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n        accessCache[key] = 1;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2;\n        return data[key];\n      } else if ((normalizedProps = instance2.propsOptions[0]) && hasOwn(normalizedProps, key)) {\n        accessCache[key] = 3;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4;\n        return ctx[key];\n      } else if (shouldCacheAccess) {\n        accessCache[key] = 0;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance2, \"get\", key);\n      }\n      return publicGetter(instance2);\n    } else if ((cssModule = type.__cssModules) && (cssModule = cssModule[key])) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4;\n      return ctx[key];\n    } else if (globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)) {\n      {\n        return globalProperties[key];\n      }\n    } else\n      ;\n  },\n  set({ _: instance2 }, key, value) {\n    const { data, setupState, ctx } = instance2;\n    if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance2.props, key)) {\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance2) {\n      return false;\n    } else {\n      {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || setupState !== EMPTY_OBJ && hasOwn(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nlet shouldCacheAccess = true;\nfunction applyOptions(instance2) {\n  const options = resolveMergedOptions(instance2);\n  const publicThis = instance2.proxy;\n  const ctx = instance2.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook$1(options.beforeCreate, instance2, \"bc\");\n  }\n  const {\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    created,\n    beforeMount: beforeMount2,\n    mounted,\n    beforeUpdate,\n    updated: updated2,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted: unmounted2,\n    render: render2,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    expose,\n    inheritAttrs,\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = null;\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance2.appContext.config.unwrapInjectedRef);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction$1(methodHandler)) {\n        {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n      }\n    }\n  }\n  if (dataOptions) {\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!isObject$1(data))\n      ;\n    else {\n      instance2.data = reactive(data);\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get2 = isFunction$1(opt) ? opt.bind(publicThis, publicThis) : isFunction$1(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      const set2 = !isFunction$1(opt) && isFunction$1(opt.set) ? opt.set.bind(publicThis) : NOOP;\n      const c = computed({\n        get: get2,\n        set: set2\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction$1(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook$1(created, instance2, \"c\");\n  }\n  function registerLifecycleHook(register2, hook) {\n    if (isArray$1(hook)) {\n      hook.forEach((_hook) => register2(_hook.bind(publicThis)));\n    } else if (hook) {\n      register2(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount2);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated2);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted2);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  if (isArray$1(expose)) {\n    if (expose.length) {\n      const exposed = instance2.exposed || (instance2.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance2.exposed) {\n      instance2.exposed = {};\n    }\n  }\n  if (render2 && instance2.render === NOOP) {\n    instance2.render = render2;\n  }\n  if (inheritAttrs != null) {\n    instance2.inheritAttrs = inheritAttrs;\n  }\n  if (components)\n    instance2.components = components;\n  if (directives)\n    instance2.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n  if (isArray$1(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject$1(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(opt.from || key, opt.default, true);\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      if (unwrapRef) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          get: () => injected.value,\n          set: (v) => injected.value = v\n        });\n      } else {\n        ctx[key] = injected;\n      }\n    } else {\n      ctx[key] = injected;\n    }\n  }\n}\nfunction callHook$1(hook, instance2, type) {\n  callWithAsyncErrorHandling(isArray$1(hook) ? hook.map((h2) => h2.bind(instance2.proxy)) : hook.bind(instance2.proxy), instance2, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString$1(raw)) {\n    const handler = ctx[raw];\n    if (isFunction$1(handler)) {\n      watch(getter, handler);\n    }\n  } else if (isFunction$1(raw)) {\n    watch(getter, raw.bind(publicThis));\n  } else if (isObject$1(raw)) {\n    if (isArray$1(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction$1(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction$1(handler)) {\n        watch(getter, handler, raw);\n      }\n    }\n  } else\n    ;\n}\nfunction resolveMergedOptions(instance2) {\n  const base = instance2.type;\n  const { mixins, extends: extendsOptions } = base;\n  const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance2.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach((m) => mergeOptions(resolved, m, optionMergeStrategies, true));\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  cache.set(base, resolved);\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach((m) => mergeOptions(to, m, strats, true));\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\")\n      ;\n    else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeObjectOptions,\n  emits: mergeObjectOptions,\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  watch: mergeWatchOptions,\n  provide: mergeDataFn,\n  inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return extend$1(isFunction$1(to) ? to.call(this, this) : to, isFunction$1(from) ? from.call(this, this) : from);\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray$1(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend$1(extend$1(/* @__PURE__ */ Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to)\n    return from;\n  if (!from)\n    return to;\n  const merged = extend$1(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\nfunction initProps(instance2, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = {};\n  def(attrs, InternalObjectKey, 1);\n  instance2.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance2, rawProps, props, attrs);\n  for (const key in instance2.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (isStateful) {\n    instance2.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance2.type.props) {\n      instance2.props = attrs;\n    } else {\n      instance2.props = props;\n    }\n  }\n  instance2.attrs = attrs;\n}\nfunction updateProps(instance2, rawProps, rawPrevProps, optimized) {\n  const { props, attrs, vnode: { patchFlag } } = instance2;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance2.propsOptions;\n  let hasAttrsChanged = false;\n  if ((optimized || patchFlag > 0) && !(patchFlag & 16)) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance2.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance2.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize$1(key);\n            props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance2, false);\n          }\n        } else {\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance2, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || !hasOwn(rawProps, key) && ((kebabKey = hyphenate$1(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && (rawPrevProps[key] !== void 0 || rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(options, rawCurrentProps, key, void 0, instance2, true);\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && true) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance2, \"set\", \"$attrs\");\n  }\n}\nfunction setFullProps(instance2, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance2.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize$1(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance2.emitsOptions, key)) {\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance2, !hasOwn(castValues, key));\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance2, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && isFunction$1(defaultValue)) {\n        const { propsDefaults } = instance2;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          setCurrentInstance(instance2);\n          value = propsDefaults[key] = defaultValue.call(null, props);\n          unsetCurrentInstance();\n        }\n      } else {\n        value = defaultValue;\n      }\n    }\n    if (opt[0]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1] && (value === \"\" || value === hyphenate$1(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (!isFunction$1(comp)) {\n    const extendProps = (raw2) => {\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend$1(normalized, props);\n      if (keys)\n        needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    cache.set(comp, EMPTY_ARR);\n    return EMPTY_ARR;\n  }\n  if (isArray$1(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      const normalizedKey = camelize$1(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    for (const key in raw) {\n      const normalizedKey = camelize$1(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray$1(opt) || isFunction$1(opt) ? { type: opt } : opt;\n        if (prop) {\n          const booleanIndex = getTypeIndex(Boolean, prop.type);\n          const stringIndex = getTypeIndex(String, prop.type);\n          prop[0] = booleanIndex > -1;\n          prop[1] = stringIndex < 0 || booleanIndex < stringIndex;\n          if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n            needCastKeys.push(normalizedKey);\n          }\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  cache.set(comp, res);\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\") {\n    return true;\n  }\n  return false;\n}\nfunction getType(ctor) {\n  const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n  return match ? match[1] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n  if (isArray$1(expectedTypes)) {\n    return expectedTypes.findIndex((t) => isSameType(t, type));\n  } else if (isFunction$1(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n  return -1;\n}\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray$1(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance2) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key))\n      continue;\n    const value = rawSlots[key];\n    if (isFunction$1(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance2, children) => {\n  const normalized = normalizeSlotValue(children);\n  instance2.slots.default = () => normalized;\n};\nconst initSlots = (instance2, children) => {\n  if (instance2.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      instance2.slots = toRaw(children);\n      def(children, \"_\", type);\n    } else {\n      normalizeObjectSlots(children, instance2.slots = {});\n    }\n  } else {\n    instance2.slots = {};\n    if (children) {\n      normalizeVNodeSlots(instance2, children);\n    }\n  }\n  def(instance2.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance2, children, optimized) => {\n  const { vnode, slots } = instance2;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        extend$1(slots, children);\n        if (!optimized && type === 1) {\n          delete slots._;\n        }\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance2, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n        delete slots[key];\n      }\n    }\n  }\n};\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid = 0;\nfunction createAppAPI(render2, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction$1(rootComponent)) {\n      rootComponent = Object.assign({}, rootComponent);\n    }\n    if (rootProps != null && !isObject$1(rootProps)) {\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new Set();\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin))\n          ;\n        else if (plugin && isFunction$1(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction$1(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else\n          ;\n        return app;\n      },\n      mixin(mixin) {\n        {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          }\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!component) {\n          return context.components[name];\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive2) {\n        if (!directive2) {\n          return context.directives[name];\n        }\n        context.directives[name] = directive2;\n        return app;\n      },\n      mount(rootContainer, isHydrate, isSVG) {\n        if (!isMounted) {\n          const vnode = createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render2(vnode, rootContainer, isSVG);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          return getExposeProxy(vnode.component) || vnode.component.proxy;\n        }\n      },\n      unmount() {\n        if (isMounted) {\n          render2(null, app._container);\n          delete app._container.__vue_app__;\n        }\n      },\n      provide(key, value) {\n        context.provides[key] = value;\n        return app;\n      }\n    };\n    return app;\n  };\n}\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray$1(rawRef)) {\n    rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray$1(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  if (oldRef != null && oldRef !== ref) {\n    if (isString$1(oldRef)) {\n      refs[oldRef] = null;\n      if (hasOwn(setupState, oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction$1(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString$1(ref);\n    const _isRef = isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray$1(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray$1(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (hasOwn(setupState, ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k)\n                  refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (hasOwn(setupState, ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k)\n            refs[rawRef.k] = value;\n        } else\n          ;\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    }\n  }\n}\nconst queuePostRenderEffect = queueEffectWithSuspense;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, isSVG);\n        }\n        break;\n      case Fragment:\n        processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else if (shapeFlag & 6) {\n          processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else if (shapeFlag & 64) {\n          type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n        } else if (shapeFlag & 128) {\n          type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n        } else\n          ;\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(n2.el = hostCreateText(n2.children), container, anchor);\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(n2.el = hostCreateComment(n2.children || \"\"), container, anchor);\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, isSVG) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    isSVG = isSVG || n2.type === \"svg\";\n    if (n1 == null) {\n      mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    } else {\n      patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { type, props, shapeFlag, transition, patchFlag, dirs } = vnode;\n    if (vnode.el && hostCloneNode !== void 0 && patchFlag === -1) {\n      el = vnode.el = hostCloneNode(vnode.el);\n    } else {\n      el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n      if (shapeFlag & 8) {\n        hostSetElementText(el, vnode.children);\n      } else if (shapeFlag & 16) {\n        mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== \"foreignObject\", slotScopeIds, optimized);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      if (props) {\n        for (const key in props) {\n          if (key !== \"value\" && !isReservedProp(key)) {\n            hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n          }\n        }\n        if (\"value\" in props) {\n          hostPatchProp(el, \"value\", null, props.value);\n        }\n        if (vnodeHook = props.onVnodeBeforeMount) {\n          invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        }\n      }\n      setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (vnode === subTree) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    const areChildrenSVG = isSVG && n2.type !== \"foreignObject\";\n    if (dynamicChildren) {\n      patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n    } else if (!optimized) {\n      patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, isSVG);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, isSVG);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : fallbackContainer;\n      patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n    }\n  };\n  const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n    if (oldProps !== newProps) {\n      for (const key in newProps) {\n        if (isReservedProp(key))\n          continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n        }\n      }\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n          }\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && n1.dynamicChildren) {\n        patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n        if (n2.key != null || parentComponent && n2 === parentComponent.subTree) {\n          traverseStaticChildren(n1, n2, true);\n        }\n      } else {\n        patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n      } else {\n        mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n    const instance2 = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense);\n    if (isKeepAlive(initialVNode)) {\n      instance2.ctx.renderer = internals;\n    }\n    {\n      setupComponent(instance2);\n    }\n    if (instance2.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance2, setupRenderEffect);\n      if (!initialVNode.el) {\n        const placeholder = instance2.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n      return;\n    }\n    setupRenderEffect(instance2, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance2 = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance2.asyncDep && !instance2.asyncResolved) {\n        updateComponentPreRender(instance2, n2, optimized);\n        return;\n      } else {\n        instance2.next = n2;\n        invalidateJob(instance2.update);\n        instance2.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance2.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance2, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance2.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent } = instance2;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance2, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        toggleRecurse(instance2, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            instance2.subTree = renderComponentRoot(instance2);\n            hydrateNode(el, instance2.subTree, instance2, parentSuspense, null);\n          };\n          if (isAsyncWrapperVNode) {\n            initialVNode.type.__asyncLoader().then(\n              () => !instance2.isUnmounted && hydrateSubTree()\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          const subTree = instance2.subTree = renderComponentRoot(instance2);\n          patch(null, subTree, container, anchor, instance2, parentSuspense, isSVG);\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance2.a && queuePostRenderEffect(instance2.a, parentSuspense);\n        }\n        instance2.isMounted = true;\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance2;\n        let originNext = next;\n        let vnodeHook;\n        toggleRecurse(instance2, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance2, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        toggleRecurse(instance2, true);\n        const nextTree = renderComponentRoot(instance2);\n        const prevTree = instance2.subTree;\n        instance2.subTree = nextTree;\n        patch(\n          prevTree,\n          nextTree,\n          hostParentNode(prevTree.el),\n          getNextHostNode(prevTree),\n          instance2,\n          parentSuspense,\n          isSVG\n        );\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance2, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n        }\n      }\n    };\n    const effect = instance2.effect = new ReactiveEffect(\n      componentUpdateFn,\n      () => queueJob(update2),\n      instance2.scope\n    );\n    const update2 = instance2.update = () => effect.run();\n    update2.id = instance2.uid;\n    toggleRecurse(instance2, true);\n    update2();\n  };\n  const updateComponentPreRender = (instance2, nextVNode, optimized) => {\n    nextVNode.component = instance2;\n    const prevProps = instance2.vnode.props;\n    instance2.vnode = nextVNode;\n    instance2.next = null;\n    updateProps(instance2, nextVNode.props, prevProps, optimized);\n    updateSlots(instance2, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(void 0, instance2.update);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n    }\n    if (oldLength > newLength) {\n      unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n    } else {\n      mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(null, c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++)\n        newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove3 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove3();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove3, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n      } else if (dynamicChildren && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove2(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove2 = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance2, parentSuspense, doRemove) => {\n    const { bum, scope, update: update2, subTree, um } = instance2;\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    scope.stop();\n    if (update2) {\n      update2.active = false;\n      unmount(subTree, instance2, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    queuePostRenderEffect(() => {\n      instance2.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance2.asyncDep && !instance2.asyncResolved && instance2.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    return hostNextSibling(vnode.anchor || vnode.el);\n  };\n  const render2 = (vnode, container, isSVG) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n    }\n    flushPostFlushCbs();\n    container._vnode = vnode;\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove2,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(internals);\n  }\n  return {\n    render: render2,\n    hydrate,\n    createApp: createAppAPI(render2, hydrate)\n  };\n}\nfunction toggleRecurse({ effect, update: update2 }, allowed) {\n  effect.allowRecurse = update2.allowRecurse = allowed;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray$1(ch1) && isArray$1(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow)\n          traverseStaticChildren(c1, c2);\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p2 = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p2[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p2[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p2[v];\n  }\n  return result;\n}\nconst isTeleport = (type) => type.__isTeleport;\nconst Fragment = Symbol(void 0);\nconst Text = Symbol(void 0);\nconst Comment = Symbol(void 0);\nconst Static = Symbol(void 0);\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true));\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true));\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  return n1.type === n2.type && n1.key === n2.key;\n}\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n  return ref != null ? isString$1(ref) || isRef(ref) || isFunction$1(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString$1(children) ? 8 : 16;\n  }\n  if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock && (vnode.patchFlag > 0 || shapeFlag & 6) && vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nconst createVNode = _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(type, props, true);\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag |= -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString$1(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject$1(style)) {\n      if (isProxy(style) && !isArray$1(style)) {\n        style = extend$1({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString$1(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$1(type) ? 4 : isFunction$1(type) ? 2 : 0;\n  return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n  if (!props)\n    return null;\n  return isProxy(props) || InternalObjectKey in props ? extend$1({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n  const { props, ref, patchFlag, children } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? mergeRef && ref ? isArray$1(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children,\n    target: vnode.target,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition: vnode.transition,\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor\n  };\n  return cloned;\n}\nfunction createTextVNode(text2 = \" \", flag = 0) {\n  return createVNode(Text, null, text2, flag);\n}\nfunction createCommentVNode(text2 = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text2)) : createVNode(Comment, null, text2);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray$1(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      child.slice()\n    );\n  } else if (typeof child === \"object\") {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray$1(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !(InternalObjectKey in children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction$1(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn$1(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray$1(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance2, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance2, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance2 = {\n    uid: uid$1++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    next: null,\n    subTree: null,\n    effect: null,\n    update: null,\n    scope: new EffectScope(true),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    accessCache: null,\n    renderCache: [],\n    components: null,\n    directives: null,\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    emit: null,\n    emitted: null,\n    propsDefaults: EMPTY_OBJ,\n    inheritAttrs: type.inheritAttrs,\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  {\n    instance2.ctx = { _: instance2 };\n  }\n  instance2.root = parent ? parent.root : instance2;\n  instance2.emit = emit$1.bind(null, instance2);\n  if (vnode.ce) {\n    vnode.ce(instance2);\n  }\n  return instance2;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance2) => {\n  currentInstance = instance2;\n  instance2.scope.on();\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  currentInstance = null;\n};\nfunction isStatefulComponent(instance2) {\n  return instance2.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance2, isSSR = false) {\n  isInSSRComponentSetup = isSSR;\n  const { props, children } = instance2.vnode;\n  const isStateful = isStatefulComponent(instance2);\n  initProps(instance2, props, isStateful, isSSR);\n  initSlots(instance2, children);\n  const setupResult = isStateful ? setupStatefulComponent(instance2, isSSR) : void 0;\n  isInSSRComponentSetup = false;\n  return setupResult;\n}\nfunction setupStatefulComponent(instance2, isSSR) {\n  const Component = instance2.type;\n  instance2.accessCache = /* @__PURE__ */ Object.create(null);\n  instance2.proxy = markRaw(new Proxy(instance2.ctx, PublicInstanceProxyHandlers));\n  const { setup } = Component;\n  if (setup) {\n    const setupContext = instance2.setupContext = setup.length > 1 ? createSetupContext(instance2) : null;\n    setCurrentInstance(instance2);\n    pauseTracking();\n    const setupResult = callWithErrorHandling(setup, instance2, 0, [instance2.props, setupContext]);\n    resetTracking();\n    unsetCurrentInstance();\n    if (isPromise(setupResult)) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance2, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance2, 0);\n        });\n      } else {\n        instance2.asyncDep = setupResult;\n      }\n    } else {\n      handleSetupResult(instance2, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance2, isSSR);\n  }\n}\nfunction handleSetupResult(instance2, setupResult, isSSR) {\n  if (isFunction$1(setupResult)) {\n    if (instance2.type.__ssrInlineRender) {\n      instance2.ssrRender = setupResult;\n    } else {\n      instance2.render = setupResult;\n    }\n  } else if (isObject$1(setupResult)) {\n    instance2.setupState = proxyRefs(setupResult);\n  } else\n    ;\n  finishComponentSetup(instance2, isSSR);\n}\nlet compile$1;\nfunction finishComponentSetup(instance2, isSSR, skipOptions) {\n  const Component = instance2.type;\n  if (!instance2.render) {\n    if (!isSSR && compile$1 && !Component.render) {\n      const template = Component.template;\n      if (template) {\n        const { isCustomElement, compilerOptions } = instance2.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend$1(extend$1({\n          isCustomElement,\n          delimiters\n        }, compilerOptions), componentCompilerOptions);\n        Component.render = compile$1(template, finalCompilerOptions);\n      }\n    }\n    instance2.render = Component.render || NOOP;\n  }\n  {\n    setCurrentInstance(instance2);\n    pauseTracking();\n    applyOptions(instance2);\n    resetTracking();\n    unsetCurrentInstance();\n  }\n}\nfunction createAttrsProxy(instance2) {\n  return new Proxy(instance2.attrs, {\n    get(target, key) {\n      track(instance2, \"get\", \"$attrs\");\n      return target[key];\n    }\n  });\n}\nfunction createSetupContext(instance2) {\n  const expose = (exposed) => {\n    instance2.exposed = exposed || {};\n  };\n  let attrs;\n  {\n    return {\n      get attrs() {\n        return attrs || (attrs = createAttrsProxy(instance2));\n      },\n      slots: instance2.slots,\n      emit: instance2.emit,\n      expose\n    };\n  }\n}\nfunction getExposeProxy(instance2) {\n  if (instance2.exposed) {\n    return instance2.exposeProxy || (instance2.exposeProxy = new Proxy(proxyRefs(markRaw(instance2.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance2);\n        }\n      }\n    }));\n  }\n}\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction$1(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction isClassComponent(value) {\n  return isFunction$1(value) && \"__vccOpts\" in value;\n}\nconst computed = (getterOrOptions, debugOptions) => {\n  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject$1(propsOrChildren) && !isArray$1(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\nconst version = \"3.2.37\";\nfunction makeMap(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list2 = str.split(\",\");\n  for (let i = 0; i < list2.length; i++) {\n    map[list2[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nconst toNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, isSVG, is, props) => {\n    const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text2) => doc.createTextNode(text2),\n  createComment: (text2) => doc.createComment(text2),\n  setText: (node, text2) => {\n    node.nodeValue = text2;\n  },\n  setElementText: (el, text2) => {\n    el.textContent = text2;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  cloneNode(el) {\n    const cloned = el.cloneNode(true);\n    if (`_value` in el) {\n      cloned._value = el._value;\n    }\n    return cloned;\n  },\n  insertStaticContent(content2, parent, anchor, isSVG, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling))\n          break;\n      }\n    } else {\n      templateContainer.innerHTML = isSVG ? `<svg>${content2}</svg>` : content2;\n      const template = templateContainer.content;\n      if (isSVG) {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      before ? before.nextSibling : parent.firstChild,\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el._vtc;\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const isCssString = isString(next);\n  if (next && !isCssString) {\n    for (const key in next) {\n      setStyle(style, key, next[key]);\n    }\n    if (prev && !isString(prev)) {\n      for (const key in prev) {\n        if (next[key] == null) {\n          setStyle(style, key, \"\");\n        }\n      }\n    }\n  } else {\n    const currentDisplay = style.display;\n    if (isCssString) {\n      if (prev !== next) {\n        style.cssText = next;\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n    if (\"_vod\" in el) {\n      style.display = currentDisplay;\n    }\n  }\n}\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null)\n      val = \"\";\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(hyphenate(prefixed), val.replace(importantRE, \"\"), \"important\");\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize$1(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance2) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    const isBoolean = isSpecialBooleanAttr(key);\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, isBoolean ? \"\" : value);\n    }\n  }\n}\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (prevChildren) {\n      unmountChildren(prevChildren, parentComponent, parentSuspense);\n    }\n    el[key] = value == null ? \"\" : value;\n    return;\n  }\n  if (key === \"value\" && el.tagName !== \"PROGRESS\" && !el.tagName.includes(\"-\")) {\n    el._value = value;\n    const newValue = value == null ? \"\" : value;\n    if (el.value !== newValue || el.tagName === \"OPTION\") {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n  }\n  needRemove && el.removeAttribute(key);\n}\nconst [_getNow, skipTimestampCheck] = /* @__PURE__ */ (() => {\n  let _getNow2 = Date.now;\n  let skipTimestampCheck2 = false;\n  if (typeof window !== \"undefined\") {\n    if (Date.now() > document.createEvent(\"Event\").timeStamp) {\n      _getNow2 = performance.now.bind(performance);\n    }\n    const ffMatch = navigator.userAgent.match(/firefox\\/(\\d+)/i);\n    skipTimestampCheck2 = !!(ffMatch && Number(ffMatch[1]) <= 53);\n  }\n  return [_getNow2, skipTimestampCheck2];\n})();\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst reset = () => {\n  cachedNow = 0;\n};\nconst getNow = () => cachedNow || (p.then(reset), cachedNow = _getNow());\nfunction addEventListener$1(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance2 = null) {\n  const invokers = el._vei || (el._vei = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(nextValue, instance2);\n      addEventListener$1(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  return [hyphenate(name.slice(2)), options];\n}\nfunction createInvoker(initialValue, instance2) {\n  const invoker = (e) => {\n    const timeStamp = e.timeStamp || _getNow();\n    if (skipTimestampCheck || timeStamp >= invoker.attached - 1) {\n      callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance2, 5, [e]);\n    }\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n  } else {\n    return value;\n  }\n}\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (nativeOnRE.test(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\nfunction defineCustomElement(options, hydrate) {\n  const Comp = defineComponent(options);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, hydrate);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, hydrate) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    this._instance = null;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    if (this.shadowRoot && hydrate) {\n      hydrate(this._createVNode(), this.shadowRoot);\n    } else {\n      this.attachShadow({ mode: \"open\" });\n    }\n  }\n  connectedCallback() {\n    this._connected = true;\n    if (!this._instance) {\n      this._resolveDef();\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    nextTick(() => {\n      if (!this._connected) {\n        render(null, this.shadowRoot);\n        this._instance = null;\n      }\n    });\n  }\n  _resolveDef() {\n    if (this._resolved) {\n      return;\n    }\n    this._resolved = true;\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    }).observe(this, { attributes: true });\n    const resolve2 = (def2) => {\n      const { props, styles } = def2;\n      const hasOptions = !isArray(props);\n      const rawKeys = props ? hasOptions ? Object.keys(props) : props : [];\n      let numberProps;\n      if (hasOptions) {\n        for (const key in this._props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            this._props[key] = toNumber(this._props[key]);\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[key] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      for (const key of Object.keys(this)) {\n        if (key[0] !== \"_\") {\n          this._setProp(key, this[key], true, false);\n        }\n      }\n      for (const key of rawKeys.map(camelize)) {\n        Object.defineProperty(this, key, {\n          get() {\n            return this._getProp(key);\n          },\n          set(val) {\n            this._setProp(key, val);\n          }\n        });\n      }\n      this._applyStyles(styles);\n      this._update();\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      asyncDef().then(resolve2);\n    } else {\n      resolve2(this._def);\n    }\n  }\n  _setAttr(key) {\n    let value = this.getAttribute(key);\n    if (this._numberProps && this._numberProps[key]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelize(key), value, false);\n  }\n  _getProp(key) {\n    return this._props[key];\n  }\n  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n    if (val !== this._props[key]) {\n      this._props[key] = val;\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this.shadowRoot);\n  }\n  _createVNode() {\n    const vnode = createVNode(this._def, extend({}, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance2) => {\n        this._instance = instance2;\n        instance2.isCE = true;\n        instance2.emit = (event, ...args) => {\n          this.dispatchEvent(new CustomEvent(event, {\n            detail: args\n          }));\n        };\n        let parent = this;\n        while (parent = parent && (parent.parentNode || parent.host)) {\n          if (parent instanceof VueElement) {\n            instance2.parent = parent._instance;\n            break;\n          }\n        }\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles) {\n    if (styles) {\n      styles.forEach((css) => {\n        const s = document.createElement(\"style\");\n        s.textContent = css;\n        this.shadowRoot.appendChild(s);\n      });\n    }\n  }\n}\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend({}, BaseTransition.props, DOMTransitionPropsValidators);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const { name = \"v\", type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve2 = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve2]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve2);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve2 = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      forceReflow();\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve2);\n        }\n      });\n      callHook(onLeave, [el, resolve2]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el._vtc || (el._vtc = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const { _vtc } = el;\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el._vtc = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve2) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve2();\n    }\n  };\n  if (explicitTimeout) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve2();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(TRANSITION + \"Delay\");\n  const transitionDurations = getStyleProperties(TRANSITION + \"Duration\");\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(ANIMATION + \"Delay\");\n  const animationDurations = getStyleProperties(ANIMATION + \"Duration\");\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(styles[TRANSITION + \"Property\"]);\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst TransitionGroupImpl = {\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance2 = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(prevChildren[0].el, instance2.vnode.el, moveClass)) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el._moveCb = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      prevChildren = children;\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance2));\n        }\n      }\n      if (prevChildren) {\n        for (let i = 0; i < prevChildren.length; i++) {\n          const child = prevChildren[i];\n          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance2));\n          positionMap.set(child, child.el.getBoundingClientRect());\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el._moveCb) {\n    el._moveCb();\n  }\n  if (el._enterCb) {\n    el._enterCb();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  if (el._vtc) {\n    el._vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  return (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers))\n        return;\n    }\n    return fn(event, ...args);\n  };\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  return (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n      return fn(event);\n    }\n  };\n};\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el._vod = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue)\n      return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nfunction setDisplay(el, value) {\n  el.style.display = value ? el._vod : \"none\";\n}\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nvar _export_sfc = (sfc, props) => {\n  const target = sfc.__vccOpts || sfc;\n  for (const [key, val] of props) {\n    target[key] = val;\n  }\n  return target;\n};\nconst _sfc_main$q = {\n  name: \"AppLoader\",\n  props: {\n    show: { type: Boolean, default: false },\n    infinite: { type: Boolean, default: false },\n    type: { type: String, required: true },\n    messageId: { type: String, default: \"\" }\n  }\n};\nconst _hoisted_1$q = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_2$n = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_3$j = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_4$g = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_5$b = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_6$7 = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, {\n    name: \"vac-fade-spinner\",\n    appear: \"\"\n  }, {\n    default: withCtx(() => [\n      $props.show ? (openBlock(), createElementBlock(\"div\", {\n        key: 0,\n        class: normalizeClass([\"vac-loader-wrapper\", {\n          \"vac-container-center\": !$props.infinite,\n          \"vac-container-top\": $props.infinite\n        }])\n      }, [\n        $props.type === \"rooms\" ? renderSlot(_ctx.$slots, \"spinner-icon-rooms\", { key: 0 }, () => [\n          _hoisted_1$q\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"infinite-rooms\" ? renderSlot(_ctx.$slots, \"spinner-icon-infinite-rooms\", { key: 1 }, () => [\n          _hoisted_2$n\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"message-file\" ? renderSlot(_ctx.$slots, \"spinner-icon-message-file_\" + $props.messageId, { key: 2 }, () => [\n          _hoisted_3$j\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"room-file\" ? renderSlot(_ctx.$slots, \"spinner-icon-room-file\", { key: 3 }, () => [\n          _hoisted_4$g\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"messages\" ? renderSlot(_ctx.$slots, \"spinner-icon-messages\", { key: 4 }, () => [\n          _hoisted_5$b\n        ]) : createCommentVNode(\"\", true),\n        $props.type === \"infinite-messages\" ? renderSlot(_ctx.$slots, \"spinner-icon-infinite-messages\", { key: 5 }, () => [\n          _hoisted_6$7\n        ]) : createCommentVNode(\"\", true)\n      ], 2)) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  });\n}\nvar Loader = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"render\", _sfc_render$q]]);\nconst _sfc_main$p = {\n  name: \"SvgIcon\",\n  props: {\n    name: { type: String, default: null },\n    param: { type: String, default: null }\n  },\n  data() {\n    return {\n      svgItem: {\n        search: {\n          path: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\n        },\n        add: {\n          path: \"M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"\n        },\n        toggle: {\n          path: \"M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z\"\n        },\n        menu: {\n          path: \"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\"\n        },\n        close: {\n          path: \"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z\"\n        },\n        file: {\n          path: \"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n        },\n        paperclip: {\n          path: \"M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z\"\n        },\n        \"close-outline\": {\n          path: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"\n        },\n        send: {\n          path: \"M2,21L23,12L2,3V10L17,12L2,14V21Z\"\n        },\n        emoji: {\n          path: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"\n        },\n        document: {\n          path: \"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"\n        },\n        pencil: {\n          path: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\"\n        },\n        checkmark: {\n          path: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"\n        },\n        \"double-checkmark\": {\n          path: \"M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z\"\n        },\n        eye: {\n          path: \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"\n        },\n        dropdown: {\n          path: \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"\n        },\n        deleted: {\n          path: \"M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.85 4.63,15.55 5.68,16.91L16.91,5.68C15.55,4.63 13.85,4 12,4M12,20A8,8 0 0,0 20,12C20,10.15 19.37,8.45 18.32,7.09L7.09,18.32C8.45,19.37 10.15,20 12,20Z\"\n        },\n        microphone: {\n          size: \"large\",\n          path: \"M432.8,216.4v39.2c0,45.2-15.3,84.3-45.2,118.4c-29.8,33.2-67.3,52.8-111.6,57.9v40.9h78.4c5.1,0,10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6c0,5.1-1.7,10.2-6,13.6c-4.3,4.3-8.5,6-13.6,6H157.6c-5.1,0-10.2-1.7-13.6-6c-4.3-4.3-6-8.5-6-13.6c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6H236v-40.9c-44.3-5.1-81.8-23.9-111.6-57.9s-45.2-73.3-45.2-118.4v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6s10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6v39.2c0,37.5,13.6,70.7,40,97.1s59.6,40,97.1,40s70.7-13.6,97.1-40c26.4-26.4,40-59.6,40-97.1v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6c5.1,0,10.2,1.7,13.6,6C430.2,206.2,432.8,211.3,432.8,216.4z M353.5,98v157.6c0,27.3-9.4,50.3-29,69c-19.6,19.6-42.6,29-69,29s-50.3-9.4-69-29c-19.6-19.6-29-42.6-29-69V98c0-27.3,9.4-50.3,29-69c19.6-19.6,42.6-29,69-29s50.3,9.4,69,29C344.2,47.7,353.5,71.6,353.5,98z\"\n        },\n        \"audio-play\": {\n          size: \"medium\",\n          path: \"M43.331,21.237L7.233,0.397c-0.917-0.529-2.044-0.529-2.96,0c-0.916,0.528-1.48,1.505-1.48,2.563v41.684   c0,1.058,0.564,2.035,1.48,2.563c0.458,0.268,0.969,0.397,1.48,0.397c0.511,0,1.022-0.133,1.48-0.397l36.098-20.84   c0.918-0.529,1.479-1.506,1.479-2.564S44.247,21.767,43.331,21.237z\"\n        },\n        \"audio-pause\": {\n          size: \"medium\",\n          path: \"M17.991,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C4.729,2.969,7.698,0,11.36,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z\",\n          path2: \"M42.877,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C29.616,2.969,32.585,0,36.246,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z\"\n        }\n      }\n    };\n  },\n  computed: {\n    svgId() {\n      const param = this.param ? \"-\" + this.param : \"\";\n      return `vac-icon-${this.name}${param}`;\n    },\n    size() {\n      const item = this.svgItem[this.name];\n      if (item.size === \"large\")\n        return 512;\n      else if (item.size === \"medium\")\n        return 48;\n      else\n        return 24;\n    }\n  }\n};\nconst _hoisted_1$p = [\"viewBox\"];\nconst _hoisted_2$m = [\"id\", \"d\"];\nconst _hoisted_3$i = [\"id\", \"d\"];\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n    version: \"1.1\",\n    width: \"24\",\n    height: \"24\",\n    viewBox: `0 0 ${$options.size} ${$options.size}`\n  }, [\n    createBaseVNode(\"path\", {\n      id: $options.svgId,\n      d: $data.svgItem[$props.name].path\n    }, null, 8, _hoisted_2$m),\n    $data.svgItem[$props.name].path2 ? (openBlock(), createElementBlock(\"path\", {\n      key: 0,\n      id: $options.svgId,\n      d: $data.svgItem[$props.name].path2\n    }, null, 8, _hoisted_3$i)) : createCommentVNode(\"\", true)\n  ], 8, _hoisted_1$p);\n}\nvar SvgIcon = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$p]]);\nconst _sfc_main$o = {\n  name: \"RoomsSearch\",\n  components: { SvgIcon },\n  props: {\n    textMessages: { type: Object, required: true },\n    showSearch: { type: Boolean, required: true },\n    showAddRoom: { type: Boolean, required: true },\n    rooms: { type: Array, required: true },\n    loadingRooms: { type: Boolean, required: true }\n  },\n  emits: [\"search-room\", \"add-room\"],\n  computed: {\n    showSearchBar() {\n      return this.showSearch || this.showAddRoom;\n    }\n  }\n};\nconst _hoisted_1$o = {\n  key: 0,\n  class: \"vac-icon-search\"\n};\nconst _hoisted_2$l = [\"placeholder\"];\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass({\n      \"vac-box-search\": $options.showSearchBar,\n      \"vac-box-empty\": !$options.showSearchBar\n    })\n  }, [\n    $props.showSearch ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n      !$props.loadingRooms && $props.rooms.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$o, [\n        renderSlot(_ctx.$slots, \"search-icon\", {}, () => [\n          createVNode(_component_svg_icon, { name: \"search\" })\n        ])\n      ])) : createCommentVNode(\"\", true),\n      !$props.loadingRooms && $props.rooms.length ? (openBlock(), createElementBlock(\"input\", {\n        key: 1,\n        type: \"search\",\n        placeholder: $props.textMessages.SEARCH,\n        autocomplete: \"off\",\n        class: \"vac-input\",\n        onInput: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"search-room\", $event))\n      }, null, 40, _hoisted_2$l)) : createCommentVNode(\"\", true)\n    ], 64)) : createCommentVNode(\"\", true),\n    $props.showAddRoom ? (openBlock(), createElementBlock(\"div\", {\n      key: 1,\n      class: \"vac-svg-button vac-add-icon\",\n      onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"add-room\"))\n    }, [\n      renderSlot(_ctx.$slots, \"add-icon\", {}, () => [\n        createVNode(_component_svg_icon, { name: \"add\" })\n      ])\n    ])) : createCommentVNode(\"\", true)\n  ], 2);\n}\nvar RoomsSearch = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$o]]);\nconst element$1 = document.createElement(\"i\");\nfunction decodeNamedCharacterReference(value) {\n  const characterReference2 = \"&\" + value + \";\";\n  element$1.innerHTML = characterReference2;\n  const char = element$1.textContent;\n  if (char.charCodeAt(char.length - 1) === 59 && value !== \"semi\") {\n    return false;\n  }\n  return char === characterReference2 ? false : char;\n}\nfunction splice(list2, start, remove2, items) {\n  const end = list2.length;\n  let chunkStart = 0;\n  let parameters;\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove2 = remove2 > 0 ? remove2 : 0;\n  if (items.length < 1e4) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove2);\n    list2.splice(...parameters);\n  } else {\n    if (remove2)\n      list2.splice(start, remove2);\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 1e4);\n      parameters.unshift(start, 0);\n      list2.splice(...parameters);\n      chunkStart += 1e4;\n      start += 1e4;\n    }\n  }\n}\nfunction push(list2, items) {\n  if (list2.length > 0) {\n    splice(list2, list2.length, 0, items);\n    return list2;\n  }\n  return items;\n}\nconst hasOwnProperty$1 = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n  const all = {};\n  let index = -1;\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index]);\n  }\n  return all;\n}\nfunction syntaxExtension(all, extension) {\n  let hook;\n  for (hook in extension) {\n    const maybe = hasOwnProperty$1.call(all, hook) ? all[hook] : void 0;\n    const left = maybe || (all[hook] = {});\n    const right = extension[hook];\n    let code2;\n    if (right) {\n      for (code2 in right) {\n        if (!hasOwnProperty$1.call(left, code2))\n          left[code2] = [];\n        const value = right[code2];\n        constructs(\n          left[code2],\n          Array.isArray(value) ? value : value ? [value] : []\n        );\n      }\n    }\n  }\n}\nfunction constructs(existing, list2) {\n  let index = -1;\n  const before = [];\n  while (++index < list2.length) {\n    (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n  }\n  splice(existing, 0, 0, before);\n}\nfunction combineHtmlExtensions(htmlExtensions) {\n  const handlers = {};\n  let index = -1;\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index]);\n  }\n  return handlers;\n}\nfunction htmlExtension(all, extension) {\n  let hook;\n  for (hook in extension) {\n    const maybe = hasOwnProperty$1.call(all, hook) ? all[hook] : void 0;\n    const left = maybe || (all[hook] = {});\n    const right = extension[hook];\n    let type;\n    if (right) {\n      for (type in right) {\n        left[type] = right[type];\n      }\n    }\n  }\n}\nfunction decodeNumericCharacterReference(value, base) {\n  const code2 = Number.parseInt(value, base);\n  if (code2 < 9 || code2 === 11 || code2 > 13 && code2 < 32 || code2 > 126 && code2 < 160 || code2 > 55295 && code2 < 57344 || code2 > 64975 && code2 < 65008 || (code2 & 65535) === 65535 || (code2 & 65535) === 65534 || code2 > 1114111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCharCode(code2);\n}\nconst characterReferences = { '\"': \"quot\", \"&\": \"amp\", \"<\": \"lt\", \">\": \"gt\" };\nfunction encode(value) {\n  return value.replace(/[\"&<>]/g, replace2);\n  function replace2(value2) {\n    return \"&\" + characterReferences[value2] + \";\";\n  }\n}\nfunction normalizeIdentifier(value) {\n  return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nconst unicodePunctuationRegex = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nconst asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\nfunction asciiControl(code2) {\n  return code2 !== null && (code2 < 32 || code2 === 127);\n}\nconst asciiDigit = regexCheck(/\\d/);\nconst asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\nconst asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\nfunction markdownLineEnding(code2) {\n  return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n  return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n  return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(unicodePunctuationRegex);\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n  return check;\n  function check(code2) {\n    return code2 !== null && regex.test(String.fromCharCode(code2));\n  }\n}\nfunction sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || \"\"));\n  if (!protocol) {\n    return value;\n  }\n  const colon = value.indexOf(\":\");\n  const questionMark = value.indexOf(\"?\");\n  const numberSign = value.indexOf(\"#\");\n  const slash = value.indexOf(\"/\");\n  if (colon < 0 || slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign || protocol.test(value.slice(0, colon))) {\n    return value;\n  }\n  return \"\";\n}\nfunction normalizeUri(value) {\n  const result = [];\n  let index = -1;\n  let start = 0;\n  let skip = 0;\n  while (++index < value.length) {\n    const code2 = value.charCodeAt(index);\n    let replace2 = \"\";\n    if (code2 === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n      skip = 2;\n    } else if (code2 < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code2))) {\n        replace2 = String.fromCharCode(code2);\n      }\n    } else if (code2 > 55295 && code2 < 57344) {\n      const next = value.charCodeAt(index + 1);\n      if (code2 < 56320 && next > 56319 && next < 57344) {\n        replace2 = String.fromCharCode(code2, next);\n        skip = 1;\n      } else {\n        replace2 = \"\\uFFFD\";\n      }\n    } else {\n      replace2 = String.fromCharCode(code2);\n    }\n    if (replace2) {\n      result.push(value.slice(start, index), encodeURIComponent(replace2));\n      start = index + skip + 1;\n      replace2 = \"\";\n    }\n    if (skip) {\n      index += skip;\n      skip = 0;\n    }\n  }\n  return result.join(\"\") + value.slice(start);\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nconst protocolHref = /^(https?|ircs?|mailto|xmpp)$/i;\nconst protocolSrc = /^https?$/i;\nfunction compile(options) {\n  const settings = options || {};\n  let tags = true;\n  const definitions2 = {};\n  const buffers = [[]];\n  const mediaStack = [];\n  const tightStack = [];\n  const defaultHandlers = {\n    enter: {\n      blockQuote: onenterblockquote,\n      codeFenced: onentercodefenced,\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: onentercodeindented,\n      codeText: onentercodetext,\n      content: onentercontent,\n      definition: onenterdefinition,\n      definitionDestinationString: onenterdefinitiondestinationstring,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: onenteremphasis,\n      htmlFlow: onenterhtmlflow,\n      htmlText: onenterhtml,\n      image: onenterimage,\n      label: buffer,\n      link: onenterlink,\n      listItemMarker: onenterlistitemmarker,\n      listItemValue: onenterlistitemvalue,\n      listOrdered: onenterlistordered,\n      listUnordered: onenterlistunordered,\n      paragraph: onenterparagraph,\n      reference: buffer,\n      resource: onenterresource,\n      resourceDestinationString: onenterresourcedestinationstring,\n      resourceTitleString: buffer,\n      setextHeading: onentersetextheading,\n      strong: onenterstrong\n    },\n    exit: {\n      atxHeading: onexitatxheading,\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: onexitblockquote,\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      codeFenced: onexitflowcode,\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: resume,\n      codeFlowValue: onexitcodeflowvalue,\n      codeIndented: onexitflowcode,\n      codeText: onexitcodetext,\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: onexitdefinition,\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: onexitemphasis,\n      hardBreakEscape: onexithardbreak,\n      hardBreakTrailing: onexithardbreak,\n      htmlFlow: onexithtml,\n      htmlFlowData: onexitdata,\n      htmlText: onexithtml,\n      htmlTextData: onexitdata,\n      image: onexitmedia,\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: onexitmedia,\n      listOrdered: onexitlistordered,\n      listUnordered: onexitlistunordered,\n      paragraph: onexitparagraph,\n      reference: resume,\n      referenceString: onexitreferencestring,\n      resource: resume,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      setextHeading: onexitsetextheading,\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: onexitstrong,\n      thematicBreak: onexitthematicbreak\n    }\n  };\n  const handlers = combineHtmlExtensions(\n    [defaultHandlers].concat(settings.htmlExtensions || [])\n  );\n  const data = {\n    tightStack,\n    definitions: definitions2\n  };\n  const context = {\n    lineEndingIfNeeded,\n    options: settings,\n    encode: encode$1,\n    raw,\n    tag,\n    buffer,\n    resume,\n    setData,\n    getData\n  };\n  let lineEndingStyle = settings.defaultLineEnding;\n  return compile2;\n  function compile2(events) {\n    let index = -1;\n    let start = 0;\n    const listStack = [];\n    let head = [];\n    let body = [];\n    while (++index < events.length) {\n      if (!lineEndingStyle && (events[index][1].type === \"lineEnding\" || events[index][1].type === \"lineEndingBlank\")) {\n        lineEndingStyle = events[index][2].sliceSerialize(events[index][1]);\n      }\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === \"enter\") {\n          listStack.push(index);\n        } else {\n          prepareList(events.slice(listStack.pop(), index));\n        }\n      }\n      if (events[index][1].type === \"definition\") {\n        if (events[index][0] === \"enter\") {\n          body = push(body, events.slice(start, index));\n          start = index;\n        } else {\n          head = push(head, events.slice(start, index + 1));\n          start = index + 1;\n        }\n      }\n    }\n    head = push(head, body);\n    head = push(head, events.slice(start));\n    index = -1;\n    const result = head;\n    if (handlers.enter.null) {\n      handlers.enter.null.call(context);\n    }\n    while (++index < events.length) {\n      const handles = handlers[result[index][0]];\n      const kind = result[index][1].type;\n      const handle = handles[kind];\n      if (hasOwnProperty.call(handles, kind) && handle) {\n        handle.call(\n          Object.assign(\n            {\n              sliceSerialize: result[index][2].sliceSerialize\n            },\n            context\n          ),\n          result[index][1]\n        );\n      }\n    }\n    if (handlers.exit.null) {\n      handlers.exit.null.call(context);\n    }\n    return buffers[0].join(\"\");\n  }\n  function prepareList(slice) {\n    const length = slice.length;\n    let index = 0;\n    let containerBalance = 0;\n    let loose = false;\n    let atMarker;\n    while (++index < length) {\n      const event = slice[index];\n      if (event[1]._container) {\n        atMarker = void 0;\n        if (event[0] === \"enter\") {\n          containerBalance++;\n        } else {\n          containerBalance--;\n        }\n      } else\n        switch (event[1].type) {\n          case \"listItemPrefix\": {\n            if (event[0] === \"exit\") {\n              atMarker = true;\n            }\n            break;\n          }\n          case \"linePrefix\": {\n            break;\n          }\n          case \"lineEndingBlank\": {\n            if (event[0] === \"enter\" && !containerBalance) {\n              if (atMarker) {\n                atMarker = void 0;\n              } else {\n                loose = true;\n              }\n            }\n            break;\n          }\n          default: {\n            atMarker = void 0;\n          }\n        }\n    }\n    slice[0][1]._loose = loose;\n  }\n  function setData(key, value) {\n    data[key] = value;\n  }\n  function getData(key) {\n    return data[key];\n  }\n  function buffer() {\n    buffers.push([]);\n  }\n  function resume() {\n    const buf = buffers.pop();\n    return buf.join(\"\");\n  }\n  function tag(value) {\n    if (!tags)\n      return;\n    setData(\"lastWasTag\", true);\n    buffers[buffers.length - 1].push(value);\n  }\n  function raw(value) {\n    setData(\"lastWasTag\");\n    buffers[buffers.length - 1].push(value);\n  }\n  function lineEnding2() {\n    raw(lineEndingStyle || \"\\n\");\n  }\n  function lineEndingIfNeeded() {\n    const buffer2 = buffers[buffers.length - 1];\n    const slice = buffer2[buffer2.length - 1];\n    const previous2 = slice ? slice.charCodeAt(slice.length - 1) : null;\n    if (previous2 === 10 || previous2 === 13 || previous2 === null) {\n      return;\n    }\n    lineEnding2();\n  }\n  function encode$1(value) {\n    return getData(\"ignoreEncode\") ? value : encode(value);\n  }\n  function onenterlistordered(token) {\n    tightStack.push(!token._loose);\n    lineEndingIfNeeded();\n    tag(\"<ol\");\n    setData(\"expectFirstItem\", true);\n  }\n  function onenterlistunordered(token) {\n    tightStack.push(!token._loose);\n    lineEndingIfNeeded();\n    tag(\"<ul\");\n    setData(\"expectFirstItem\", true);\n  }\n  function onenterlistitemvalue(token) {\n    if (getData(\"expectFirstItem\")) {\n      const value = Number.parseInt(this.sliceSerialize(token), 10);\n      if (value !== 1) {\n        tag(' start=\"' + encode$1(String(value)) + '\"');\n      }\n    }\n  }\n  function onenterlistitemmarker() {\n    if (getData(\"expectFirstItem\")) {\n      tag(\">\");\n    } else {\n      onexitlistitem();\n    }\n    lineEndingIfNeeded();\n    tag(\"<li>\");\n    setData(\"expectFirstItem\");\n    setData(\"lastWasTag\");\n  }\n  function onexitlistordered() {\n    onexitlistitem();\n    tightStack.pop();\n    lineEnding2();\n    tag(\"</ol>\");\n  }\n  function onexitlistunordered() {\n    onexitlistitem();\n    tightStack.pop();\n    lineEnding2();\n    tag(\"</ul>\");\n  }\n  function onexitlistitem() {\n    if (getData(\"lastWasTag\") && !getData(\"slurpAllLineEndings\")) {\n      lineEndingIfNeeded();\n    }\n    tag(\"</li>\");\n    setData(\"slurpAllLineEndings\");\n  }\n  function onenterblockquote() {\n    tightStack.push(false);\n    lineEndingIfNeeded();\n    tag(\"<blockquote>\");\n  }\n  function onexitblockquote() {\n    tightStack.pop();\n    lineEndingIfNeeded();\n    tag(\"</blockquote>\");\n    setData(\"slurpAllLineEndings\");\n  }\n  function onenterparagraph() {\n    if (!tightStack[tightStack.length - 1]) {\n      lineEndingIfNeeded();\n      tag(\"<p>\");\n    }\n    setData(\"slurpAllLineEndings\");\n  }\n  function onexitparagraph() {\n    if (tightStack[tightStack.length - 1]) {\n      setData(\"slurpAllLineEndings\", true);\n    } else {\n      tag(\"</p>\");\n    }\n  }\n  function onentercodefenced() {\n    lineEndingIfNeeded();\n    tag(\"<pre><code\");\n    setData(\"fencesCount\", 0);\n  }\n  function onexitcodefencedfenceinfo() {\n    const value = resume();\n    tag(' class=\"language-' + value + '\"');\n  }\n  function onexitcodefencedfence() {\n    const count = getData(\"fencesCount\") || 0;\n    if (!count) {\n      tag(\">\");\n      setData(\"slurpOneLineEnding\", true);\n    }\n    setData(\"fencesCount\", count + 1);\n  }\n  function onentercodeindented() {\n    lineEndingIfNeeded();\n    tag(\"<pre><code>\");\n  }\n  function onexitflowcode() {\n    const count = getData(\"fencesCount\");\n    if (count !== void 0 && count < 2 && data.tightStack.length > 0 && !getData(\"lastWasTag\")) {\n      lineEnding2();\n    }\n    if (getData(\"flowCodeSeenData\")) {\n      lineEndingIfNeeded();\n    }\n    tag(\"</code></pre>\");\n    if (count !== void 0 && count < 2)\n      lineEndingIfNeeded();\n    setData(\"flowCodeSeenData\");\n    setData(\"fencesCount\");\n    setData(\"slurpOneLineEnding\");\n  }\n  function onenterimage() {\n    mediaStack.push({\n      image: true\n    });\n    tags = void 0;\n  }\n  function onenterlink() {\n    mediaStack.push({});\n  }\n  function onexitlabeltext(token) {\n    mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token);\n  }\n  function onexitlabel() {\n    mediaStack[mediaStack.length - 1].label = resume();\n  }\n  function onexitreferencestring(token) {\n    mediaStack[mediaStack.length - 1].referenceId = this.sliceSerialize(token);\n  }\n  function onenterresource() {\n    buffer();\n    mediaStack[mediaStack.length - 1].destination = \"\";\n  }\n  function onenterresourcedestinationstring() {\n    buffer();\n    setData(\"ignoreEncode\", true);\n  }\n  function onexitresourcedestinationstring() {\n    mediaStack[mediaStack.length - 1].destination = resume();\n    setData(\"ignoreEncode\");\n  }\n  function onexitresourcetitlestring() {\n    mediaStack[mediaStack.length - 1].title = resume();\n  }\n  function onexitmedia() {\n    let index = mediaStack.length - 1;\n    const media = mediaStack[index];\n    const id = media.referenceId || media.labelId;\n    const context2 = media.destination === void 0 ? definitions2[normalizeIdentifier(id)] : media;\n    tags = true;\n    while (index--) {\n      if (mediaStack[index].image) {\n        tags = void 0;\n        break;\n      }\n    }\n    if (media.image) {\n      tag(\n        '<img src=\"' + sanitizeUri(\n          context2.destination,\n          settings.allowDangerousProtocol ? void 0 : protocolSrc\n        ) + '\" alt=\"'\n      );\n      raw(media.label);\n      tag('\"');\n    } else {\n      tag(\n        '<a href=\"' + sanitizeUri(\n          context2.destination,\n          settings.allowDangerousProtocol ? void 0 : protocolHref\n        ) + '\"'\n      );\n    }\n    tag(context2.title ? ' title=\"' + context2.title + '\"' : \"\");\n    if (media.image) {\n      tag(\" />\");\n    } else {\n      tag(\">\");\n      raw(media.label);\n      tag(\"</a>\");\n    }\n    mediaStack.pop();\n  }\n  function onenterdefinition() {\n    buffer();\n    mediaStack.push({});\n  }\n  function onexitdefinitionlabelstring(token) {\n    resume();\n    mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token);\n  }\n  function onenterdefinitiondestinationstring() {\n    buffer();\n    setData(\"ignoreEncode\", true);\n  }\n  function onexitdefinitiondestinationstring() {\n    mediaStack[mediaStack.length - 1].destination = resume();\n    setData(\"ignoreEncode\");\n  }\n  function onexitdefinitiontitlestring() {\n    mediaStack[mediaStack.length - 1].title = resume();\n  }\n  function onexitdefinition() {\n    const media = mediaStack[mediaStack.length - 1];\n    const id = normalizeIdentifier(media.labelId);\n    resume();\n    if (!hasOwnProperty.call(definitions2, id)) {\n      definitions2[id] = mediaStack[mediaStack.length - 1];\n    }\n    mediaStack.pop();\n  }\n  function onentercontent() {\n    setData(\"slurpAllLineEndings\", true);\n  }\n  function onexitatxheadingsequence(token) {\n    if (getData(\"headingRank\"))\n      return;\n    setData(\"headingRank\", this.sliceSerialize(token).length);\n    lineEndingIfNeeded();\n    tag(\"<h\" + getData(\"headingRank\") + \">\");\n  }\n  function onentersetextheading() {\n    buffer();\n    setData(\"slurpAllLineEndings\");\n  }\n  function onexitsetextheadingtext() {\n    setData(\"slurpAllLineEndings\", true);\n  }\n  function onexitatxheading() {\n    tag(\"</h\" + getData(\"headingRank\") + \">\");\n    setData(\"headingRank\");\n  }\n  function onexitsetextheadinglinesequence(token) {\n    setData(\n      \"headingRank\",\n      this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n    );\n  }\n  function onexitsetextheading() {\n    const value = resume();\n    lineEndingIfNeeded();\n    tag(\"<h\" + getData(\"headingRank\") + \">\");\n    raw(value);\n    tag(\"</h\" + getData(\"headingRank\") + \">\");\n    setData(\"slurpAllLineEndings\");\n    setData(\"headingRank\");\n  }\n  function onexitdata(token) {\n    raw(encode$1(this.sliceSerialize(token)));\n  }\n  function onexitlineending(token) {\n    if (getData(\"slurpAllLineEndings\")) {\n      return;\n    }\n    if (getData(\"slurpOneLineEnding\")) {\n      setData(\"slurpOneLineEnding\");\n      return;\n    }\n    if (getData(\"inCodeText\")) {\n      raw(\" \");\n      return;\n    }\n    raw(encode$1(this.sliceSerialize(token)));\n  }\n  function onexitcodeflowvalue(token) {\n    raw(encode$1(this.sliceSerialize(token)));\n    setData(\"flowCodeSeenData\", true);\n  }\n  function onexithardbreak() {\n    tag(\"<br />\");\n  }\n  function onenterhtmlflow() {\n    lineEndingIfNeeded();\n    onenterhtml();\n  }\n  function onexithtml() {\n    setData(\"ignoreEncode\");\n  }\n  function onenterhtml() {\n    if (settings.allowDangerousHtml) {\n      setData(\"ignoreEncode\", true);\n    }\n  }\n  function onenteremphasis() {\n    tag(\"<em>\");\n  }\n  function onenterstrong() {\n    tag(\"<strong>\");\n  }\n  function onentercodetext() {\n    setData(\"inCodeText\", true);\n    tag(\"<code>\");\n  }\n  function onexitcodetext() {\n    setData(\"inCodeText\");\n    tag(\"</code>\");\n  }\n  function onexitemphasis() {\n    tag(\"</em>\");\n  }\n  function onexitstrong() {\n    tag(\"</strong>\");\n  }\n  function onexitthematicbreak() {\n    lineEndingIfNeeded();\n    tag(\"<hr />\");\n  }\n  function onexitcharacterreferencemarker(token) {\n    setData(\"characterReferenceType\", token.type);\n  }\n  function onexitcharacterreferencevalue(token) {\n    let value = this.sliceSerialize(token);\n    value = getData(\"characterReferenceType\") ? decodeNumericCharacterReference(\n      value,\n      getData(\"characterReferenceType\") === \"characterReferenceMarkerNumeric\" ? 10 : 16\n    ) : decodeNamedCharacterReference(value);\n    raw(encode$1(value));\n    setData(\"characterReferenceType\");\n  }\n  function onexitautolinkprotocol(token) {\n    const uri = this.sliceSerialize(token);\n    tag(\n      '<a href=\"' + sanitizeUri(\n        uri,\n        settings.allowDangerousProtocol ? void 0 : protocolHref\n      ) + '\">'\n    );\n    raw(encode$1(uri));\n    tag(\"</a>\");\n  }\n  function onexitautolinkemail(token) {\n    const uri = this.sliceSerialize(token);\n    tag('<a href=\"' + sanitizeUri(\"mailto:\" + uri) + '\">');\n    raw(encode$1(uri));\n    tag(\"</a>\");\n  }\n}\nfunction factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(type);\n      return prefix(code2);\n    }\n    return ok(code2);\n  }\n  function prefix(code2) {\n    if (markdownSpace(code2) && size2++ < limit) {\n      effects.consume(code2);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code2);\n  }\n}\nconst content$1 = {\n  tokenize: initializeContent\n};\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  );\n  let previous2;\n  return contentStart;\n  function afterContentStartConstruct(code2) {\n    if (code2 === null) {\n      effects.consume(code2);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n  function paragraphInitial(code2) {\n    effects.enter(\"paragraph\");\n    return lineStart(code2);\n  }\n  function lineStart(code2) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous: previous2\n    });\n    if (previous2) {\n      previous2.next = token;\n    }\n    previous2 = token;\n    return data(code2);\n  }\n  function data(code2) {\n    if (code2 === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code2);\n      return;\n    }\n    if (markdownLineEnding(code2)) {\n      effects.consume(code2);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n    effects.consume(code2);\n    return data;\n  }\n}\nconst document$2 = {\n  tokenize: initializeDocument\n};\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\nfunction initializeDocument(effects) {\n  const self2 = this;\n  const stack = [];\n  let continued = 0;\n  let childFlow;\n  let childToken;\n  let lineStartOffset;\n  return start;\n  function start(code2) {\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self2.containerState = item[1];\n      return effects.attempt(\n        item[0].continuation,\n        documentContinue,\n        checkNewContainers\n      )(code2);\n    }\n    return checkNewContainers(code2);\n  }\n  function documentContinue(code2) {\n    continued++;\n    if (self2.containerState._closeFlow) {\n      self2.containerState._closeFlow = void 0;\n      if (childFlow) {\n        closeFlow();\n      }\n      const indexBeforeExits = self2.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      let point;\n      while (indexBeforeFlow--) {\n        if (self2.events[indexBeforeFlow][0] === \"exit\" && self2.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self2.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n      let index = indexBeforeExits;\n      while (index < self2.events.length) {\n        self2.events[index][1].end = Object.assign({}, point);\n        index++;\n      }\n      splice(\n        self2.events,\n        indexBeforeFlow + 1,\n        0,\n        self2.events.slice(indexBeforeExits)\n      );\n      self2.events.length = index;\n      return checkNewContainers(code2);\n    }\n    return start(code2);\n  }\n  function checkNewContainers(code2) {\n    if (continued === stack.length) {\n      if (!childFlow) {\n        return documentContinued(code2);\n      }\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code2);\n      }\n      self2.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      );\n    }\n    self2.containerState = {};\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code2);\n  }\n  function thereIsANewContainer(code2) {\n    if (childFlow)\n      closeFlow();\n    exitContainers(continued);\n    return documentContinued(code2);\n  }\n  function thereIsNoNewContainer(code2) {\n    self2.parser.lazy[self2.now().line] = continued !== stack.length;\n    lineStartOffset = self2.now().offset;\n    return flowStart(code2);\n  }\n  function documentContinued(code2) {\n    self2.containerState = {};\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code2);\n  }\n  function containerContinue(code2) {\n    continued++;\n    stack.push([self2.currentConstruct, self2.containerState]);\n    return documentContinued(code2);\n  }\n  function flowStart(code2) {\n    if (code2 === null) {\n      if (childFlow)\n        closeFlow();\n      exitContainers(0);\n      effects.consume(code2);\n      return;\n    }\n    childFlow = childFlow || self2.parser.flow(self2.now());\n    effects.enter(\"chunkFlow\", {\n      contentType: \"flow\",\n      previous: childToken,\n      _tokenizer: childFlow\n    });\n    return flowContinue(code2);\n  }\n  function flowContinue(code2) {\n    if (code2 === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code2);\n      return;\n    }\n    if (markdownLineEnding(code2)) {\n      effects.consume(code2);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      continued = 0;\n      self2.interrupt = void 0;\n      return start;\n    }\n    effects.consume(code2);\n    return flowContinue;\n  }\n  function writeToChild(token, eof) {\n    const stream = self2.sliceStream(token);\n    if (eof)\n      stream.push(null);\n    token.previous = childToken;\n    if (childToken)\n      childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n    if (self2.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (childFlow.events[index][1].start.offset < lineStartOffset && (!childFlow.events[index][1].end || childFlow.events[index][1].end.offset > lineStartOffset)) {\n          return;\n        }\n      }\n      const indexBeforeExits = self2.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      let seen;\n      let point;\n      while (indexBeforeFlow--) {\n        if (self2.events[indexBeforeFlow][0] === \"exit\" && self2.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self2.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n      index = indexBeforeExits;\n      while (index < self2.events.length) {\n        self2.events[index][1].end = Object.assign({}, point);\n        index++;\n      }\n      splice(\n        self2.events,\n        indexBeforeFlow + 1,\n        0,\n        self2.events.slice(indexBeforeExits)\n      );\n      self2.events.length = index;\n    }\n  }\n  function exitContainers(size2) {\n    let index = stack.length;\n    while (index-- > size2) {\n      const entry = stack[index];\n      self2.containerState = entry[1];\n      entry[0].exit.call(self2, effects);\n    }\n    stack.length = size2;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = void 0;\n    childFlow = void 0;\n    self2.containerState._closeFlow = void 0;\n  }\n}\nfunction tokenizeContainer(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    \"linePrefix\",\n    this.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n  );\n}\nfunction classifyCharacter(code2) {\n  if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n    return 1;\n  }\n  if (unicodePunctuation(code2)) {\n    return 2;\n  }\n}\nfunction resolveAll(constructs2, events, context) {\n  const called = [];\n  let index = -1;\n  while (++index < constructs2.length) {\n    const resolve2 = constructs2[index].resolveAll;\n    if (resolve2 && !called.includes(resolve2)) {\n      events = resolve2(events, context);\n      called.push(resolve2);\n    }\n  }\n  return events;\n}\nconst attention = {\n  name: \"attention\",\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n};\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  let open;\n  let group;\n  let text2;\n  let openingSequence;\n  let closingSequence;\n  let use;\n  let nextEvents;\n  let offset;\n  while (++index < events.length) {\n    if (events[index][0] === \"enter\" && events[index][1].type === \"attentionSequence\" && events[index][1]._close) {\n      open = index;\n      while (open--) {\n        if (events[open][0] === \"exit\" && events[open][1].type === \"attentionSequence\" && events[open][1]._open && context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = Object.assign({}, events[open][1].end);\n          const end = Object.assign({}, events[index][1].start);\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: Object.assign({}, events[open][1].end)\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: Object.assign({}, events[index][1].start),\n            end\n          };\n          text2 = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: Object.assign({}, events[open][1].end),\n            end: Object.assign({}, events[index][1].start)\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: Object.assign({}, openingSequence.start),\n            end: Object.assign({}, closingSequence.end)\n          };\n          events[open][1].end = Object.assign({}, openingSequence.start);\n          events[index][1].start = Object.assign({}, closingSequence.end);\n          nextEvents = [];\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [\n              [\"enter\", events[open][1], context],\n              [\"exit\", events[open][1], context]\n            ]);\n          }\n          nextEvents = push(nextEvents, [\n            [\"enter\", group, context],\n            [\"enter\", openingSequence, context],\n            [\"exit\", openingSequence, context],\n            [\"enter\", text2, context]\n          ]);\n          nextEvents = push(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          );\n          nextEvents = push(nextEvents, [\n            [\"exit\", text2, context],\n            [\"enter\", closingSequence, context],\n            [\"exit\", closingSequence, context],\n            [\"exit\", group, context]\n          ]);\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [\n              [\"enter\", events[index][1], context],\n              [\"exit\", events[index][1], context]\n            ]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === \"attentionSequence\") {\n      events[index][1].type = \"data\";\n    }\n  }\n  return events;\n}\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers2 = this.parser.constructs.attentionMarkers.null;\n  const previous2 = this.previous;\n  const before = classifyCharacter(previous2);\n  let marker;\n  return start;\n  function start(code2) {\n    marker = code2;\n    effects.enter(\"attentionSequence\");\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      return inside;\n    }\n    const token = effects.exit(\"attentionSequence\");\n    const after = classifyCharacter(code2);\n    const open = !after || after === 2 && before || attentionMarkers2.includes(code2);\n    const close = !before || before === 2 && after || attentionMarkers2.includes(previous2);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code2);\n  }\n}\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}\nconst autolink = {\n  name: \"autolink\",\n  tokenize: tokenizeAutolink\n};\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code2);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n  function open(code2) {\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return schemeOrEmailAtext;\n    }\n    return emailAtext(code2);\n  }\n  function schemeOrEmailAtext(code2) {\n    if (code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) {\n      size2 = 1;\n      return schemeInsideOrEmailAtext(code2);\n    }\n    return emailAtext(code2);\n  }\n  function schemeInsideOrEmailAtext(code2) {\n    if (code2 === 58) {\n      effects.consume(code2);\n      size2 = 0;\n      return urlInside;\n    }\n    if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size2++ < 32) {\n      effects.consume(code2);\n      return schemeInsideOrEmailAtext;\n    }\n    size2 = 0;\n    return emailAtext(code2);\n  }\n  function urlInside(code2) {\n    if (code2 === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code2);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    if (code2 === null || code2 === 32 || code2 === 60 || asciiControl(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return urlInside;\n  }\n  function emailAtext(code2) {\n    if (code2 === 64) {\n      effects.consume(code2);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code2)) {\n      effects.consume(code2);\n      return emailAtext;\n    }\n    return nok(code2);\n  }\n  function emailAtSignOrDot(code2) {\n    return asciiAlphanumeric(code2) ? emailLabel(code2) : nok(code2);\n  }\n  function emailLabel(code2) {\n    if (code2 === 46) {\n      effects.consume(code2);\n      size2 = 0;\n      return emailAtSignOrDot;\n    }\n    if (code2 === 62) {\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code2);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code2);\n  }\n  function emailValue(code2) {\n    if ((code2 === 45 || asciiAlphanumeric(code2)) && size2++ < 63) {\n      const next = code2 === 45 ? emailValue : emailLabel;\n      effects.consume(code2);\n      return next;\n    }\n    return nok(code2);\n  }\n}\nconst blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n};\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n  }\n  function after(code2) {\n    return code2 === null || markdownLineEnding(code2) ? ok(code2) : nok(code2);\n  }\n}\nconst blockQuote = {\n  name: \"blockQuote\",\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit\n};\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    if (code2 === 62) {\n      const state = self2.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code2);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code2);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code2);\n  }\n}\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self2 = this;\n  return contStart;\n  function contStart(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        contBefore,\n        \"linePrefix\",\n        self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2);\n    }\n    return contBefore(code2);\n  }\n  function contBefore(code2) {\n    return effects.attempt(blockQuote, ok, nok)(code2);\n  }\n}\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}\nconst characterEscape = {\n  name: \"characterEscape\",\n  tokenize: tokenizeCharacterEscape\n};\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code2);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n  function inside(code2) {\n    if (asciiPunctuation(code2)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code2);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code2);\n  }\n}\nconst characterReference = {\n  name: \"characterReference\",\n  tokenize: tokenizeCharacterReference\n};\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self2 = this;\n  let size2 = 0;\n  let max;\n  let test;\n  return start;\n  function start(code2) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code2);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code2);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code2);\n  }\n  function numeric(code2) {\n    if (code2 === 88 || code2 === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code2);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code2);\n  }\n  function value(code2) {\n    if (code2 === 59 && size2) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self2.sliceSerialize(token))) {\n        return nok(code2);\n      }\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code2);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code2) && size2++ < max) {\n      effects.consume(code2);\n      return value;\n    }\n    return nok(code2);\n  }\n}\nconst nonLazyContinuation = {\n  tokenize: tokenizeNonLazyContinuation,\n  partial: true\n};\nconst codeFenced = {\n  name: \"codeFenced\",\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n};\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self2 = this;\n  const closeStart = {\n    tokenize: tokenizeCloseStart,\n    partial: true\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  let marker;\n  return start;\n  function start(code2) {\n    return beforeSequenceOpen(code2);\n  }\n  function beforeSequenceOpen(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code2;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code2);\n  }\n  function sequenceOpen(code2) {\n    if (code2 === marker) {\n      sizeOpen++;\n      effects.consume(code2);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code2);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code2) ? factorySpace(effects, infoBefore, \"whitespace\")(code2) : infoBefore(code2);\n  }\n  function infoBefore(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"codeFencedFence\");\n      return self2.interrupt ? ok(code2) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code2);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code2);\n  }\n  function info(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code2);\n    }\n    if (code2 === 96 && code2 === marker) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return info;\n  }\n  function metaBefore(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return infoBefore(code2);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code2);\n  }\n  function meta(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code2);\n    }\n    if (code2 === 96 && code2 === marker) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return meta;\n  }\n  function atNonLazyBreak(code2) {\n    return effects.attempt(closeStart, after, contentBefore)(code2);\n  }\n  function contentBefore(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n  function contentStart(code2) {\n    return initialPrefix > 0 && markdownSpace(code2) ? factorySpace(\n      effects,\n      beforeContentChunk,\n      \"linePrefix\",\n      initialPrefix + 1\n    )(code2) : beforeContentChunk(code2);\n  }\n  function beforeContentChunk(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code2);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code2);\n  }\n  function contentChunk(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code2);\n    }\n    effects.consume(code2);\n    return contentChunk;\n  }\n  function after(code2) {\n    effects.exit(\"codeFenced\");\n    return ok(code2);\n  }\n  function tokenizeCloseStart(effects2, ok2, nok2) {\n    let size2 = 0;\n    return startBefore;\n    function startBefore(code2) {\n      effects2.enter(\"lineEnding\");\n      effects2.consume(code2);\n      effects2.exit(\"lineEnding\");\n      return start2;\n    }\n    function start2(code2) {\n      effects2.enter(\"codeFencedFence\");\n      return markdownSpace(code2) ? factorySpace(\n        effects2,\n        beforeSequenceClose,\n        \"linePrefix\",\n        self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2) : beforeSequenceClose(code2);\n    }\n    function beforeSequenceClose(code2) {\n      if (code2 === marker) {\n        effects2.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code2);\n      }\n      return nok2(code2);\n    }\n    function sequenceClose(code2) {\n      if (code2 === marker) {\n        size2++;\n        effects2.consume(code2);\n        return sequenceClose;\n      }\n      if (size2 >= sizeOpen) {\n        effects2.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code2) ? factorySpace(effects2, sequenceCloseAfter, \"whitespace\")(code2) : sequenceCloseAfter(code2);\n      }\n      return nok2(code2);\n    }\n    function sequenceCloseAfter(code2) {\n      if (code2 === null || markdownLineEnding(code2)) {\n        effects2.exit(\"codeFencedFence\");\n        return ok2(code2);\n      }\n      return nok2(code2);\n    }\n  }\n}\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n  function lineStart(code2) {\n    return self2.parser.lazy[self2.now().line] ? nok(code2) : ok(code2);\n  }\n}\nconst codeIndented = {\n  name: \"codeIndented\",\n  tokenize: tokenizeCodeIndented\n};\nconst furtherStart = {\n  tokenize: tokenizeFurtherStart,\n  partial: true\n};\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    effects.enter(\"codeIndented\");\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code2);\n  }\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code2) : nok(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === null) {\n      return after(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      return effects.attempt(furtherStart, atBreak, after)(code2);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    return inside;\n  }\n  function after(code2) {\n    effects.exit(\"codeIndented\");\n    return ok(code2);\n  }\n}\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self2 = this;\n  return furtherStart2;\n  function furtherStart2(code2) {\n    if (self2.parser.lazy[self2.now().line]) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return furtherStart2;\n    }\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code2);\n  }\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code2) : markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);\n  }\n}\nconst codeText = {\n  name: \"codeText\",\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n};\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  let index;\n  let enter;\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === \"space\") && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === \"space\")) {\n    index = headEnterIndex;\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === void 0) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = void 0;\n    }\n  }\n  return events;\n}\nfunction previous(code2) {\n  return code2 !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\nfunction tokenizeCodeText(effects, ok, nok) {\n  let sizeOpen = 0;\n  let size2;\n  let token;\n  return start;\n  function start(code2) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code2);\n  }\n  function sequenceOpen(code2) {\n    if (code2 === 96) {\n      effects.consume(code2);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code2);\n  }\n  function between(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 32) {\n      effects.enter(\"space\");\n      effects.consume(code2);\n      effects.exit(\"space\");\n      return between;\n    }\n    if (code2 === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size2 = 0;\n      return sequenceClose(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n    effects.enter(\"codeTextData\");\n    return data(code2);\n  }\n  function data(code2) {\n    if (code2 === null || code2 === 32 || code2 === 96 || markdownLineEnding(code2)) {\n      effects.exit(\"codeTextData\");\n      return between(code2);\n    }\n    effects.consume(code2);\n    return data;\n  }\n  function sequenceClose(code2) {\n    if (code2 === 96) {\n      effects.consume(code2);\n      size2++;\n      return sequenceClose;\n    }\n    if (size2 === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code2);\n    }\n    token.type = \"codeTextData\";\n    return data(code2);\n  }\n}\nfunction subtokenize(events) {\n  const jumps = {};\n  let index = -1;\n  let event;\n  let lineIndex;\n  let otherIndex;\n  let otherEvent;\n  let parameters;\n  let subevents;\n  let more;\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events[index];\n    if (index && event[1].type === \"chunkFlow\" && events[index - 1][1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n    if (event[0] === \"enter\") {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    } else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = void 0;\n      while (otherIndex--) {\n        otherEvent = events[otherIndex];\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === \"enter\") {\n            if (lineIndex) {\n              events[lineIndex][1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        event[1].end = Object.assign({}, events[lineIndex][1].start);\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        splice(events, lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n  return !more;\n}\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1];\n  const context = events[eventIndex][2];\n  let startPosition = eventIndex - 1;\n  const startPositions = [];\n  const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);\n  const childEvents = tokenizer.events;\n  const jumps = [];\n  const gaps = {};\n  let stream;\n  let previous2;\n  let index = -1;\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n  while (current) {\n    while (events[++startPosition][1] !== current) {\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous2) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = void 0;\n      }\n    }\n    previous2 = current;\n    current = current.next;\n  }\n  current = token;\n  while (++index < childEvents.length) {\n    if (childEvents[index][0] === \"exit\" && childEvents[index - 1][0] === \"enter\" && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      current._tokenizer = void 0;\n      current.previous = void 0;\n      current = current.next;\n    }\n  }\n  tokenizer.events = [];\n  if (current) {\n    current._tokenizer = void 0;\n    current.previous = void 0;\n  } else {\n    breaks.pop();\n  }\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start2 = startPositions.pop();\n    jumps.unshift([start2, start2 + slice.length - 1]);\n    splice(events, start2, 2, slice);\n  }\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}\nconst content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent\n};\nconst continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n};\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\nfunction tokenizeContent(effects, ok) {\n  let previous2;\n  return chunkStart;\n  function chunkStart(code2) {\n    effects.enter(\"content\");\n    previous2 = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code2);\n  }\n  function chunkInside(code2) {\n    if (code2 === null) {\n      return contentEnd(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code2);\n    }\n    effects.consume(code2);\n    return chunkInside;\n  }\n  function contentEnd(code2) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code2);\n  }\n  function contentContinue(code2) {\n    effects.consume(code2);\n    effects.exit(\"chunkContent\");\n    previous2.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous: previous2\n    });\n    previous2 = previous2.next;\n    return chunkInside;\n  }\n}\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self2 = this;\n  return startLookahead;\n  function startLookahead(code2) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n  function prefixed(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return nok(code2);\n    }\n    const tail = self2.events[self2.events.length - 1];\n    if (!self2.parser.constructs.disable.null.includes(\"codeIndented\") && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code2);\n    }\n    return effects.interrupt(self2.parser.constructs.flow, nok, ok)(code2);\n  }\n}\nfunction factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n  function start(code2) {\n    if (code2 === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code2);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n    if (code2 === null || code2 === 32 || code2 === 41 || asciiControl(code2)) {\n      return nok(code2);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code2);\n  }\n  function enclosedBefore(code2) {\n    if (code2 === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code2);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code2);\n  }\n  function enclosed(code2) {\n    if (code2 === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code2);\n    }\n    if (code2 === null || code2 === 60 || markdownLineEnding(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? enclosedEscape : enclosed;\n  }\n  function enclosedEscape(code2) {\n    if (code2 === 60 || code2 === 62 || code2 === 92) {\n      effects.consume(code2);\n      return enclosed;\n    }\n    return enclosed(code2);\n  }\n  function raw(code2) {\n    if (!balance && (code2 === null || code2 === 41 || markdownLineEndingOrSpace(code2))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code2);\n    }\n    if (balance < limit && code2 === 40) {\n      effects.consume(code2);\n      balance++;\n      return raw;\n    }\n    if (code2 === 41) {\n      effects.consume(code2);\n      balance--;\n      return raw;\n    }\n    if (code2 === null || code2 === 32 || code2 === 40 || asciiControl(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? rawEscape : raw;\n  }\n  function rawEscape(code2) {\n    if (code2 === 40 || code2 === 41 || code2 === 92) {\n      effects.consume(code2);\n      return raw;\n    }\n    return raw(code2);\n  }\n}\nfunction factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self2 = this;\n  let size2 = 0;\n  let seen;\n  return start;\n  function start(code2) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code2);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n  function atBreak(code2) {\n    if (size2 > 999 || code2 === null || code2 === 91 || code2 === 93 && !seen || code2 === 94 && !size2 && \"_hiddenFootnoteSupport\" in self2.parser.constructs) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code2);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code2);\n  }\n  function labelInside(code2) {\n    if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size2++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    if (!seen)\n      seen = !markdownSpace(code2);\n    return code2 === 92 ? labelEscape : labelInside;\n  }\n  function labelEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size2++;\n      return labelInside;\n    }\n    return labelInside(code2);\n  }\n}\nfunction factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  let marker;\n  return start;\n  function start(code2) {\n    if (code2 === 34 || code2 === 39 || code2 === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code2);\n      effects.exit(markerType);\n      marker = code2 === 40 ? 41 : code2;\n      return begin;\n    }\n    return nok(code2);\n  }\n  function begin(code2) {\n    if (code2 === marker) {\n      effects.enter(markerType);\n      effects.consume(code2);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === marker || code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? escape : inside;\n  }\n  function escape(code2) {\n    if (code2 === marker || code2 === 92) {\n      effects.consume(code2);\n      return inside;\n    }\n    return inside(code2);\n  }\n}\nfunction factoryWhitespace(effects, ok) {\n  let seen;\n  return start;\n  function start(code2) {\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? \"linePrefix\" : \"lineSuffix\"\n      )(code2);\n    }\n    return ok(code2);\n  }\n}\nconst definition = {\n  name: \"definition\",\n  tokenize: tokenizeDefinition\n};\nconst titleBefore = {\n  tokenize: tokenizeTitleBefore,\n  partial: true\n};\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self2 = this;\n  let identifier;\n  return start;\n  function start(code2) {\n    effects.enter(\"definition\");\n    return before(code2);\n  }\n  function before(code2) {\n    return factoryLabel.call(\n      self2,\n      effects,\n      labelAfter,\n      nok,\n      \"definitionLabel\",\n      \"definitionLabelMarker\",\n      \"definitionLabelString\"\n    )(code2);\n  }\n  function labelAfter(code2) {\n    identifier = normalizeIdentifier(\n      self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1)\n    );\n    if (code2 === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code2);\n  }\n  function markerAfter(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, destinationBefore)(code2) : destinationBefore(code2);\n  }\n  function destinationBefore(code2) {\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      nok,\n      \"definitionDestination\",\n      \"definitionDestinationLiteral\",\n      \"definitionDestinationLiteralMarker\",\n      \"definitionDestinationRaw\",\n      \"definitionDestinationString\"\n    )(code2);\n  }\n  function destinationAfter(code2) {\n    return effects.attempt(titleBefore, after, after)(code2);\n  }\n  function after(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code2) : afterWhitespace(code2);\n  }\n  function afterWhitespace(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"definition\");\n      self2.parser.defined.push(identifier);\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore2;\n  function titleBefore2(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, beforeMarker)(code2) : nok(code2);\n  }\n  function beforeMarker(code2) {\n    return factoryTitle(\n      effects,\n      titleAfter,\n      nok,\n      \"definitionTitle\",\n      \"definitionTitleMarker\",\n      \"definitionTitleString\"\n    )(code2);\n  }\n  function titleAfter(code2) {\n    return markdownSpace(code2) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code2) : titleAfterOptionalWhitespace(code2);\n  }\n  function titleAfterOptionalWhitespace(code2) {\n    return code2 === null || markdownLineEnding(code2) ? ok(code2) : nok(code2);\n  }\n}\nconst hardBreakEscape = {\n  name: \"hardBreakEscape\",\n  tokenize: tokenizeHardBreakEscape\n};\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code2);\n    return after;\n  }\n  function after(code2) {\n    if (markdownLineEnding(code2)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nconst headingAtx = {\n  name: \"headingAtx\",\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n};\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  let content2;\n  let text2;\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content2 = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text2 = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [\n      [\"enter\", content2, context],\n      [\"enter\", text2, context],\n      [\"exit\", text2, context],\n      [\"exit\", content2, context]\n    ]);\n  }\n  return events;\n}\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    effects.enter(\"atxHeading\");\n    return before(code2);\n  }\n  function before(code2) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code2);\n  }\n  function sequenceOpen(code2) {\n    if (code2 === 35 && size2++ < 6) {\n      effects.consume(code2);\n      return sequenceOpen;\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code2);\n    }\n    return nok(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"atxHeading\");\n      return ok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code2);\n    }\n    effects.enter(\"atxHeadingText\");\n    return data(code2);\n  }\n  function sequenceFurther(code2) {\n    if (code2 === 35) {\n      effects.consume(code2);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code2);\n  }\n  function data(code2) {\n    if (code2 === null || code2 === 35 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code2);\n    }\n    effects.consume(code2);\n    return data;\n  }\n}\nconst htmlBlockNames = [\n  \"address\",\n  \"article\",\n  \"aside\",\n  \"base\",\n  \"basefont\",\n  \"blockquote\",\n  \"body\",\n  \"caption\",\n  \"center\",\n  \"col\",\n  \"colgroup\",\n  \"dd\",\n  \"details\",\n  \"dialog\",\n  \"dir\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"footer\",\n  \"form\",\n  \"frame\",\n  \"frameset\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"head\",\n  \"header\",\n  \"hr\",\n  \"html\",\n  \"iframe\",\n  \"legend\",\n  \"li\",\n  \"link\",\n  \"main\",\n  \"menu\",\n  \"menuitem\",\n  \"nav\",\n  \"noframes\",\n  \"ol\",\n  \"optgroup\",\n  \"option\",\n  \"p\",\n  \"param\",\n  \"search\",\n  \"section\",\n  \"summary\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"title\",\n  \"tr\",\n  \"track\",\n  \"ul\"\n];\nconst htmlRawNames = [\"pre\", \"script\", \"style\", \"textarea\"];\nconst htmlFlow = {\n  name: \"htmlFlow\",\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n};\nconst blankLineBefore = {\n  tokenize: tokenizeBlankLineBefore,\n  partial: true\n};\nconst nonLazyContinuationStart = {\n  tokenize: tokenizeNonLazyContinuationStart,\n  partial: true\n};\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === \"enter\" && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    events[index][1].start = events[index - 2][1].start;\n    events[index + 1][1].start = events[index - 2][1].start;\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self2 = this;\n  let marker;\n  let closingTag;\n  let buffer;\n  let index;\n  let markerB;\n  return start;\n  function start(code2) {\n    return before(code2);\n  }\n  function before(code2) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code2);\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 33) {\n      effects.consume(code2);\n      return declarationOpen;\n    }\n    if (code2 === 47) {\n      effects.consume(code2);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code2 === 63) {\n      effects.consume(code2);\n      marker = 3;\n      return self2.interrupt ? ok : continuationDeclarationInside;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      buffer = String.fromCharCode(code2);\n      return tagName;\n    }\n    return nok(code2);\n  }\n  function declarationOpen(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code2 === 91) {\n      effects.consume(code2);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      marker = 4;\n      return self2.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code2);\n  }\n  function commentOpenInside(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return self2.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code2);\n  }\n  function cdataOpenInside(code2) {\n    const value = \"CDATA[\";\n    if (code2 === value.charCodeAt(index++)) {\n      effects.consume(code2);\n      if (index === value.length) {\n        return self2.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code2);\n  }\n  function tagCloseStart(code2) {\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      buffer = String.fromCharCode(code2);\n      return tagName;\n    }\n    return nok(code2);\n  }\n  function tagName(code2) {\n    if (code2 === null || code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      const slash = code2 === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        return self2.interrupt ? ok(code2) : continuation(code2);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code2);\n          return basicSelfClosing;\n        }\n        return self2.interrupt ? ok(code2) : continuation(code2);\n      }\n      marker = 7;\n      return self2.interrupt && !self2.parser.lazy[self2.now().line] ? nok(code2) : closingTag ? completeClosingTagAfter(code2) : completeAttributeNameBefore(code2);\n    }\n    if (code2 === 45 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      buffer += String.fromCharCode(code2);\n      return tagName;\n    }\n    return nok(code2);\n  }\n  function basicSelfClosing(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      return self2.interrupt ? ok : continuation;\n    }\n    return nok(code2);\n  }\n  function completeClosingTagAfter(code2) {\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code2);\n  }\n  function completeAttributeNameBefore(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      return completeEnd;\n    }\n    if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) {\n      effects.consume(code2);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code2);\n  }\n  function completeAttributeName(code2) {\n    if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code2);\n  }\n  function completeAttributeNameAfter(code2) {\n    if (code2 === 61) {\n      effects.consume(code2);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code2);\n  }\n  function completeAttributeValueBefore(code2) {\n    if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) {\n      return nok(code2);\n    }\n    if (code2 === 34 || code2 === 39) {\n      effects.consume(code2);\n      markerB = code2;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code2);\n  }\n  function completeAttributeValueQuoted(code2) {\n    if (code2 === markerB) {\n      effects.consume(code2);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      return nok(code2);\n    }\n    effects.consume(code2);\n    return completeAttributeValueQuoted;\n  }\n  function completeAttributeValueUnquoted(code2) {\n    if (code2 === null || code2 === 34 || code2 === 39 || code2 === 47 || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 || markdownLineEndingOrSpace(code2)) {\n      return completeAttributeNameAfter(code2);\n    }\n    effects.consume(code2);\n    return completeAttributeValueUnquoted;\n  }\n  function completeAttributeValueQuotedAfter(code2) {\n    if (code2 === 47 || code2 === 62 || markdownSpace(code2)) {\n      return completeAttributeNameBefore(code2);\n    }\n    return nok(code2);\n  }\n  function completeEnd(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      return completeAfter;\n    }\n    return nok(code2);\n  }\n  function completeAfter(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return continuation(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return completeAfter;\n    }\n    return nok(code2);\n  }\n  function continuation(code2) {\n    if (code2 === 45 && marker === 2) {\n      effects.consume(code2);\n      return continuationCommentInside;\n    }\n    if (code2 === 60 && marker === 1) {\n      effects.consume(code2);\n      return continuationRawTagOpen;\n    }\n    if (code2 === 62 && marker === 4) {\n      effects.consume(code2);\n      return continuationClose;\n    }\n    if (code2 === 63 && marker === 3) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    if (code2 === 93 && marker === 5) {\n      effects.consume(code2);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code2) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(\n        blankLineBefore,\n        continuationAfter,\n        continuationStart\n      )(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code2);\n    }\n    effects.consume(code2);\n    return continuation;\n  }\n  function continuationStart(code2) {\n    return effects.check(\n      nonLazyContinuationStart,\n      continuationStartNonLazy,\n      continuationAfter\n    )(code2);\n  }\n  function continuationStartNonLazy(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n  function continuationBefore(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      return continuationStart(code2);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code2);\n  }\n  function continuationCommentInside(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    return continuation(code2);\n  }\n  function continuationRawTagOpen(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      buffer = \"\";\n      return continuationRawEndTag;\n    }\n    return continuation(code2);\n  }\n  function continuationRawEndTag(code2) {\n    if (code2 === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code2);\n        return continuationClose;\n      }\n      return continuation(code2);\n    }\n    if (asciiAlpha(code2) && buffer.length < 8) {\n      effects.consume(code2);\n      buffer += String.fromCharCode(code2);\n      return continuationRawEndTag;\n    }\n    return continuation(code2);\n  }\n  function continuationCdataInside(code2) {\n    if (code2 === 93) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    return continuation(code2);\n  }\n  function continuationDeclarationInside(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      return continuationClose;\n    }\n    if (code2 === 45 && marker === 2) {\n      effects.consume(code2);\n      return continuationDeclarationInside;\n    }\n    return continuation(code2);\n  }\n  function continuationClose(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code2);\n    }\n    effects.consume(code2);\n    return continuationClose;\n  }\n  function continuationAfter(code2) {\n    effects.exit(\"htmlFlow\");\n    return ok(code2);\n  }\n}\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    if (markdownLineEnding(code2)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code2);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    return self2.parser.lazy[self2.now().line] ? nok(code2) : ok(code2);\n  }\n}\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}\nconst htmlText = {\n  name: \"htmlText\",\n  tokenize: tokenizeHtmlText\n};\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self2 = this;\n  let marker;\n  let index;\n  let returnState;\n  return start;\n  function start(code2) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code2);\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 33) {\n      effects.consume(code2);\n      return declarationOpen;\n    }\n    if (code2 === 47) {\n      effects.consume(code2);\n      return tagCloseStart;\n    }\n    if (code2 === 63) {\n      effects.consume(code2);\n      return instruction;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return tagOpen;\n    }\n    return nok(code2);\n  }\n  function declarationOpen(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentOpenInside;\n    }\n    if (code2 === 91) {\n      effects.consume(code2);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return declaration;\n    }\n    return nok(code2);\n  }\n  function commentOpenInside(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentEnd;\n    }\n    return nok(code2);\n  }\n  function comment(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentClose;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = comment;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return comment;\n  }\n  function commentClose(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return commentEnd;\n    }\n    return comment(code2);\n  }\n  function commentEnd(code2) {\n    return code2 === 62 ? end(code2) : code2 === 45 ? commentClose(code2) : comment(code2);\n  }\n  function cdataOpenInside(code2) {\n    const value = \"CDATA[\";\n    if (code2 === value.charCodeAt(index++)) {\n      effects.consume(code2);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code2);\n  }\n  function cdata(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = cdata;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return cdata;\n  }\n  function cdataClose(code2) {\n    if (code2 === 93) {\n      effects.consume(code2);\n      return cdataEnd;\n    }\n    return cdata(code2);\n  }\n  function cdataEnd(code2) {\n    if (code2 === 62) {\n      return end(code2);\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return cdataEnd;\n    }\n    return cdata(code2);\n  }\n  function declaration(code2) {\n    if (code2 === null || code2 === 62) {\n      return end(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = declaration;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return declaration;\n  }\n  function instruction(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (code2 === 63) {\n      effects.consume(code2);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = instruction;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return instruction;\n  }\n  function instructionClose(code2) {\n    return code2 === 62 ? end(code2) : instruction(code2);\n  }\n  function tagCloseStart(code2) {\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return tagClose;\n    }\n    return nok(code2);\n  }\n  function tagClose(code2) {\n    if (code2 === 45 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return tagClose;\n    }\n    return tagCloseBetween(code2);\n  }\n  function tagCloseBetween(code2) {\n    if (markdownLineEnding(code2)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagCloseBetween;\n    }\n    return end(code2);\n  }\n  function tagOpen(code2) {\n    if (code2 === 45 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return tagOpen;\n    }\n    if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      return tagOpenBetween(code2);\n    }\n    return nok(code2);\n  }\n  function tagOpenBetween(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      return end;\n    }\n    if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagOpenBetween;\n    }\n    return end(code2);\n  }\n  function tagOpenAttributeName(code2) {\n    if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code2);\n  }\n  function tagOpenAttributeNameAfter(code2) {\n    if (code2 === 61) {\n      effects.consume(code2);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code2);\n  }\n  function tagOpenAttributeValueBefore(code2) {\n    if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) {\n      return nok(code2);\n    }\n    if (code2 === 34 || code2 === 39) {\n      effects.consume(code2);\n      marker = code2;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code2);\n    }\n    if (markdownSpace(code2)) {\n      effects.consume(code2);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code2);\n    return tagOpenAttributeValueUnquoted;\n  }\n  function tagOpenAttributeValueQuoted(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      marker = void 0;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code2);\n    }\n    effects.consume(code2);\n    return tagOpenAttributeValueQuoted;\n  }\n  function tagOpenAttributeValueUnquoted(code2) {\n    if (code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 96) {\n      return nok(code2);\n    }\n    if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      return tagOpenBetween(code2);\n    }\n    effects.consume(code2);\n    return tagOpenAttributeValueUnquoted;\n  }\n  function tagOpenAttributeValueQuotedAfter(code2) {\n    if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {\n      return tagOpenBetween(code2);\n    }\n    return nok(code2);\n  }\n  function end(code2) {\n    if (code2 === 62) {\n      effects.consume(code2);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code2);\n  }\n  function lineEndingBefore(code2) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n  function lineEndingAfter(code2) {\n    return markdownSpace(code2) ? factorySpace(\n      effects,\n      lineEndingAfterPrefix,\n      \"linePrefix\",\n      self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n    )(code2) : lineEndingAfterPrefix(code2);\n  }\n  function lineEndingAfterPrefix(code2) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code2);\n  }\n}\nconst labelEnd = {\n  name: \"labelEnd\",\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n};\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  while (++index < events.length) {\n    const token = events[index][1];\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      events.splice(index + 1, token.type === \"labelImage\" ? 4 : 2);\n      token.type = \"data\";\n      index++;\n    }\n  }\n  return events;\n}\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  let token;\n  let open;\n  let close;\n  let media;\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n      if (events[index][0] === \"enter\" && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === \"enter\" && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  const label = {\n    type: \"label\",\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[close][1].end)\n  };\n  const text2 = {\n    type: \"labelText\",\n    start: Object.assign({}, events[open + offset + 2][1].end),\n    end: Object.assign({}, events[close - 2][1].start)\n  };\n  media = [\n    [\"enter\", group, context],\n    [\"enter\", label, context]\n  ];\n  media = push(media, events.slice(open + 1, open + offset + 3));\n  media = push(media, [[\"enter\", text2, context]]);\n  media = push(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  );\n  media = push(media, [\n    [\"exit\", text2, context],\n    events[close - 2],\n    events[close - 1],\n    [\"exit\", label, context]\n  ]);\n  media = push(media, events.slice(close + 1));\n  media = push(media, [[\"exit\", group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self2 = this;\n  let index = self2.events.length;\n  let labelStart;\n  let defined;\n  while (index--) {\n    if ((self2.events[index][1].type === \"labelImage\" || self2.events[index][1].type === \"labelLink\") && !self2.events[index][1]._balanced) {\n      labelStart = self2.events[index][1];\n      break;\n    }\n  }\n  return start;\n  function start(code2) {\n    if (!labelStart) {\n      return nok(code2);\n    }\n    if (labelStart._inactive) {\n      return labelEndNok(code2);\n    }\n    defined = self2.parser.defined.includes(\n      normalizeIdentifier(\n        self2.sliceSerialize({\n          start: labelStart.end,\n          end: self2.now()\n        })\n      )\n    );\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code2);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n  function after(code2) {\n    if (code2 === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        labelEndOk,\n        defined ? labelEndOk : labelEndNok\n      )(code2);\n    }\n    if (code2 === 91) {\n      return effects.attempt(\n        referenceFullConstruct,\n        labelEndOk,\n        defined ? referenceNotFull : labelEndNok\n      )(code2);\n    }\n    return defined ? labelEndOk(code2) : labelEndNok(code2);\n  }\n  function referenceNotFull(code2) {\n    return effects.attempt(\n      referenceCollapsedConstruct,\n      labelEndOk,\n      labelEndNok\n    )(code2);\n  }\n  function labelEndOk(code2) {\n    return ok(code2);\n  }\n  function labelEndNok(code2) {\n    labelStart._balanced = true;\n    return nok(code2);\n  }\n}\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n  function resourceStart(code2) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code2);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n  function resourceBefore(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceOpen)(code2) : resourceOpen(code2);\n  }\n  function resourceOpen(code2) {\n    if (code2 === 41) {\n      return resourceEnd(code2);\n    }\n    return factoryDestination(\n      effects,\n      resourceDestinationAfter,\n      resourceDestinationMissing,\n      \"resourceDestination\",\n      \"resourceDestinationLiteral\",\n      \"resourceDestinationLiteralMarker\",\n      \"resourceDestinationRaw\",\n      \"resourceDestinationString\",\n      32\n    )(code2);\n  }\n  function resourceDestinationAfter(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceBetween)(code2) : resourceEnd(code2);\n  }\n  function resourceDestinationMissing(code2) {\n    return nok(code2);\n  }\n  function resourceBetween(code2) {\n    if (code2 === 34 || code2 === 39 || code2 === 40) {\n      return factoryTitle(\n        effects,\n        resourceTitleAfter,\n        nok,\n        \"resourceTitle\",\n        \"resourceTitleMarker\",\n        \"resourceTitleString\"\n      )(code2);\n    }\n    return resourceEnd(code2);\n  }\n  function resourceTitleAfter(code2) {\n    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceEnd)(code2) : resourceEnd(code2);\n  }\n  function resourceEnd(code2) {\n    if (code2 === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code2);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self2 = this;\n  return referenceFull;\n  function referenceFull(code2) {\n    return factoryLabel.call(\n      self2,\n      effects,\n      referenceFullAfter,\n      referenceFullMissing,\n      \"reference\",\n      \"referenceMarker\",\n      \"referenceString\"\n    )(code2);\n  }\n  function referenceFullAfter(code2) {\n    return self2.parser.defined.includes(\n      normalizeIdentifier(\n        self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1)\n      )\n    ) ? ok(code2) : nok(code2);\n  }\n  function referenceFullMissing(code2) {\n    return nok(code2);\n  }\n}\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n  function referenceCollapsedStart(code2) {\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code2);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n  function referenceCollapsedOpen(code2) {\n    if (code2 === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code2);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code2);\n  }\n}\nconst labelStartImage = {\n  name: \"labelStartImage\",\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n};\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code2);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n  function open(code2) {\n    if (code2 === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code2);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    return code2 === 94 && \"_hiddenFootnoteSupport\" in self2.parser.constructs ? nok(code2) : ok(code2);\n  }\n}\nconst labelStartLink = {\n  name: \"labelStartLink\",\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n};\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self2 = this;\n  return start;\n  function start(code2) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code2);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n  function after(code2) {\n    return code2 === 94 && \"_hiddenFootnoteSupport\" in self2.parser.constructs ? nok(code2) : ok(code2);\n  }\n}\nconst lineEnding = {\n  name: \"lineEnding\",\n  tokenize: tokenizeLineEnding\n};\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n  function start(code2) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}\nconst thematicBreak = {\n  name: \"thematicBreak\",\n  tokenize: tokenizeThematicBreak\n};\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size2 = 0;\n  let marker;\n  return start;\n  function start(code2) {\n    effects.enter(\"thematicBreak\");\n    return before(code2);\n  }\n  function before(code2) {\n    marker = code2;\n    return atBreak(code2);\n  }\n  function atBreak(code2) {\n    if (code2 === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code2);\n    }\n    if (size2 >= 3 && (code2 === null || markdownLineEnding(code2))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n  function sequence(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      size2++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code2) ? factorySpace(effects, atBreak, \"whitespace\")(code2) : atBreak(code2);\n  }\n}\nconst list = {\n  name: \"list\",\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n};\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n};\nconst indentConstruct = {\n  tokenize: tokenizeIndent$1,\n  partial: true\n};\nfunction tokenizeListStart(effects, ok, nok) {\n  const self2 = this;\n  const tail = self2.events[self2.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size2 = 0;\n  return start;\n  function start(code2) {\n    const kind = self2.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self2.containerState.marker || code2 === self2.containerState.marker : asciiDigit(code2)) {\n      if (!self2.containerState.type) {\n        self2.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code2 === 42 || code2 === 45 ? effects.check(thematicBreak, nok, atMarker)(code2) : atMarker(code2);\n      }\n      if (!self2.interrupt || code2 === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code2);\n      }\n    }\n    return nok(code2);\n  }\n  function inside(code2) {\n    if (asciiDigit(code2) && ++size2 < 10) {\n      effects.consume(code2);\n      return inside;\n    }\n    if ((!self2.interrupt || size2 < 2) && (self2.containerState.marker ? code2 === self2.containerState.marker : code2 === 41 || code2 === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code2);\n    }\n    return nok(code2);\n  }\n  function atMarker(code2) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code2);\n    effects.exit(\"listItemMarker\");\n    self2.containerState.marker = self2.containerState.marker || code2;\n    return effects.check(\n      blankLine,\n      self2.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    );\n  }\n  function onBlank(code2) {\n    self2.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code2);\n  }\n  function otherPrefix(code2) {\n    if (markdownSpace(code2)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code2);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code2);\n  }\n  function endOfPrefix(code2) {\n    self2.containerState.size = initialSize + self2.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code2);\n  }\n}\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self2 = this;\n  self2.containerState._closeFlow = void 0;\n  return effects.check(blankLine, onBlank, notBlank);\n  function onBlank(code2) {\n    self2.containerState.furtherBlankLines = self2.containerState.furtherBlankLines || self2.containerState.initialBlankLine;\n    return factorySpace(\n      effects,\n      ok,\n      \"listItemIndent\",\n      self2.containerState.size + 1\n    )(code2);\n  }\n  function notBlank(code2) {\n    if (self2.containerState.furtherBlankLines || !markdownSpace(code2)) {\n      self2.containerState.furtherBlankLines = void 0;\n      self2.containerState.initialBlankLine = void 0;\n      return notInCurrentItem(code2);\n    }\n    self2.containerState.furtherBlankLines = void 0;\n    self2.containerState.initialBlankLine = void 0;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code2);\n  }\n  function notInCurrentItem(code2) {\n    self2.containerState._closeFlow = true;\n    self2.interrupt = void 0;\n    return factorySpace(\n      effects,\n      effects.attempt(list, ok, nok),\n      \"linePrefix\",\n      self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n    )(code2);\n  }\n}\nfunction tokenizeIndent$1(effects, ok, nok) {\n  const self2 = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"listItemIndent\",\n    self2.containerState.size + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self2.containerState.size ? ok(code2) : nok(code2);\n  }\n}\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self2 = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"listItemPrefixWhitespace\",\n    self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4 + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return !markdownSpace(code2) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code2) : nok(code2);\n  }\n}\nconst setextUnderline = {\n  name: \"setextUnderline\",\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n};\nfunction resolveToSetextUnderline(events, context) {\n  let index = events.length;\n  let content2;\n  let text2;\n  let definition2;\n  while (index--) {\n    if (events[index][0] === \"enter\") {\n      if (events[index][1].type === \"content\") {\n        content2 = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text2 = index;\n      }\n    } else {\n      if (events[index][1].type === \"content\") {\n        events.splice(index, 1);\n      }\n      if (!definition2 && events[index][1].type === \"definition\") {\n        definition2 = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: Object.assign({}, events[text2][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  events[text2][1].type = \"setextHeadingText\";\n  if (definition2) {\n    events.splice(text2, 0, [\"enter\", heading, context]);\n    events.splice(definition2 + 1, 0, [\"exit\", events[content2][1], context]);\n    events[content2][1].end = Object.assign({}, events[definition2][1].end);\n  } else {\n    events[content2][1] = heading;\n  }\n  events.push([\"exit\", heading, context]);\n  return events;\n}\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self2 = this;\n  let marker;\n  return start;\n  function start(code2) {\n    let index = self2.events.length;\n    let paragraph;\n    while (index--) {\n      if (self2.events[index][1].type !== \"lineEnding\" && self2.events[index][1].type !== \"linePrefix\" && self2.events[index][1].type !== \"content\") {\n        paragraph = self2.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n    if (!self2.parser.lazy[self2.now().line] && (self2.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code2;\n      return before(code2);\n    }\n    return nok(code2);\n  }\n  function before(code2) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code2);\n  }\n  function inside(code2) {\n    if (code2 === marker) {\n      effects.consume(code2);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code2) ? factorySpace(effects, after, \"lineSuffix\")(code2) : after(code2);\n  }\n  function after(code2) {\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nconst flow$1 = {\n  tokenize: initializeFlow\n};\nfunction initializeFlow(effects) {\n  const self2 = this;\n  const initial = effects.attempt(\n    blankLine,\n    atBlankEnding,\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content, afterConstruct)\n        ),\n        \"linePrefix\"\n      )\n    )\n  );\n  return initial;\n  function atBlankEnding(code2) {\n    if (code2 === null) {\n      effects.consume(code2);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code2);\n    effects.exit(\"lineEndingBlank\");\n    self2.currentConstruct = void 0;\n    return initial;\n  }\n  function afterConstruct(code2) {\n    if (code2 === null) {\n      effects.consume(code2);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code2);\n    effects.exit(\"lineEnding\");\n    self2.currentConstruct = void 0;\n    return initial;\n  }\n}\nconst resolver = {\n  resolveAll: createResolver()\n};\nconst string$1 = initializeFactory(\"string\");\nconst text$3 = initializeFactory(\"text\");\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === \"text\" ? resolveAllLineSuffixes : void 0\n    )\n  };\n  function initializeText(effects) {\n    const self2 = this;\n    const constructs2 = this.parser.constructs[field];\n    const text2 = effects.attempt(constructs2, start, notText);\n    return start;\n    function start(code2) {\n      return atBreak(code2) ? text2(code2) : notText(code2);\n    }\n    function notText(code2) {\n      if (code2 === null) {\n        effects.consume(code2);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code2);\n      return data;\n    }\n    function data(code2) {\n      if (atBreak(code2)) {\n        effects.exit(\"data\");\n        return text2(code2);\n      }\n      effects.consume(code2);\n      return data;\n    }\n    function atBreak(code2) {\n      if (code2 === null) {\n        return true;\n      }\n      const list2 = constructs2[code2];\n      let index = -1;\n      if (list2) {\n        while (++index < list2.length) {\n          const item = list2[index];\n          if (!item.previous || item.previous.call(self2, self2.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n  function resolveAllText(events, context) {\n    let index = -1;\n    let enter;\n    while (++index <= events.length) {\n      if (enter === void 0) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = void 0;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0;\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size2 = 0;\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === \"string\") {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size2++;\n            bufferIndex--;\n          }\n          if (bufferIndex)\n            break;\n          bufferIndex = -1;\n        } else if (chunk === -2) {\n          tabs = true;\n          size2++;\n        } else if (chunk === -1)\n          ;\n        else {\n          index++;\n          break;\n        }\n      }\n      if (size2) {\n        const token = {\n          type: eventIndex === events.length || tabs || size2 < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            line: data.end.line,\n            column: data.end.column - size2,\n            offset: data.end.offset - size2,\n            _index: data.start._index + index,\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex\n          },\n          end: Object.assign({}, data.end)\n        };\n        data.end = Object.assign({}, token.start);\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            [\"enter\", token, context],\n            [\"exit\", token, context]\n          );\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}\nfunction createTokenizer(parser, initialize, from) {\n  let point = Object.assign(\n    from ? Object.assign({}, from) : {\n      line: 1,\n      column: 1,\n      offset: 0\n    },\n    {\n      _index: 0,\n      _bufferIndex: -1\n    }\n  );\n  const columnStart = {};\n  const resolveAllConstructs = [];\n  let chunks = [];\n  let stack = [];\n  const effects = {\n    consume,\n    enter,\n    exit: exit2,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n  const context = {\n    previous: null,\n    code: null,\n    containerState: {},\n    events: [],\n    parser,\n    sliceStream,\n    sliceSerialize,\n    now,\n    defineSkip,\n    write\n  };\n  let state = initialize.tokenize.call(context, effects);\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n  function now() {\n    const { line, column, offset, _index, _bufferIndex } = point;\n    return {\n      line,\n      column,\n      offset,\n      _index,\n      _bufferIndex\n    };\n  }\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n  function main() {\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n      if (typeof chunk === \"string\") {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n  function go(code2) {\n    state = state(code2);\n  }\n  function consume(code2) {\n    if (markdownLineEnding(code2)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code2 === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code2 !== -1) {\n      point.column++;\n      point.offset++;\n    }\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n    context.previous = code2;\n  }\n  function enter(type, fields) {\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push([\"enter\", token, context]);\n    stack.push(token);\n    return token;\n  }\n  function exit2(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push([\"exit\", token, context]);\n    return token;\n  }\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n  function constructFactory(onreturn, fields) {\n    return hook;\n    function hook(constructs2, returnState, bogusState) {\n      let listOfConstructs;\n      let constructIndex;\n      let currentConstruct;\n      let info;\n      return Array.isArray(constructs2) ? handleListOfConstructs(constructs2) : \"tokenize\" in constructs2 ? handleListOfConstructs([constructs2]) : handleMapOfConstructs(constructs2);\n      function handleMapOfConstructs(map) {\n        return start;\n        function start(code2) {\n          const def2 = code2 !== null && map[code2];\n          const all = code2 !== null && map.null;\n          const list2 = [\n            ...Array.isArray(def2) ? def2 : def2 ? [def2] : [],\n            ...Array.isArray(all) ? all : all ? [all] : []\n          ];\n          return handleListOfConstructs(list2)(code2);\n        }\n      }\n      function handleListOfConstructs(list2) {\n        listOfConstructs = list2;\n        constructIndex = 0;\n        if (list2.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list2[constructIndex]);\n      }\n      function handleConstruct(construct) {\n        return start;\n        function start(code2) {\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok();\n          }\n          return construct.tokenize.call(\n            fields ? Object.assign(Object.create(context), fields) : context,\n            effects,\n            ok,\n            nok\n          )(code2);\n        }\n      }\n      function ok(code2) {\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n      function nok(code2) {\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n  function addResult(construct, from2) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(\n        context.events,\n        from2,\n        context.events.length - from2,\n        construct.resolve(context.events.slice(from2), context)\n      );\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      restore,\n      from: startEventsIndex\n    };\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  let view;\n  if (startIndex === endIndex) {\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === \"string\") {\n        view[0] = head.slice(startBufferIndex);\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  const result = [];\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    let value;\n    if (typeof chunk === \"string\") {\n      value = chunk;\n    } else\n      switch (chunk) {\n        case -5: {\n          value = \"\\r\";\n          break;\n        }\n        case -4: {\n          value = \"\\n\";\n          break;\n        }\n        case -3: {\n          value = \"\\r\\n\";\n          break;\n        }\n        case -2: {\n          value = expandTabs ? \" \" : \"\t\";\n          break;\n        }\n        case -1: {\n          if (!expandTabs && atTab)\n            continue;\n          value = \" \";\n          break;\n        }\n        default: {\n          value = String.fromCharCode(chunk);\n        }\n      }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join(\"\");\n}\nconst document$1 = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\nconst contentInitial = {\n  [91]: definition\n};\nconst flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\nconst flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\nconst string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\nconst text$2 = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\nconst insideSpan = {\n  null: [attention, resolver]\n};\nconst attentionMarkers = {\n  null: [42, 95]\n};\nconst disable = {\n  null: []\n};\nvar defaultConstructs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  document: document$1,\n  contentInitial,\n  flowInitial,\n  flow,\n  string,\n  text: text$2,\n  insideSpan,\n  attentionMarkers,\n  disable\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction parse(options) {\n  const settings = options || {};\n  const constructs2 = combineExtensions([defaultConstructs, ...settings.extensions || []]);\n  const parser = {\n    defined: [],\n    lazy: {},\n    constructs: constructs2,\n    content: create(content$1),\n    document: create(document$2),\n    flow: create(flow$1),\n    string: create(string$1),\n    text: create(text$3)\n  };\n  return parser;\n  function create(initial) {\n    return creator;\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}\nfunction postprocess(events) {\n  while (!subtokenize(events)) {\n  }\n  return events;\n}\nconst search = /[\\0\\t\\n\\r]/g;\nfunction preprocess() {\n  let column = 1;\n  let buffer = \"\";\n  let start = true;\n  let atCarriageReturn;\n  return preprocessor;\n  function preprocessor(value, encoding, end) {\n    const chunks = [];\n    let match;\n    let next;\n    let startPosition;\n    let endPosition;\n    let code2;\n    value = buffer + value.toString(encoding);\n    startPosition = 0;\n    buffer = \"\";\n    if (start) {\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = void 0;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== void 0 ? match.index : value.length;\n      code2 = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code2 === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = void 0;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = void 0;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code2) {\n          case 0: {\n            chunks.push(65533);\n            column++;\n            break;\n          }\n          case 9: {\n            next = Math.ceil(column / 4) * 4;\n            chunks.push(-2);\n            while (column++ < next)\n              chunks.push(-1);\n            break;\n          }\n          case 10: {\n            chunks.push(-4);\n            column = 1;\n            break;\n          }\n          default: {\n            atCarriageReturn = true;\n            column = 1;\n          }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn)\n        chunks.push(-5);\n      if (buffer)\n        chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}\nfunction micromark(value, encoding, options) {\n  if (typeof encoding !== \"string\") {\n    options = encoding;\n    encoding = void 0;\n  }\n  return compile(options)(\n    postprocess(\n      parse(options).document().write(preprocess()(value, encoding, true))\n    )\n  );\n}\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\nconst text$1 = {};\nconst gfmAutolinkLiteral = {\n  text: text$1\n};\nlet code = 48;\nwhile (code < 123) {\n  text$1[code] = emailAutolink;\n  code++;\n  if (code === 58)\n    code = 65;\n  else if (code === 91)\n    code = 97;\n}\ntext$1[43] = emailAutolink;\ntext$1[45] = emailAutolink;\ntext$1[46] = emailAutolink;\ntext$1[95] = emailAutolink;\ntext$1[72] = [emailAutolink, protocolAutolink];\ntext$1[104] = [emailAutolink, protocolAutolink];\ntext$1[87] = [emailAutolink, wwwAutolink];\ntext$1[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self2 = this;\n  let dot;\n  let data;\n  return start;\n  function start(code2) {\n    if (!gfmAtext(code2) || !previousEmail.call(self2, self2.previous) || previousUnbalanced(self2.events)) {\n      return nok(code2);\n    }\n    effects.enter(\"literalAutolink\");\n    effects.enter(\"literalAutolinkEmail\");\n    return atext(code2);\n  }\n  function atext(code2) {\n    if (gfmAtext(code2)) {\n      effects.consume(code2);\n      return atext;\n    }\n    if (code2 === 64) {\n      effects.consume(code2);\n      return emailDomain;\n    }\n    return nok(code2);\n  }\n  function emailDomain(code2) {\n    if (code2 === 46) {\n      return effects.check(\n        emailDomainDotTrail,\n        emailDomainAfter,\n        emailDomainDot\n      )(code2);\n    }\n    if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n      data = true;\n      effects.consume(code2);\n      return emailDomain;\n    }\n    return emailDomainAfter(code2);\n  }\n  function emailDomainDot(code2) {\n    effects.consume(code2);\n    dot = true;\n    return emailDomain;\n  }\n  function emailDomainAfter(code2) {\n    if (data && dot && asciiAlpha(self2.previous)) {\n      effects.exit(\"literalAutolinkEmail\");\n      effects.exit(\"literalAutolink\");\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self2 = this;\n  return wwwStart;\n  function wwwStart(code2) {\n    if (code2 !== 87 && code2 !== 119 || !previousWww.call(self2, self2.previous) || previousUnbalanced(self2.events)) {\n      return nok(code2);\n    }\n    effects.enter(\"literalAutolink\");\n    effects.enter(\"literalAutolinkWww\");\n    return effects.check(\n      wwwPrefix,\n      effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n      nok\n    )(code2);\n  }\n  function wwwAfter(code2) {\n    effects.exit(\"literalAutolinkWww\");\n    effects.exit(\"literalAutolink\");\n    return ok(code2);\n  }\n}\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self2 = this;\n  let buffer = \"\";\n  let seen = false;\n  return protocolStart;\n  function protocolStart(code2) {\n    if ((code2 === 72 || code2 === 104) && previousProtocol.call(self2, self2.previous) && !previousUnbalanced(self2.events)) {\n      effects.enter(\"literalAutolink\");\n      effects.enter(\"literalAutolinkHttp\");\n      buffer += String.fromCodePoint(code2);\n      effects.consume(code2);\n      return protocolPrefixInside;\n    }\n    return nok(code2);\n  }\n  function protocolPrefixInside(code2) {\n    if (asciiAlpha(code2) && buffer.length < 5) {\n      buffer += String.fromCodePoint(code2);\n      effects.consume(code2);\n      return protocolPrefixInside;\n    }\n    if (code2 === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === \"http\" || protocol === \"https\") {\n        effects.consume(code2);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code2);\n  }\n  function protocolSlashesInside(code2) {\n    if (code2 === 47) {\n      effects.consume(code2);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code2);\n  }\n  function afterProtocol(code2) {\n    return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n  }\n  function protocolAfter(code2) {\n    effects.exit(\"literalAutolinkHttp\");\n    effects.exit(\"literalAutolink\");\n    return ok(code2);\n  }\n}\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size2 = 0;\n  return wwwPrefixInside;\n  function wwwPrefixInside(code2) {\n    if ((code2 === 87 || code2 === 119) && size2 < 3) {\n      size2++;\n      effects.consume(code2);\n      return wwwPrefixInside;\n    }\n    if (code2 === 46 && size2 === 3) {\n      effects.consume(code2);\n      return wwwPrefixAfter;\n    }\n    return nok(code2);\n  }\n  function wwwPrefixAfter(code2) {\n    return code2 === null ? nok(code2) : ok(code2);\n  }\n}\nfunction tokenizeDomain(effects, ok, nok) {\n  let underscoreInLastSegment;\n  let underscoreInLastLastSegment;\n  let seen;\n  return domainInside;\n  function domainInside(code2) {\n    if (code2 === 46 || code2 === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n      return domainAfter(code2);\n    }\n    seen = true;\n    effects.consume(code2);\n    return domainInside;\n  }\n  function domainAtPunctuation(code2) {\n    if (code2 === 95) {\n      underscoreInLastSegment = true;\n    } else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = void 0;\n    }\n    effects.consume(code2);\n    return domainInside;\n  }\n  function domainAfter(code2) {\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code2);\n    }\n    return ok(code2);\n  }\n}\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n  function pathInside(code2) {\n    if (code2 === 40) {\n      sizeOpen++;\n      effects.consume(code2);\n      return pathInside;\n    }\n    if (code2 === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code2);\n    }\n    if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n      return effects.check(trail, ok, pathAtPunctuation)(code2);\n    }\n    if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok(code2);\n    }\n    effects.consume(code2);\n    return pathInside;\n  }\n  function pathAtPunctuation(code2) {\n    if (code2 === 41) {\n      sizeClose++;\n    }\n    effects.consume(code2);\n    return pathInside;\n  }\n}\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail2;\n  function trail2(code2) {\n    if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n      effects.consume(code2);\n      return trail2;\n    }\n    if (code2 === 38) {\n      effects.consume(code2);\n      return trailCharRefStart;\n    }\n    if (code2 === 93) {\n      effects.consume(code2);\n      return trailBracketAfter;\n    }\n    if (code2 === 60 || code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok(code2);\n    }\n    return nok(code2);\n  }\n  function trailBracketAfter(code2) {\n    if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n      return ok(code2);\n    }\n    return trail2(code2);\n  }\n  function trailCharRefStart(code2) {\n    return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n  }\n  function trailCharRefInside(code2) {\n    if (code2 === 59) {\n      effects.consume(code2);\n      return trail2;\n    }\n    if (asciiAlpha(code2)) {\n      effects.consume(code2);\n      return trailCharRefInside;\n    }\n    return nok(code2);\n  }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start;\n  function start(code2) {\n    effects.consume(code2);\n    return after;\n  }\n  function after(code2) {\n    return asciiAlphanumeric(code2) ? nok(code2) : ok(code2);\n  }\n}\nfunction previousWww(code2) {\n  return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n  return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n  return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n  return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n      result = true;\n      break;\n    }\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}\nconst gfmAutolinkLiteralHtml = {\n  exit: {\n    literalAutolinkEmail,\n    literalAutolinkHttp,\n    literalAutolinkWww\n  }\n};\nfunction literalAutolinkWww(token) {\n  anchorFromToken.call(this, token, \"http://\");\n}\nfunction literalAutolinkEmail(token) {\n  anchorFromToken.call(this, token, \"mailto:\");\n}\nfunction literalAutolinkHttp(token) {\n  anchorFromToken.call(this, token);\n}\nfunction anchorFromToken(token, protocol) {\n  const url = this.sliceSerialize(token);\n  this.tag('<a href=\"' + sanitizeUri((protocol || \"\") + url) + '\">');\n  this.raw(this.encode(url));\n  this.tag(\"</a>\");\n}\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\nfunction gfmFootnote() {\n  return {\n    document: {\n      [91]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        add: \"after\",\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self2 = this;\n  let index = self2.events.length;\n  const defined = self2.parser.gfmFootnotes || (self2.parser.gfmFootnotes = []);\n  let labelStart;\n  while (index--) {\n    const token = self2.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n    if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n  function start(code2) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code2);\n    }\n    const id = normalizeIdentifier(\n      self2.sliceSerialize({\n        start: labelStart.end,\n        end: self2.now()\n      })\n    );\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code2);\n    }\n    effects.enter(\"gfmFootnoteCallLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallLabelMarker\");\n    return ok(code2);\n  }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n      events[index][1];\n      break;\n    }\n  }\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n  const call = {\n    type: \"gfmFootnoteCall\",\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  const marker = {\n    type: \"gfmFootnoteCallMarker\",\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  const string2 = {\n    type: \"gfmFootnoteCallString\",\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  const chunk = {\n    type: \"chunkString\",\n    contentType: \"string\",\n    start: Object.assign({}, string2.start),\n    end: Object.assign({}, string2.end)\n  };\n  const replacement = [\n    events[index + 1],\n    events[index + 2],\n    [\"enter\", call, context],\n    events[index + 3],\n    events[index + 4],\n    [\"enter\", marker, context],\n    [\"exit\", marker, context],\n    [\"enter\", string2, context],\n    [\"enter\", chunk, context],\n    [\"exit\", chunk, context],\n    [\"exit\", string2, context],\n    events[events.length - 2],\n    events[events.length - 1],\n    [\"exit\", call, context]\n  ];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self2 = this;\n  const defined = self2.parser.gfmFootnotes || (self2.parser.gfmFootnotes = []);\n  let size2 = 0;\n  let data;\n  return start;\n  function start(code2) {\n    effects.enter(\"gfmFootnoteCall\");\n    effects.enter(\"gfmFootnoteCallLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallLabelMarker\");\n    return callStart;\n  }\n  function callStart(code2) {\n    if (code2 !== 94)\n      return nok(code2);\n    effects.enter(\"gfmFootnoteCallMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteCallMarker\");\n    effects.enter(\"gfmFootnoteCallString\");\n    effects.enter(\"chunkString\").contentType = \"string\";\n    return callData;\n  }\n  function callData(code2) {\n    if (size2 > 999 || code2 === 93 && !data || code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(\"chunkString\");\n      const token = effects.exit(\"gfmFootnoteCallString\");\n      if (!defined.includes(normalizeIdentifier(self2.sliceSerialize(token)))) {\n        return nok(code2);\n      }\n      effects.enter(\"gfmFootnoteCallLabelMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteCallLabelMarker\");\n      effects.exit(\"gfmFootnoteCall\");\n      return ok;\n    }\n    if (!markdownLineEndingOrSpace(code2)) {\n      data = true;\n    }\n    size2++;\n    effects.consume(code2);\n    return code2 === 92 ? callEscape : callData;\n  }\n  function callEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size2++;\n      return callData;\n    }\n    return callData(code2);\n  }\n}\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self2 = this;\n  const defined = self2.parser.gfmFootnotes || (self2.parser.gfmFootnotes = []);\n  let identifier;\n  let size2 = 0;\n  let data;\n  return start;\n  function start(code2) {\n    effects.enter(\"gfmFootnoteDefinition\")._container = true;\n    effects.enter(\"gfmFootnoteDefinitionLabel\");\n    effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n    effects.consume(code2);\n    effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n    return labelAtMarker;\n  }\n  function labelAtMarker(code2) {\n    if (code2 === 94) {\n      effects.enter(\"gfmFootnoteDefinitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteDefinitionMarker\");\n      effects.enter(\"gfmFootnoteDefinitionLabelString\");\n      effects.enter(\"chunkString\").contentType = \"string\";\n      return labelInside;\n    }\n    return nok(code2);\n  }\n  function labelInside(code2) {\n    if (size2 > 999 || code2 === 93 && !data || code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)) {\n      return nok(code2);\n    }\n    if (code2 === 93) {\n      effects.exit(\"chunkString\");\n      const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n      identifier = normalizeIdentifier(self2.sliceSerialize(token));\n      effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n      effects.consume(code2);\n      effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n      effects.exit(\"gfmFootnoteDefinitionLabel\");\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code2)) {\n      data = true;\n    }\n    size2++;\n    effects.consume(code2);\n    return code2 === 92 ? labelEscape : labelInside;\n  }\n  function labelEscape(code2) {\n    if (code2 === 91 || code2 === 92 || code2 === 93) {\n      effects.consume(code2);\n      size2++;\n      return labelInside;\n    }\n    return labelInside(code2);\n  }\n  function labelAfter(code2) {\n    if (code2 === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code2);\n      effects.exit(\"definitionMarker\");\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n      return factorySpace(\n        effects,\n        whitespaceAfter,\n        \"gfmFootnoteDefinitionWhitespace\"\n      );\n    }\n    return nok(code2);\n  }\n  function whitespaceAfter(code2) {\n    return ok(code2);\n  }\n}\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok, nok) {\n  const self2 = this;\n  return factorySpace(\n    effects,\n    afterPrefix,\n    \"gfmFootnoteDefinitionIndent\",\n    4 + 1\n  );\n  function afterPrefix(code2) {\n    const tail = self2.events[self2.events.length - 1];\n    return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code2) : nok(code2);\n  }\n}\nconst own = {}.hasOwnProperty;\nconst emptyOptions = {};\nfunction defaultBackLabel(referenceIndex, rereferenceIndex) {\n  return \"Back to reference \" + (referenceIndex + 1) + (rereferenceIndex > 1 ? \"-\" + rereferenceIndex : \"\");\n}\nfunction gfmFootnoteHtml(options) {\n  const config = options || emptyOptions;\n  const label = config.label || \"Footnotes\";\n  const labelTagName = config.labelTagName || \"h2\";\n  const labelAttributes = config.labelAttributes === null || config.labelAttributes === void 0 ? 'class=\"sr-only\"' : config.labelAttributes;\n  const backLabel = config.backLabel || defaultBackLabel;\n  const clobberPrefix = config.clobberPrefix === null || config.clobberPrefix === void 0 ? \"user-content-\" : config.clobberPrefix;\n  return {\n    enter: {\n      gfmFootnoteDefinition() {\n        const stack = this.getData(\"tightStack\");\n        stack.push(false);\n      },\n      gfmFootnoteDefinitionLabelString() {\n        this.buffer();\n      },\n      gfmFootnoteCallString() {\n        this.buffer();\n      }\n    },\n    exit: {\n      gfmFootnoteDefinition() {\n        let definitions2 = this.getData(\"gfmFootnoteDefinitions\");\n        const footnoteStack = this.getData(\"gfmFootnoteDefinitionStack\");\n        const tightStack = this.getData(\"tightStack\");\n        const current = footnoteStack.pop();\n        const value = this.resume();\n        if (!definitions2) {\n          this.setData(\"gfmFootnoteDefinitions\", definitions2 = {});\n        }\n        if (!own.call(definitions2, current))\n          definitions2[current] = value;\n        tightStack.pop();\n        this.setData(\"slurpOneLineEnding\", true);\n        this.setData(\"lastWasTag\");\n      },\n      gfmFootnoteDefinitionLabelString(token) {\n        let footnoteStack = this.getData(\"gfmFootnoteDefinitionStack\");\n        if (!footnoteStack) {\n          this.setData(\"gfmFootnoteDefinitionStack\", footnoteStack = []);\n        }\n        footnoteStack.push(normalizeIdentifier(this.sliceSerialize(token)));\n        this.resume();\n        this.buffer();\n      },\n      gfmFootnoteCallString(token) {\n        let calls = this.getData(\"gfmFootnoteCallOrder\");\n        let counts = this.getData(\"gfmFootnoteCallCounts\");\n        const id = normalizeIdentifier(this.sliceSerialize(token));\n        let counter;\n        this.resume();\n        if (!calls)\n          this.setData(\"gfmFootnoteCallOrder\", calls = []);\n        if (!counts)\n          this.setData(\"gfmFootnoteCallCounts\", counts = {});\n        const index = calls.indexOf(id);\n        const safeId = sanitizeUri(id.toLowerCase());\n        if (index === -1) {\n          calls.push(id);\n          counts[id] = 1;\n          counter = calls.length;\n        } else {\n          counts[id]++;\n          counter = index + 1;\n        }\n        const reuseCounter = counts[id];\n        this.tag(\n          '<sup><a href=\"#' + clobberPrefix + \"fn-\" + safeId + '\" id=\"' + clobberPrefix + \"fnref-\" + safeId + (reuseCounter > 1 ? \"-\" + reuseCounter : \"\") + '\" data-footnote-ref=\"\" aria-describedby=\"footnote-label\">' + String(counter) + \"</a></sup>\"\n        );\n      },\n      null() {\n        const calls = this.getData(\"gfmFootnoteCallOrder\") || [];\n        const counts = this.getData(\"gfmFootnoteCallCounts\") || {};\n        const definitions2 = this.getData(\"gfmFootnoteDefinitions\") || {};\n        let index = -1;\n        if (calls.length > 0) {\n          this.lineEndingIfNeeded();\n          this.tag(\n            '<section data-footnotes=\"\" class=\"footnotes\"><' + labelTagName + ' id=\"footnote-label\"' + (labelAttributes ? \" \" + labelAttributes : \"\") + \">\"\n          );\n          this.raw(this.encode(label));\n          this.tag(\"</\" + labelTagName + \">\");\n          this.lineEndingIfNeeded();\n          this.tag(\"<ol>\");\n        }\n        while (++index < calls.length) {\n          const id = calls[index];\n          const safeId = sanitizeUri(id.toLowerCase());\n          let referenceIndex = 0;\n          const references = [];\n          while (++referenceIndex <= counts[id]) {\n            references.push(\n              '<a href=\"#' + clobberPrefix + \"fnref-\" + safeId + (referenceIndex > 1 ? \"-\" + referenceIndex : \"\") + '\" data-footnote-backref=\"\" aria-label=\"' + this.encode(\n                typeof backLabel === \"string\" ? backLabel : backLabel(index, referenceIndex)\n              ) + '\" class=\"data-footnote-backref\">\\u21A9' + (referenceIndex > 1 ? \"<sup>\" + referenceIndex + \"</sup>\" : \"\") + \"</a>\"\n            );\n          }\n          const reference = references.join(\" \");\n          let injected = false;\n          this.lineEndingIfNeeded();\n          this.tag('<li id=\"' + clobberPrefix + \"fn-\" + safeId + '\">');\n          this.lineEndingIfNeeded();\n          this.tag(\n            definitions2[id].replace(\n              /<\\/p>(?:\\r?\\n|\\r)?$/,\n              ($0) => {\n                injected = true;\n                return \" \" + reference + $0;\n              }\n            )\n          );\n          if (!injected) {\n            this.lineEndingIfNeeded();\n            this.tag(reference);\n          }\n          this.lineEndingIfNeeded();\n          this.tag(\"</li>\");\n        }\n        if (calls.length > 0) {\n          this.lineEndingIfNeeded();\n          this.tag(\"</ol>\");\n          this.lineEndingIfNeeded();\n          this.tag(\"</section>\");\n        }\n      }\n    }\n  };\n}\nconst gfmStrikethroughHtml = {\n  enter: {\n    strikethrough() {\n      this.tag(\"<del>\");\n    }\n  },\n  exit: {\n    strikethrough() {\n      this.tag(\"</del>\");\n    }\n  }\n};\nfunction gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === void 0) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n    while (++index < events.length) {\n      if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n        let open = index;\n        while (open--) {\n          if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = \"strikethroughSequence\";\n            events[open][1].type = \"strikethroughSequence\";\n            const strikethrough = {\n              type: \"strikethrough\",\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n            const text2 = {\n              type: \"strikethroughText\",\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n            const nextEvents = [\n              [\"enter\", strikethrough, context],\n              [\"enter\", events[open][1], context],\n              [\"exit\", events[open][1], context],\n              [\"enter\", text2, context]\n            ];\n            const insideSpan2 = context.parser.constructs.insideSpan.null;\n            if (insideSpan2) {\n              splice(\n                nextEvents,\n                nextEvents.length,\n                0,\n                resolveAll(insideSpan2, events.slice(open + 1, index), context)\n              );\n            }\n            splice(nextEvents, nextEvents.length, 0, [\n              [\"exit\", text2, context],\n              [\"enter\", events[index][1], context],\n              [\"exit\", events[index][1], context],\n              [\"exit\", strikethrough, context]\n            ]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous2 = this.previous;\n    const events = this.events;\n    let size2 = 0;\n    return start;\n    function start(code2) {\n      if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code2);\n      }\n      effects.enter(\"strikethroughSequenceTemporary\");\n      return more(code2);\n    }\n    function more(code2) {\n      const before = classifyCharacter(previous2);\n      if (code2 === 126) {\n        if (size2 > 1)\n          return nok(code2);\n        effects.consume(code2);\n        size2++;\n        return more;\n      }\n      if (size2 < 2 && !single)\n        return nok(code2);\n      const token = effects.exit(\"strikethroughSequenceTemporary\");\n      const after = classifyCharacter(code2);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok(code2);\n    }\n  }\n}\nconst alignment = {\n  none: \"\",\n  left: ' align=\"left\"',\n  right: ' align=\"right\"',\n  center: ' align=\"center\"'\n};\nconst gfmTableHtml = {\n  enter: {\n    table(token) {\n      const tableAlign = token._align;\n      this.lineEndingIfNeeded();\n      this.tag(\"<table>\");\n      this.setData(\"tableAlign\", tableAlign);\n    },\n    tableBody() {\n      this.tag(\"<tbody>\");\n    },\n    tableData() {\n      const tableAlign = this.getData(\"tableAlign\");\n      const tableColumn = this.getData(\"tableColumn\");\n      const align = alignment[tableAlign[tableColumn]];\n      if (align === void 0) {\n        this.buffer();\n      } else {\n        this.lineEndingIfNeeded();\n        this.tag(\"<td\" + align + \">\");\n      }\n    },\n    tableHead() {\n      this.lineEndingIfNeeded();\n      this.tag(\"<thead>\");\n    },\n    tableHeader() {\n      const tableAlign = this.getData(\"tableAlign\");\n      const tableColumn = this.getData(\"tableColumn\");\n      const align = alignment[tableAlign[tableColumn]];\n      this.lineEndingIfNeeded();\n      this.tag(\"<th\" + align + \">\");\n    },\n    tableRow() {\n      this.setData(\"tableColumn\", 0);\n      this.lineEndingIfNeeded();\n      this.tag(\"<tr>\");\n    }\n  },\n  exit: {\n    codeTextData(token) {\n      let value = this.sliceSerialize(token);\n      if (this.getData(\"tableAlign\")) {\n        value = value.replace(/\\\\([\\\\|])/g, replace);\n      }\n      this.raw(this.encode(value));\n    },\n    table() {\n      this.setData(\"tableAlign\");\n      this.setData(\"slurpAllLineEndings\");\n      this.lineEndingIfNeeded();\n      this.tag(\"</table>\");\n    },\n    tableBody() {\n      this.lineEndingIfNeeded();\n      this.tag(\"</tbody>\");\n    },\n    tableData() {\n      const tableAlign = this.getData(\"tableAlign\");\n      const tableColumn = this.getData(\"tableColumn\");\n      if (tableColumn in tableAlign) {\n        this.tag(\"</td>\");\n        this.setData(\"tableColumn\", tableColumn + 1);\n      } else {\n        this.resume();\n      }\n    },\n    tableHead() {\n      this.lineEndingIfNeeded();\n      this.tag(\"</thead>\");\n    },\n    tableHeader() {\n      const tableColumn = this.getData(\"tableColumn\");\n      this.tag(\"</th>\");\n      this.setData(\"tableColumn\", tableColumn + 1);\n    },\n    tableRow() {\n      const tableAlign = this.getData(\"tableAlign\");\n      let tableColumn = this.getData(\"tableColumn\");\n      while (tableColumn < tableAlign.length) {\n        this.lineEndingIfNeeded();\n        this.tag(\"<td\" + alignment[tableAlign[tableColumn]] + \"></td>\");\n        tableColumn++;\n      }\n      this.setData(\"tableColumn\", tableColumn);\n      this.lineEndingIfNeeded();\n      this.tag(\"</tr>\");\n    }\n  }\n};\nfunction replace($0, $1) {\n  return $1 === \"|\" ? $1 : $0;\n}\nclass EditMap {\n  constructor() {\n    this.map = [];\n  }\n  add(index, remove2, add2) {\n    addImpl(this, index, remove2, add2);\n  }\n  consume(events) {\n    this.map.sort((a, b) => a[0] - b[0]);\n    if (this.map.length === 0) {\n      return;\n    }\n    let index = this.map.length;\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]));\n      vecs.push(this.map[index][2]);\n      events.length = this.map[index][0];\n    }\n    vecs.push([...events]);\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      events.push(...slice);\n      slice = vecs.pop();\n    }\n    this.map.length = 0;\n  }\n}\nfunction addImpl(editMap, at, remove2, add2) {\n  let index = 0;\n  if (remove2 === 0 && add2.length === 0) {\n    return;\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove2;\n      editMap.map[index][2].push(...add2);\n      return;\n    }\n    index += 1;\n  }\n  editMap.map.push([at, remove2, add2]);\n}\nfunction gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === \"enter\") {\n        if (event[1].type === \"tableContent\") {\n          align.push(\n            events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n          );\n        }\n      } else if (event[1].type === \"tableContent\") {\n        if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n        }\n      } else if (event[1].type === \"tableDelimiterRow\") {\n        break;\n      }\n    } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}\nconst gfmTable = {\n  flow: {\n    null: {\n      tokenize: tokenizeTable,\n      resolveAll: resolveTable\n    }\n  }\n};\nfunction tokenizeTable(effects, ok, nok) {\n  const self2 = this;\n  let size2 = 0;\n  let sizeB = 0;\n  let seen;\n  return start;\n  function start(code2) {\n    let index = self2.events.length - 1;\n    while (index > -1) {\n      const type = self2.events[index][1].type;\n      if (type === \"lineEnding\" || type === \"linePrefix\")\n        index--;\n      else\n        break;\n    }\n    const tail = index > -1 ? self2.events[index][1].type : null;\n    const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n    if (next === bodyRowStart && self2.parser.lazy[self2.now().line]) {\n      return nok(code2);\n    }\n    return next(code2);\n  }\n  function headRowBefore(code2) {\n    effects.enter(\"tableHead\");\n    effects.enter(\"tableRow\");\n    return headRowStart(code2);\n  }\n  function headRowStart(code2) {\n    if (code2 === 124) {\n      return headRowBreak(code2);\n    }\n    seen = true;\n    sizeB += 1;\n    return headRowBreak(code2);\n  }\n  function headRowBreak(code2) {\n    if (code2 === null) {\n      return nok(code2);\n    }\n    if (markdownLineEnding(code2)) {\n      if (sizeB > 1) {\n        sizeB = 0;\n        self2.interrupt = true;\n        effects.exit(\"tableRow\");\n        effects.enter(\"lineEnding\");\n        effects.consume(code2);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n      return nok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      size2 += 1;\n    }\n    if (code2 === 124) {\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      seen = true;\n      return headRowBreak;\n    }\n    effects.enter(\"data\");\n    return headRowData(code2);\n  }\n  function headRowData(code2) {\n    if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"data\");\n      return headRowBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? headRowEscape : headRowData;\n  }\n  function headRowEscape(code2) {\n    if (code2 === 92 || code2 === 124) {\n      effects.consume(code2);\n      return headRowData;\n    }\n    return headRowData(code2);\n  }\n  function headDelimiterStart(code2) {\n    self2.interrupt = false;\n    if (self2.parser.lazy[self2.now().line]) {\n      return nok(code2);\n    }\n    effects.enter(\"tableDelimiterRow\");\n    seen = false;\n    if (markdownSpace(code2)) {\n      return factorySpace(\n        effects,\n        headDelimiterBefore,\n        \"linePrefix\",\n        self2.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n      )(code2);\n    }\n    return headDelimiterBefore(code2);\n  }\n  function headDelimiterBefore(code2) {\n    if (code2 === 45 || code2 === 58) {\n      return headDelimiterValueBefore(code2);\n    }\n    if (code2 === 124) {\n      seen = true;\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      return headDelimiterCellBefore;\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterCellBefore(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n    }\n    return headDelimiterValueBefore(code2);\n  }\n  function headDelimiterValueBefore(code2) {\n    if (code2 === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter(\"tableDelimiterMarker\");\n      effects.consume(code2);\n      effects.exit(\"tableDelimiterMarker\");\n      return headDelimiterLeftAlignmentAfter;\n    }\n    if (code2 === 45) {\n      sizeB += 1;\n      return headDelimiterLeftAlignmentAfter(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      return headDelimiterCellAfter(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterLeftAlignmentAfter(code2) {\n    if (code2 === 45) {\n      effects.enter(\"tableDelimiterFiller\");\n      return headDelimiterFiller(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterFiller(code2) {\n    if (code2 === 45) {\n      effects.consume(code2);\n      return headDelimiterFiller;\n    }\n    if (code2 === 58) {\n      seen = true;\n      effects.exit(\"tableDelimiterFiller\");\n      effects.enter(\"tableDelimiterMarker\");\n      effects.consume(code2);\n      effects.exit(\"tableDelimiterMarker\");\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit(\"tableDelimiterFiller\");\n    return headDelimiterRightAlignmentAfter(code2);\n  }\n  function headDelimiterRightAlignmentAfter(code2) {\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n    }\n    return headDelimiterCellAfter(code2);\n  }\n  function headDelimiterCellAfter(code2) {\n    if (code2 === 124) {\n      return headDelimiterBefore(code2);\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      if (!seen || size2 !== sizeB) {\n        return headDelimiterNok(code2);\n      }\n      effects.exit(\"tableDelimiterRow\");\n      effects.exit(\"tableHead\");\n      return ok(code2);\n    }\n    return headDelimiterNok(code2);\n  }\n  function headDelimiterNok(code2) {\n    return nok(code2);\n  }\n  function bodyRowStart(code2) {\n    effects.enter(\"tableRow\");\n    return bodyRowBreak(code2);\n  }\n  function bodyRowBreak(code2) {\n    if (code2 === 124) {\n      effects.enter(\"tableCellDivider\");\n      effects.consume(code2);\n      effects.exit(\"tableCellDivider\");\n      return bodyRowBreak;\n    }\n    if (code2 === null || markdownLineEnding(code2)) {\n      effects.exit(\"tableRow\");\n      return ok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n    }\n    effects.enter(\"data\");\n    return bodyRowData(code2);\n  }\n  function bodyRowData(code2) {\n    if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code2);\n    }\n    effects.consume(code2);\n    return code2 === 92 ? bodyRowEscape : bodyRowData;\n  }\n  function bodyRowEscape(code2) {\n    if (code2 === 92 || code2 === 124) {\n      effects.consume(code2);\n      return bodyRowData;\n    }\n    return bodyRowData(code2);\n  }\n}\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  let rowKind = 0;\n  let lastCell = [0, 0, 0, 0];\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  let currentTable;\n  let currentBody;\n  let currentCell;\n  const map = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === \"enter\") {\n      if (token.type === \"tableHead\") {\n        afterHeadAwaitingFirstBodyRow = false;\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n          currentBody = void 0;\n          lastTableEnd = 0;\n        }\n        currentTable = {\n          type: \"table\",\n          start: Object.assign({}, token.start),\n          end: Object.assign({}, token.end)\n        };\n        map.add(index, 0, [[\"enter\", currentTable, context]]);\n      } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n        inFirstCellAwaitingPipe = true;\n        currentCell = void 0;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: \"tableBody\",\n            start: Object.assign({}, token.start),\n            end: Object.assign({}, token.end)\n          };\n          map.add(index, 0, [[\"enter\", currentBody, context]]);\n        }\n        rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n      } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n        inFirstCellAwaitingPipe = false;\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              void 0,\n              currentCell\n            );\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === \"tableCellDivider\") {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              void 0,\n              currentCell\n            );\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    } else if (token.type === \"tableHead\") {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(\n          map,\n          context,\n          lastCell,\n          rowKind,\n          index,\n          currentCell\n        );\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n  }\n  map.consume(context.events);\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === \"enter\" && event[1].type === \"table\") {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n  const valueName = \"tableContent\";\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map.add(range[0], 0, [[\"exit\", previousCell, context]]);\n  }\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    end: Object.assign({}, now)\n  };\n  map.add(range[1], 0, [[\"enter\", previousCell, context]]);\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map.add(range[2], 0, [[\"enter\", valueToken, context]]);\n    if (rowKind !== 2) {\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map.add(a, b, []);\n      }\n    }\n    map.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n  }\n  if (rowEnd !== void 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n    previousCell = void 0;\n  }\n  return previousCell;\n}\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push([\"exit\", tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push([\"exit\", table, context]);\n  map.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === \"enter\" ? \"start\" : \"end\";\n  return event[1][side];\n}\nconst reFlow = /<(\\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\\t\\n\\f\\r />])/gi;\nconst reText = new RegExp(\"^\" + reFlow.source, \"i\");\nconst gfmTagfilterHtml = {\n  exit: {\n    htmlFlowData(token) {\n      exitHtmlData.call(this, token, reFlow);\n    },\n    htmlTextData(token) {\n      exitHtmlData.call(this, token, reText);\n    }\n  }\n};\nfunction exitHtmlData(token, filter) {\n  let value = this.sliceSerialize(token);\n  if (this.options.allowDangerousHtml) {\n    value = value.replace(filter, \"&lt;$1$2\");\n  }\n  this.raw(this.encode(value));\n}\nconst gfmTaskListItemHtml = {\n  enter: {\n    taskListCheck() {\n      this.tag('<input type=\"checkbox\" disabled=\"\" ');\n    }\n  },\n  exit: {\n    taskListCheck() {\n      this.tag(\"/>\");\n    },\n    taskListCheckValueChecked() {\n      this.tag('checked=\"\" ');\n    }\n  }\n};\nconst tasklistCheck = {\n  tokenize: tokenizeTasklistCheck\n};\nconst gfmTaskListItem = {\n  text: {\n    [91]: tasklistCheck\n  }\n};\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self2 = this;\n  return open;\n  function open(code2) {\n    if (self2.previous !== null || !self2._gfmTasklistFirstContentOfListItem) {\n      return nok(code2);\n    }\n    effects.enter(\"taskListCheck\");\n    effects.enter(\"taskListCheckMarker\");\n    effects.consume(code2);\n    effects.exit(\"taskListCheckMarker\");\n    return inside;\n  }\n  function inside(code2) {\n    if (markdownLineEndingOrSpace(code2)) {\n      effects.enter(\"taskListCheckValueUnchecked\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckValueUnchecked\");\n      return close;\n    }\n    if (code2 === 88 || code2 === 120) {\n      effects.enter(\"taskListCheckValueChecked\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckValueChecked\");\n      return close;\n    }\n    return nok(code2);\n  }\n  function close(code2) {\n    if (code2 === 93) {\n      effects.enter(\"taskListCheckMarker\");\n      effects.consume(code2);\n      effects.exit(\"taskListCheckMarker\");\n      effects.exit(\"taskListCheck\");\n      return after;\n    }\n    return nok(code2);\n  }\n  function after(code2) {\n    if (markdownLineEnding(code2)) {\n      return ok(code2);\n    }\n    if (markdownSpace(code2)) {\n      return effects.check(\n        {\n          tokenize: spaceThenNonSpace\n        },\n        ok,\n        nok\n      )(code2);\n    }\n    return nok(code2);\n  }\n}\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n  function after(code2) {\n    return code2 === null ? nok(code2) : ok(code2);\n  }\n}\nfunction gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral,\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable,\n    gfmTaskListItem\n  ]);\n}\nfunction gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml,\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml,\n    gfmTableHtml,\n    gfmTagfilterHtml,\n    gfmTaskListItemHtml\n  ]);\n}\nconst codes = {\n  carriageReturn: -5,\n  lineFeed: -4,\n  carriageReturnLineFeed: -3,\n  horizontalTab: -2,\n  virtualSpace: -1,\n  eof: null,\n  nul: 0,\n  soh: 1,\n  stx: 2,\n  etx: 3,\n  eot: 4,\n  enq: 5,\n  ack: 6,\n  bel: 7,\n  bs: 8,\n  ht: 9,\n  lf: 10,\n  vt: 11,\n  ff: 12,\n  cr: 13,\n  so: 14,\n  si: 15,\n  dle: 16,\n  dc1: 17,\n  dc2: 18,\n  dc3: 19,\n  dc4: 20,\n  nak: 21,\n  syn: 22,\n  etb: 23,\n  can: 24,\n  em: 25,\n  sub: 26,\n  esc: 27,\n  fs: 28,\n  gs: 29,\n  rs: 30,\n  us: 31,\n  space: 32,\n  exclamationMark: 33,\n  quotationMark: 34,\n  numberSign: 35,\n  dollarSign: 36,\n  percentSign: 37,\n  ampersand: 38,\n  apostrophe: 39,\n  leftParenthesis: 40,\n  rightParenthesis: 41,\n  asterisk: 42,\n  plusSign: 43,\n  comma: 44,\n  dash: 45,\n  dot: 46,\n  slash: 47,\n  digit0: 48,\n  digit1: 49,\n  digit2: 50,\n  digit3: 51,\n  digit4: 52,\n  digit5: 53,\n  digit6: 54,\n  digit7: 55,\n  digit8: 56,\n  digit9: 57,\n  colon: 58,\n  semicolon: 59,\n  lessThan: 60,\n  equalsTo: 61,\n  greaterThan: 62,\n  questionMark: 63,\n  atSign: 64,\n  uppercaseA: 65,\n  uppercaseB: 66,\n  uppercaseC: 67,\n  uppercaseD: 68,\n  uppercaseE: 69,\n  uppercaseF: 70,\n  uppercaseG: 71,\n  uppercaseH: 72,\n  uppercaseI: 73,\n  uppercaseJ: 74,\n  uppercaseK: 75,\n  uppercaseL: 76,\n  uppercaseM: 77,\n  uppercaseN: 78,\n  uppercaseO: 79,\n  uppercaseP: 80,\n  uppercaseQ: 81,\n  uppercaseR: 82,\n  uppercaseS: 83,\n  uppercaseT: 84,\n  uppercaseU: 85,\n  uppercaseV: 86,\n  uppercaseW: 87,\n  uppercaseX: 88,\n  uppercaseY: 89,\n  uppercaseZ: 90,\n  leftSquareBracket: 91,\n  backslash: 92,\n  rightSquareBracket: 93,\n  caret: 94,\n  underscore: 95,\n  graveAccent: 96,\n  lowercaseA: 97,\n  lowercaseB: 98,\n  lowercaseC: 99,\n  lowercaseD: 100,\n  lowercaseE: 101,\n  lowercaseF: 102,\n  lowercaseG: 103,\n  lowercaseH: 104,\n  lowercaseI: 105,\n  lowercaseJ: 106,\n  lowercaseK: 107,\n  lowercaseL: 108,\n  lowercaseM: 109,\n  lowercaseN: 110,\n  lowercaseO: 111,\n  lowercaseP: 112,\n  lowercaseQ: 113,\n  lowercaseR: 114,\n  lowercaseS: 115,\n  lowercaseT: 116,\n  lowercaseU: 117,\n  lowercaseV: 118,\n  lowercaseW: 119,\n  lowercaseX: 120,\n  lowercaseY: 121,\n  lowercaseZ: 122,\n  leftCurlyBrace: 123,\n  verticalBar: 124,\n  rightCurlyBrace: 125,\n  tilde: 126,\n  del: 127,\n  degree: 176,\n  byteOrderMarker: 65279,\n  replacementCharacter: 65533\n};\nconst underlineTokenize = (effects, ok, nok) => {\n  const inside = (code2) => {\n    if (code2 === codes.carriageReturn || code2 === codes.lineFeed || code2 === codes.carriageReturnLineFeed || code2 === codes.eof) {\n      return nok(code2);\n    }\n    if (code2 === codes.backslash) {\n      effects.consume(code2);\n      return insideEscape;\n    }\n    if (code2 === codes.degree) {\n      effects.exit(\"underlineContent\");\n      effects.enter(\"underlineMarker\");\n      effects.consume(code2);\n      effects.exit(\"underlineMarker\");\n      effects.exit(\"underline\");\n      return ok;\n    }\n    effects.consume(code2);\n    return inside;\n  };\n  const insideEscape = (code2) => {\n    if (code2 === codes.backslash || code2 === codes.degree) {\n      effects.consume(code2);\n      return inside;\n    }\n    return inside(code2);\n  };\n  const begin = (code2) => code2 === codes.degree ? nok(code2) : inside(code2);\n  return (code2) => {\n    effects.enter(\"underline\");\n    effects.enter(\"underlineMarker\");\n    effects.consume(code2);\n    effects.exit(\"underlineMarker\");\n    effects.enter(\"underlineContent\", { contentType: \"string\" });\n    return begin;\n  };\n};\nconst underlineConstruct = { name: \"underline\", tokenize: underlineTokenize };\nconst underline = { text: { 176: underlineConstruct } };\nconst underlineHtml = {\n  enter: {\n    underline() {\n      this.tag(\"<u>\");\n    }\n  },\n  exit: {\n    underline() {\n      this.tag(\"</u>\");\n    }\n  }\n};\nconst usertagTokenize = (effects, ok, nok) => {\n  const inside = (code2) => {\n    if (code2 === codes.carriageReturn || code2 === codes.lineFeed || code2 === codes.carriageReturnLineFeed || code2 === codes.eof) {\n      return nok(code2);\n    }\n    if (code2 === codes.backslash) {\n      effects.consume(code2);\n      return insideEscape;\n    }\n    if (code2 === codes.greaterThan) {\n      effects.exit(\"usertagContent\");\n      effects.enter(\"usertagMarker\");\n      effects.consume(code2);\n      effects.exit(\"usertagMarker\");\n      effects.exit(\"usertag\");\n      return ok;\n    }\n    effects.consume(code2);\n    return inside;\n  };\n  const insideEscape = (code2) => {\n    if (code2 === codes.backslash || code2 === codes.greaterThan) {\n      effects.consume(code2);\n      return inside;\n    }\n    return inside(code2);\n  };\n  const begin = (code2) => {\n    if (code2 === codes.atSign) {\n      effects.consume(code2);\n      effects.exit(\"usertagMarker\");\n      effects.enter(\"usertagContent\");\n      return inside;\n    }\n    return nok(code2);\n  };\n  return (code2) => {\n    effects.enter(\"usertag\");\n    effects.enter(\"usertagMarker\");\n    effects.consume(code2);\n    return begin;\n  };\n};\nconst usertagConstruct = { name: \"usertag\", tokenize: usertagTokenize };\nconst usertag = { text: { 60: usertagConstruct } };\nconst usertagHtml = (users) => ({\n  exit: {\n    usertagContent(token) {\n      const userId = this.sliceSerialize(token);\n      this.tag(`<span class=\"vac-text-tag\" data-user-id=\"${userId}\">`);\n      const user = users.find((user2) => user2._id === userId);\n      this.raw(`@${this.encode(user ? user.username : userId)}`);\n      this.tag(\"</span>\");\n    }\n  }\n});\nvar markdown = (text2, { textFormatting }) => {\n  if (textFormatting) {\n    let gfmDisabled = [];\n    if (!textFormatting.linkify) {\n      gfmDisabled = [\"literalAutolink\", \"literalAutolinkEmail\"];\n    }\n    const markdown2 = micromark(\n      text2.replaceAll(\"<usertag>\", \"<@\").replaceAll(\"</usertag>\", \">\"),\n      {\n        extensions: [\n          {\n            ...gfm(),\n            disable: { null: gfmDisabled }\n          },\n          underline,\n          usertag\n        ],\n        htmlExtensions: [\n          gfmHtml(),\n          underlineHtml,\n          usertagHtml(textFormatting.users)\n        ]\n      }\n    );\n    if (textFormatting.singleLine) {\n      const element2 = document.createElement(\"div\");\n      element2.innerHTML = markdown2;\n      return [\n        {\n          types: [],\n          value: element2.innerText\n        }\n      ];\n    }\n    return [\n      {\n        types: [\"markdown\"],\n        value: markdown2\n      }\n    ];\n  }\n  return [\n    {\n      types: [],\n      value: text2\n    }\n  ];\n};\nconst IMAGE_TYPES = [\"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"gif\"];\nconst VIDEO_TYPES = [\"mp4\", \"video/ogg\", \"webm\", \"quicktime\"];\nconst AUDIO_TYPES = [\"mp3\", \"audio/ogg\", \"wav\", \"mpeg\"];\nconst _sfc_main$n = {\n  name: \"FormatMessage\",\n  components: { SvgIcon },\n  props: {\n    messageId: { type: String, default: \"\" },\n    roomId: { type: String, default: \"\" },\n    roomList: { type: Boolean, default: false },\n    content: { type: [String, Number], required: true },\n    deleted: { type: Boolean, default: false },\n    users: { type: Array, default: () => [] },\n    linkify: { type: Boolean, default: true },\n    singleLine: { type: Boolean, default: false },\n    reply: { type: Boolean, default: false },\n    textFormatting: { type: Object, required: true },\n    textMessages: { type: Object, default: () => {\n    } },\n    linkOptions: { type: Object, required: true }\n  },\n  emits: [\"open-user-tag\"],\n  computed: {\n    parsedMessage() {\n      if (this.deleted) {\n        return [{ value: this.textMessages.MESSAGE_DELETED }];\n      }\n      let options;\n      if (!this.textFormatting.disabled) {\n        options = {\n          textFormatting: {\n            linkify: this.linkify,\n            linkOptions: this.linkOptions,\n            singleLine: this.singleLine,\n            reply: this.reply,\n            users: this.users,\n            ...this.textFormatting\n          }\n        };\n      } else {\n        options = {};\n      }\n      const message = markdown(this.content, options);\n      message.forEach((m) => {\n        m.markdown = this.checkType(m, \"markdown\");\n        m.tag = this.checkType(m, \"tag\");\n        m.image = this.checkImageType(m);\n      });\n      return message;\n    }\n  },\n  methods: {\n    checkType(message, type) {\n      return message.types && message.types.indexOf(type) !== -1;\n    },\n    checkImageType(message) {\n      let index = message.value.lastIndexOf(\".\");\n      const slashIndex = message.value.lastIndexOf(\"/\");\n      if (slashIndex > index)\n        index = -1;\n      const type = message.value.substring(index + 1, message.value.length);\n      const isMedia = index > 0 && IMAGE_TYPES.some((t) => type.toLowerCase().includes(t));\n      if (isMedia)\n        this.setImageSize(message);\n      return isMedia;\n    },\n    setImageSize(message) {\n      const image = new Image();\n      image.src = message.value;\n      image.addEventListener(\"load\", onLoad);\n      function onLoad(img) {\n        const ratio = img.path[0].width / 150;\n        message.height = Math.round(img.path[0].height / ratio) + \"px\";\n        image.removeEventListener(\"load\", onLoad);\n      }\n    },\n    openTag(event) {\n      const userId = event.target.getAttribute(\"data-user-id\");\n      if (!this.singleLine && userId) {\n        const user = this.users.find((u) => String(u._id) === userId);\n        this.$emit(\"open-user-tag\", user);\n      }\n    }\n  }\n};\nconst _hoisted_1$n = [\"innerHTML\"];\nconst _hoisted_2$k = { class: \"vac-image-link-container\" };\nconst _hoisted_3$h = { class: \"vac-image-link-message\" };\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass([\"vac-format-message-wrapper\", { \"vac-text-ellipsis\": $props.singleLine }])\n  }, [\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.parsedMessage, (message, i) => {\n      return openBlock(), createElementBlock(Fragment, { key: i }, [\n        message.markdown ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: \"markdown\",\n          onClick: _cache[0] || (_cache[0] = (...args) => $options.openTag && $options.openTag(...args)),\n          innerHTML: message.value\n        }, null, 8, _hoisted_1$n)) : (openBlock(), createElementBlock(\"div\", {\n          key: 1,\n          class: normalizeClass([\"vac-format-container\", { \"vac-text-ellipsis\": $props.singleLine }])\n        }, [\n          (openBlock(), createBlock(resolveDynamicComponent(message.url ? \"a\" : \"span\"), {\n            class: normalizeClass({\n              \"vac-text-ellipsis\": $props.singleLine,\n              \"vac-text-tag\": !$props.singleLine && !$props.reply && message.tag\n            }),\n            href: message.href,\n            target: message.href ? $props.linkOptions.target : null,\n            rel: message.href ? $props.linkOptions.rel : null\n          }, {\n            default: withCtx(() => [\n              $props.deleted ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n                renderSlot(\n                  _ctx.$slots,\n                  $props.roomList ? \"deleted-icon-room_\" + $props.roomId : \"deleted-icon_\" + $props.messageId,\n                  {},\n                  () => [\n                    createVNode(_component_svg_icon, {\n                      name: \"deleted\",\n                      class: normalizeClass([\"vac-icon-deleted\", { \"vac-icon-deleted-room\": $props.roomList }])\n                    }, null, 8, [\"class\"])\n                  ]\n                ),\n                createTextVNode(\" \" + toDisplayString($props.textMessages.MESSAGE_DELETED), 1)\n              ], 64)) : message.url && message.image ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n                createBaseVNode(\"div\", _hoisted_2$k, [\n                  createBaseVNode(\"div\", {\n                    class: \"vac-image-link\",\n                    style: normalizeStyle({\n                      \"background-image\": `url('${message.value}')`,\n                      height: message.height\n                    })\n                  }, null, 4)\n                ]),\n                createBaseVNode(\"div\", _hoisted_3$h, toDisplayString(message.value), 1)\n              ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n                createTextVNode(toDisplayString(message.value), 1)\n              ], 64))\n            ]),\n            _: 2\n          }, 1032, [\"class\", \"href\", \"target\", \"rel\"]))\n        ], 2))\n      ], 64);\n    }), 128))\n  ], 2);\n}\nvar FormatMessage = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$n]]);\nconst HANDLERS_PROPERTY = \"__v-click-outside\";\nconst HAS_WINDOWS = typeof window !== \"undefined\";\nconst HAS_NAVIGATOR = typeof navigator !== \"undefined\";\nconst IS_TOUCH = HAS_WINDOWS && (\"ontouchstart\" in window || HAS_NAVIGATOR && navigator.msMaxTouchPoints > 0);\nconst EVENTS = IS_TOUCH ? [\"touchstart\"] : [\"click\"];\nconst processDirectiveArguments = (bindingValue) => {\n  const isFunction2 = typeof bindingValue === \"function\";\n  if (!isFunction2 && typeof bindingValue !== \"object\") {\n    throw new Error(\n      \"v-click-outside: Binding value must be a function or an object\"\n    );\n  }\n  return {\n    handler: isFunction2 ? bindingValue : bindingValue.handler,\n    middleware: bindingValue.middleware || ((item) => item),\n    events: bindingValue.events || EVENTS,\n    isActive: !(bindingValue.isActive === false),\n    detectIframe: !(bindingValue.detectIframe === false),\n    capture: Boolean(bindingValue.capture)\n  };\n};\nconst execHandler = ({ event, handler, middleware }) => {\n  if (middleware(event)) {\n    handler(event);\n  }\n};\nconst onFauxIframeClick = ({ el, event, handler, middleware }) => {\n  setTimeout(() => {\n    const { activeElement } = document;\n    if (activeElement && activeElement.tagName === \"IFRAME\" && !el.contains(activeElement)) {\n      execHandler({ event, handler, middleware });\n    }\n  }, 0);\n};\nconst onEvent = ({ el, event, handler, middleware }) => {\n  const path2 = event.path || event.composedPath && event.composedPath();\n  const isClickOutside = path2 ? path2.indexOf(el) < 0 : !el.contains(event.target);\n  if (!isClickOutside) {\n    return;\n  }\n  execHandler({ event, handler, middleware });\n};\nconst beforeMount = (el, { value }) => {\n  const {\n    events,\n    handler,\n    middleware,\n    isActive,\n    detectIframe,\n    capture\n  } = processDirectiveArguments(value);\n  if (!isActive) {\n    return;\n  }\n  el[HANDLERS_PROPERTY] = events.map((eventName) => ({\n    event: eventName,\n    srcTarget: document.documentElement,\n    handler: (event) => onEvent({ el, event, handler, middleware }),\n    capture\n  }));\n  if (detectIframe) {\n    const detectIframeEvent = {\n      event: \"blur\",\n      srcTarget: window,\n      handler: (event) => onFauxIframeClick({ el, event, handler, middleware }),\n      capture\n    };\n    el[HANDLERS_PROPERTY] = [...el[HANDLERS_PROPERTY], detectIframeEvent];\n  }\n  el[HANDLERS_PROPERTY].forEach(\n    ({ event, srcTarget, handler: thisHandler }) => setTimeout(() => {\n      if (!el[HANDLERS_PROPERTY]) {\n        return;\n      }\n      srcTarget.addEventListener(event, thisHandler, capture);\n    }, 0)\n  );\n};\nconst unmounted = (el) => {\n  const handlers = el[HANDLERS_PROPERTY] || [];\n  handlers.forEach(\n    ({ event, srcTarget, handler, capture }) => srcTarget.removeEventListener(event, handler, capture)\n  );\n  delete el[HANDLERS_PROPERTY];\n};\nconst updated = (el, { value, oldValue }) => {\n  if (JSON.stringify(value) === JSON.stringify(oldValue)) {\n    return;\n  }\n  unmounted(el);\n  beforeMount(el, { value });\n};\nconst directive = {\n  beforeMount,\n  updated,\n  unmounted\n};\nvar vClickOutside = HAS_WINDOWS ? directive : {};\nvar typingText = (room, currentUserId, textMessages) => {\n  if (room.typingUsers && room.typingUsers.length) {\n    const typingUsers = room.users.filter((user) => {\n      if (user._id === currentUserId)\n        return;\n      if (room.typingUsers.indexOf(user._id) === -1)\n        return;\n      if (user.status && user.status.state === \"offline\")\n        return;\n      return true;\n    });\n    if (!typingUsers.length)\n      return;\n    if (room.users.length === 2) {\n      return textMessages.IS_TYPING;\n    } else {\n      return typingUsers.map((user) => user.username).join(\", \") + \" \" + textMessages.IS_TYPING;\n    }\n  }\n};\nfunction checkMediaType(types, file) {\n  if (!file || !file.type)\n    return;\n  return types.some((t) => file.type.toLowerCase().includes(t));\n}\nfunction isImageFile(file) {\n  return checkMediaType(IMAGE_TYPES, file);\n}\nfunction isVideoFile(file) {\n  return checkMediaType(VIDEO_TYPES, file);\n}\nfunction isImageVideoFile(file) {\n  return checkMediaType(IMAGE_TYPES, file) || checkMediaType(VIDEO_TYPES, file);\n}\nfunction isAudioFile(file) {\n  return checkMediaType(AUDIO_TYPES, file);\n}\nconst _sfc_main$m = {\n  name: \"RoomsContent\",\n  components: {\n    SvgIcon,\n    FormatMessage\n  },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    room: { type: Object, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    textMessages: { type: Object, required: true },\n    roomActions: { type: Array, required: true }\n  },\n  emits: [\"room-action-handler\"],\n  data() {\n    return {\n      roomMenuOpened: null\n    };\n  },\n  computed: {\n    getLastMessage() {\n      const isTyping = this.typingUsers;\n      if (isTyping)\n        return isTyping;\n      const content2 = this.room.lastMessage.content;\n      if (this.room.users.length <= 2) {\n        return content2;\n      }\n      const user = this.room.users.find(\n        (user2) => user2._id === this.room.lastMessage.senderId\n      );\n      if (this.room.lastMessage.username) {\n        return `${this.room.lastMessage.username} - ${content2}`;\n      } else if (!user || user._id === this.currentUserId) {\n        return content2;\n      }\n      return `${user.username} - ${content2}`;\n    },\n    userStatus() {\n      if (!this.room.users || this.room.users.length !== 2)\n        return;\n      const user = this.room.users.find((u) => u._id !== this.currentUserId);\n      if (user && user.status)\n        return user.status.state;\n      return null;\n    },\n    typingUsers() {\n      return typingText(this.room, this.currentUserId, this.textMessages);\n    },\n    isMessageCheckmarkVisible() {\n      return !this.typingUsers && this.room.lastMessage && !this.room.lastMessage.deleted && this.room.lastMessage.senderId === this.currentUserId && (this.room.lastMessage.saved || this.room.lastMessage.distributed || this.room.lastMessage.seen);\n    },\n    formattedDuration() {\n      var _a, _b;\n      const file = (_b = (_a = this.room.lastMessage) == null ? void 0 : _a.files) == null ? void 0 : _b[0];\n      if (file) {\n        if (!file.duration) {\n          return `${file.name}.${file.extension}`;\n        }\n        let s = Math.floor(file.duration);\n        return (s - (s %= 60)) / 60 + (s > 9 ? \":\" : \":0\") + s;\n      }\n      return \"\";\n    },\n    isAudio() {\n      return this.room.lastMessage.files ? isAudioFile(this.room.lastMessage.files[0]) : false;\n    }\n  },\n  methods: {\n    roomActionHandler(action) {\n      this.closeRoomMenu();\n      this.$emit(\"room-action-handler\", { action, roomId: this.room.roomId });\n    },\n    closeRoomMenu() {\n      this.roomMenuOpened = null;\n    }\n  }\n};\nconst _hoisted_1$m = { class: \"vac-room-container\" };\nconst _hoisted_2$j = { class: \"vac-name-container vac-text-ellipsis\" };\nconst _hoisted_3$g = { class: \"vac-title-container\" };\nconst _hoisted_4$f = { class: \"vac-room-name vac-text-ellipsis\" };\nconst _hoisted_5$a = {\n  key: 1,\n  class: \"vac-text-date\"\n};\nconst _hoisted_6$6 = { key: 0 };\nconst _hoisted_7$6 = {\n  key: 1,\n  class: \"vac-text-ellipsis\"\n};\nconst _hoisted_8$4 = {\n  key: 3,\n  class: \"vac-text-ellipsis\"\n};\nconst _hoisted_9$4 = { class: \"vac-room-options-container\" };\nconst _hoisted_10$4 = {\n  key: 0,\n  class: \"vac-badge-counter vac-room-badge\"\n};\nconst _hoisted_11$3 = {\n  key: 0,\n  class: \"vac-menu-options\"\n};\nconst _hoisted_12$3 = { class: \"vac-menu-list\" };\nconst _hoisted_13$1 = [\"onClick\"];\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_format_message = resolveComponent(\"format-message\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$m, [\n    renderSlot(_ctx.$slots, \"room-list-item_\" + $props.room.roomId, {}, () => [\n      renderSlot(_ctx.$slots, \"room-list-avatar_\" + $props.room.roomId, {}, () => [\n        $props.room.avatar ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: \"vac-avatar\",\n          style: normalizeStyle({ \"background-image\": `url('${$props.room.avatar}')` })\n        }, null, 4)) : createCommentVNode(\"\", true)\n      ]),\n      createBaseVNode(\"div\", _hoisted_2$j, [\n        createBaseVNode(\"div\", _hoisted_3$g, [\n          $options.userStatus ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"vac-state-circle\", { \"vac-state-online\": $options.userStatus === \"online\" }])\n          }, null, 2)) : createCommentVNode(\"\", true),\n          renderSlot(_ctx.$slots, \"room-list-info_\" + $props.room.roomId, {}, () => [\n            createBaseVNode(\"div\", _hoisted_4$f, toDisplayString($props.room.roomName), 1)\n          ]),\n          $props.room.lastMessage ? (openBlock(), createElementBlock(\"div\", _hoisted_5$a, toDisplayString($props.room.lastMessage.timestamp), 1)) : createCommentVNode(\"\", true)\n        ]),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-text-last\", {\n            \"vac-message-new\": $props.room.lastMessage && $props.room.lastMessage.new && !$options.typingUsers\n          }])\n        }, [\n          $options.isMessageCheckmarkVisible ? (openBlock(), createElementBlock(\"span\", _hoisted_6$6, [\n            renderSlot(_ctx.$slots, \"checkmark-icon_\" + $props.room.roomId, {}, () => [\n              createVNode(_component_svg_icon, {\n                name: $props.room.lastMessage.distributed ? \"double-checkmark\" : \"checkmark\",\n                param: $props.room.lastMessage.seen ? \"seen\" : \"\",\n                class: \"vac-icon-check\"\n              }, null, 8, [\"name\", \"param\"])\n            ])\n          ])) : createCommentVNode(\"\", true),\n          $props.room.lastMessage && !$props.room.lastMessage.deleted && $options.isAudio ? (openBlock(), createElementBlock(\"div\", _hoisted_7$6, [\n            renderSlot(_ctx.$slots, \"microphone-icon_\" + $props.room.roomId, {}, () => [\n              createVNode(_component_svg_icon, {\n                name: \"microphone\",\n                class: \"vac-icon-microphone\"\n              })\n            ]),\n            createTextVNode(\" \" + toDisplayString($options.formattedDuration), 1)\n          ])) : $props.room.lastMessage ? (openBlock(), createBlock(_component_format_message, {\n            key: 2,\n            \"message-id\": $props.room.lastMessage._id,\n            \"room-id\": $props.room.roomId,\n            \"room-list\": true,\n            content: $options.getLastMessage,\n            deleted: !!$props.room.lastMessage.deleted && !$options.typingUsers,\n            users: $props.room.users,\n            \"text-messages\": $props.textMessages,\n            linkify: false,\n            \"text-formatting\": $props.textFormatting,\n            \"link-options\": $props.linkOptions,\n            \"single-line\": true\n          }, createSlots({ _: 2 }, [\n            renderList(_ctx.$slots, (idx, name) => {\n              return {\n                name,\n                fn: withCtx((data) => [\n                  renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                ])\n              };\n            })\n          ]), 1032, [\"message-id\", \"room-id\", \"content\", \"deleted\", \"users\", \"text-messages\", \"text-formatting\", \"link-options\"])) : createCommentVNode(\"\", true),\n          !$props.room.lastMessage && $options.typingUsers ? (openBlock(), createElementBlock(\"div\", _hoisted_8$4, toDisplayString($options.typingUsers), 1)) : createCommentVNode(\"\", true),\n          createBaseVNode(\"div\", _hoisted_9$4, [\n            $props.room.unreadCount ? (openBlock(), createElementBlock(\"div\", _hoisted_10$4, toDisplayString($props.room.unreadCount), 1)) : createCommentVNode(\"\", true),\n            renderSlot(_ctx.$slots, \"room-list-options_\" + $props.room.roomId, {}, () => [\n              $props.roomActions.length ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: \"vac-svg-button vac-list-room-options\",\n                onClick: _cache[0] || (_cache[0] = withModifiers(($event) => $data.roomMenuOpened = $props.room.roomId, [\"stop\"]))\n              }, [\n                renderSlot(_ctx.$slots, \"room-list-options-icon_\" + $props.room.roomId, {}, () => [\n                  createVNode(_component_svg_icon, {\n                    name: \"dropdown\",\n                    param: \"room\"\n                  })\n                ])\n              ])) : createCommentVNode(\"\", true),\n              $props.roomActions.length ? (openBlock(), createBlock(Transition, {\n                key: 1,\n                name: \"vac-slide-left\"\n              }, {\n                default: withCtx(() => [\n                  $data.roomMenuOpened === $props.room.roomId ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_11$3, [\n                    createBaseVNode(\"div\", _hoisted_12$3, [\n                      (openBlock(true), createElementBlock(Fragment, null, renderList($props.roomActions, (action) => {\n                        return openBlock(), createElementBlock(\"div\", {\n                          key: action.name\n                        }, [\n                          createBaseVNode(\"div\", {\n                            class: \"vac-menu-item\",\n                            onClick: withModifiers(($event) => $options.roomActionHandler(action), [\"stop\"])\n                          }, toDisplayString(action.title), 9, _hoisted_13$1)\n                        ]);\n                      }), 128))\n                    ])\n                  ])), [\n                    [_directive_click_outside, $options.closeRoomMenu]\n                  ]) : createCommentVNode(\"\", true)\n                ]),\n                _: 1\n              })) : createCommentVNode(\"\", true)\n            ])\n          ])\n        ], 2)\n      ])\n    ])\n  ]);\n}\nvar RoomContent = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$m]]);\nvar filteredItems = (items, prop, val, startsWith = false) => {\n  if (!val || val === \"\")\n    return items;\n  return items.filter((v) => {\n    if (startsWith)\n      return formatString(v[prop]).startsWith(formatString(val));\n    return formatString(v[prop]).includes(formatString(val));\n  });\n};\nfunction formatString(string2) {\n  return string2.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n}\nconst _sfc_main$l = {\n  name: \"RoomsList\",\n  components: {\n    Loader,\n    RoomsSearch,\n    RoomContent\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    showRoomsList: { type: Boolean, required: true },\n    showSearch: { type: Boolean, required: true },\n    showAddRoom: { type: Boolean, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    isMobile: { type: Boolean, required: true },\n    rooms: { type: Array, required: true },\n    loadingRooms: { type: Boolean, required: true },\n    roomsLoaded: { type: Boolean, required: true },\n    room: { type: Object, required: true },\n    customSearchRoomEnabled: { type: [Boolean, String], default: false },\n    roomActions: { type: Array, required: true },\n    scrollDistance: { type: Number, required: true }\n  },\n  emits: [\n    \"add-room\",\n    \"search-room\",\n    \"room-action-handler\",\n    \"loading-more-rooms\",\n    \"fetch-room\",\n    \"fetch-more-rooms\"\n  ],\n  data() {\n    return {\n      filteredRooms: this.rooms || [],\n      observer: null,\n      showLoader: true,\n      loadingMoreRooms: false,\n      selectedRoomId: \"\"\n    };\n  },\n  watch: {\n    rooms: {\n      deep: true,\n      handler(newVal, oldVal) {\n        this.filteredRooms = newVal;\n        if (newVal.length !== oldVal.length || this.roomsLoaded) {\n          this.loadingMoreRooms = false;\n        }\n      }\n    },\n    loadingRooms(val) {\n      if (!val) {\n        setTimeout(() => this.initIntersectionObserver());\n      }\n    },\n    loadingMoreRooms(val) {\n      this.$emit(\"loading-more-rooms\", val);\n    },\n    roomsLoaded: {\n      immediate: true,\n      handler(val) {\n        if (val) {\n          this.loadingMoreRooms = false;\n          if (!this.loadingRooms) {\n            this.showLoader = false;\n          }\n        }\n      }\n    },\n    room: {\n      immediate: true,\n      handler(val) {\n        if (val && !this.isMobile)\n          this.selectedRoomId = val.roomId;\n      }\n    }\n  },\n  methods: {\n    initIntersectionObserver() {\n      if (this.observer) {\n        this.showLoader = true;\n        this.observer.disconnect();\n      }\n      const loader = this.$el.querySelector(\"#infinite-loader-rooms\");\n      if (loader) {\n        const options = {\n          root: this.$el.querySelector(\"#rooms-list\"),\n          rootMargin: `${this.scrollDistance}px`,\n          threshold: 0\n        };\n        this.observer = new IntersectionObserver((entries) => {\n          if (entries[0].isIntersecting) {\n            this.loadMoreRooms();\n          }\n        }, options);\n        this.observer.observe(loader);\n      }\n    },\n    searchRoom(ev) {\n      if (this.customSearchRoomEnabled) {\n        this.$emit(\"search-room\", ev.target.value);\n      } else {\n        this.filteredRooms = filteredItems(\n          this.rooms,\n          \"roomName\",\n          ev.target.value\n        );\n      }\n    },\n    openRoom(room) {\n      if (room.roomId === this.room.roomId && !this.isMobile)\n        return;\n      if (!this.isMobile)\n        this.selectedRoomId = room.roomId;\n      this.$emit(\"fetch-room\", { room });\n    },\n    loadMoreRooms() {\n      if (this.loadingMoreRooms)\n        return;\n      if (this.roomsLoaded) {\n        this.loadingMoreRooms = false;\n        this.showLoader = false;\n        return;\n      }\n      this.$emit(\"fetch-more-rooms\");\n      this.loadingMoreRooms = true;\n    }\n  }\n};\nconst _hoisted_1$l = {\n  key: 0,\n  class: \"vac-rooms-empty\"\n};\nconst _hoisted_2$i = {\n  key: 1,\n  id: \"rooms-list\",\n  class: \"vac-room-list\"\n};\nconst _hoisted_3$f = [\"id\", \"onClick\"];\nconst _hoisted_4$e = {\n  key: 0,\n  id: \"infinite-loader-rooms\"\n};\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_rooms_search = resolveComponent(\"rooms-search\");\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_room_content = resolveComponent(\"room-content\");\n  return withDirectives((openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass([\"vac-rooms-container\", {\n      \"vac-rooms-container-full\": $props.isMobile,\n      \"vac-app-border-r\": !$props.isMobile\n    }])\n  }, [\n    renderSlot(_ctx.$slots, \"rooms-header\"),\n    renderSlot(_ctx.$slots, \"rooms-list-search\", {}, () => [\n      createVNode(_component_rooms_search, {\n        rooms: $props.rooms,\n        \"loading-rooms\": $props.loadingRooms,\n        \"text-messages\": $props.textMessages,\n        \"show-search\": $props.showSearch,\n        \"show-add-room\": $props.showAddRoom,\n        onSearchRoom: $options.searchRoom,\n        onAddRoom: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"add-room\"))\n      }, createSlots({ _: 2 }, [\n        renderList(_ctx.$slots, (idx, name) => {\n          return {\n            name,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"rooms\", \"loading-rooms\", \"text-messages\", \"show-search\", \"show-add-room\", \"onSearchRoom\"])\n    ]),\n    createVNode(_component_loader, {\n      show: $props.loadingRooms,\n      type: \"rooms\"\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"show\"]),\n    !$props.loadingRooms && !$props.rooms.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$l, [\n      renderSlot(_ctx.$slots, \"rooms-empty\", {}, () => [\n        createTextVNode(toDisplayString($props.textMessages.ROOMS_EMPTY), 1)\n      ])\n    ])) : createCommentVNode(\"\", true),\n    !$props.loadingRooms ? (openBlock(), createElementBlock(\"div\", _hoisted_2$i, [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($data.filteredRooms, (fRoom) => {\n        return openBlock(), createElementBlock(\"div\", {\n          id: fRoom.roomId,\n          key: fRoom.roomId,\n          class: normalizeClass([\"vac-room-item\", { \"vac-room-selected\": $data.selectedRoomId === fRoom.roomId }]),\n          onClick: ($event) => $options.openRoom(fRoom)\n        }, [\n          createVNode(_component_room_content, {\n            \"current-user-id\": $props.currentUserId,\n            room: fRoom,\n            \"text-formatting\": $props.textFormatting,\n            \"link-options\": $props.linkOptions,\n            \"text-messages\": $props.textMessages,\n            \"room-actions\": $props.roomActions,\n            onRoomActionHandler: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"room-action-handler\", $event))\n          }, createSlots({ _: 2 }, [\n            renderList(_ctx.$slots, (idx, name) => {\n              return {\n                name,\n                fn: withCtx((data) => [\n                  renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                ])\n              };\n            })\n          ]), 1032, [\"current-user-id\", \"room\", \"text-formatting\", \"link-options\", \"text-messages\", \"room-actions\"])\n        ], 10, _hoisted_3$f);\n      }), 128)),\n      createVNode(Transition, { name: \"vac-fade-message\" }, {\n        default: withCtx(() => [\n          $props.rooms.length && !$props.loadingRooms ? (openBlock(), createElementBlock(\"div\", _hoisted_4$e, [\n            createVNode(_component_loader, {\n              show: $data.showLoader,\n              infinite: true,\n              type: \"infinite-rooms\"\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (idx, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"show\"])\n          ])) : createCommentVNode(\"\", true)\n        ]),\n        _: 3\n      })\n    ])) : createCommentVNode(\"\", true)\n  ], 2)), [\n    [vShow, $props.showRoomsList]\n  ]);\n}\nvar RoomsList = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$k = {\n  name: \"RoomHeader\",\n  components: {\n    SvgIcon\n  },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    singleRoom: { type: Boolean, required: true },\n    showRoomsList: { type: Boolean, required: true },\n    isMobile: { type: Boolean, required: true },\n    roomInfoEnabled: { type: Boolean, required: true },\n    menuActions: { type: Array, required: true },\n    room: { type: Object, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true },\n    messageSelectionActions: { type: Array, required: true },\n    selectedMessagesTotal: { type: Number, required: true }\n  },\n  emits: [\n    \"toggle-rooms-list\",\n    \"room-info\",\n    \"menu-action-handler\",\n    \"cancel-message-selection\",\n    \"message-selection-action-handler\"\n  ],\n  data() {\n    return {\n      menuOpened: false,\n      messageSelectionAnimationEnded: true\n    };\n  },\n  computed: {\n    typingUsers() {\n      return typingText(this.room, this.currentUserId, this.textMessages);\n    },\n    userStatus() {\n      if (!this.room.users || this.room.users.length !== 2)\n        return;\n      const user = this.room.users.find((u) => u._id !== this.currentUserId);\n      if (!(user == null ? void 0 : user.status))\n        return;\n      let text2 = \"\";\n      if (user.status.state === \"online\") {\n        text2 = this.textMessages.IS_ONLINE;\n      } else if (user.status.lastChanged) {\n        text2 = this.textMessages.LAST_SEEN + user.status.lastChanged;\n      }\n      return text2;\n    }\n  },\n  watch: {\n    messageSelectionEnabled(val) {\n      if (val) {\n        this.messageSelectionAnimationEnded = false;\n      } else {\n        setTimeout(() => {\n          this.messageSelectionAnimationEnded = true;\n        }, 300);\n      }\n    }\n  },\n  methods: {\n    menuActionHandler(action) {\n      this.closeMenu();\n      this.$emit(\"menu-action-handler\", action);\n    },\n    closeMenu() {\n      this.menuOpened = false;\n    },\n    messageSelectionActionHandler(action) {\n      this.$emit(\"message-selection-action-handler\", action);\n    }\n  }\n};\nconst _hoisted_1$k = { class: \"vac-room-header vac-app-border-b\" };\nconst _hoisted_2$h = { class: \"vac-room-wrapper\" };\nconst _hoisted_3$e = {\n  key: 0,\n  class: \"vac-room-selection\"\n};\nconst _hoisted_4$d = [\"id\"];\nconst _hoisted_5$9 = [\"onClick\"];\nconst _hoisted_6$5 = { class: \"vac-selection-button-count\" };\nconst _hoisted_7$5 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_8$3 = { class: \"vac-room-name vac-text-ellipsis\" };\nconst _hoisted_9$3 = {\n  key: 0,\n  class: \"vac-room-info vac-text-ellipsis\"\n};\nconst _hoisted_10$3 = {\n  key: 1,\n  class: \"vac-room-info vac-text-ellipsis\"\n};\nconst _hoisted_11$2 = {\n  key: 0,\n  class: \"vac-menu-options\"\n};\nconst _hoisted_12$2 = { class: \"vac-menu-list\" };\nconst _hoisted_13 = [\"onClick\"];\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$k, [\n    renderSlot(_ctx.$slots, \"room-header\", {}, () => [\n      createBaseVNode(\"div\", _hoisted_2$h, [\n        createVNode(Transition, { name: \"vac-slide-up\" }, {\n          default: withCtx(() => [\n            $props.messageSelectionEnabled ? (openBlock(), createElementBlock(\"div\", _hoisted_3$e, [\n              (openBlock(true), createElementBlock(Fragment, null, renderList($props.messageSelectionActions, (action) => {\n                return openBlock(), createElementBlock(\"div\", {\n                  id: action.name,\n                  key: action.name\n                }, [\n                  createBaseVNode(\"div\", {\n                    class: \"vac-selection-button\",\n                    onClick: ($event) => $options.messageSelectionActionHandler(action)\n                  }, [\n                    createTextVNode(toDisplayString(action.title) + \" \", 1),\n                    createBaseVNode(\"span\", _hoisted_6$5, toDisplayString($props.selectedMessagesTotal), 1)\n                  ], 8, _hoisted_5$9)\n                ], 8, _hoisted_4$d);\n              }), 128)),\n              createBaseVNode(\"div\", {\n                class: \"vac-selection-cancel vac-item-clickable\",\n                onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"cancel-message-selection\"))\n              }, toDisplayString($props.textMessages.CANCEL_SELECT_MESSAGE), 1)\n            ])) : createCommentVNode(\"\", true)\n          ]),\n          _: 1\n        }),\n        !$props.messageSelectionEnabled && $data.messageSelectionAnimationEnded ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n          !$props.singleRoom ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"vac-svg-button vac-toggle-button\", {\n              \"vac-rotate-icon-init\": !$props.isMobile,\n              \"vac-rotate-icon\": !$props.showRoomsList && !$props.isMobile\n            }]),\n            onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"toggle-rooms-list\"))\n          }, [\n            renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"toggle\" })\n            ])\n          ], 2)) : createCommentVNode(\"\", true),\n          createBaseVNode(\"div\", {\n            class: normalizeClass([\"vac-info-wrapper\", { \"vac-item-clickable\": $props.roomInfoEnabled }]),\n            onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"room-info\"))\n          }, [\n            renderSlot(_ctx.$slots, \"room-header-avatar\", {}, () => [\n              $props.room.avatar ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: \"vac-avatar\",\n                style: normalizeStyle({ \"background-image\": `url('${$props.room.avatar}')` })\n              }, null, 4)) : createCommentVNode(\"\", true)\n            ]),\n            renderSlot(_ctx.$slots, \"room-header-info\", {}, () => [\n              createBaseVNode(\"div\", _hoisted_7$5, [\n                createBaseVNode(\"div\", _hoisted_8$3, toDisplayString($props.room.roomName), 1),\n                $options.typingUsers ? (openBlock(), createElementBlock(\"div\", _hoisted_9$3, toDisplayString($options.typingUsers), 1)) : (openBlock(), createElementBlock(\"div\", _hoisted_10$3, toDisplayString($options.userStatus), 1))\n              ])\n            ])\n          ], 2),\n          $props.room.roomId ? renderSlot(_ctx.$slots, \"room-options\", { key: 1 }, () => [\n            $props.menuActions.length ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: \"vac-svg-button vac-room-options\",\n              onClick: _cache[3] || (_cache[3] = ($event) => $data.menuOpened = !$data.menuOpened)\n            }, [\n              renderSlot(_ctx.$slots, \"menu-icon\", {}, () => [\n                createVNode(_component_svg_icon, { name: \"menu\" })\n              ])\n            ])) : createCommentVNode(\"\", true),\n            $props.menuActions.length ? (openBlock(), createBlock(Transition, {\n              key: 1,\n              name: \"vac-slide-left\"\n            }, {\n              default: withCtx(() => [\n                $data.menuOpened ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_11$2, [\n                  createBaseVNode(\"div\", _hoisted_12$2, [\n                    (openBlock(true), createElementBlock(Fragment, null, renderList($props.menuActions, (action) => {\n                      return openBlock(), createElementBlock(\"div\", {\n                        key: action.name\n                      }, [\n                        createBaseVNode(\"div\", {\n                          class: \"vac-menu-item\",\n                          onClick: ($event) => $options.menuActionHandler(action)\n                        }, toDisplayString(action.title), 9, _hoisted_13)\n                      ]);\n                    }), 128))\n                  ])\n                ])), [\n                  [_directive_click_outside, $options.closeMenu]\n                ]) : createCommentVNode(\"\", true)\n              ]),\n              _: 1\n            })) : createCommentVNode(\"\", true)\n          ]) : createCommentVNode(\"\", true)\n        ], 64)) : createCommentVNode(\"\", true)\n      ])\n    ])\n  ]);\n}\nvar RoomHeader = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$k]]);\nfunction assertNonEmptyString(str) {\n  if (typeof str !== \"string\" || !str) {\n    throw new Error(\"expected a non-empty string, got: \" + str);\n  }\n}\nfunction assertNumber(number) {\n  if (typeof number !== \"number\") {\n    throw new Error(\"expected a number, got: \" + number);\n  }\n}\nconst DB_VERSION_CURRENT = 1;\nconst DB_VERSION_INITIAL = 1;\nconst STORE_EMOJI = \"emoji\";\nconst STORE_KEYVALUE = \"keyvalue\";\nconst STORE_FAVORITES = \"favorites\";\nconst FIELD_TOKENS = \"tokens\";\nconst INDEX_TOKENS = \"tokens\";\nconst FIELD_UNICODE = \"unicode\";\nconst INDEX_COUNT = \"count\";\nconst FIELD_GROUP = \"group\";\nconst FIELD_ORDER = \"order\";\nconst INDEX_GROUP_AND_ORDER = \"group-order\";\nconst KEY_ETAG = \"eTag\";\nconst KEY_URL = \"url\";\nconst KEY_PREFERRED_SKINTONE = \"skinTone\";\nconst MODE_READONLY = \"readonly\";\nconst MODE_READWRITE = \"readwrite\";\nconst INDEX_SKIN_UNICODE = \"skinUnicodes\";\nconst FIELD_SKIN_UNICODE = \"skinUnicodes\";\nconst DEFAULT_DATA_SOURCE$1 = \"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json\";\nconst DEFAULT_LOCALE$1 = \"en\";\nfunction uniqBy$1(arr, func) {\n  const set2 = /* @__PURE__ */ new Set();\n  const res = [];\n  for (const item of arr) {\n    const key = func(item);\n    if (!set2.has(key)) {\n      set2.add(key);\n      res.push(item);\n    }\n  }\n  return res;\n}\nfunction uniqEmoji(emojis) {\n  return uniqBy$1(emojis, (_) => _.unicode);\n}\nfunction initialMigration(db) {\n  function createObjectStore(name, keyPath, indexes) {\n    const store = keyPath ? db.createObjectStore(name, { keyPath }) : db.createObjectStore(name);\n    if (indexes) {\n      for (const [indexName, [keyPath2, multiEntry]] of Object.entries(indexes)) {\n        store.createIndex(indexName, keyPath2, { multiEntry });\n      }\n    }\n    return store;\n  }\n  createObjectStore(STORE_KEYVALUE);\n  createObjectStore(STORE_EMOJI, FIELD_UNICODE, {\n    [INDEX_TOKENS]: [FIELD_TOKENS, true],\n    [INDEX_GROUP_AND_ORDER]: [[FIELD_GROUP, FIELD_ORDER]],\n    [INDEX_SKIN_UNICODE]: [FIELD_SKIN_UNICODE, true]\n  });\n  createObjectStore(STORE_FAVORITES, void 0, {\n    [INDEX_COUNT]: [\"\"]\n  });\n}\nconst openReqs = {};\nconst databaseCache = {};\nconst onCloseListeners = {};\nfunction handleOpenOrDeleteReq(resolve2, reject, req) {\n  req.onerror = () => reject(req.error);\n  req.onblocked = () => reject(new Error(\"IDB blocked\"));\n  req.onsuccess = () => resolve2(req.result);\n}\nasync function createDatabase(dbName) {\n  const db = await new Promise((resolve2, reject) => {\n    const req = indexedDB.open(dbName, DB_VERSION_CURRENT);\n    openReqs[dbName] = req;\n    req.onupgradeneeded = (e) => {\n      if (e.oldVersion < DB_VERSION_INITIAL) {\n        initialMigration(req.result);\n      }\n    };\n    handleOpenOrDeleteReq(resolve2, reject, req);\n  });\n  db.onclose = () => closeDatabase(dbName);\n  return db;\n}\nfunction openDatabase(dbName) {\n  if (!databaseCache[dbName]) {\n    databaseCache[dbName] = createDatabase(dbName);\n  }\n  return databaseCache[dbName];\n}\nfunction dbPromise(db, storeName, readOnlyOrReadWrite, cb) {\n  return new Promise((resolve2, reject) => {\n    const txn = db.transaction(storeName, readOnlyOrReadWrite, { durability: \"relaxed\" });\n    const store = typeof storeName === \"string\" ? txn.objectStore(storeName) : storeName.map((name) => txn.objectStore(name));\n    let res;\n    cb(store, txn, (result) => {\n      res = result;\n    });\n    txn.oncomplete = () => resolve2(res);\n    txn.onerror = () => reject(txn.error);\n  });\n}\nfunction closeDatabase(dbName) {\n  const req = openReqs[dbName];\n  const db = req && req.result;\n  if (db) {\n    db.close();\n    const listeners = onCloseListeners[dbName];\n    if (listeners) {\n      for (const listener of listeners) {\n        listener();\n      }\n    }\n  }\n  delete openReqs[dbName];\n  delete databaseCache[dbName];\n  delete onCloseListeners[dbName];\n}\nfunction deleteDatabase(dbName) {\n  return new Promise((resolve2, reject) => {\n    closeDatabase(dbName);\n    const req = indexedDB.deleteDatabase(dbName);\n    handleOpenOrDeleteReq(resolve2, reject, req);\n  });\n}\nfunction addOnCloseListener(dbName, listener) {\n  let listeners = onCloseListeners[dbName];\n  if (!listeners) {\n    listeners = onCloseListeners[dbName] = [];\n  }\n  listeners.push(listener);\n}\nconst irregularEmoticons = /* @__PURE__ */ new Set([\n  \":D\",\n  \"XD\",\n  \":'D\",\n  \"O:)\",\n  \":X\",\n  \":P\",\n  \";P\",\n  \"XP\",\n  \":L\",\n  \":Z\",\n  \":j\",\n  \"8D\",\n  \"XO\",\n  \"8)\",\n  \":B\",\n  \":O\",\n  \":S\",\n  \":'o\",\n  \"Dx\",\n  \"X(\",\n  \"D:\",\n  \":C\",\n  \">0)\",\n  \":3\",\n  \"</3\",\n  \"<3\",\n  \"\\\\M/\",\n  \":E\",\n  \"8#\"\n]);\nfunction extractTokens(str) {\n  return str.split(/[\\s_]+/).map((word) => {\n    if (!word.match(/\\w/) || irregularEmoticons.has(word)) {\n      return word.toLowerCase();\n    }\n    return word.replace(/[)(:,]/g, \"\").replace(/’/g, \"'\").toLowerCase();\n  }).filter(Boolean);\n}\nconst MIN_SEARCH_TEXT_LENGTH$1 = 2;\nfunction normalizeTokens(str) {\n  return str.filter(Boolean).map((_) => _.toLowerCase()).filter((_) => _.length >= MIN_SEARCH_TEXT_LENGTH$1);\n}\nfunction transformEmojiData(emojiData) {\n  const res = emojiData.map(({ annotation, emoticon, group, order, shortcodes, skins, tags, emoji, version: version2 }) => {\n    const tokens = [...new Set(\n      normalizeTokens([\n        ...(shortcodes || []).map(extractTokens).flat(),\n        ...tags.map(extractTokens).flat(),\n        ...extractTokens(annotation),\n        emoticon\n      ])\n    )].sort();\n    const res2 = {\n      annotation,\n      group,\n      order,\n      tags,\n      tokens,\n      unicode: emoji,\n      version: version2\n    };\n    if (emoticon) {\n      res2.emoticon = emoticon;\n    }\n    if (shortcodes) {\n      res2.shortcodes = shortcodes;\n    }\n    if (skins) {\n      res2.skinTones = [];\n      res2.skinUnicodes = [];\n      res2.skinVersions = [];\n      for (const { tone, emoji: emoji2, version: version3 } of skins) {\n        res2.skinTones.push(tone);\n        res2.skinUnicodes.push(emoji2);\n        res2.skinVersions.push(version3);\n      }\n    }\n    return res2;\n  });\n  return res;\n}\nfunction callStore(store, method, key, cb) {\n  store[method](key).onsuccess = (e) => cb && cb(e.target.result);\n}\nfunction getIDB(store, key, cb) {\n  callStore(store, \"get\", key, cb);\n}\nfunction getAllIDB(store, key, cb) {\n  callStore(store, \"getAll\", key, cb);\n}\nfunction commit(txn) {\n  if (txn.commit) {\n    txn.commit();\n  }\n}\nfunction minBy(array, func) {\n  let minItem = array[0];\n  for (let i = 1; i < array.length; i++) {\n    const item = array[i];\n    if (func(minItem) > func(item)) {\n      minItem = item;\n    }\n  }\n  return minItem;\n}\nfunction findCommonMembers(arrays, uniqByFunc) {\n  const shortestArray = minBy(arrays, (_) => _.length);\n  const results = [];\n  for (const item of shortestArray) {\n    if (!arrays.some((array) => array.findIndex((_) => uniqByFunc(_) === uniqByFunc(item)) === -1)) {\n      results.push(item);\n    }\n  }\n  return results;\n}\nasync function isEmpty(db) {\n  return !await get(db, STORE_KEYVALUE, KEY_URL);\n}\nasync function hasData(db, url, eTag) {\n  const [oldETag, oldUrl] = await Promise.all([KEY_ETAG, KEY_URL].map((key) => get(db, STORE_KEYVALUE, key)));\n  return oldETag === eTag && oldUrl === url;\n}\nasync function doFullDatabaseScanForSingleResult(db, predicate) {\n  const BATCH_SIZE = 50;\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n    let lastKey;\n    const processNextBatch = () => {\n      emojiStore.getAll(lastKey && IDBKeyRange.lowerBound(lastKey, true), BATCH_SIZE).onsuccess = (e) => {\n        const results = e.target.result;\n        for (const result of results) {\n          lastKey = result.unicode;\n          if (predicate(result)) {\n            return cb(result);\n          }\n        }\n        if (results.length < BATCH_SIZE) {\n          return cb();\n        }\n        processNextBatch();\n      };\n    };\n    processNextBatch();\n  });\n}\nasync function loadData(db, emojiData, url, eTag) {\n  try {\n    const transformedData = transformEmojiData(emojiData);\n    await dbPromise(db, [STORE_EMOJI, STORE_KEYVALUE], MODE_READWRITE, ([emojiStore, metaStore], txn) => {\n      let oldETag;\n      let oldUrl;\n      let todo = 0;\n      function checkFetched() {\n        if (++todo === 2) {\n          onFetched();\n        }\n      }\n      function onFetched() {\n        if (oldETag === eTag && oldUrl === url) {\n          return;\n        }\n        emojiStore.clear();\n        for (const data of transformedData) {\n          emojiStore.put(data);\n        }\n        metaStore.put(eTag, KEY_ETAG);\n        metaStore.put(url, KEY_URL);\n        commit(txn);\n      }\n      getIDB(metaStore, KEY_ETAG, (result) => {\n        oldETag = result;\n        checkFetched();\n      });\n      getIDB(metaStore, KEY_URL, (result) => {\n        oldUrl = result;\n        checkFetched();\n      });\n    });\n  } finally {\n  }\n}\nasync function getEmojiByGroup(db, group) {\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n    const range = IDBKeyRange.bound([group, 0], [group + 1, 0], false, true);\n    getAllIDB(emojiStore.index(INDEX_GROUP_AND_ORDER), range, cb);\n  });\n}\nasync function getEmojiBySearchQuery(db, query) {\n  const tokens = normalizeTokens(extractTokens(query));\n  if (!tokens.length) {\n    return [];\n  }\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n    const intermediateResults = [];\n    const checkDone = () => {\n      if (intermediateResults.length === tokens.length) {\n        onDone();\n      }\n    };\n    const onDone = () => {\n      const results = findCommonMembers(intermediateResults, (_) => _.unicode);\n      cb(results.sort((a, b) => a.order < b.order ? -1 : 1));\n    };\n    for (let i = 0; i < tokens.length; i++) {\n      const token = tokens[i];\n      const range = i === tokens.length - 1 ? IDBKeyRange.bound(token, token + \"\\uFFFF\", false, true) : IDBKeyRange.only(token);\n      getAllIDB(emojiStore.index(INDEX_TOKENS), range, (result) => {\n        intermediateResults.push(result);\n        checkDone();\n      });\n    }\n  });\n}\nasync function getEmojiByShortcode(db, shortcode) {\n  const emojis = await getEmojiBySearchQuery(db, shortcode);\n  if (!emojis.length) {\n    const predicate = (_) => (_.shortcodes || []).includes(shortcode.toLowerCase());\n    return await doFullDatabaseScanForSingleResult(db, predicate) || null;\n  }\n  return emojis.filter((_) => {\n    const lowerShortcodes = (_.shortcodes || []).map((_2) => _2.toLowerCase());\n    return lowerShortcodes.includes(shortcode.toLowerCase());\n  })[0] || null;\n}\nasync function getEmojiByUnicode(db, unicode) {\n  return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => getIDB(emojiStore, unicode, (result) => {\n    if (result) {\n      return cb(result);\n    }\n    getIDB(emojiStore.index(INDEX_SKIN_UNICODE), unicode, (result2) => cb(result2 || null));\n  }));\n}\nfunction get(db, storeName, key) {\n  return dbPromise(db, storeName, MODE_READONLY, (store, txn, cb) => getIDB(store, key, cb));\n}\nfunction set(db, storeName, key, value) {\n  return dbPromise(db, storeName, MODE_READWRITE, (store, txn) => {\n    store.put(value, key);\n    commit(txn);\n  });\n}\nfunction incrementFavoriteEmojiCount(db, unicode) {\n  return dbPromise(db, STORE_FAVORITES, MODE_READWRITE, (store, txn) => getIDB(store, unicode, (result) => {\n    store.put((result || 0) + 1, unicode);\n    commit(txn);\n  }));\n}\nfunction getTopFavoriteEmoji(db, customEmojiIndex2, limit) {\n  if (limit === 0) {\n    return [];\n  }\n  return dbPromise(db, [STORE_FAVORITES, STORE_EMOJI], MODE_READONLY, ([favoritesStore, emojiStore], txn, cb) => {\n    const results = [];\n    favoritesStore.index(INDEX_COUNT).openCursor(void 0, \"prev\").onsuccess = (e) => {\n      const cursor = e.target.result;\n      if (!cursor) {\n        return cb(results);\n      }\n      function addResult(result) {\n        results.push(result);\n        if (results.length === limit) {\n          return cb(results);\n        }\n        cursor.continue();\n      }\n      const unicodeOrName = cursor.primaryKey;\n      const custom = customEmojiIndex2.byName(unicodeOrName);\n      if (custom) {\n        return addResult(custom);\n      }\n      getIDB(emojiStore, unicodeOrName, (emoji) => {\n        if (emoji) {\n          return addResult(emoji);\n        }\n        cursor.continue();\n      });\n    };\n  });\n}\nconst CODA_MARKER = \"\";\nfunction trie(arr, itemToTokens) {\n  const map = /* @__PURE__ */ new Map();\n  for (const item of arr) {\n    const tokens = itemToTokens(item);\n    for (const token of tokens) {\n      let currentMap = map;\n      for (let i = 0; i < token.length; i++) {\n        const char = token.charAt(i);\n        let nextMap = currentMap.get(char);\n        if (!nextMap) {\n          nextMap = /* @__PURE__ */ new Map();\n          currentMap.set(char, nextMap);\n        }\n        currentMap = nextMap;\n      }\n      let valuesAtCoda = currentMap.get(CODA_MARKER);\n      if (!valuesAtCoda) {\n        valuesAtCoda = [];\n        currentMap.set(CODA_MARKER, valuesAtCoda);\n      }\n      valuesAtCoda.push(item);\n    }\n  }\n  const search2 = (query, exact) => {\n    let currentMap = map;\n    for (let i = 0; i < query.length; i++) {\n      const char = query.charAt(i);\n      const nextMap = currentMap.get(char);\n      if (nextMap) {\n        currentMap = nextMap;\n      } else {\n        return [];\n      }\n    }\n    if (exact) {\n      const results2 = currentMap.get(CODA_MARKER);\n      return results2 || [];\n    }\n    const results = [];\n    const queue2 = [currentMap];\n    while (queue2.length) {\n      const currentMap2 = queue2.shift();\n      const entriesSortedByKey = [...currentMap2.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1);\n      for (const [key, value] of entriesSortedByKey) {\n        if (key === CODA_MARKER) {\n          results.push(...value);\n        } else {\n          queue2.push(value);\n        }\n      }\n    }\n    return results;\n  };\n  return search2;\n}\nconst requiredKeys$1 = [\n  \"name\",\n  \"url\"\n];\nfunction assertCustomEmojis(customEmojis) {\n  const isArray2 = customEmojis && Array.isArray(customEmojis);\n  const firstItemIsFaulty = isArray2 && customEmojis.length && (!customEmojis[0] || requiredKeys$1.some((key) => !(key in customEmojis[0])));\n  if (!isArray2 || firstItemIsFaulty) {\n    throw new Error(\"Custom emojis are in the wrong format\");\n  }\n}\nfunction customEmojiIndex(customEmojis) {\n  assertCustomEmojis(customEmojis);\n  const sortByName = (a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;\n  const all = customEmojis.sort(sortByName);\n  const emojiToTokens = (emoji) => [...new Set((emoji.shortcodes || []).map((shortcode) => extractTokens(shortcode)).flat())];\n  const searchTrie = trie(customEmojis, emojiToTokens);\n  const searchByExactMatch = (_) => searchTrie(_, true);\n  const searchByPrefix = (_) => searchTrie(_, false);\n  const search2 = (query) => {\n    const tokens = extractTokens(query);\n    const intermediateResults = tokens.map((token, i) => (i < tokens.length - 1 ? searchByExactMatch : searchByPrefix)(token));\n    return findCommonMembers(intermediateResults, (_) => _.name).sort(sortByName);\n  };\n  const shortcodeToEmoji = /* @__PURE__ */ new Map();\n  const nameToEmoji = /* @__PURE__ */ new Map();\n  for (const customEmoji of customEmojis) {\n    nameToEmoji.set(customEmoji.name.toLowerCase(), customEmoji);\n    for (const shortcode of customEmoji.shortcodes || []) {\n      shortcodeToEmoji.set(shortcode.toLowerCase(), customEmoji);\n    }\n  }\n  const byShortcode = (shortcode) => shortcodeToEmoji.get(shortcode.toLowerCase());\n  const byName = (name) => nameToEmoji.get(name.toLowerCase());\n  return {\n    all,\n    search: search2,\n    byShortcode,\n    byName\n  };\n}\nfunction cleanEmoji(emoji) {\n  if (!emoji) {\n    return emoji;\n  }\n  delete emoji.tokens;\n  if (emoji.skinTones) {\n    const len = emoji.skinTones.length;\n    emoji.skins = Array(len);\n    for (let i = 0; i < len; i++) {\n      emoji.skins[i] = {\n        tone: emoji.skinTones[i],\n        unicode: emoji.skinUnicodes[i],\n        version: emoji.skinVersions[i]\n      };\n    }\n    delete emoji.skinTones;\n    delete emoji.skinUnicodes;\n    delete emoji.skinVersions;\n  }\n  return emoji;\n}\nfunction warnETag(eTag) {\n  if (!eTag) {\n    console.warn(\"emoji-picker-element is more efficient if the dataSource server exposes an ETag header.\");\n  }\n}\nconst requiredKeys = [\n  \"annotation\",\n  \"emoji\",\n  \"group\",\n  \"order\",\n  \"tags\",\n  \"version\"\n];\nfunction assertEmojiData(emojiData) {\n  if (!emojiData || !Array.isArray(emojiData) || !emojiData[0] || typeof emojiData[0] !== \"object\" || requiredKeys.some((key) => !(key in emojiData[0]))) {\n    throw new Error(\"Emoji data is in the wrong format\");\n  }\n}\nfunction assertStatus(response, dataSource) {\n  if (Math.floor(response.status / 100) !== 2) {\n    throw new Error(\"Failed to fetch: \" + dataSource + \":  \" + response.status);\n  }\n}\nasync function getETag(dataSource) {\n  const response = await fetch(dataSource, { method: \"HEAD\" });\n  assertStatus(response, dataSource);\n  const eTag = response.headers.get(\"etag\");\n  warnETag(eTag);\n  return eTag;\n}\nasync function getETagAndData(dataSource) {\n  const response = await fetch(dataSource);\n  assertStatus(response, dataSource);\n  const eTag = response.headers.get(\"etag\");\n  warnETag(eTag);\n  const emojiData = await response.json();\n  assertEmojiData(emojiData);\n  return [eTag, emojiData];\n}\nfunction arrayBufferToBinaryString(buffer) {\n  var binary = \"\";\n  var bytes = new Uint8Array(buffer);\n  var length = bytes.byteLength;\n  var i = -1;\n  while (++i < length) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return binary;\n}\nfunction binaryStringToArrayBuffer(binary) {\n  var length = binary.length;\n  var buf = new ArrayBuffer(length);\n  var arr = new Uint8Array(buf);\n  var i = -1;\n  while (++i < length) {\n    arr[i] = binary.charCodeAt(i);\n  }\n  return buf;\n}\nasync function jsonChecksum(object) {\n  const inString = JSON.stringify(object);\n  const inBuffer = binaryStringToArrayBuffer(inString);\n  const outBuffer = await crypto.subtle.digest(\"SHA-1\", inBuffer);\n  const outBinString = arrayBufferToBinaryString(outBuffer);\n  const res = btoa(outBinString);\n  return res;\n}\nasync function checkForUpdates(db, dataSource) {\n  let emojiData;\n  let eTag = await getETag(dataSource);\n  if (!eTag) {\n    const eTagAndData = await getETagAndData(dataSource);\n    eTag = eTagAndData[0];\n    emojiData = eTagAndData[1];\n    if (!eTag) {\n      eTag = await jsonChecksum(emojiData);\n    }\n  }\n  if (await hasData(db, dataSource, eTag))\n    ;\n  else {\n    if (!emojiData) {\n      const eTagAndData = await getETagAndData(dataSource);\n      emojiData = eTagAndData[1];\n    }\n    await loadData(db, emojiData, dataSource, eTag);\n  }\n}\nasync function loadDataForFirstTime(db, dataSource) {\n  let [eTag, emojiData] = await getETagAndData(dataSource);\n  if (!eTag) {\n    eTag = await jsonChecksum(emojiData);\n  }\n  await loadData(db, emojiData, dataSource, eTag);\n}\nclass Database {\n  constructor({ dataSource = DEFAULT_DATA_SOURCE$1, locale = DEFAULT_LOCALE$1, customEmoji = [] } = {}) {\n    this.dataSource = dataSource;\n    this.locale = locale;\n    this._dbName = `emoji-picker-element-${this.locale}`;\n    this._db = void 0;\n    this._lazyUpdate = void 0;\n    this._custom = customEmojiIndex(customEmoji);\n    this._clear = this._clear.bind(this);\n    this._ready = this._init();\n  }\n  async _init() {\n    const db = this._db = await openDatabase(this._dbName);\n    addOnCloseListener(this._dbName, this._clear);\n    const dataSource = this.dataSource;\n    const empty = await isEmpty(db);\n    if (empty) {\n      await loadDataForFirstTime(db, dataSource);\n    } else {\n      this._lazyUpdate = checkForUpdates(db, dataSource);\n    }\n  }\n  async ready() {\n    const checkReady = async () => {\n      if (!this._ready) {\n        this._ready = this._init();\n      }\n      return this._ready;\n    };\n    await checkReady();\n    if (!this._db) {\n      await checkReady();\n    }\n  }\n  async getEmojiByGroup(group) {\n    assertNumber(group);\n    await this.ready();\n    return uniqEmoji(await getEmojiByGroup(this._db, group)).map(cleanEmoji);\n  }\n  async getEmojiBySearchQuery(query) {\n    assertNonEmptyString(query);\n    await this.ready();\n    const customs = this._custom.search(query);\n    const natives = uniqEmoji(await getEmojiBySearchQuery(this._db, query)).map(cleanEmoji);\n    return [\n      ...customs,\n      ...natives\n    ];\n  }\n  async getEmojiByShortcode(shortcode) {\n    assertNonEmptyString(shortcode);\n    await this.ready();\n    const custom = this._custom.byShortcode(shortcode);\n    if (custom) {\n      return custom;\n    }\n    return cleanEmoji(await getEmojiByShortcode(this._db, shortcode));\n  }\n  async getEmojiByUnicodeOrName(unicodeOrName) {\n    assertNonEmptyString(unicodeOrName);\n    await this.ready();\n    const custom = this._custom.byName(unicodeOrName);\n    if (custom) {\n      return custom;\n    }\n    return cleanEmoji(await getEmojiByUnicode(this._db, unicodeOrName));\n  }\n  async getPreferredSkinTone() {\n    await this.ready();\n    return await get(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE) || 0;\n  }\n  async setPreferredSkinTone(skinTone) {\n    assertNumber(skinTone);\n    await this.ready();\n    return set(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE, skinTone);\n  }\n  async incrementFavoriteEmojiCount(unicodeOrName) {\n    assertNonEmptyString(unicodeOrName);\n    await this.ready();\n    return incrementFavoriteEmojiCount(this._db, unicodeOrName);\n  }\n  async getTopFavoriteEmoji(limit) {\n    assertNumber(limit);\n    await this.ready();\n    return (await getTopFavoriteEmoji(this._db, this._custom, limit)).map(cleanEmoji);\n  }\n  set customEmoji(customEmojis) {\n    this._custom = customEmojiIndex(customEmojis);\n  }\n  get customEmoji() {\n    return this._custom.all;\n  }\n  async _shutdown() {\n    await this.ready();\n    try {\n      await this._lazyUpdate;\n    } catch (err) {\n    }\n  }\n  _clear() {\n    this._db = this._ready = this._lazyUpdate = void 0;\n  }\n  async close() {\n    await this._shutdown();\n    await closeDatabase(this._dbName);\n  }\n  async delete() {\n    await this._shutdown();\n    await deleteDatabase(this._dbName);\n  }\n}\nfunction noop() {\n}\nfunction run(fn) {\n  return fn();\n}\nfunction blank_object() {\n  return /* @__PURE__ */ Object.create(null);\n}\nfunction run_all(fns) {\n  fns.forEach(run);\n}\nfunction is_function(thing) {\n  return typeof thing === \"function\";\n}\nfunction safe_not_equal(a, b) {\n  return a != a ? b == b : a !== b || (a && typeof a === \"object\" || typeof a === \"function\");\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n  if (!src_url_equal_anchor) {\n    src_url_equal_anchor = document.createElement(\"a\");\n  }\n  src_url_equal_anchor.href = url;\n  return element_src === src_url_equal_anchor.href;\n}\nfunction is_empty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction action_destroyer(action_result) {\n  return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\nfunction append(target, node) {\n  target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n  target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n  node.parentNode.removeChild(node);\n}\nfunction element(name) {\n  return document.createElement(name);\n}\nfunction text(data) {\n  return document.createTextNode(data);\n}\nfunction listen(node, event, handler, options) {\n  node.addEventListener(event, handler, options);\n  return () => node.removeEventListener(event, handler, options);\n}\nfunction attr(node, attribute, value) {\n  if (value == null)\n    node.removeAttribute(attribute);\n  else if (node.getAttribute(attribute) !== value)\n    node.setAttribute(attribute, value);\n}\nfunction set_data(text2, data) {\n  data = \"\" + data;\n  if (text2.wholeText !== data)\n    text2.data = data;\n}\nfunction set_input_value(input, value) {\n  input.value = value == null ? \"\" : value;\n}\nfunction set_style(node, key, value, important) {\n  if (value === null) {\n    node.style.removeProperty(key);\n  } else {\n    node.style.setProperty(key, value, important ? \"important\" : \"\");\n  }\n}\nlet current_component;\nfunction set_current_component(component) {\n  current_component = component;\n}\nconst dirty_components = [];\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n  if (!update_scheduled) {\n    update_scheduled = true;\n    resolved_promise.then(flush);\n  }\n}\nfunction tick() {\n  schedule_update();\n  return resolved_promise;\n}\nfunction add_render_callback(fn) {\n  render_callbacks.push(fn);\n}\nconst seen_callbacks = /* @__PURE__ */ new Set();\nlet flushidx = 0;\nfunction flush() {\n  const saved_component = current_component;\n  do {\n    while (flushidx < dirty_components.length) {\n      const component = dirty_components[flushidx];\n      flushidx++;\n      set_current_component(component);\n      update(component.$$);\n    }\n    set_current_component(null);\n    dirty_components.length = 0;\n    flushidx = 0;\n    while (binding_callbacks.length)\n      binding_callbacks.pop()();\n    for (let i = 0; i < render_callbacks.length; i += 1) {\n      const callback = render_callbacks[i];\n      if (!seen_callbacks.has(callback)) {\n        seen_callbacks.add(callback);\n        callback();\n      }\n    }\n    render_callbacks.length = 0;\n  } while (dirty_components.length);\n  while (flush_callbacks.length) {\n    flush_callbacks.pop()();\n  }\n  update_scheduled = false;\n  seen_callbacks.clear();\n  set_current_component(saved_component);\n}\nfunction update($$) {\n  if ($$.fragment !== null) {\n    $$.update();\n    run_all($$.before_update);\n    const dirty = $$.dirty;\n    $$.dirty = [-1];\n    $$.fragment && $$.fragment.p($$.ctx, dirty);\n    $$.after_update.forEach(add_render_callback);\n  }\n}\nconst outroing = /* @__PURE__ */ new Set();\nfunction transition_in(block, local) {\n  if (block && block.i) {\n    outroing.delete(block);\n    block.i(local);\n  }\n}\nconst globals = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : global;\nfunction destroy_block(block, lookup) {\n  block.d(1);\n  lookup.delete(block.key);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list2, lookup, node, destroy, create_each_block2, next, get_context) {\n  let o = old_blocks.length;\n  let n = list2.length;\n  let i = o;\n  const old_indexes = {};\n  while (i--)\n    old_indexes[old_blocks[i].key] = i;\n  const new_blocks = [];\n  const new_lookup = /* @__PURE__ */ new Map();\n  const deltas = /* @__PURE__ */ new Map();\n  i = n;\n  while (i--) {\n    const child_ctx = get_context(ctx, list2, i);\n    const key = get_key(child_ctx);\n    let block = lookup.get(key);\n    if (!block) {\n      block = create_each_block2(key, child_ctx);\n      block.c();\n    } else if (dynamic) {\n      block.p(child_ctx, dirty);\n    }\n    new_lookup.set(key, new_blocks[i] = block);\n    if (key in old_indexes)\n      deltas.set(key, Math.abs(i - old_indexes[key]));\n  }\n  const will_move = /* @__PURE__ */ new Set();\n  const did_move = /* @__PURE__ */ new Set();\n  function insert2(block) {\n    transition_in(block, 1);\n    block.m(node, next);\n    lookup.set(block.key, block);\n    next = block.first;\n    n--;\n  }\n  while (o && n) {\n    const new_block = new_blocks[n - 1];\n    const old_block = old_blocks[o - 1];\n    const new_key = new_block.key;\n    const old_key = old_block.key;\n    if (new_block === old_block) {\n      next = new_block.first;\n      o--;\n      n--;\n    } else if (!new_lookup.has(old_key)) {\n      destroy(old_block, lookup);\n      o--;\n    } else if (!lookup.has(new_key) || will_move.has(new_key)) {\n      insert2(new_block);\n    } else if (did_move.has(old_key)) {\n      o--;\n    } else if (deltas.get(new_key) > deltas.get(old_key)) {\n      did_move.add(new_key);\n      insert2(new_block);\n    } else {\n      will_move.add(old_key);\n      o--;\n    }\n  }\n  while (o--) {\n    const old_block = old_blocks[o];\n    if (!new_lookup.has(old_block.key))\n      destroy(old_block, lookup);\n  }\n  while (n)\n    insert2(new_blocks[n - 1]);\n  return new_blocks;\n}\nfunction mount_component(component, target, anchor, customElement) {\n  const { fragment, on_mount, on_destroy, after_update } = component.$$;\n  fragment && fragment.m(target, anchor);\n  if (!customElement) {\n    add_render_callback(() => {\n      const new_on_destroy = on_mount.map(run).filter(is_function);\n      if (on_destroy) {\n        on_destroy.push(...new_on_destroy);\n      } else {\n        run_all(new_on_destroy);\n      }\n      component.$$.on_mount = [];\n    });\n  }\n  after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n  const $$ = component.$$;\n  if ($$.fragment !== null) {\n    run_all($$.on_destroy);\n    $$.fragment && $$.fragment.d(detaching);\n    $$.on_destroy = $$.fragment = null;\n    $$.ctx = [];\n  }\n}\nfunction make_dirty(component, i) {\n  if (component.$$.dirty[0] === -1) {\n    dirty_components.push(component);\n    schedule_update();\n    component.$$.dirty.fill(0);\n  }\n  component.$$.dirty[i / 31 | 0] |= 1 << i % 31;\n}\nfunction init(component, options, instance2, create_fragment2, not_equal, props, append_styles, dirty = [-1]) {\n  const parent_component = current_component;\n  set_current_component(component);\n  const $$ = component.$$ = {\n    fragment: null,\n    ctx: null,\n    props,\n    update: noop,\n    not_equal,\n    bound: blank_object(),\n    on_mount: [],\n    on_destroy: [],\n    on_disconnect: [],\n    before_update: [],\n    after_update: [],\n    context: new Map(parent_component ? parent_component.$$.context : []),\n    callbacks: blank_object(),\n    dirty,\n    skip_bound: false,\n    root: options.target || parent_component.$$.root\n  };\n  append_styles && append_styles($$.root);\n  let ready = false;\n  $$.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {\n    const value = rest.length ? rest[0] : ret;\n    if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n      if (!$$.skip_bound && $$.bound[i])\n        $$.bound[i](value);\n      if (ready)\n        make_dirty(component, i);\n    }\n    return ret;\n  }) : [];\n  $$.update();\n  ready = true;\n  run_all($$.before_update);\n  $$.fragment = create_fragment2 ? create_fragment2($$.ctx) : false;\n  if (options.target) {\n    {\n      $$.fragment && $$.fragment.c();\n    }\n    mount_component(component, options.target, void 0, void 0);\n    flush();\n  }\n  set_current_component(parent_component);\n}\nclass SvelteComponent {\n  $destroy() {\n    destroy_component(this, 1);\n    this.$destroy = noop;\n  }\n  $on(type, callback) {\n    const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n    callbacks.push(callback);\n    return () => {\n      const index = callbacks.indexOf(callback);\n      if (index !== -1)\n        callbacks.splice(index, 1);\n    };\n  }\n  $set($$props) {\n    if (this.$$set && !is_empty($$props)) {\n      this.$$.skip_bound = true;\n      this.$$set($$props);\n      this.$$.skip_bound = false;\n    }\n  }\n}\nconst allGroups = [\n  [-1, \"\\u2728\", \"custom\"],\n  [0, \"\\u{1F600}\", \"smileys-emotion\"],\n  [1, \"\\u{1F44B}\", \"people-body\"],\n  [3, \"\\u{1F431}\", \"animals-nature\"],\n  [4, \"\\u{1F34E}\", \"food-drink\"],\n  [5, \"\\u{1F3E0}\\uFE0F\", \"travel-places\"],\n  [6, \"\\u26BD\", \"activities\"],\n  [7, \"\\u{1F4DD}\", \"objects\"],\n  [8, \"\\u26D4\\uFE0F\", \"symbols\"],\n  [9, \"\\u{1F3C1}\", \"flags\"]\n].map(([id, emoji, name]) => ({ id, emoji, name }));\nconst groups = allGroups.slice(1);\nconst customGroup = allGroups[0];\nconst MIN_SEARCH_TEXT_LENGTH = 2;\nconst NUM_SKIN_TONES = 6;\nconst rIC = typeof requestIdleCallback === \"function\" ? requestIdleCallback : setTimeout;\nfunction hasZwj(emoji) {\n  return emoji.unicode.includes(\"\\u200D\");\n}\nconst versionsAndTestEmoji = {\n  \"\\u{1FAE0}\": 14,\n  \"\\u{1F972}\": 13.1,\n  \"\\u{1F97B}\": 12.1,\n  \"\\u{1F970}\": 11,\n  \"\\u{1F929}\": 5,\n  \"\\u{1F471}\\u200D\\u2640\\uFE0F\": 4,\n  \"\\u{1F923}\": 3,\n  \"\\u{1F441}\\uFE0F\\u200D\\u{1F5E8}\\uFE0F\": 2,\n  \"\\u{1F600}\": 1,\n  \"\\u{1F610}\\uFE0F\": 0.7,\n  \"\\u{1F603}\": 0.6\n};\nconst TIMEOUT_BEFORE_LOADING_MESSAGE = 1e3;\nconst DEFAULT_SKIN_TONE_EMOJI = \"\\u{1F590}\\uFE0F\";\nconst DEFAULT_NUM_COLUMNS = 8;\nconst MOST_COMMONLY_USED_EMOJI = [\n  \"\\u{1F60A}\",\n  \"\\u{1F612}\",\n  \"\\u2665\\uFE0F\",\n  \"\\u{1F44D}\\uFE0F\",\n  \"\\u{1F60D}\",\n  \"\\u{1F602}\",\n  \"\\u{1F62D}\",\n  \"\\u263A\\uFE0F\",\n  \"\\u{1F614}\",\n  \"\\u{1F629}\",\n  \"\\u{1F60F}\",\n  \"\\u{1F495}\",\n  \"\\u{1F64C}\",\n  \"\\u{1F618}\"\n];\nconst FONT_FAMILY = '\"Twemoji Mozilla\",\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\",\"EmojiOne Color\",\"Android Emoji\",sans-serif';\nconst DEFAULT_CATEGORY_SORTING = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nconst getTextFeature = (text2, color) => {\n  const canvas = document.createElement(\"canvas\");\n  canvas.width = canvas.height = 1;\n  const ctx = canvas.getContext(\"2d\");\n  ctx.textBaseline = \"top\";\n  ctx.font = `100px ${FONT_FAMILY}`;\n  ctx.fillStyle = color;\n  ctx.scale(0.01, 0.01);\n  ctx.fillText(text2, 0, 0);\n  return ctx.getImageData(0, 0, 1, 1).data;\n};\nconst compareFeatures = (feature1, feature2) => {\n  const feature1Str = [...feature1].join(\",\");\n  const feature2Str = [...feature2].join(\",\");\n  return feature1Str === feature2Str && !feature1Str.startsWith(\"0,0,0,\");\n};\nfunction testColorEmojiSupported(text2) {\n  const feature1 = getTextFeature(text2, \"#000\");\n  const feature2 = getTextFeature(text2, \"#fff\");\n  return feature1 && feature2 && compareFeatures(feature1, feature2);\n}\nfunction determineEmojiSupportLevel() {\n  const entries = Object.entries(versionsAndTestEmoji);\n  try {\n    for (const [emoji, version2] of entries) {\n      if (testColorEmojiSupported(emoji)) {\n        return version2;\n      }\n    }\n  } catch (e) {\n  } finally {\n  }\n  return entries[0][1];\n}\nconst emojiSupportLevelPromise = new Promise((resolve2) => rIC(() => resolve2(determineEmojiSupportLevel())));\nconst supportedZwjEmojis = /* @__PURE__ */ new Map();\nconst VARIATION_SELECTOR = \"\\uFE0F\";\nconst SKINTONE_MODIFIER = \"\\uD83C\";\nconst ZWJ = \"\\u200D\";\nconst LIGHT_SKIN_TONE = 127995;\nconst LIGHT_SKIN_TONE_MODIFIER = 57339;\nfunction applySkinTone(str, skinTone) {\n  if (skinTone === 0) {\n    return str;\n  }\n  const zwjIndex = str.indexOf(ZWJ);\n  if (zwjIndex !== -1) {\n    return str.substring(0, zwjIndex) + String.fromCodePoint(LIGHT_SKIN_TONE + skinTone - 1) + str.substring(zwjIndex);\n  }\n  if (str.endsWith(VARIATION_SELECTOR)) {\n    str = str.substring(0, str.length - 1);\n  }\n  return str + SKINTONE_MODIFIER + String.fromCodePoint(LIGHT_SKIN_TONE_MODIFIER + skinTone - 1);\n}\nfunction halt(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction incrementOrDecrement(decrement, val, arr) {\n  val += decrement ? -1 : 1;\n  if (val < 0) {\n    val = arr.length - 1;\n  } else if (val >= arr.length) {\n    val = 0;\n  }\n  return val;\n}\nfunction uniqBy(arr, func) {\n  const set2 = /* @__PURE__ */ new Set();\n  const res = [];\n  for (const item of arr) {\n    const key = func(item);\n    if (!set2.has(key)) {\n      set2.add(key);\n      res.push(item);\n    }\n  }\n  return res;\n}\nfunction summarizeEmojisForUI(emojis, emojiSupportLevel) {\n  const toSimpleSkinsMap = (skins) => {\n    const res = {};\n    for (const skin of skins) {\n      if (typeof skin.tone === \"number\" && skin.version <= emojiSupportLevel) {\n        res[skin.tone] = skin.unicode;\n      }\n    }\n    return res;\n  };\n  return emojis.map(({ unicode, skins, shortcodes, url, name, category }) => ({\n    unicode,\n    name,\n    shortcodes,\n    url,\n    category,\n    id: unicode || name,\n    skins: skins && toSimpleSkinsMap(skins),\n    title: (shortcodes || []).join(\", \")\n  }));\n}\nconst rAF = requestAnimationFrame;\nlet resizeObserverSupported = typeof ResizeObserver === \"function\";\nfunction calculateWidth(node, onUpdate) {\n  let resizeObserver;\n  if (resizeObserverSupported) {\n    resizeObserver = new ResizeObserver((entries) => onUpdate(entries[0].contentRect.width));\n    resizeObserver.observe(node);\n  } else {\n    rAF(() => onUpdate(node.getBoundingClientRect().width));\n  }\n  return {\n    destroy() {\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    }\n  };\n}\nfunction calculateTextWidth(node) {\n  {\n    const range = document.createRange();\n    range.selectNode(node.firstChild);\n    return range.getBoundingClientRect().width;\n  }\n}\nlet baselineEmojiWidth;\nfunction checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode) {\n  for (const emoji of zwjEmojisToCheck) {\n    const domNode = emojiToDomNode(emoji);\n    const emojiWidth = calculateTextWidth(domNode);\n    if (typeof baselineEmojiWidth === \"undefined\") {\n      baselineEmojiWidth = calculateTextWidth(baselineEmoji);\n    }\n    const supported = emojiWidth / 1.8 < baselineEmojiWidth;\n    supportedZwjEmojis.set(emoji.unicode, supported);\n  }\n}\nfunction uniq(arr) {\n  return uniqBy(arr, (_) => _);\n}\nconst { Map: Map_1 } = globals;\nfunction get_each_context(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[63] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction get_each_context_1(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[66] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction get_each_context_2(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[63] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction get_each_context_3(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[69] = list2[i];\n  return child_ctx;\n}\nfunction get_each_context_4(ctx, list2, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[72] = list2[i];\n  child_ctx[65] = i;\n  return child_ctx;\n}\nfunction create_each_block_4(key_1, ctx) {\n  let div;\n  let t_value = ctx[72] + \"\";\n  let t;\n  let div_id_value;\n  let div_class_value;\n  let div_aria_selected_value;\n  let div_title_value;\n  let div_aria_label_value;\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      div = element(\"div\");\n      t = text(t_value);\n      attr(div, \"id\", div_id_value = \"skintone-\" + ctx[65]);\n      attr(div, \"class\", div_class_value = \"emoji hide-focus \" + (ctx[65] === ctx[20] ? \"active\" : \"\"));\n      attr(div, \"aria-selected\", div_aria_selected_value = ctx[65] === ctx[20]);\n      attr(div, \"role\", \"option\");\n      attr(div, \"title\", div_title_value = ctx[0].skinTones[ctx[65]]);\n      attr(div, \"tabindex\", \"-1\");\n      attr(div, \"aria-label\", div_aria_label_value = ctx[0].skinTones[ctx[65]]);\n      this.first = div;\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      append(div, t);\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty[0] & 512 && t_value !== (t_value = ctx[72] + \"\"))\n        set_data(t, t_value);\n      if (dirty[0] & 512 && div_id_value !== (div_id_value = \"skintone-\" + ctx[65])) {\n        attr(div, \"id\", div_id_value);\n      }\n      if (dirty[0] & 1049088 && div_class_value !== (div_class_value = \"emoji hide-focus \" + (ctx[65] === ctx[20] ? \"active\" : \"\"))) {\n        attr(div, \"class\", div_class_value);\n      }\n      if (dirty[0] & 1049088 && div_aria_selected_value !== (div_aria_selected_value = ctx[65] === ctx[20])) {\n        attr(div, \"aria-selected\", div_aria_selected_value);\n      }\n      if (dirty[0] & 513 && div_title_value !== (div_title_value = ctx[0].skinTones[ctx[65]])) {\n        attr(div, \"title\", div_title_value);\n      }\n      if (dirty[0] & 513 && div_aria_label_value !== (div_aria_label_value = ctx[0].skinTones[ctx[65]])) {\n        attr(div, \"aria-label\", div_aria_label_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div);\n    }\n  };\n}\nfunction create_each_block_3(key_1, ctx) {\n  let button;\n  let div;\n  let t_value = ctx[69].emoji + \"\";\n  let t;\n  let button_aria_controls_value;\n  let button_aria_label_value;\n  let button_aria_selected_value;\n  let button_title_value;\n  let mounted;\n  let dispose;\n  function click_handler() {\n    return ctx[49](ctx[69]);\n  }\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      button = element(\"button\");\n      div = element(\"div\");\n      t = text(t_value);\n      attr(div, \"class\", \"nav-emoji emoji\");\n      attr(button, \"role\", \"tab\");\n      attr(button, \"class\", \"nav-button\");\n      attr(button, \"aria-controls\", button_aria_controls_value = \"tab-\" + ctx[69].id);\n      attr(button, \"aria-label\", button_aria_label_value = ctx[0].categories[ctx[69].name]);\n      attr(button, \"aria-selected\", button_aria_selected_value = !ctx[4] && ctx[13].id === ctx[69].id);\n      attr(button, \"title\", button_title_value = ctx[0].categories[ctx[69].name]);\n      this.first = button;\n    },\n    m(target, anchor) {\n      insert(target, button, anchor);\n      append(button, div);\n      append(div, t);\n      if (!mounted) {\n        dispose = listen(button, \"click\", click_handler);\n        mounted = true;\n      }\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty[0] & 4096 && t_value !== (t_value = ctx[69].emoji + \"\"))\n        set_data(t, t_value);\n      if (dirty[0] & 4096 && button_aria_controls_value !== (button_aria_controls_value = \"tab-\" + ctx[69].id)) {\n        attr(button, \"aria-controls\", button_aria_controls_value);\n      }\n      if (dirty[0] & 4097 && button_aria_label_value !== (button_aria_label_value = ctx[0].categories[ctx[69].name])) {\n        attr(button, \"aria-label\", button_aria_label_value);\n      }\n      if (dirty[0] & 12304 && button_aria_selected_value !== (button_aria_selected_value = !ctx[4] && ctx[13].id === ctx[69].id)) {\n        attr(button, \"aria-selected\", button_aria_selected_value);\n      }\n      if (dirty[0] & 4097 && button_title_value !== (button_title_value = ctx[0].categories[ctx[69].name])) {\n        attr(button, \"title\", button_title_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(button);\n      mounted = false;\n      dispose();\n    }\n  };\n}\nfunction create_else_block_1(ctx) {\n  let img;\n  let img_src_value;\n  return {\n    c() {\n      img = element(\"img\");\n      attr(img, \"class\", \"custom-emoji\");\n      if (!src_url_equal(img.src, img_src_value = ctx[63].url))\n        attr(img, \"src\", img_src_value);\n      attr(img, \"alt\", \"\");\n      attr(img, \"loading\", \"lazy\");\n    },\n    m(target, anchor) {\n      insert(target, img, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 32768 && !src_url_equal(img.src, img_src_value = ctx2[63].url)) {\n        attr(img, \"src\", img_src_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(img);\n    }\n  };\n}\nfunction create_if_block_1(ctx) {\n  let t_value = ctx[27](ctx[63], ctx[8]) + \"\";\n  let t;\n  return {\n    c() {\n      t = text(t_value);\n    },\n    m(target, anchor) {\n      insert(target, t, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 33024 && t_value !== (t_value = ctx2[27](ctx2[63], ctx2[8]) + \"\"))\n        set_data(t, t_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(t);\n    }\n  };\n}\nfunction create_each_block_2(key_1, ctx) {\n  let button;\n  let button_role_value;\n  let button_aria_selected_value;\n  let button_aria_label_value;\n  let button_title_value;\n  let button_class_value;\n  let button_id_value;\n  function select_block_type(ctx2, dirty) {\n    if (ctx2[63].unicode)\n      return create_if_block_1;\n    return create_else_block_1;\n  }\n  let current_block_type = select_block_type(ctx);\n  let if_block = current_block_type(ctx);\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      button = element(\"button\");\n      if_block.c();\n      attr(button, \"role\", button_role_value = ctx[4] ? \"option\" : \"menuitem\");\n      attr(button, \"aria-selected\", button_aria_selected_value = ctx[4] ? ctx[65] == ctx[5] : \"\");\n      attr(button, \"aria-label\", button_aria_label_value = ctx[28](ctx[63], ctx[8]));\n      attr(button, \"title\", button_title_value = ctx[63].title);\n      attr(button, \"class\", button_class_value = \"emoji \" + (ctx[4] && ctx[65] === ctx[5] ? \"active\" : \"\"));\n      attr(button, \"id\", button_id_value = \"emo-\" + ctx[63].id);\n      this.first = button;\n    },\n    m(target, anchor) {\n      insert(target, button, anchor);\n      if_block.m(button, null);\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {\n        if_block.p(ctx, dirty);\n      } else {\n        if_block.d(1);\n        if_block = current_block_type(ctx);\n        if (if_block) {\n          if_block.c();\n          if_block.m(button, null);\n        }\n      }\n      if (dirty[0] & 16 && button_role_value !== (button_role_value = ctx[4] ? \"option\" : \"menuitem\")) {\n        attr(button, \"role\", button_role_value);\n      }\n      if (dirty[0] & 32816 && button_aria_selected_value !== (button_aria_selected_value = ctx[4] ? ctx[65] == ctx[5] : \"\")) {\n        attr(button, \"aria-selected\", button_aria_selected_value);\n      }\n      if (dirty[0] & 33024 && button_aria_label_value !== (button_aria_label_value = ctx[28](ctx[63], ctx[8]))) {\n        attr(button, \"aria-label\", button_aria_label_value);\n      }\n      if (dirty[0] & 32768 && button_title_value !== (button_title_value = ctx[63].title)) {\n        attr(button, \"title\", button_title_value);\n      }\n      if (dirty[0] & 32816 && button_class_value !== (button_class_value = \"emoji \" + (ctx[4] && ctx[65] === ctx[5] ? \"active\" : \"\"))) {\n        attr(button, \"class\", button_class_value);\n      }\n      if (dirty[0] & 32768 && button_id_value !== (button_id_value = \"emo-\" + ctx[63].id)) {\n        attr(button, \"id\", button_id_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(button);\n      if_block.d();\n    }\n  };\n}\nfunction create_each_block_1(key_1, ctx) {\n  let div0;\n  let t_value = (ctx[4] ? ctx[0].searchResultsLabel : ctx[66].category ? ctx[66].category : ctx[15].length > 1 ? ctx[0].categories.custom : ctx[0].categories[ctx[13].name]) + \"\";\n  let t;\n  let div0_id_value;\n  let div0_class_value;\n  let div1;\n  let each_blocks = [];\n  let each_1_lookup = new Map_1();\n  let div1_role_value;\n  let div1_aria_labelledby_value;\n  let div1_id_value;\n  let each_value_2 = ctx[66].emojis;\n  const get_key = (ctx2) => ctx2[63].id;\n  for (let i = 0; i < each_value_2.length; i += 1) {\n    let child_ctx = get_each_context_2(ctx, each_value_2, i);\n    let key = get_key(child_ctx);\n    each_1_lookup.set(key, each_blocks[i] = create_each_block_2(key, child_ctx));\n  }\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      div0 = element(\"div\");\n      t = text(t_value);\n      div1 = element(\"div\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      attr(div0, \"id\", div0_id_value = \"menu-label-\" + ctx[65]);\n      attr(div0, \"class\", div0_class_value = \"category \" + (ctx[15].length === 1 && ctx[15][0].category === \"\" ? \"gone\" : \"\"));\n      attr(div0, \"aria-hidden\", \"true\");\n      attr(div1, \"class\", \"emoji-menu\");\n      attr(div1, \"role\", div1_role_value = ctx[4] ? \"listbox\" : \"menu\");\n      attr(div1, \"aria-labelledby\", div1_aria_labelledby_value = \"menu-label-\" + ctx[65]);\n      attr(div1, \"id\", div1_id_value = ctx[4] ? \"search-results\" : \"\");\n      this.first = div0;\n    },\n    m(target, anchor) {\n      insert(target, div0, anchor);\n      append(div0, t);\n      insert(target, div1, anchor);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].m(div1, null);\n      }\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty[0] & 40977 && t_value !== (t_value = (ctx[4] ? ctx[0].searchResultsLabel : ctx[66].category ? ctx[66].category : ctx[15].length > 1 ? ctx[0].categories.custom : ctx[0].categories[ctx[13].name]) + \"\"))\n        set_data(t, t_value);\n      if (dirty[0] & 32768 && div0_id_value !== (div0_id_value = \"menu-label-\" + ctx[65])) {\n        attr(div0, \"id\", div0_id_value);\n      }\n      if (dirty[0] & 32768 && div0_class_value !== (div0_class_value = \"category \" + (ctx[15].length === 1 && ctx[15][0].category === \"\" ? \"gone\" : \"\"))) {\n        attr(div0, \"class\", div0_class_value);\n      }\n      if (dirty[0] & 402686256) {\n        each_value_2 = ctx[66].emojis;\n        each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_2, each_1_lookup, div1, destroy_block, create_each_block_2, null, get_each_context_2);\n      }\n      if (dirty[0] & 16 && div1_role_value !== (div1_role_value = ctx[4] ? \"listbox\" : \"menu\")) {\n        attr(div1, \"role\", div1_role_value);\n      }\n      if (dirty[0] & 32768 && div1_aria_labelledby_value !== (div1_aria_labelledby_value = \"menu-label-\" + ctx[65])) {\n        attr(div1, \"aria-labelledby\", div1_aria_labelledby_value);\n      }\n      if (dirty[0] & 16 && div1_id_value !== (div1_id_value = ctx[4] ? \"search-results\" : \"\")) {\n        attr(div1, \"id\", div1_id_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div0);\n      if (detaching)\n        detach(div1);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].d();\n      }\n    }\n  };\n}\nfunction create_else_block(ctx) {\n  let img;\n  let img_src_value;\n  return {\n    c() {\n      img = element(\"img\");\n      attr(img, \"class\", \"custom-emoji\");\n      if (!src_url_equal(img.src, img_src_value = ctx[63].url))\n        attr(img, \"src\", img_src_value);\n      attr(img, \"alt\", \"\");\n      attr(img, \"loading\", \"lazy\");\n    },\n    m(target, anchor) {\n      insert(target, img, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 1024 && !src_url_equal(img.src, img_src_value = ctx2[63].url)) {\n        attr(img, \"src\", img_src_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(img);\n    }\n  };\n}\nfunction create_if_block(ctx) {\n  let t_value = ctx[27](ctx[63], ctx[8]) + \"\";\n  let t;\n  return {\n    c() {\n      t = text(t_value);\n    },\n    m(target, anchor) {\n      insert(target, t, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 1280 && t_value !== (t_value = ctx2[27](ctx2[63], ctx2[8]) + \"\"))\n        set_data(t, t_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(t);\n    }\n  };\n}\nfunction create_each_block(key_1, ctx) {\n  let button;\n  let button_aria_label_value;\n  let button_title_value;\n  let button_id_value;\n  function select_block_type_1(ctx2, dirty) {\n    if (ctx2[63].unicode)\n      return create_if_block;\n    return create_else_block;\n  }\n  let current_block_type = select_block_type_1(ctx);\n  let if_block = current_block_type(ctx);\n  return {\n    key: key_1,\n    first: null,\n    c() {\n      button = element(\"button\");\n      if_block.c();\n      attr(button, \"role\", \"menuitem\");\n      attr(button, \"aria-label\", button_aria_label_value = ctx[28](ctx[63], ctx[8]));\n      attr(button, \"title\", button_title_value = ctx[63].title);\n      attr(button, \"class\", \"emoji\");\n      attr(button, \"id\", button_id_value = \"fav-\" + ctx[63].id);\n      this.first = button;\n    },\n    m(target, anchor) {\n      insert(target, button, anchor);\n      if_block.m(button, null);\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block) {\n        if_block.p(ctx, dirty);\n      } else {\n        if_block.d(1);\n        if_block = current_block_type(ctx);\n        if (if_block) {\n          if_block.c();\n          if_block.m(button, null);\n        }\n      }\n      if (dirty[0] & 1280 && button_aria_label_value !== (button_aria_label_value = ctx[28](ctx[63], ctx[8]))) {\n        attr(button, \"aria-label\", button_aria_label_value);\n      }\n      if (dirty[0] & 1024 && button_title_value !== (button_title_value = ctx[63].title)) {\n        attr(button, \"title\", button_title_value);\n      }\n      if (dirty[0] & 1024 && button_id_value !== (button_id_value = \"fav-\" + ctx[63].id)) {\n        attr(button, \"id\", button_id_value);\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(button);\n      if_block.d();\n    }\n  };\n}\nfunction create_fragment(ctx) {\n  let section;\n  let div0;\n  let div4;\n  let div1;\n  let input;\n  let input_placeholder_value;\n  let input_aria_expanded_value;\n  let input_aria_activedescendant_value;\n  let label;\n  let t0_value = ctx[0].searchLabel + \"\";\n  let t0;\n  let span0;\n  let t1_value = ctx[0].searchDescription + \"\";\n  let t1;\n  let div2;\n  let button0;\n  let t2;\n  let button0_class_value;\n  let div2_class_value;\n  let span1;\n  let t3_value = ctx[0].skinToneDescription + \"\";\n  let t3;\n  let div3;\n  let each_blocks_3 = [];\n  let each0_lookup = new Map_1();\n  let div3_class_value;\n  let div3_aria_label_value;\n  let div3_aria_activedescendant_value;\n  let div3_aria_hidden_value;\n  let div5;\n  let each_blocks_2 = [];\n  let each1_lookup = new Map_1();\n  let div5_aria_label_value;\n  let div7;\n  let div6;\n  let div8;\n  let t4;\n  let div8_class_value;\n  let div10;\n  let div9;\n  let each_blocks_1 = [];\n  let each2_lookup = new Map_1();\n  let div10_class_value;\n  let div10_role_value;\n  let div10_aria_label_value;\n  let div10_id_value;\n  let div11;\n  let each_blocks = [];\n  let each3_lookup = new Map_1();\n  let div11_class_value;\n  let div11_aria_label_value;\n  let button1;\n  let section_aria_label_value;\n  let mounted;\n  let dispose;\n  let each_value_4 = ctx[9];\n  const get_key = (ctx2) => ctx2[72];\n  for (let i = 0; i < each_value_4.length; i += 1) {\n    let child_ctx = get_each_context_4(ctx, each_value_4, i);\n    let key = get_key(child_ctx);\n    each0_lookup.set(key, each_blocks_3[i] = create_each_block_4(key, child_ctx));\n  }\n  let each_value_3 = ctx[12];\n  const get_key_1 = (ctx2) => ctx2[69].id;\n  for (let i = 0; i < each_value_3.length; i += 1) {\n    let child_ctx = get_each_context_3(ctx, each_value_3, i);\n    let key = get_key_1(child_ctx);\n    each1_lookup.set(key, each_blocks_2[i] = create_each_block_3(key, child_ctx));\n  }\n  let each_value_1 = ctx[15];\n  const get_key_2 = (ctx2) => ctx2[66].category;\n  for (let i = 0; i < each_value_1.length; i += 1) {\n    let child_ctx = get_each_context_1(ctx, each_value_1, i);\n    let key = get_key_2(child_ctx);\n    each2_lookup.set(key, each_blocks_1[i] = create_each_block_1(key, child_ctx));\n  }\n  let each_value = ctx[10];\n  const get_key_3 = (ctx2) => ctx2[63].id;\n  for (let i = 0; i < each_value.length; i += 1) {\n    let child_ctx = get_each_context(ctx, each_value, i);\n    let key = get_key_3(child_ctx);\n    each3_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));\n  }\n  return {\n    c() {\n      section = element(\"section\");\n      div0 = element(\"div\");\n      div4 = element(\"div\");\n      div1 = element(\"div\");\n      input = element(\"input\");\n      label = element(\"label\");\n      t0 = text(t0_value);\n      span0 = element(\"span\");\n      t1 = text(t1_value);\n      div2 = element(\"div\");\n      button0 = element(\"button\");\n      t2 = text(ctx[21]);\n      span1 = element(\"span\");\n      t3 = text(t3_value);\n      div3 = element(\"div\");\n      for (let i = 0; i < each_blocks_3.length; i += 1) {\n        each_blocks_3[i].c();\n      }\n      div5 = element(\"div\");\n      for (let i = 0; i < each_blocks_2.length; i += 1) {\n        each_blocks_2[i].c();\n      }\n      div7 = element(\"div\");\n      div6 = element(\"div\");\n      div8 = element(\"div\");\n      t4 = text(ctx[18]);\n      div10 = element(\"div\");\n      div9 = element(\"div\");\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].c();\n      }\n      div11 = element(\"div\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      button1 = element(\"button\");\n      button1.textContent = \"\\u{1F600}\";\n      attr(div0, \"class\", \"pad-top\");\n      attr(input, \"id\", \"search\");\n      attr(input, \"class\", \"search\");\n      attr(input, \"type\", \"search\");\n      attr(input, \"role\", \"combobox\");\n      attr(input, \"enterkeyhint\", \"search\");\n      attr(input, \"placeholder\", input_placeholder_value = ctx[0].searchLabel);\n      attr(input, \"autocapitalize\", \"none\");\n      attr(input, \"autocomplete\", \"off\");\n      attr(input, \"spellcheck\", \"true\");\n      attr(input, \"aria-expanded\", input_aria_expanded_value = !!(ctx[4] && ctx[1].length));\n      attr(input, \"aria-controls\", \"search-results\");\n      attr(input, \"aria-describedby\", \"search-description\");\n      attr(input, \"aria-autocomplete\", \"list\");\n      attr(input, \"aria-activedescendant\", input_aria_activedescendant_value = ctx[26] ? `emo-${ctx[26]}` : \"\");\n      attr(label, \"class\", \"sr-only\");\n      attr(label, \"for\", \"search\");\n      attr(span0, \"id\", \"search-description\");\n      attr(span0, \"class\", \"sr-only\");\n      attr(div1, \"class\", \"search-wrapper\");\n      attr(button0, \"id\", \"skintone-button\");\n      attr(button0, \"class\", button0_class_value = \"emoji \" + (ctx[6] ? \"hide-focus\" : \"\"));\n      attr(button0, \"aria-label\", ctx[23]);\n      attr(button0, \"title\", ctx[23]);\n      attr(button0, \"aria-describedby\", \"skintone-description\");\n      attr(button0, \"aria-haspopup\", \"listbox\");\n      attr(button0, \"aria-expanded\", ctx[6]);\n      attr(button0, \"aria-controls\", \"skintone-list\");\n      attr(div2, \"class\", div2_class_value = \"skintone-button-wrapper \" + (ctx[19] ? \"expanded\" : \"\"));\n      attr(span1, \"id\", \"skintone-description\");\n      attr(span1, \"class\", \"sr-only\");\n      attr(div3, \"id\", \"skintone-list\");\n      attr(div3, \"class\", div3_class_value = \"skintone-list \" + (ctx[6] ? \"\" : \"hidden no-animate\"));\n      set_style(div3, \"transform\", \"translateY(\" + (ctx[6] ? 0 : \"calc(-1 * var(--num-skintones) * var(--total-emoji-size))\") + \")\");\n      attr(div3, \"role\", \"listbox\");\n      attr(div3, \"aria-label\", div3_aria_label_value = ctx[0].skinTonesLabel);\n      attr(div3, \"aria-activedescendant\", div3_aria_activedescendant_value = \"skintone-\" + ctx[20]);\n      attr(div3, \"aria-hidden\", div3_aria_hidden_value = !ctx[6]);\n      attr(div4, \"class\", \"search-row\");\n      attr(div5, \"class\", \"nav\");\n      attr(div5, \"role\", \"tablist\");\n      set_style(div5, \"grid-template-columns\", \"repeat(\" + ctx[12].length + \", 1fr)\");\n      attr(div5, \"aria-label\", div5_aria_label_value = ctx[0].categoriesLabel);\n      attr(div6, \"class\", \"indicator\");\n      set_style(div6, \"transform\", \"translateX(\" + (ctx[24] ? -1 : 1) * ctx[11] * 100 + \"%)\");\n      attr(div7, \"class\", \"indicator-wrapper\");\n      attr(div8, \"class\", div8_class_value = \"message \" + (ctx[18] ? \"\" : \"gone\"));\n      attr(div8, \"role\", \"alert\");\n      attr(div8, \"aria-live\", \"polite\");\n      attr(div10, \"class\", div10_class_value = \"tabpanel \" + (!ctx[14] || ctx[18] ? \"gone\" : \"\"));\n      attr(div10, \"role\", div10_role_value = ctx[4] ? \"region\" : \"tabpanel\");\n      attr(div10, \"aria-label\", div10_aria_label_value = ctx[4] ? ctx[0].searchResultsLabel : ctx[0].categories[ctx[13].name]);\n      attr(div10, \"id\", div10_id_value = ctx[4] ? \"\" : `tab-${ctx[13].id}`);\n      attr(div10, \"tabindex\", \"0\");\n      attr(div11, \"class\", div11_class_value = \"favorites emoji-menu \" + (ctx[18] ? \"gone\" : \"\"));\n      attr(div11, \"role\", \"menu\");\n      attr(div11, \"aria-label\", div11_aria_label_value = ctx[0].favoritesLabel);\n      set_style(div11, \"padding-inline-end\", ctx[25] + \"px\");\n      attr(button1, \"aria-hidden\", \"true\");\n      attr(button1, \"tabindex\", \"-1\");\n      attr(button1, \"class\", \"abs-pos hidden emoji\");\n      attr(section, \"class\", \"picker\");\n      attr(section, \"aria-label\", section_aria_label_value = ctx[0].regionLabel);\n      attr(section, \"style\", ctx[22]);\n    },\n    m(target, anchor) {\n      insert(target, section, anchor);\n      append(section, div0);\n      append(section, div4);\n      append(div4, div1);\n      append(div1, input);\n      set_input_value(input, ctx[2]);\n      append(div1, label);\n      append(label, t0);\n      append(div1, span0);\n      append(span0, t1);\n      append(div4, div2);\n      append(div2, button0);\n      append(button0, t2);\n      append(div4, span1);\n      append(span1, t3);\n      append(div4, div3);\n      for (let i = 0; i < each_blocks_3.length; i += 1) {\n        each_blocks_3[i].m(div3, null);\n      }\n      ctx[48](div3);\n      append(section, div5);\n      for (let i = 0; i < each_blocks_2.length; i += 1) {\n        each_blocks_2[i].m(div5, null);\n      }\n      append(section, div7);\n      append(div7, div6);\n      append(section, div8);\n      append(div8, t4);\n      append(section, div10);\n      append(div10, div9);\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].m(div9, null);\n      }\n      ctx[50](div10);\n      append(section, div11);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].m(div11, null);\n      }\n      append(section, button1);\n      ctx[51](button1);\n      ctx[52](section);\n      if (!mounted) {\n        dispose = [\n          listen(input, \"input\", ctx[47]),\n          listen(input, \"keydown\", ctx[30]),\n          listen(button0, \"click\", ctx[35]),\n          listen(div3, \"focusout\", ctx[38]),\n          listen(div3, \"click\", ctx[34]),\n          listen(div3, \"keydown\", ctx[36]),\n          listen(div3, \"keyup\", ctx[37]),\n          listen(div5, \"keydown\", ctx[32]),\n          action_destroyer(ctx[29].call(null, div9)),\n          listen(div10, \"click\", ctx[33]),\n          listen(div11, \"click\", ctx[33])\n        ];\n        mounted = true;\n      }\n    },\n    p(ctx2, dirty) {\n      if (dirty[0] & 1 && input_placeholder_value !== (input_placeholder_value = ctx2[0].searchLabel)) {\n        attr(input, \"placeholder\", input_placeholder_value);\n      }\n      if (dirty[0] & 18 && input_aria_expanded_value !== (input_aria_expanded_value = !!(ctx2[4] && ctx2[1].length))) {\n        attr(input, \"aria-expanded\", input_aria_expanded_value);\n      }\n      if (dirty[0] & 67108864 && input_aria_activedescendant_value !== (input_aria_activedescendant_value = ctx2[26] ? `emo-${ctx2[26]}` : \"\")) {\n        attr(input, \"aria-activedescendant\", input_aria_activedescendant_value);\n      }\n      if (dirty[0] & 4) {\n        set_input_value(input, ctx2[2]);\n      }\n      if (dirty[0] & 1 && t0_value !== (t0_value = ctx2[0].searchLabel + \"\"))\n        set_data(t0, t0_value);\n      if (dirty[0] & 1 && t1_value !== (t1_value = ctx2[0].searchDescription + \"\"))\n        set_data(t1, t1_value);\n      if (dirty[0] & 2097152)\n        set_data(t2, ctx2[21]);\n      if (dirty[0] & 64 && button0_class_value !== (button0_class_value = \"emoji \" + (ctx2[6] ? \"hide-focus\" : \"\"))) {\n        attr(button0, \"class\", button0_class_value);\n      }\n      if (dirty[0] & 8388608) {\n        attr(button0, \"aria-label\", ctx2[23]);\n      }\n      if (dirty[0] & 8388608) {\n        attr(button0, \"title\", ctx2[23]);\n      }\n      if (dirty[0] & 64) {\n        attr(button0, \"aria-expanded\", ctx2[6]);\n      }\n      if (dirty[0] & 524288 && div2_class_value !== (div2_class_value = \"skintone-button-wrapper \" + (ctx2[19] ? \"expanded\" : \"\"))) {\n        attr(div2, \"class\", div2_class_value);\n      }\n      if (dirty[0] & 1 && t3_value !== (t3_value = ctx2[0].skinToneDescription + \"\"))\n        set_data(t3, t3_value);\n      if (dirty[0] & 1049089) {\n        each_value_4 = ctx2[9];\n        each_blocks_3 = update_keyed_each(each_blocks_3, dirty, get_key, 1, ctx2, each_value_4, each0_lookup, div3, destroy_block, create_each_block_4, null, get_each_context_4);\n      }\n      if (dirty[0] & 64 && div3_class_value !== (div3_class_value = \"skintone-list \" + (ctx2[6] ? \"\" : \"hidden no-animate\"))) {\n        attr(div3, \"class\", div3_class_value);\n      }\n      if (dirty[0] & 64) {\n        set_style(div3, \"transform\", \"translateY(\" + (ctx2[6] ? 0 : \"calc(-1 * var(--num-skintones) * var(--total-emoji-size))\") + \")\");\n      }\n      if (dirty[0] & 1 && div3_aria_label_value !== (div3_aria_label_value = ctx2[0].skinTonesLabel)) {\n        attr(div3, \"aria-label\", div3_aria_label_value);\n      }\n      if (dirty[0] & 1048576 && div3_aria_activedescendant_value !== (div3_aria_activedescendant_value = \"skintone-\" + ctx2[20])) {\n        attr(div3, \"aria-activedescendant\", div3_aria_activedescendant_value);\n      }\n      if (dirty[0] & 64 && div3_aria_hidden_value !== (div3_aria_hidden_value = !ctx2[6])) {\n        attr(div3, \"aria-hidden\", div3_aria_hidden_value);\n      }\n      if (dirty[0] & 12305 | dirty[1] & 1) {\n        each_value_3 = ctx2[12];\n        each_blocks_2 = update_keyed_each(each_blocks_2, dirty, get_key_1, 1, ctx2, each_value_3, each1_lookup, div5, destroy_block, create_each_block_3, null, get_each_context_3);\n      }\n      if (dirty[0] & 4096) {\n        set_style(div5, \"grid-template-columns\", \"repeat(\" + ctx2[12].length + \", 1fr)\");\n      }\n      if (dirty[0] & 1 && div5_aria_label_value !== (div5_aria_label_value = ctx2[0].categoriesLabel)) {\n        attr(div5, \"aria-label\", div5_aria_label_value);\n      }\n      if (dirty[0] & 16779264) {\n        set_style(div6, \"transform\", \"translateX(\" + (ctx2[24] ? -1 : 1) * ctx2[11] * 100 + \"%)\");\n      }\n      if (dirty[0] & 262144)\n        set_data(t4, ctx2[18]);\n      if (dirty[0] & 262144 && div8_class_value !== (div8_class_value = \"message \" + (ctx2[18] ? \"\" : \"gone\"))) {\n        attr(div8, \"class\", div8_class_value);\n      }\n      if (dirty[0] & 402694449) {\n        each_value_1 = ctx2[15];\n        each_blocks_1 = update_keyed_each(each_blocks_1, dirty, get_key_2, 1, ctx2, each_value_1, each2_lookup, div9, destroy_block, create_each_block_1, null, get_each_context_1);\n      }\n      if (dirty[0] & 278528 && div10_class_value !== (div10_class_value = \"tabpanel \" + (!ctx2[14] || ctx2[18] ? \"gone\" : \"\"))) {\n        attr(div10, \"class\", div10_class_value);\n      }\n      if (dirty[0] & 16 && div10_role_value !== (div10_role_value = ctx2[4] ? \"region\" : \"tabpanel\")) {\n        attr(div10, \"role\", div10_role_value);\n      }\n      if (dirty[0] & 8209 && div10_aria_label_value !== (div10_aria_label_value = ctx2[4] ? ctx2[0].searchResultsLabel : ctx2[0].categories[ctx2[13].name])) {\n        attr(div10, \"aria-label\", div10_aria_label_value);\n      }\n      if (dirty[0] & 8208 && div10_id_value !== (div10_id_value = ctx2[4] ? \"\" : `tab-${ctx2[13].id}`)) {\n        attr(div10, \"id\", div10_id_value);\n      }\n      if (dirty[0] & 402654464) {\n        each_value = ctx2[10];\n        each_blocks = update_keyed_each(each_blocks, dirty, get_key_3, 1, ctx2, each_value, each3_lookup, div11, destroy_block, create_each_block, null, get_each_context);\n      }\n      if (dirty[0] & 262144 && div11_class_value !== (div11_class_value = \"favorites emoji-menu \" + (ctx2[18] ? \"gone\" : \"\"))) {\n        attr(div11, \"class\", div11_class_value);\n      }\n      if (dirty[0] & 1 && div11_aria_label_value !== (div11_aria_label_value = ctx2[0].favoritesLabel)) {\n        attr(div11, \"aria-label\", div11_aria_label_value);\n      }\n      if (dirty[0] & 33554432) {\n        set_style(div11, \"padding-inline-end\", ctx2[25] + \"px\");\n      }\n      if (dirty[0] & 1 && section_aria_label_value !== (section_aria_label_value = ctx2[0].regionLabel)) {\n        attr(section, \"aria-label\", section_aria_label_value);\n      }\n      if (dirty[0] & 4194304) {\n        attr(section, \"style\", ctx2[22]);\n      }\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(section);\n      for (let i = 0; i < each_blocks_3.length; i += 1) {\n        each_blocks_3[i].d();\n      }\n      ctx[48](null);\n      for (let i = 0; i < each_blocks_2.length; i += 1) {\n        each_blocks_2[i].d();\n      }\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].d();\n      }\n      ctx[50](null);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].d();\n      }\n      ctx[51](null);\n      ctx[52](null);\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nfunction instance($$self, $$props, $$invalidate) {\n  let { skinToneEmoji } = $$props;\n  let { i18n } = $$props;\n  let { database } = $$props;\n  let { customEmoji } = $$props;\n  let { customCategorySorting } = $$props;\n  let initialLoad = true;\n  let currentEmojis = [];\n  let currentEmojisWithCategories = [];\n  let rawSearchText = \"\";\n  let searchText = \"\";\n  let rootElement;\n  let baselineEmoji;\n  let tabpanelElement;\n  let searchMode = false;\n  let activeSearchItem = -1;\n  let message;\n  let skinTonePickerExpanded = false;\n  let skinTonePickerExpandedAfterAnimation = false;\n  let skinToneDropdown;\n  let currentSkinTone = 0;\n  let activeSkinTone = 0;\n  let skinToneButtonText;\n  let pickerStyle;\n  let skinToneButtonLabel = \"\";\n  let skinTones = [];\n  let currentFavorites = [];\n  let defaultFavoriteEmojis;\n  let numColumns = DEFAULT_NUM_COLUMNS;\n  let isRtl = false;\n  let scrollbarWidth = 0;\n  let currentGroupIndex = 0;\n  let groups$1 = groups;\n  let currentGroup;\n  let databaseLoaded = false;\n  let activeSearchItemId;\n  const focus = (id) => {\n    rootElement.getRootNode().getElementById(id).focus();\n  };\n  const fireEvent = (name, detail) => {\n    rootElement.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));\n  };\n  const unicodeWithSkin = (emoji, currentSkinTone2) => currentSkinTone2 && emoji.skins && emoji.skins[currentSkinTone2] || emoji.unicode;\n  const labelWithSkin = (emoji, currentSkinTone2) => uniq([\n    emoji.name || unicodeWithSkin(emoji, currentSkinTone2),\n    ...emoji.shortcodes || []\n  ]).join(\", \");\n  const isSkinToneOption = (element2) => /^skintone-/.test(element2.id);\n  emojiSupportLevelPromise.then((level) => {\n    if (!level) {\n      $$invalidate(18, message = i18n.emojiUnsupportedMessage);\n    }\n  });\n  function calculateEmojiGridStyle(node) {\n    return calculateWidth(node, (width) => {\n      {\n        const style = getComputedStyle(rootElement);\n        const newNumColumns = parseInt(style.getPropertyValue(\"--num-columns\"), 10);\n        const newIsRtl = style.getPropertyValue(\"direction\") === \"rtl\";\n        const parentWidth = node.parentElement.getBoundingClientRect().width;\n        const newScrollbarWidth = parentWidth - width;\n        $$invalidate(46, numColumns = newNumColumns);\n        $$invalidate(25, scrollbarWidth = newScrollbarWidth);\n        $$invalidate(24, isRtl = newIsRtl);\n      }\n    });\n  }\n  function checkZwjSupportAndUpdate(zwjEmojisToCheck) {\n    const rootNode = rootElement.getRootNode();\n    const emojiToDomNode = (emoji) => rootNode.getElementById(`emo-${emoji.id}`);\n    checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode);\n    $$invalidate(1, currentEmojis = currentEmojis);\n  }\n  function isZwjSupported(emoji) {\n    return !emoji.unicode || !hasZwj(emoji) || supportedZwjEmojis.get(emoji.unicode);\n  }\n  async function filterEmojisByVersion(emojis) {\n    const emojiSupportLevel = await emojiSupportLevelPromise;\n    return emojis.filter(({ version: version2 }) => !version2 || version2 <= emojiSupportLevel);\n  }\n  async function summarizeEmojis(emojis) {\n    return summarizeEmojisForUI(emojis, await emojiSupportLevelPromise);\n  }\n  async function getEmojisByGroup(group) {\n    if (typeof group === \"undefined\") {\n      return [];\n    }\n    const emoji = group === -1 ? customEmoji : await database.getEmojiByGroup(group);\n    return summarizeEmojis(await filterEmojisByVersion(emoji));\n  }\n  async function getEmojisBySearchQuery(query) {\n    return summarizeEmojis(await filterEmojisByVersion(await database.getEmojiBySearchQuery(query)));\n  }\n  function onSearchKeydown(event) {\n    if (!searchMode || !currentEmojis.length) {\n      return;\n    }\n    const goToNextOrPrevious = (previous2) => {\n      halt(event);\n      $$invalidate(5, activeSearchItem = incrementOrDecrement(previous2, activeSearchItem, currentEmojis));\n    };\n    switch (event.key) {\n      case \"ArrowDown\":\n        return goToNextOrPrevious(false);\n      case \"ArrowUp\":\n        return goToNextOrPrevious(true);\n      case \"Enter\":\n        if (activeSearchItem !== -1) {\n          halt(event);\n          return clickEmoji(currentEmojis[activeSearchItem].id);\n        } else if (currentEmojis.length) {\n          $$invalidate(5, activeSearchItem = 0);\n        }\n    }\n  }\n  function onNavClick(group) {\n    $$invalidate(2, rawSearchText = \"\");\n    $$invalidate(44, searchText = \"\");\n    $$invalidate(5, activeSearchItem = -1);\n    $$invalidate(11, currentGroupIndex = groups$1.findIndex((_) => _.id === group.id));\n  }\n  function onNavKeydown(event) {\n    const { target, key } = event;\n    const doFocus = (el) => {\n      if (el) {\n        halt(event);\n        el.focus();\n      }\n    };\n    switch (key) {\n      case \"ArrowLeft\":\n        return doFocus(target.previousSibling);\n      case \"ArrowRight\":\n        return doFocus(target.nextSibling);\n      case \"Home\":\n        return doFocus(target.parentElement.firstChild);\n      case \"End\":\n        return doFocus(target.parentElement.lastChild);\n    }\n  }\n  async function clickEmoji(unicodeOrName) {\n    const emoji = await database.getEmojiByUnicodeOrName(unicodeOrName);\n    const emojiSummary = [...currentEmojis, ...currentFavorites].find((_) => _.id === unicodeOrName);\n    const skinTonedUnicode = emojiSummary.unicode && unicodeWithSkin(emojiSummary, currentSkinTone);\n    await database.incrementFavoriteEmojiCount(unicodeOrName);\n    fireEvent(\"emoji-click\", {\n      emoji,\n      skinTone: currentSkinTone,\n      ...skinTonedUnicode && { unicode: skinTonedUnicode },\n      ...emojiSummary.name && { name: emojiSummary.name }\n    });\n  }\n  async function onEmojiClick(event) {\n    const { target } = event;\n    if (!target.classList.contains(\"emoji\")) {\n      return;\n    }\n    halt(event);\n    const id = target.id.substring(4);\n    clickEmoji(id);\n  }\n  async function onSkinToneOptionsClick(event) {\n    const { target } = event;\n    if (!isSkinToneOption(target)) {\n      return;\n    }\n    halt(event);\n    const skinTone = parseInt(target.id.slice(9), 10);\n    $$invalidate(8, currentSkinTone = skinTone);\n    $$invalidate(6, skinTonePickerExpanded = false);\n    focus(\"skintone-button\");\n    fireEvent(\"skin-tone-change\", { skinTone });\n    database.setPreferredSkinTone(skinTone);\n  }\n  async function onClickSkinToneButton(event) {\n    $$invalidate(6, skinTonePickerExpanded = !skinTonePickerExpanded);\n    $$invalidate(20, activeSkinTone = currentSkinTone);\n    if (skinTonePickerExpanded) {\n      halt(event);\n      rAF(() => focus(`skintone-${activeSkinTone}`));\n    }\n  }\n  function onSkinToneOptionsKeydown(event) {\n    if (!skinTonePickerExpanded) {\n      return;\n    }\n    const changeActiveSkinTone = async (nextSkinTone) => {\n      halt(event);\n      $$invalidate(20, activeSkinTone = nextSkinTone);\n      await tick();\n      focus(`skintone-${activeSkinTone}`);\n    };\n    switch (event.key) {\n      case \"ArrowUp\":\n        return changeActiveSkinTone(incrementOrDecrement(true, activeSkinTone, skinTones));\n      case \"ArrowDown\":\n        return changeActiveSkinTone(incrementOrDecrement(false, activeSkinTone, skinTones));\n      case \"Home\":\n        return changeActiveSkinTone(0);\n      case \"End\":\n        return changeActiveSkinTone(skinTones.length - 1);\n      case \"Enter\":\n        return onSkinToneOptionsClick(event);\n      case \"Escape\":\n        halt(event);\n        $$invalidate(6, skinTonePickerExpanded = false);\n        return focus(\"skintone-button\");\n    }\n  }\n  function onSkinToneOptionsKeyup(event) {\n    if (!skinTonePickerExpanded) {\n      return;\n    }\n    switch (event.key) {\n      case \" \":\n        return onSkinToneOptionsClick(event);\n    }\n  }\n  async function onSkinToneOptionsFocusOut(event) {\n    const { relatedTarget } = event;\n    if (!relatedTarget || !isSkinToneOption(relatedTarget)) {\n      $$invalidate(6, skinTonePickerExpanded = false);\n    }\n  }\n  function input_input_handler() {\n    rawSearchText = this.value;\n    $$invalidate(2, rawSearchText);\n  }\n  function div3_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      skinToneDropdown = $$value;\n      $$invalidate(7, skinToneDropdown);\n    });\n  }\n  const click_handler = (group) => onNavClick(group);\n  function div10_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      tabpanelElement = $$value;\n      $$invalidate(3, tabpanelElement);\n    });\n  }\n  function button1_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      baselineEmoji = $$value;\n      $$invalidate(17, baselineEmoji);\n    });\n  }\n  function section_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      rootElement = $$value;\n      $$invalidate(16, rootElement);\n    });\n  }\n  $$self.$$set = ($$props2) => {\n    if (\"skinToneEmoji\" in $$props2)\n      $$invalidate(40, skinToneEmoji = $$props2.skinToneEmoji);\n    if (\"i18n\" in $$props2)\n      $$invalidate(0, i18n = $$props2.i18n);\n    if (\"database\" in $$props2)\n      $$invalidate(39, database = $$props2.database);\n    if (\"customEmoji\" in $$props2)\n      $$invalidate(41, customEmoji = $$props2.customEmoji);\n    if (\"customCategorySorting\" in $$props2)\n      $$invalidate(42, customCategorySorting = $$props2.customCategorySorting);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty[1] & 1280) {\n      {\n        if (customEmoji && database) {\n          $$invalidate(39, database.customEmoji = customEmoji, database);\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 1 | $$self.$$.dirty[1] & 256) {\n      {\n        async function handleDatabaseLoading() {\n          let showingLoadingMessage = false;\n          const timeoutHandle = setTimeout(\n            () => {\n              showingLoadingMessage = true;\n              $$invalidate(18, message = i18n.loadingMessage);\n            },\n            TIMEOUT_BEFORE_LOADING_MESSAGE\n          );\n          try {\n            await database.ready();\n            $$invalidate(14, databaseLoaded = true);\n          } catch (err) {\n            console.error(err);\n            $$invalidate(18, message = i18n.networkErrorMessage);\n          } finally {\n            clearTimeout(timeoutHandle);\n            if (showingLoadingMessage) {\n              showingLoadingMessage = false;\n              $$invalidate(18, message = \"\");\n            }\n          }\n        }\n        if (database) {\n          handleDatabaseLoading();\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 6144 | $$self.$$.dirty[1] & 1024) {\n      {\n        if (customEmoji && customEmoji.length) {\n          $$invalidate(12, groups$1 = [customGroup, ...groups]);\n        } else if (groups$1 !== groups) {\n          if (currentGroupIndex) {\n            $$invalidate(11, currentGroupIndex--, currentGroupIndex);\n          }\n          $$invalidate(12, groups$1 = groups);\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 4) {\n      {\n        rIC(() => {\n          $$invalidate(44, searchText = (rawSearchText || \"\").trim());\n          $$invalidate(5, activeSearchItem = -1);\n        });\n      }\n    }\n    if ($$self.$$.dirty[0] & 6144) {\n      $$invalidate(13, currentGroup = groups$1[currentGroupIndex]);\n    }\n    if ($$self.$$.dirty[0] & 24576 | $$self.$$.dirty[1] & 8192) {\n      {\n        async function updateEmojis() {\n          if (!databaseLoaded) {\n            $$invalidate(1, currentEmojis = []);\n            $$invalidate(4, searchMode = false);\n          } else if (searchText.length >= MIN_SEARCH_TEXT_LENGTH) {\n            const currentSearchText = searchText;\n            const newEmojis = await getEmojisBySearchQuery(currentSearchText);\n            if (currentSearchText === searchText) {\n              $$invalidate(1, currentEmojis = newEmojis);\n              $$invalidate(4, searchMode = true);\n            }\n          } else if (currentGroup) {\n            const currentGroupId = currentGroup.id;\n            const newEmojis = await getEmojisByGroup(currentGroupId);\n            if (currentGroupId === currentGroup.id) {\n              $$invalidate(1, currentEmojis = newEmojis);\n              $$invalidate(4, searchMode = false);\n            }\n          }\n        }\n        updateEmojis();\n      }\n    }\n    if ($$self.$$.dirty[0] & 4112) {\n      $$invalidate(22, pickerStyle = `\n  --font-family: ${FONT_FAMILY};\n  --num-groups: ${groups$1.length}; \n  --indicator-opacity: ${searchMode ? 0 : 1}; \n  --num-skintones: ${NUM_SKIN_TONES};`);\n    }\n    if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 256) {\n      {\n        async function updatePreferredSkinTone() {\n          if (databaseLoaded) {\n            $$invalidate(8, currentSkinTone = await database.getPreferredSkinTone());\n          }\n        }\n        updatePreferredSkinTone();\n      }\n    }\n    if ($$self.$$.dirty[1] & 512) {\n      $$invalidate(9, skinTones = Array(NUM_SKIN_TONES).fill().map((_, i) => applySkinTone(skinToneEmoji, i)));\n    }\n    if ($$self.$$.dirty[0] & 768) {\n      $$invalidate(21, skinToneButtonText = skinTones[currentSkinTone]);\n    }\n    if ($$self.$$.dirty[0] & 257) {\n      $$invalidate(23, skinToneButtonLabel = i18n.skinToneLabel.replace(\"{skinTone}\", i18n.skinTones[currentSkinTone]));\n    }\n    if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 256) {\n      {\n        async function updateDefaultFavoriteEmojis() {\n          $$invalidate(45, defaultFavoriteEmojis = (await Promise.all(MOST_COMMONLY_USED_EMOJI.map((unicode) => database.getEmojiByUnicodeOrName(unicode)))).filter(Boolean));\n        }\n        if (databaseLoaded) {\n          updateDefaultFavoriteEmojis();\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 49408) {\n      {\n        async function updateFavorites() {\n          const dbFavorites = await database.getTopFavoriteEmoji(numColumns);\n          const favorites = await summarizeEmojis(uniqBy([...dbFavorites, ...defaultFavoriteEmojis], (_) => _.unicode || _.name).slice(0, numColumns));\n          $$invalidate(10, currentFavorites = favorites);\n        }\n        if (databaseLoaded && defaultFavoriteEmojis) {\n          updateFavorites();\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 10) {\n      {\n        const zwjEmojisToCheck = currentEmojis.filter((emoji) => emoji.unicode).filter((emoji) => hasZwj(emoji) && !supportedZwjEmojis.has(emoji.unicode));\n        if (zwjEmojisToCheck.length) {\n          rAF(() => checkZwjSupportAndUpdate(zwjEmojisToCheck));\n        } else {\n          $$invalidate(1, currentEmojis = currentEmojis.filter(isZwjSupported));\n          rAF(() => {\n            (tabpanelElement || {}).scrollTop = 0;\n          });\n        }\n      }\n    }\n    if ($$self.$$.dirty[0] & 1026 | $$self.$$.dirty[1] & 4096)\n      ;\n    if ($$self.$$.dirty[0] & 18 | $$self.$$.dirty[1] & 2048) {\n      {\n        let calculateCurrentEmojisWithCategories = function() {\n          if (searchMode) {\n            return [{ category: \"\", emojis: currentEmojis }];\n          }\n          const categoriesToEmoji = /* @__PURE__ */ new Map();\n          for (const emoji of currentEmojis) {\n            const category = emoji.category || \"\";\n            let emojis = categoriesToEmoji.get(category);\n            if (!emojis) {\n              emojis = [];\n              categoriesToEmoji.set(category, emojis);\n            }\n            emojis.push(emoji);\n          }\n          return [...categoriesToEmoji.entries()].map(([category, emojis]) => ({ category, emojis })).sort((a, b) => customCategorySorting(a.category, b.category));\n        };\n        $$invalidate(15, currentEmojisWithCategories = calculateCurrentEmojisWithCategories());\n      }\n    }\n    if ($$self.$$.dirty[0] & 34) {\n      $$invalidate(26, activeSearchItemId = activeSearchItem !== -1 && currentEmojis[activeSearchItem].id);\n    }\n    if ($$self.$$.dirty[0] & 192) {\n      {\n        if (skinTonePickerExpanded) {\n          skinToneDropdown.addEventListener(\n            \"transitionend\",\n            () => {\n              $$invalidate(19, skinTonePickerExpandedAfterAnimation = true);\n            },\n            { once: true }\n          );\n        } else {\n          $$invalidate(19, skinTonePickerExpandedAfterAnimation = false);\n        }\n      }\n    }\n  };\n  return [\n    i18n,\n    currentEmojis,\n    rawSearchText,\n    tabpanelElement,\n    searchMode,\n    activeSearchItem,\n    skinTonePickerExpanded,\n    skinToneDropdown,\n    currentSkinTone,\n    skinTones,\n    currentFavorites,\n    currentGroupIndex,\n    groups$1,\n    currentGroup,\n    databaseLoaded,\n    currentEmojisWithCategories,\n    rootElement,\n    baselineEmoji,\n    message,\n    skinTonePickerExpandedAfterAnimation,\n    activeSkinTone,\n    skinToneButtonText,\n    pickerStyle,\n    skinToneButtonLabel,\n    isRtl,\n    scrollbarWidth,\n    activeSearchItemId,\n    unicodeWithSkin,\n    labelWithSkin,\n    calculateEmojiGridStyle,\n    onSearchKeydown,\n    onNavClick,\n    onNavKeydown,\n    onEmojiClick,\n    onSkinToneOptionsClick,\n    onClickSkinToneButton,\n    onSkinToneOptionsKeydown,\n    onSkinToneOptionsKeyup,\n    onSkinToneOptionsFocusOut,\n    database,\n    skinToneEmoji,\n    customEmoji,\n    customCategorySorting,\n    initialLoad,\n    searchText,\n    defaultFavoriteEmojis,\n    numColumns,\n    input_input_handler,\n    div3_binding,\n    click_handler,\n    div10_binding,\n    button1_binding,\n    section_binding\n  ];\n}\nclass Picker extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(\n      this,\n      options,\n      instance,\n      create_fragment,\n      safe_not_equal,\n      {\n        skinToneEmoji: 40,\n        i18n: 0,\n        database: 39,\n        customEmoji: 41,\n        customCategorySorting: 42\n      },\n      null,\n      [-1, -1, -1]\n    );\n  }\n}\nconst DEFAULT_DATA_SOURCE = \"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json\";\nconst DEFAULT_LOCALE = \"en\";\nvar enI18n = {\n  categoriesLabel: \"Categories\",\n  emojiUnsupportedMessage: \"Your browser does not support color emoji.\",\n  favoritesLabel: \"Favorites\",\n  loadingMessage: \"Loading\\u2026\",\n  networkErrorMessage: \"Could not load emoji.\",\n  regionLabel: \"Emoji picker\",\n  searchDescription: \"When search results are available, press up or down to select and enter to choose.\",\n  searchLabel: \"Search\",\n  searchResultsLabel: \"Search results\",\n  skinToneDescription: \"When expanded, press up or down to select and enter to choose.\",\n  skinToneLabel: \"Choose a skin tone (currently {skinTone})\",\n  skinTonesLabel: \"Skin tones\",\n  skinTones: [\n    \"Default\",\n    \"Light\",\n    \"Medium-Light\",\n    \"Medium\",\n    \"Medium-Dark\",\n    \"Dark\"\n  ],\n  categories: {\n    custom: \"Custom\",\n    \"smileys-emotion\": \"Smileys and emoticons\",\n    \"people-body\": \"People and body\",\n    \"animals-nature\": \"Animals and nature\",\n    \"food-drink\": \"Food and drink\",\n    \"travel-places\": \"Travel and places\",\n    activities: \"Activities\",\n    objects: \"Objects\",\n    symbols: \"Symbols\",\n    flags: \"Flags\"\n  }\n};\nconst PROPS = [\n  \"customEmoji\",\n  \"customCategorySorting\",\n  \"database\",\n  \"dataSource\",\n  \"i18n\",\n  \"locale\",\n  \"skinToneEmoji\"\n];\nclass PickerElement extends HTMLElement {\n  constructor(props) {\n    super();\n    this.attachShadow({ mode: \"open\" });\n    const style = document.createElement(\"style\");\n    style.textContent = \":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}\";\n    this.shadowRoot.appendChild(style);\n    this._ctx = {\n      locale: DEFAULT_LOCALE,\n      dataSource: DEFAULT_DATA_SOURCE,\n      skinToneEmoji: DEFAULT_SKIN_TONE_EMOJI,\n      customCategorySorting: DEFAULT_CATEGORY_SORTING,\n      customEmoji: null,\n      i18n: enI18n,\n      ...props\n    };\n    for (const prop of PROPS) {\n      if (prop !== \"database\" && Object.prototype.hasOwnProperty.call(this, prop)) {\n        this._ctx[prop] = this[prop];\n        delete this[prop];\n      }\n    }\n    this._dbFlush();\n  }\n  connectedCallback() {\n    this._cmp = new Picker({\n      target: this.shadowRoot,\n      props: this._ctx\n    });\n  }\n  disconnectedCallback() {\n    this._cmp.$destroy();\n    this._cmp = void 0;\n    const { database } = this._ctx;\n    if (database) {\n      database.close().catch((err) => console.error(err));\n    }\n  }\n  static get observedAttributes() {\n    return [\"locale\", \"data-source\", \"skin-tone-emoji\"];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    this._set(\n      attrName.replace(/-([a-z])/g, (_, up) => up.toUpperCase()),\n      newValue\n    );\n  }\n  _set(prop, newValue) {\n    this._ctx[prop] = newValue;\n    if (this._cmp) {\n      this._cmp.$set({ [prop]: newValue });\n    }\n    if ([\"locale\", \"dataSource\"].includes(prop)) {\n      this._dbFlush();\n    }\n  }\n  _dbCreate() {\n    const { locale, dataSource, database } = this._ctx;\n    if (!database || database.locale !== locale || database.dataSource !== dataSource) {\n      this._set(\"database\", new Database({ locale, dataSource }));\n    }\n  }\n  _dbFlush() {\n    Promise.resolve().then(() => this._dbCreate());\n  }\n}\nconst definitions = {};\nfor (const prop of PROPS) {\n  definitions[prop] = {\n    get() {\n      if (prop === \"database\") {\n        this._dbCreate();\n      }\n      return this._ctx[prop];\n    },\n    set(val) {\n      if (prop === \"database\") {\n        throw new Error(\"database is read-only\");\n      }\n      this._set(prop, val);\n    }\n  };\n}\nObject.defineProperties(PickerElement.prototype, definitions);\nif (!customElements.get(\"emoji-picker\")) {\n  customElements.define(\"emoji-picker\", PickerElement);\n}\nfunction findParentBySelector(node, selector) {\n  while (node && !node.querySelector(selector)) {\n    node = node.parentNode;\n    const element2 = node.querySelector(selector);\n    if (element2)\n      return element2;\n  }\n  return null;\n}\nconst _sfc_main$j = {\n  name: \"EmojiPickerContainer\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    emojiOpened: { type: Boolean, default: false },\n    emojiReaction: { type: Boolean, default: false },\n    positionTop: { type: Boolean, default: false },\n    positionRight: { type: Boolean, default: false },\n    messageId: { type: String, default: \"\" },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\"add-emoji\", \"open-emoji\"],\n  data() {\n    return {\n      emojiPickerHeight: 320,\n      emojiPickerTop: 0,\n      emojiPickerRight: \"\"\n    };\n  },\n  watch: {\n    emojiOpened(val) {\n      if (val) {\n        setTimeout(() => {\n          this.addCustomStyling();\n          this.$refs.emojiPicker.shadowRoot.addEventListener(\n            \"emoji-click\",\n            ({ detail }) => {\n              this.$emit(\"add-emoji\", {\n                unicode: detail.unicode\n              });\n            }\n          );\n        }, 0);\n      }\n    }\n  },\n  methods: {\n    addCustomStyling() {\n      const picker = `.picker {\n\t\t\t\tborder: none;\n\t\t\t}`;\n      const nav = `.nav {\n\t\t\t\toverflow-x: auto;\n\t\t\t}`;\n      const searchBox = `.search-wrapper {\n\t\t\t\tpadding-right: 2px;\n\t\t\t\tpadding-left: 2px;\n\t\t\t}`;\n      const search2 = `input.search {\n\t\t\t\theight: 32px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tborder-radius: 10rem;\n\t\t\t\tborder: var(--chat-border-style);\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\toutline: none;\n\t\t\t\tbackground: var(--chat-bg-color-input);\n\t\t\t\tcolor: var(--chat-color);\n\t\t\t}`;\n      const style = document.createElement(\"style\");\n      style.textContent = picker + nav + searchBox + search2;\n      this.$refs.emojiPicker.shadowRoot.appendChild(style);\n    },\n    openEmoji(ev) {\n      this.$emit(\"open-emoji\", !this.emojiOpened);\n      this.setEmojiPickerPosition(\n        ev.clientY,\n        ev.view.innerWidth,\n        ev.view.innerHeight\n      );\n    },\n    setEmojiPickerPosition(clientY, innerWidth, innerHeight) {\n      const mobileSize = innerWidth < 500 || innerHeight < 700;\n      const roomFooterRef = findParentBySelector(this.$el, \"#room-footer\");\n      if (!roomFooterRef) {\n        if (mobileSize)\n          this.emojiPickerRight = \"-50px\";\n        return;\n      }\n      if (mobileSize) {\n        this.emojiPickerRight = innerWidth / 2 - (this.positionTop ? 200 : 150) + \"px\";\n        this.emojiPickerTop = 100;\n        this.emojiPickerHeight = innerHeight - 200;\n      } else {\n        const roomFooterTop = roomFooterRef.getBoundingClientRect().top;\n        const pickerTopPosition = roomFooterTop - clientY > this.emojiPickerHeight - 50;\n        if (pickerTopPosition)\n          this.emojiPickerTop = clientY + 10;\n        else\n          this.emojiPickerTop = clientY - this.emojiPickerHeight - 10;\n        this.emojiPickerRight = this.positionTop ? \"0px\" : this.positionRight ? \"60px\" : \"\";\n      }\n    }\n  }\n};\nconst _hoisted_1$j = { class: \"vac-emoji-wrapper\" };\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_emoji_picker = resolveComponent(\"emoji-picker\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$j, [\n    createBaseVNode(\"div\", {\n      class: normalizeClass([\"vac-svg-button\", { \"vac-emoji-reaction\": $props.emojiReaction }]),\n      onClick: _cache[0] || (_cache[0] = (...args) => $options.openEmoji && $options.openEmoji(...args))\n    }, [\n      renderSlot(\n        _ctx.$slots,\n        $props.messageId ? \"emoji-picker-reaction-icon_\" + $props.messageId : \"emoji-picker-icon\",\n        {},\n        () => [\n          createVNode(_component_svg_icon, {\n            name: \"emoji\",\n            param: $props.emojiReaction ? \"reaction\" : \"\"\n          }, null, 8, [\"param\"])\n        ]\n      )\n    ], 2),\n    $props.emojiOpened ? (openBlock(), createBlock(Transition, {\n      key: 0,\n      name: \"vac-slide-up\",\n      appear: \"\"\n    }, {\n      default: withCtx(() => [\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-emoji-picker\", { \"vac-picker-reaction\": $props.emojiReaction }]),\n          style: normalizeStyle({\n            height: `${$data.emojiPickerHeight}px`,\n            top: $props.positionTop ? $data.emojiPickerHeight : `${$data.emojiPickerTop}px`,\n            right: $data.emojiPickerRight,\n            display: $data.emojiPickerTop || !$props.emojiReaction ? \"initial\" : \"none\"\n          })\n        }, [\n          $props.emojiOpened ? (openBlock(), createBlock(_component_emoji_picker, {\n            key: 0,\n            ref: \"emojiPicker\",\n            \"data-source\": $props.emojiDataSource\n          }, null, 8, [\"data-source\"])) : createCommentVNode(\"\", true)\n        ], 6)\n      ]),\n      _: 1\n    })) : createCommentVNode(\"\", true)\n  ]);\n}\nvar EmojiPickerContainer = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$j]]);\nconst _sfc_main$i = {\n  name: \"RoomFiles\",\n  components: {\n    Loader,\n    SvgIcon\n  },\n  props: {\n    file: { type: Object, required: true },\n    index: { type: Number, required: true }\n  },\n  emits: [\"remove-file\"],\n  computed: {\n    isImage() {\n      return isImageFile(this.file);\n    },\n    isVideo() {\n      return isVideoFile(this.file);\n    }\n  }\n};\nconst _hoisted_1$i = { class: \"vac-room-file-container\" };\nconst _hoisted_2$g = [\"src\"];\nconst _hoisted_3$d = { class: \"vac-text-ellipsis\" };\nconst _hoisted_4$c = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$i, [\n    createVNode(_component_loader, {\n      show: $props.file.loading,\n      type: \"room-file\"\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"show\"]),\n    createBaseVNode(\"div\", {\n      class: \"vac-svg-button vac-icon-remove\",\n      onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"remove-file\", $props.index))\n    }, [\n      renderSlot(_ctx.$slots, \"image-close-icon\", {}, () => [\n        createVNode(_component_svg_icon, {\n          name: \"close\",\n          param: \"image\"\n        })\n      ])\n    ]),\n    $options.isImage ? (openBlock(), createElementBlock(\"div\", {\n      key: 0,\n      class: normalizeClass([\"vac-message-image\", { \"vac-blur-loading\": $props.file.loading }]),\n      style: normalizeStyle({\n        \"background-image\": `url('${$props.file.localUrl || $props.file.url}')`\n      })\n    }, null, 6)) : $options.isVideo ? (openBlock(), createElementBlock(\"video\", {\n      key: 1,\n      controls: \"\",\n      class: normalizeClass({ \"vac-blur-loading\": $props.file.loading })\n    }, [\n      createBaseVNode(\"source\", {\n        src: $props.file.localUrl || $props.file.url\n      }, null, 8, _hoisted_2$g)\n    ], 2)) : (openBlock(), createElementBlock(\"div\", {\n      key: 2,\n      class: normalizeClass([\"vac-file-container\", { \"vac-blur-loading\": $props.file.loading }])\n    }, [\n      createBaseVNode(\"div\", null, [\n        renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n          createVNode(_component_svg_icon, { name: \"file\" })\n        ])\n      ]),\n      createBaseVNode(\"div\", _hoisted_3$d, toDisplayString($props.file.name), 1),\n      $props.file.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_4$c, toDisplayString($props.file.extension), 1)) : createCommentVNode(\"\", true)\n    ], 2))\n  ]);\n}\nvar RoomFile = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$i]]);\nconst _sfc_main$h = {\n  name: \"RoomFiles\",\n  components: {\n    SvgIcon,\n    RoomFile\n  },\n  props: {\n    files: { type: Array, required: true }\n  },\n  emits: [\"remove-file\", \"reset-message\"],\n  computed: {}\n};\nconst _hoisted_1$h = {\n  key: 0,\n  class: \"vac-room-files-container\"\n};\nconst _hoisted_2$f = { class: \"vac-files-box\" };\nconst _hoisted_3$c = { class: \"vac-icon-close\" };\nfunction _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_room_file = resolveComponent(\"room-file\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.files.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$h, [\n        createBaseVNode(\"div\", _hoisted_2$f, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList($props.files, (file, i) => {\n            return openBlock(), createElementBlock(\"div\", { key: i }, [\n              createVNode(_component_room_file, {\n                file,\n                index: i,\n                onRemoveFile: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"remove-file\", $event))\n              }, createSlots({ _: 2 }, [\n                renderList(_ctx.$slots, (idx, name) => {\n                  return {\n                    name,\n                    fn: withCtx((data) => [\n                      renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                    ])\n                  };\n                })\n              ]), 1032, [\"file\", \"index\"])\n            ]);\n          }), 128))\n        ]),\n        createBaseVNode(\"div\", _hoisted_3$c, [\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button\",\n            onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"reset-message\"))\n          }, [\n            renderSlot(_ctx.$slots, \"files-close-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"close-outline\" })\n            ])\n          ])\n        ])\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  });\n}\nvar RoomFiles = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$g = {\n  props: {\n    percentage: { type: Number, default: 0 },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"hover-audio-progress\", \"change-linehead\"],\n  data() {\n    return {\n      isMouseDown: false\n    };\n  },\n  methods: {\n    onMouseDown(ev) {\n      if (this.messageSelectionEnabled)\n        return;\n      this.isMouseDown = true;\n      const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n      this.$emit(\"change-linehead\", seekPos);\n      document.addEventListener(\"mousemove\", this.onMouseMove);\n      document.addEventListener(\"mouseup\", this.onMouseUp);\n    },\n    onMouseUp(ev) {\n      if (this.messageSelectionEnabled)\n        return;\n      this.isMouseDown = false;\n      document.removeEventListener(\"mouseup\", this.onMouseUp);\n      document.removeEventListener(\"mousemove\", this.onMouseMove);\n      const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n      this.$emit(\"change-linehead\", seekPos);\n    },\n    onMouseMove(ev) {\n      if (this.messageSelectionEnabled)\n        return;\n      const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n      this.$emit(\"change-linehead\", seekPos);\n    },\n    calculateLineHeadPosition(ev, element2) {\n      const progressWidth = element2.getBoundingClientRect().width;\n      const leftPosition = element2.getBoundingClientRect().left;\n      let pos = (ev.clientX - leftPosition) / progressWidth;\n      pos = pos < 0 ? 0 : pos;\n      pos = pos > 1 ? 1 : pos;\n      return pos;\n    }\n  }\n};\nconst _hoisted_1$g = { class: \"vac-player-progress\" };\nconst _hoisted_2$e = { class: \"vac-line-container\" };\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"div\", {\n    ref: \"progress\",\n    class: \"vac-player-bar\",\n    onMousedown: _cache[0] || (_cache[0] = (...args) => $options.onMouseDown && $options.onMouseDown(...args)),\n    onMouseover: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"hover-audio-progress\", true)),\n    onMouseout: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"hover-audio-progress\", false))\n  }, [\n    createBaseVNode(\"div\", _hoisted_1$g, [\n      createBaseVNode(\"div\", _hoisted_2$e, [\n        createBaseVNode(\"div\", {\n          class: \"vac-line-progress\",\n          style: normalizeStyle({ width: `${$props.percentage}%` })\n        }, null, 4),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-line-dot\", { \"vac-line-dot__active\": $data.isMouseDown }]),\n          style: normalizeStyle({ left: `${$props.percentage}%` })\n        }, null, 6)\n      ])\n    ])\n  ], 544);\n}\nvar AudioControl = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$g]]);\nconst _sfc_main$f = {\n  name: \"AudioPlayer\",\n  components: {\n    SvgIcon,\n    AudioControl\n  },\n  props: {\n    messageId: { type: [String, Number], default: null },\n    src: { type: String, default: null },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"hover-audio-progress\", \"update-progress-time\"],\n  data() {\n    return {\n      isPlaying: false,\n      duration: this.convertTimeMMSS(0),\n      playedTime: this.convertTimeMMSS(0),\n      progress: 0\n    };\n  },\n  computed: {\n    playerUniqId() {\n      return `audio-player${this.messageId}`;\n    },\n    audioSource() {\n      if (this.src)\n        return this.src;\n      this.resetProgress();\n      return null;\n    }\n  },\n  mounted() {\n    this.player = this.$el.querySelector(\"#\" + this.playerUniqId);\n    this.player.addEventListener(\"ended\", () => {\n      this.isPlaying = false;\n    });\n    this.player.addEventListener(\"loadeddata\", () => {\n      this.resetProgress();\n      this.duration = this.convertTimeMMSS(this.player.duration);\n      this.updateProgressTime();\n    });\n    this.player.addEventListener(\"timeupdate\", this.onTimeUpdate);\n  },\n  methods: {\n    convertTimeMMSS(seconds) {\n      return new Date(seconds * 1e3).toISOString().substr(14, 5);\n    },\n    playback() {\n      if (this.messageSelectionEnabled || !this.audioSource)\n        return;\n      if (this.isPlaying)\n        this.player.pause();\n      else\n        setTimeout(() => this.player.play());\n      this.isPlaying = !this.isPlaying;\n    },\n    resetProgress() {\n      if (this.isPlaying)\n        this.player.pause();\n      this.duration = this.convertTimeMMSS(0);\n      this.playedTime = this.convertTimeMMSS(0);\n      this.progress = 0;\n      this.isPlaying = false;\n      this.updateProgressTime();\n    },\n    onTimeUpdate() {\n      this.playedTime = this.convertTimeMMSS(this.player.currentTime);\n      this.progress = this.player.currentTime / this.player.duration * 100;\n      this.updateProgressTime();\n    },\n    onUpdateProgress(pos) {\n      if (pos)\n        this.player.currentTime = pos * this.player.duration;\n    },\n    updateProgressTime() {\n      this.$emit(\n        \"update-progress-time\",\n        this.progress > 1 ? this.playedTime : this.duration\n      );\n    }\n  }\n};\nconst _hoisted_1$f = { class: \"vac-audio-player\" };\nconst _hoisted_2$d = [\"id\", \"src\"];\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_audio_control = resolveComponent(\"audio-control\");\n  return openBlock(), createElementBlock(\"div\", null, [\n    createBaseVNode(\"div\", _hoisted_1$f, [\n      createBaseVNode(\"div\", {\n        class: \"vac-svg-button\",\n        onClick: _cache[0] || (_cache[0] = (...args) => $options.playback && $options.playback(...args))\n      }, [\n        $data.isPlaying ? renderSlot(_ctx.$slots, \"audio-pause-icon_\" + $props.messageId, { key: 0 }, () => [\n          createVNode(_component_svg_icon, { name: \"audio-pause\" })\n        ]) : renderSlot(_ctx.$slots, \"audio-play-icon_\" + $props.messageId, { key: 1 }, () => [\n          createVNode(_component_svg_icon, { name: \"audio-play\" })\n        ])\n      ]),\n      createVNode(_component_audio_control, {\n        percentage: $data.progress,\n        \"message-selection-enabled\": $props.messageSelectionEnabled,\n        onChangeLinehead: $options.onUpdateProgress,\n        onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"hover-audio-progress\", $event))\n      }, null, 8, [\"percentage\", \"message-selection-enabled\", \"onChangeLinehead\"]),\n      createBaseVNode(\"audio\", {\n        id: $options.playerUniqId,\n        src: $options.audioSource\n      }, null, 8, _hoisted_2$d)\n    ])\n  ]);\n}\nvar AudioPlayer = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$f]]);\nconst _sfc_main$e = {\n  name: \"RoomMessageReply\",\n  components: {\n    SvgIcon,\n    FormatMessage,\n    AudioPlayer\n  },\n  props: {\n    room: { type: Object, required: true },\n    messageReply: { type: Object, default: null },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true }\n  },\n  emits: [\"reset-message\"],\n  computed: {\n    firstFile() {\n      var _a, _b;\n      return ((_b = (_a = this.messageReply) == null ? void 0 : _a.files) == null ? void 0 : _b.length) ? this.messageReply.files[0] : {};\n    },\n    isImage() {\n      return isImageFile(this.firstFile);\n    },\n    isVideo() {\n      return isVideoFile(this.firstFile);\n    },\n    isAudio() {\n      return isAudioFile(this.firstFile);\n    },\n    isOtherFile() {\n      var _a, _b;\n      return ((_b = (_a = this.messageReply) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && !this.isAudio && !this.isVideo && !this.isImage;\n    }\n  }\n};\nconst _hoisted_1$e = {\n  key: 0,\n  class: \"vac-reply-container\"\n};\nconst _hoisted_2$c = { class: \"vac-reply-box\" };\nconst _hoisted_3$b = { class: \"vac-reply-info\" };\nconst _hoisted_4$b = { class: \"vac-reply-username\" };\nconst _hoisted_5$8 = { class: \"vac-reply-content\" };\nconst _hoisted_6$4 = [\"src\"];\nconst _hoisted_7$4 = {\n  key: 1,\n  controls: \"\",\n  class: \"vac-image-reply\"\n};\nconst _hoisted_8$2 = [\"src\"];\nconst _hoisted_9$2 = {\n  key: 3,\n  class: \"vac-image-reply vac-file-container\"\n};\nconst _hoisted_10$2 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_11$1 = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nconst _hoisted_12$1 = { class: \"vac-icon-reply\" };\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_format_message = resolveComponent(\"format-message\");\n  const _component_audio_player = resolveComponent(\"audio-player\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.messageReply ? (openBlock(), createElementBlock(\"div\", _hoisted_1$e, [\n        createBaseVNode(\"div\", _hoisted_2$c, [\n          createBaseVNode(\"div\", _hoisted_3$b, [\n            createBaseVNode(\"div\", _hoisted_4$b, toDisplayString($props.messageReply.username), 1),\n            createBaseVNode(\"div\", _hoisted_5$8, [\n              createVNode(_component_format_message, {\n                \"message-id\": $props.messageReply._id,\n                content: $props.messageReply.content,\n                users: $props.room.users,\n                \"text-formatting\": $props.textFormatting,\n                \"link-options\": $props.linkOptions,\n                reply: true\n              }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n            ])\n          ]),\n          $options.isImage ? (openBlock(), createElementBlock(\"img\", {\n            key: 0,\n            src: $options.firstFile.url,\n            class: \"vac-image-reply\"\n          }, null, 8, _hoisted_6$4)) : $options.isVideo ? (openBlock(), createElementBlock(\"video\", _hoisted_7$4, [\n            createBaseVNode(\"source\", {\n              src: $options.firstFile.url\n            }, null, 8, _hoisted_8$2)\n          ])) : $options.isAudio ? (openBlock(), createBlock(_component_audio_player, {\n            key: 2,\n            src: $options.firstFile.url,\n            \"message-selection-enabled\": false,\n            class: \"vac-audio-reply\"\n          }, createSlots({ _: 2 }, [\n            renderList(_ctx.$slots, (idx, name) => {\n              return {\n                name,\n                fn: withCtx((data) => [\n                  renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                ])\n              };\n            })\n          ]), 1032, [\"src\"])) : $options.isOtherFile ? (openBlock(), createElementBlock(\"div\", _hoisted_9$2, [\n            createBaseVNode(\"div\", null, [\n              renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n                createVNode(_component_svg_icon, { name: \"file\" })\n              ])\n            ]),\n            createBaseVNode(\"div\", _hoisted_10$2, toDisplayString($options.firstFile.name), 1),\n            $options.firstFile.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_11$1, toDisplayString($options.firstFile.extension), 1)) : createCommentVNode(\"\", true)\n          ])) : createCommentVNode(\"\", true)\n        ]),\n        createBaseVNode(\"div\", _hoisted_12$1, [\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button\",\n            onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"reset-message\"))\n          }, [\n            renderSlot(_ctx.$slots, \"reply-close-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"close-outline\" })\n            ])\n          ])\n        ])\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 3\n  });\n}\nvar RoomMessageReply = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$e]]);\nconst _sfc_main$d = {\n  name: \"RoomUsersTag\",\n  props: {\n    filteredUsersTag: { type: Array, required: true },\n    selectItem: { type: Boolean, default: null },\n    activeUpOrDown: { type: Number, default: null }\n  },\n  emits: [\"select-user-tag\", \"activate-item\"],\n  data() {\n    return {\n      activeItem: null\n    };\n  },\n  watch: {\n    filteredUsersTag(val, oldVal) {\n      if (!oldVal.length || val.length !== oldVal.length) {\n        this.activeItem = 0;\n      }\n    },\n    selectItem(val) {\n      if (val) {\n        this.$emit(\"select-user-tag\", this.filteredUsersTag[this.activeItem]);\n      }\n    },\n    activeUpOrDown() {\n      if (this.activeUpOrDown > 0 && this.activeItem < this.filteredUsersTag.length - 1) {\n        this.activeItem++;\n      } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n        this.activeItem--;\n      }\n      this.$emit(\"activate-item\");\n    }\n  }\n};\nconst _hoisted_1$d = {\n  key: 0,\n  class: \"vac-tags-container\"\n};\nconst _hoisted_2$b = [\"onMouseover\", \"onClick\"];\nconst _hoisted_3$a = { class: \"vac-tags-info\" };\nconst _hoisted_4$a = { class: \"vac-tags-username\" };\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.filteredUsersTag.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$d, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredUsersTag, (user, index) => {\n          return openBlock(), createElementBlock(\"div\", {\n            key: user._id,\n            class: normalizeClass([\"vac-tags-box\", { \"vac-tags-box-active\": index === $data.activeItem }]),\n            onMouseover: ($event) => $data.activeItem = index,\n            onClick: ($event) => _ctx.$emit(\"select-user-tag\", user)\n          }, [\n            createBaseVNode(\"div\", _hoisted_3$a, [\n              user.avatar ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: \"vac-avatar vac-tags-avatar\",\n                style: normalizeStyle({ \"background-image\": `url('${user.avatar}')` })\n              }, null, 4)) : createCommentVNode(\"\", true),\n              createBaseVNode(\"div\", _hoisted_4$a, toDisplayString(user.username), 1)\n            ])\n          ], 42, _hoisted_2$b);\n        }), 128))\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  });\n}\nvar RoomUsersTag = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$d]]);\nconst _sfc_main$c = {\n  name: \"RoomEmojis\",\n  props: {\n    filteredEmojis: { type: Array, required: true },\n    selectItem: { type: Boolean, default: null },\n    activeUpOrDown: { type: Number, default: null }\n  },\n  emits: [\"select-emoji\", \"activate-item\"],\n  data() {\n    return {\n      activeItem: null\n    };\n  },\n  watch: {\n    filteredEmojis(val, oldVal) {\n      if (!oldVal.length || val.length !== oldVal.length) {\n        this.activeItem = 0;\n      }\n    },\n    selectItem(val) {\n      if (val) {\n        this.$emit(\"select-emoji\", this.filteredEmojis[this.activeItem]);\n      }\n    },\n    activeUpOrDown() {\n      if (this.activeUpOrDown > 0 && this.activeItem < this.filteredEmojis.length - 1) {\n        this.activeItem++;\n      } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n        this.activeItem--;\n      }\n      this.$emit(\"activate-item\");\n    }\n  }\n};\nconst _hoisted_1$c = {\n  key: 0,\n  class: \"vac-emojis-container\"\n};\nconst _hoisted_2$a = [\"onMouseover\", \"onClick\"];\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.filteredEmojis.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$c, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredEmojis, (emoji, index) => {\n          return openBlock(), createElementBlock(\"div\", {\n            key: emoji,\n            class: normalizeClass([\"vac-emoji-element\", { \"vac-emoji-element-active\": index === $data.activeItem }]),\n            onMouseover: ($event) => $data.activeItem = index,\n            onClick: ($event) => _ctx.$emit(\"select-emoji\", emoji)\n          }, toDisplayString(emoji), 43, _hoisted_2$a);\n        }), 128))\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  });\n}\nvar RoomEmojis = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$c]]);\nconst _sfc_main$b = {\n  name: \"RoomTemplatesText\",\n  props: {\n    filteredTemplatesText: { type: Array, required: true },\n    selectItem: { type: Boolean, default: null },\n    activeUpOrDown: { type: Number, default: null }\n  },\n  emits: [\"select-template-text\", \"activate-item\"],\n  data() {\n    return {\n      activeItem: null\n    };\n  },\n  watch: {\n    filteredTemplatesText(val, oldVal) {\n      if (!oldVal.length || val.length !== oldVal.length) {\n        this.activeItem = 0;\n      }\n    },\n    selectItem(val) {\n      if (val) {\n        this.$emit(\n          \"select-template-text\",\n          this.filteredTemplatesText[this.activeItem]\n        );\n      }\n    },\n    activeUpOrDown() {\n      if (this.activeUpOrDown > 0 && this.activeItem < this.filteredTemplatesText.length - 1) {\n        this.activeItem++;\n      } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n        this.activeItem--;\n      }\n      this.$emit(\"activate-item\");\n    }\n  }\n};\nconst _hoisted_1$b = {\n  key: 0,\n  class: \"vac-template-container vac-app-box-shadow\"\n};\nconst _hoisted_2$9 = [\"onMouseover\", \"onClick\"];\nconst _hoisted_3$9 = { class: \"vac-template-info\" };\nconst _hoisted_4$9 = { class: \"vac-template-tag\" };\nconst _hoisted_5$7 = { class: \"vac-template-text\" };\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n    default: withCtx(() => [\n      $props.filteredTemplatesText.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$b, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredTemplatesText, (template, index) => {\n          return openBlock(), createElementBlock(\"div\", {\n            key: index,\n            class: normalizeClass([\"vac-template-box\", { \"vac-template-active\": index === $data.activeItem }]),\n            onMouseover: ($event) => $data.activeItem = index,\n            onClick: ($event) => _ctx.$emit(\"select-template-text\", template)\n          }, [\n            createBaseVNode(\"div\", _hoisted_3$9, [\n              createBaseVNode(\"div\", _hoisted_4$9, \" /\" + toDisplayString(template.tag), 1),\n              createBaseVNode(\"div\", _hoisted_5$7, toDisplayString(template.text), 1)\n            ])\n          ], 42, _hoisted_2$9);\n        }), 128))\n      ])) : createCommentVNode(\"\", true)\n    ]),\n    _: 1\n  });\n}\nvar RoomTemplatesText = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$b]]);\nfunction new_byte$4(count) {\n  return new Int8Array(count);\n}\nfunction new_short(count) {\n  return new Int16Array(count);\n}\nfunction new_int$d(count) {\n  return new Int32Array(count);\n}\nfunction new_float$f(count) {\n  return new Float32Array(count);\n}\nfunction new_double$1(count) {\n  return new Float64Array(count);\n}\nfunction new_float_n$6(args) {\n  if (args.length == 1) {\n    return new_float$f(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_float_n$6(args));\n  }\n  return A;\n}\nfunction new_int_n$2(args) {\n  if (args.length == 1) {\n    return new_int$d(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_int_n$2(args));\n  }\n  return A;\n}\nfunction new_short_n$1(args) {\n  if (args.length == 1) {\n    return new_short(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_short_n$1(args));\n  }\n  return A;\n}\nfunction new_array_n$1(args) {\n  if (args.length == 1) {\n    return new Array(args[0]);\n  }\n  var sz = args[0];\n  args = args.slice(1);\n  var A = [];\n  for (var i = 0; i < sz; i++) {\n    A.push(new_array_n$1(args));\n  }\n  return A;\n}\nvar Arrays$7 = {};\nArrays$7.fill = function(a, fromIndex, toIndex, val) {\n  if (arguments.length == 2) {\n    for (var i = 0; i < a.length; i++) {\n      a[i] = arguments[1];\n    }\n  } else {\n    for (var i = fromIndex; i < toIndex; i++) {\n      a[i] = val;\n    }\n  }\n};\nvar System$a = {};\nSystem$a.arraycopy = function(src, srcPos, dest, destPos, length) {\n  var srcEnd = srcPos + length;\n  while (srcPos < srcEnd)\n    dest[destPos++] = src[srcPos++];\n};\nSystem$a.out = {};\nSystem$a.out.println = function(message) {\n  console.log(message);\n};\nSystem$a.out.printf = function() {\n  console.log.apply(console, arguments);\n};\nvar Util$5 = {};\nUtil$5.SQRT2 = 1.4142135623730951;\nUtil$5.FAST_LOG10 = function(x) {\n  return Math.log10(x);\n};\nUtil$5.FAST_LOG10_X = function(x, y) {\n  return Math.log10(x) * y;\n};\nfunction ShortBlock$3(ordinal) {\n  this.ordinal = ordinal;\n}\nShortBlock$3.short_block_allowed = new ShortBlock$3(0);\nShortBlock$3.short_block_coupled = new ShortBlock$3(1);\nShortBlock$3.short_block_dispensed = new ShortBlock$3(2);\nShortBlock$3.short_block_forced = new ShortBlock$3(3);\nvar Float$2 = {};\nFloat$2.MAX_VALUE = 34028235e31;\nfunction VbrMode$7(ordinal) {\n  this.ordinal = ordinal;\n}\nVbrMode$7.vbr_off = new VbrMode$7(0);\nVbrMode$7.vbr_mt = new VbrMode$7(1);\nVbrMode$7.vbr_rh = new VbrMode$7(2);\nVbrMode$7.vbr_abr = new VbrMode$7(3);\nVbrMode$7.vbr_mtrh = new VbrMode$7(4);\nVbrMode$7.vbr_default = VbrMode$7.vbr_mtrh;\nvar assert$b = function(x) {\n};\nvar common = {\n  System: System$a,\n  VbrMode: VbrMode$7,\n  Float: Float$2,\n  ShortBlock: ShortBlock$3,\n  Util: Util$5,\n  Arrays: Arrays$7,\n  new_array_n: new_array_n$1,\n  new_byte: new_byte$4,\n  new_double: new_double$1,\n  new_float: new_float$f,\n  new_float_n: new_float_n$6,\n  new_int: new_int$d,\n  new_int_n: new_int_n$2,\n  new_short,\n  new_short_n: new_short_n$1,\n  assert: assert$b\n};\nvar System$9 = common.System;\nvar Util$4 = common.Util;\nvar Arrays$6 = common.Arrays;\nvar new_float$e = common.new_float;\nfunction NewMDCT() {\n  var enwindow = [\n    -477e-9 * 0.740951125354959 / 2384e-9,\n    103951e-9 * 0.740951125354959 / 2384e-9,\n    953674e-9 * 0.740951125354959 / 2384e-9,\n    2841473e-9 * 0.740951125354959 / 2384e-9,\n    0.035758972 * 0.740951125354959 / 2384e-9,\n    3401756e-9 * 0.740951125354959 / 2384e-9,\n    983715e-9 * 0.740951125354959 / 2384e-9,\n    99182e-9 * 0.740951125354959 / 2384e-9,\n    12398e-9 * 0.740951125354959 / 2384e-9,\n    191212e-9 * 0.740951125354959 / 2384e-9,\n    2283096e-9 * 0.740951125354959 / 2384e-9,\n    0.016994476 * 0.740951125354959 / 2384e-9,\n    -0.018756866 * 0.740951125354959 / 2384e-9,\n    -2630711e-9 * 0.740951125354959 / 2384e-9,\n    -247478e-9 * 0.740951125354959 / 2384e-9,\n    -14782e-9 * 0.740951125354959 / 2384e-9,\n    0.9063471690191471,\n    0.1960342806591213,\n    -477e-9 * 0.773010453362737 / 2384e-9,\n    105858e-9 * 0.773010453362737 / 2384e-9,\n    930786e-9 * 0.773010453362737 / 2384e-9,\n    2521515e-9 * 0.773010453362737 / 2384e-9,\n    0.035694122 * 0.773010453362737 / 2384e-9,\n    3643036e-9 * 0.773010453362737 / 2384e-9,\n    991821e-9 * 0.773010453362737 / 2384e-9,\n    96321e-9 * 0.773010453362737 / 2384e-9,\n    11444e-9 * 0.773010453362737 / 2384e-9,\n    165462e-9 * 0.773010453362737 / 2384e-9,\n    2110004e-9 * 0.773010453362737 / 2384e-9,\n    0.016112804 * 0.773010453362737 / 2384e-9,\n    -0.019634247 * 0.773010453362737 / 2384e-9,\n    -2803326e-9 * 0.773010453362737 / 2384e-9,\n    -277042e-9 * 0.773010453362737 / 2384e-9,\n    -16689e-9 * 0.773010453362737 / 2384e-9,\n    0.8206787908286602,\n    0.3901806440322567,\n    -477e-9 * 0.803207531480645 / 2384e-9,\n    107288e-9 * 0.803207531480645 / 2384e-9,\n    902653e-9 * 0.803207531480645 / 2384e-9,\n    2174854e-9 * 0.803207531480645 / 2384e-9,\n    0.035586357 * 0.803207531480645 / 2384e-9,\n    3858566e-9 * 0.803207531480645 / 2384e-9,\n    995159e-9 * 0.803207531480645 / 2384e-9,\n    9346e-8 * 0.803207531480645 / 2384e-9,\n    10014e-9 * 0.803207531480645 / 2384e-9,\n    14019e-8 * 0.803207531480645 / 2384e-9,\n    1937389e-9 * 0.803207531480645 / 2384e-9,\n    0.015233517 * 0.803207531480645 / 2384e-9,\n    -0.020506859 * 0.803207531480645 / 2384e-9,\n    -2974033e-9 * 0.803207531480645 / 2384e-9,\n    -30756e-8 * 0.803207531480645 / 2384e-9,\n    -1812e-8 * 0.803207531480645 / 2384e-9,\n    0.7416505462720353,\n    0.5805693545089249,\n    -477e-9 * 0.831469612302545 / 2384e-9,\n    108242e-9 * 0.831469612302545 / 2384e-9,\n    868797e-9 * 0.831469612302545 / 2384e-9,\n    1800537e-9 * 0.831469612302545 / 2384e-9,\n    0.0354352 * 0.831469612302545 / 2384e-9,\n    4049301e-9 * 0.831469612302545 / 2384e-9,\n    994205e-9 * 0.831469612302545 / 2384e-9,\n    90599e-9 * 0.831469612302545 / 2384e-9,\n    906e-8 * 0.831469612302545 / 2384e-9,\n    116348e-9 * 0.831469612302545 / 2384e-9,\n    1766682e-9 * 0.831469612302545 / 2384e-9,\n    0.014358521 * 0.831469612302545 / 2384e-9,\n    -0.021372318 * 0.831469612302545 / 2384e-9,\n    -314188e-8 * 0.831469612302545 / 2384e-9,\n    -339031e-9 * 0.831469612302545 / 2384e-9,\n    -1955e-8 * 0.831469612302545 / 2384e-9,\n    0.6681786379192989,\n    0.7653668647301797,\n    -477e-9 * 0.857728610000272 / 2384e-9,\n    108719e-9 * 0.857728610000272 / 2384e-9,\n    82922e-8 * 0.857728610000272 / 2384e-9,\n    1399517e-9 * 0.857728610000272 / 2384e-9,\n    0.035242081 * 0.857728610000272 / 2384e-9,\n    421524e-8 * 0.857728610000272 / 2384e-9,\n    989437e-9 * 0.857728610000272 / 2384e-9,\n    87261e-9 * 0.857728610000272 / 2384e-9,\n    8106e-9 * 0.857728610000272 / 2384e-9,\n    93937e-9 * 0.857728610000272 / 2384e-9,\n    1597881e-9 * 0.857728610000272 / 2384e-9,\n    0.013489246 * 0.857728610000272 / 2384e-9,\n    -0.022228718 * 0.857728610000272 / 2384e-9,\n    -3306866e-9 * 0.857728610000272 / 2384e-9,\n    -371456e-9 * 0.857728610000272 / 2384e-9,\n    -21458e-9 * 0.857728610000272 / 2384e-9,\n    0.5993769336819237,\n    0.9427934736519954,\n    -477e-9 * 0.881921264348355 / 2384e-9,\n    108719e-9 * 0.881921264348355 / 2384e-9,\n    78392e-8 * 0.881921264348355 / 2384e-9,\n    971317e-9 * 0.881921264348355 / 2384e-9,\n    0.035007 * 0.881921264348355 / 2384e-9,\n    4357815e-9 * 0.881921264348355 / 2384e-9,\n    980854e-9 * 0.881921264348355 / 2384e-9,\n    83923e-9 * 0.881921264348355 / 2384e-9,\n    7629e-9 * 0.881921264348355 / 2384e-9,\n    72956e-9 * 0.881921264348355 / 2384e-9,\n    1432419e-9 * 0.881921264348355 / 2384e-9,\n    0.012627602 * 0.881921264348355 / 2384e-9,\n    -0.02307415 * 0.881921264348355 / 2384e-9,\n    -3467083e-9 * 0.881921264348355 / 2384e-9,\n    -404358e-9 * 0.881921264348355 / 2384e-9,\n    -23365e-9 * 0.881921264348355 / 2384e-9,\n    0.5345111359507916,\n    1.111140466039205,\n    -954e-9 * 0.903989293123443 / 2384e-9,\n    108242e-9 * 0.903989293123443 / 2384e-9,\n    731945e-9 * 0.903989293123443 / 2384e-9,\n    515938e-9 * 0.903989293123443 / 2384e-9,\n    0.034730434 * 0.903989293123443 / 2384e-9,\n    4477024e-9 * 0.903989293123443 / 2384e-9,\n    968933e-9 * 0.903989293123443 / 2384e-9,\n    80585e-9 * 0.903989293123443 / 2384e-9,\n    6676e-9 * 0.903989293123443 / 2384e-9,\n    52929e-9 * 0.903989293123443 / 2384e-9,\n    1269817e-9 * 0.903989293123443 / 2384e-9,\n    0.011775017 * 0.903989293123443 / 2384e-9,\n    -0.023907185 * 0.903989293123443 / 2384e-9,\n    -3622532e-9 * 0.903989293123443 / 2384e-9,\n    -438213e-9 * 0.903989293123443 / 2384e-9,\n    -25272e-9 * 0.903989293123443 / 2384e-9,\n    0.4729647758913199,\n    1.268786568327291,\n    -954e-9 * 0.9238795325112867 / 2384e-9,\n    106812e-9 * 0.9238795325112867 / 2384e-9,\n    674248e-9 * 0.9238795325112867 / 2384e-9,\n    33379e-9 * 0.9238795325112867 / 2384e-9,\n    0.034412861 * 0.9238795325112867 / 2384e-9,\n    4573822e-9 * 0.9238795325112867 / 2384e-9,\n    954151e-9 * 0.9238795325112867 / 2384e-9,\n    76771e-9 * 0.9238795325112867 / 2384e-9,\n    6199e-9 * 0.9238795325112867 / 2384e-9,\n    34332e-9 * 0.9238795325112867 / 2384e-9,\n    1111031e-9 * 0.9238795325112867 / 2384e-9,\n    0.010933399 * 0.9238795325112867 / 2384e-9,\n    -0.024725437 * 0.9238795325112867 / 2384e-9,\n    -3771782e-9 * 0.9238795325112867 / 2384e-9,\n    -472546e-9 * 0.9238795325112867 / 2384e-9,\n    -27657e-9 * 0.9238795325112867 / 2384e-9,\n    0.41421356237309503,\n    1.414213562373095,\n    -954e-9 * 0.941544065183021 / 2384e-9,\n    105381e-9 * 0.941544065183021 / 2384e-9,\n    610352e-9 * 0.941544065183021 / 2384e-9,\n    -475883e-9 * 0.941544065183021 / 2384e-9,\n    0.03405571 * 0.941544065183021 / 2384e-9,\n    4649162e-9 * 0.941544065183021 / 2384e-9,\n    935555e-9 * 0.941544065183021 / 2384e-9,\n    73433e-9 * 0.941544065183021 / 2384e-9,\n    5245e-9 * 0.941544065183021 / 2384e-9,\n    17166e-9 * 0.941544065183021 / 2384e-9,\n    956535e-9 * 0.941544065183021 / 2384e-9,\n    0.010103703 * 0.941544065183021 / 2384e-9,\n    -0.025527 * 0.941544065183021 / 2384e-9,\n    -3914356e-9 * 0.941544065183021 / 2384e-9,\n    -507355e-9 * 0.941544065183021 / 2384e-9,\n    -30041e-9 * 0.941544065183021 / 2384e-9,\n    0.3578057213145241,\n    1.546020906725474,\n    -954e-9 * 0.956940335732209 / 2384e-9,\n    10252e-8 * 0.956940335732209 / 2384e-9,\n    539303e-9 * 0.956940335732209 / 2384e-9,\n    -1011848e-9 * 0.956940335732209 / 2384e-9,\n    0.033659935 * 0.956940335732209 / 2384e-9,\n    4703045e-9 * 0.956940335732209 / 2384e-9,\n    915051e-9 * 0.956940335732209 / 2384e-9,\n    70095e-9 * 0.956940335732209 / 2384e-9,\n    4768e-9 * 0.956940335732209 / 2384e-9,\n    954e-9 * 0.956940335732209 / 2384e-9,\n    806808e-9 * 0.956940335732209 / 2384e-9,\n    9287834e-9 * 0.956940335732209 / 2384e-9,\n    -0.026310921 * 0.956940335732209 / 2384e-9,\n    -4048824e-9 * 0.956940335732209 / 2384e-9,\n    -542164e-9 * 0.956940335732209 / 2384e-9,\n    -32425e-9 * 0.956940335732209 / 2384e-9,\n    0.3033466836073424,\n    1.66293922460509,\n    -1431e-9 * 0.970031253194544 / 2384e-9,\n    99182e-9 * 0.970031253194544 / 2384e-9,\n    462532e-9 * 0.970031253194544 / 2384e-9,\n    -1573563e-9 * 0.970031253194544 / 2384e-9,\n    0.033225536 * 0.970031253194544 / 2384e-9,\n    4737377e-9 * 0.970031253194544 / 2384e-9,\n    891685e-9 * 0.970031253194544 / 2384e-9,\n    6628e-8 * 0.970031253194544 / 2384e-9,\n    4292e-9 * 0.970031253194544 / 2384e-9,\n    -13828e-9 * 0.970031253194544 / 2384e-9,\n    66185e-8 * 0.970031253194544 / 2384e-9,\n    8487225e-9 * 0.970031253194544 / 2384e-9,\n    -0.02707386 * 0.970031253194544 / 2384e-9,\n    -4174709e-9 * 0.970031253194544 / 2384e-9,\n    -576973e-9 * 0.970031253194544 / 2384e-9,\n    -34809e-9 * 0.970031253194544 / 2384e-9,\n    0.2504869601913055,\n    1.76384252869671,\n    -1431e-9 * 0.98078528040323 / 2384e-9,\n    95367e-9 * 0.98078528040323 / 2384e-9,\n    378609e-9 * 0.98078528040323 / 2384e-9,\n    -2161503e-9 * 0.98078528040323 / 2384e-9,\n    0.032754898 * 0.98078528040323 / 2384e-9,\n    4752159e-9 * 0.98078528040323 / 2384e-9,\n    866413e-9 * 0.98078528040323 / 2384e-9,\n    62943e-9 * 0.98078528040323 / 2384e-9,\n    3815e-9 * 0.98078528040323 / 2384e-9,\n    -2718e-8 * 0.98078528040323 / 2384e-9,\n    522137e-9 * 0.98078528040323 / 2384e-9,\n    7703304e-9 * 0.98078528040323 / 2384e-9,\n    -0.027815342 * 0.98078528040323 / 2384e-9,\n    -4290581e-9 * 0.98078528040323 / 2384e-9,\n    -611782e-9 * 0.98078528040323 / 2384e-9,\n    -3767e-8 * 0.98078528040323 / 2384e-9,\n    0.198912367379658,\n    1.847759065022573,\n    -1907e-9 * 0.989176509964781 / 2384e-9,\n    90122e-9 * 0.989176509964781 / 2384e-9,\n    288486e-9 * 0.989176509964781 / 2384e-9,\n    -2774239e-9 * 0.989176509964781 / 2384e-9,\n    0.03224802 * 0.989176509964781 / 2384e-9,\n    4748821e-9 * 0.989176509964781 / 2384e-9,\n    838757e-9 * 0.989176509964781 / 2384e-9,\n    59605e-9 * 0.989176509964781 / 2384e-9,\n    3338e-9 * 0.989176509964781 / 2384e-9,\n    -39577e-9 * 0.989176509964781 / 2384e-9,\n    388145e-9 * 0.989176509964781 / 2384e-9,\n    6937027e-9 * 0.989176509964781 / 2384e-9,\n    -0.028532982 * 0.989176509964781 / 2384e-9,\n    -4395962e-9 * 0.989176509964781 / 2384e-9,\n    -646591e-9 * 0.989176509964781 / 2384e-9,\n    -40531e-9 * 0.989176509964781 / 2384e-9,\n    0.1483359875383474,\n    1.913880671464418,\n    -1907e-9 * 0.995184726672197 / 2384e-9,\n    844e-7 * 0.995184726672197 / 2384e-9,\n    191689e-9 * 0.995184726672197 / 2384e-9,\n    -3411293e-9 * 0.995184726672197 / 2384e-9,\n    0.03170681 * 0.995184726672197 / 2384e-9,\n    4728317e-9 * 0.995184726672197 / 2384e-9,\n    809669e-9 * 0.995184726672197 / 2384e-9,\n    5579e-8 * 0.995184726672197 / 2384e-9,\n    3338e-9 * 0.995184726672197 / 2384e-9,\n    -50545e-9 * 0.995184726672197 / 2384e-9,\n    259876e-9 * 0.995184726672197 / 2384e-9,\n    6189346e-9 * 0.995184726672197 / 2384e-9,\n    -0.029224873 * 0.995184726672197 / 2384e-9,\n    -4489899e-9 * 0.995184726672197 / 2384e-9,\n    -680923e-9 * 0.995184726672197 / 2384e-9,\n    -43392e-9 * 0.995184726672197 / 2384e-9,\n    0.09849140335716425,\n    1.961570560806461,\n    -2384e-9 * 0.998795456205172 / 2384e-9,\n    77724e-9 * 0.998795456205172 / 2384e-9,\n    88215e-9 * 0.998795456205172 / 2384e-9,\n    -4072189e-9 * 0.998795456205172 / 2384e-9,\n    0.031132698 * 0.998795456205172 / 2384e-9,\n    4691124e-9 * 0.998795456205172 / 2384e-9,\n    779152e-9 * 0.998795456205172 / 2384e-9,\n    52929e-9 * 0.998795456205172 / 2384e-9,\n    2861e-9 * 0.998795456205172 / 2384e-9,\n    -60558e-9 * 0.998795456205172 / 2384e-9,\n    137329e-9 * 0.998795456205172 / 2384e-9,\n    546217e-8 * 0.998795456205172 / 2384e-9,\n    -0.02989006 * 0.998795456205172 / 2384e-9,\n    -4570484e-9 * 0.998795456205172 / 2384e-9,\n    -714302e-9 * 0.998795456205172 / 2384e-9,\n    -46253e-9 * 0.998795456205172 / 2384e-9,\n    0.04912684976946725,\n    1.990369453344394,\n    0.035780907 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    0.017876148 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    3134727e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    2457142e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    971317e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    218868e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    101566e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    13828e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n    0.030526638 / 2384e-9,\n    4638195e-9 / 2384e-9,\n    747204e-9 / 2384e-9,\n    49591e-9 / 2384e-9,\n    4756451e-9 / 2384e-9,\n    21458e-9 / 2384e-9,\n    -69618e-9 / 2384e-9\n  ];\n  var NS = 12;\n  var NL = 36;\n  var win = [\n    [\n      2382191739347913e-28,\n      6423305872147834e-28,\n      9400849094049688e-28,\n      1122435026096556e-27,\n      1183840321267481e-27,\n      1122435026096556e-27,\n      940084909404969e-27,\n      6423305872147839e-28,\n      2382191739347918e-28,\n      5456116108943412e-27,\n      4878985199565852e-27,\n      4240448995017367e-27,\n      3559909094758252e-27,\n      2858043359288075e-27,\n      2156177623817898e-27,\n      1475637723558783e-27,\n      8371015190102974e-28,\n      2599706096327376e-28,\n      -5456116108943412e-27,\n      -4878985199565852e-27,\n      -4240448995017367e-27,\n      -3559909094758252e-27,\n      -2858043359288076e-27,\n      -2156177623817898e-27,\n      -1475637723558783e-27,\n      -8371015190102975e-28,\n      -2599706096327376e-28,\n      -2382191739347923e-28,\n      -6423305872147843e-28,\n      -9400849094049696e-28,\n      -1122435026096556e-27,\n      -1183840321267481e-27,\n      -1122435026096556e-27,\n      -9400849094049694e-28,\n      -642330587214784e-27,\n      -2382191739347918e-28\n    ],\n    [\n      2382191739347913e-28,\n      6423305872147834e-28,\n      9400849094049688e-28,\n      1122435026096556e-27,\n      1183840321267481e-27,\n      1122435026096556e-27,\n      9400849094049688e-28,\n      6423305872147841e-28,\n      2382191739347918e-28,\n      5456116108943413e-27,\n      4878985199565852e-27,\n      4240448995017367e-27,\n      3559909094758253e-27,\n      2858043359288075e-27,\n      2156177623817898e-27,\n      1475637723558782e-27,\n      8371015190102975e-28,\n      2599706096327376e-28,\n      -5461314069809755e-27,\n      -4921085770524055e-27,\n      -4343405037091838e-27,\n      -3732668368707687e-27,\n      -3093523840190885e-27,\n      -2430835727329465e-27,\n      -1734679010007751e-27,\n      -974825365660928e-27,\n      -2797435120168326e-28,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      -2283748241799531e-28,\n      -4037858874020686e-28,\n      -2146547464825323e-28\n    ],\n    [\n      0.1316524975873958,\n      0.414213562373095,\n      0.7673269879789602,\n      1.091308501069271,\n      1.303225372841206,\n      1.56968557711749,\n      1.920982126971166,\n      2.414213562373094,\n      3.171594802363212,\n      4.510708503662055,\n      7.595754112725146,\n      22.90376554843115,\n      0.984807753012208,\n      0.6427876096865394,\n      0.3420201433256688,\n      0.9396926207859084,\n      -0.1736481776669303,\n      -0.7660444431189779,\n      0.8660254037844387,\n      0.5,\n      -0.5144957554275265,\n      -0.4717319685649723,\n      -0.3133774542039019,\n      -0.1819131996109812,\n      -0.09457419252642064,\n      -0.04096558288530405,\n      -0.01419856857247115,\n      -0.003699974673760037,\n      0.8574929257125442,\n      0.8817419973177052,\n      0.9496286491027329,\n      0.9833145924917901,\n      0.9955178160675857,\n      0.9991605581781475,\n      0.999899195244447,\n      0.9999931550702802\n    ],\n    [\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2283748241799531e-28,\n      4037858874020686e-28,\n      2146547464825323e-28,\n      5461314069809755e-27,\n      4921085770524055e-27,\n      4343405037091838e-27,\n      3732668368707687e-27,\n      3093523840190885e-27,\n      2430835727329466e-27,\n      1734679010007751e-27,\n      974825365660928e-27,\n      2797435120168326e-28,\n      -5456116108943413e-27,\n      -4878985199565852e-27,\n      -4240448995017367e-27,\n      -3559909094758253e-27,\n      -2858043359288075e-27,\n      -2156177623817898e-27,\n      -1475637723558782e-27,\n      -8371015190102975e-28,\n      -2599706096327376e-28,\n      -2382191739347913e-28,\n      -6423305872147834e-28,\n      -9400849094049688e-28,\n      -1122435026096556e-27,\n      -1183840321267481e-27,\n      -1122435026096556e-27,\n      -9400849094049688e-28,\n      -6423305872147841e-28,\n      -2382191739347918e-28\n    ]\n  ];\n  var tantab_l = win[Encoder.SHORT_TYPE];\n  var cx = win[Encoder.SHORT_TYPE];\n  var ca = win[Encoder.SHORT_TYPE];\n  var cs = win[Encoder.SHORT_TYPE];\n  var order = [\n    0,\n    1,\n    16,\n    17,\n    8,\n    9,\n    24,\n    25,\n    4,\n    5,\n    20,\n    21,\n    12,\n    13,\n    28,\n    29,\n    2,\n    3,\n    18,\n    19,\n    10,\n    11,\n    26,\n    27,\n    6,\n    7,\n    22,\n    23,\n    14,\n    15,\n    30,\n    31\n  ];\n  function window_subband(x1, x1Pos, a) {\n    var wp = 10;\n    var x2 = x1Pos + 238 - 14 - 286;\n    for (var i = -15; i < 0; i++) {\n      var w, s, t;\n      w = enwindow[wp + -10];\n      s = x1[x2 + -224] * w;\n      t = x1[x1Pos + 224] * w;\n      w = enwindow[wp + -9];\n      s += x1[x2 + -160] * w;\n      t += x1[x1Pos + 160] * w;\n      w = enwindow[wp + -8];\n      s += x1[x2 + -96] * w;\n      t += x1[x1Pos + 96] * w;\n      w = enwindow[wp + -7];\n      s += x1[x2 + -32] * w;\n      t += x1[x1Pos + 32] * w;\n      w = enwindow[wp + -6];\n      s += x1[x2 + 32] * w;\n      t += x1[x1Pos + -32] * w;\n      w = enwindow[wp + -5];\n      s += x1[x2 + 96] * w;\n      t += x1[x1Pos + -96] * w;\n      w = enwindow[wp + -4];\n      s += x1[x2 + 160] * w;\n      t += x1[x1Pos + -160] * w;\n      w = enwindow[wp + -3];\n      s += x1[x2 + 224] * w;\n      t += x1[x1Pos + -224] * w;\n      w = enwindow[wp + -2];\n      s += x1[x1Pos + -256] * w;\n      t -= x1[x2 + 256] * w;\n      w = enwindow[wp + -1];\n      s += x1[x1Pos + -192] * w;\n      t -= x1[x2 + 192] * w;\n      w = enwindow[wp + 0];\n      s += x1[x1Pos + -128] * w;\n      t -= x1[x2 + 128] * w;\n      w = enwindow[wp + 1];\n      s += x1[x1Pos + -64] * w;\n      t -= x1[x2 + 64] * w;\n      w = enwindow[wp + 2];\n      s += x1[x1Pos + 0] * w;\n      t -= x1[x2 + 0] * w;\n      w = enwindow[wp + 3];\n      s += x1[x1Pos + 64] * w;\n      t -= x1[x2 + -64] * w;\n      w = enwindow[wp + 4];\n      s += x1[x1Pos + 128] * w;\n      t -= x1[x2 + -128] * w;\n      w = enwindow[wp + 5];\n      s += x1[x1Pos + 192] * w;\n      t -= x1[x2 + -192] * w;\n      s *= enwindow[wp + 6];\n      w = t - s;\n      a[30 + i * 2] = t + s;\n      a[31 + i * 2] = enwindow[wp + 7] * w;\n      wp += 18;\n      x1Pos--;\n      x2++;\n    }\n    {\n      var s, t, u, v;\n      t = x1[x1Pos + -16] * enwindow[wp + -10];\n      s = x1[x1Pos + -32] * enwindow[wp + -2];\n      t += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n      s += x1[x1Pos + -96] * enwindow[wp + -1];\n      t += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n      s += x1[x1Pos + -160] * enwindow[wp + 0];\n      t += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n      s += x1[x1Pos + -224] * enwindow[wp + 1];\n      t += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n      s -= x1[x1Pos + 32] * enwindow[wp + 2];\n      t += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n      s -= x1[x1Pos + 96] * enwindow[wp + 3];\n      t += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n      s -= x1[x1Pos + 160] * enwindow[wp + 4];\n      t += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n      s -= x1[x1Pos + 224];\n      u = s - t;\n      v = s + t;\n      t = a[14];\n      s = a[15] - t;\n      a[31] = v + t;\n      a[30] = u + s;\n      a[15] = u - s;\n      a[14] = v - t;\n    }\n    {\n      var xr;\n      xr = a[28] - a[0];\n      a[0] += a[28];\n      a[28] = xr * enwindow[wp + -2 * 18 + 7];\n      xr = a[29] - a[1];\n      a[1] += a[29];\n      a[29] = xr * enwindow[wp + -2 * 18 + 7];\n      xr = a[26] - a[2];\n      a[2] += a[26];\n      a[26] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[27] - a[3];\n      a[3] += a[27];\n      a[27] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[24] - a[4];\n      a[4] += a[24];\n      a[24] = xr * enwindow[wp + -6 * 18 + 7];\n      xr = a[25] - a[5];\n      a[5] += a[25];\n      a[25] = xr * enwindow[wp + -6 * 18 + 7];\n      xr = a[22] - a[6];\n      a[6] += a[22];\n      a[22] = xr * Util$4.SQRT2;\n      xr = a[23] - a[7];\n      a[7] += a[23];\n      a[23] = xr * Util$4.SQRT2 - a[7];\n      a[7] -= a[6];\n      a[22] -= a[7];\n      a[23] -= a[22];\n      xr = a[6];\n      a[6] = a[31] - xr;\n      a[31] = a[31] + xr;\n      xr = a[7];\n      a[7] = a[30] - xr;\n      a[30] = a[30] + xr;\n      xr = a[22];\n      a[22] = a[15] - xr;\n      a[15] = a[15] + xr;\n      xr = a[23];\n      a[23] = a[14] - xr;\n      a[14] = a[14] + xr;\n      xr = a[20] - a[8];\n      a[8] += a[20];\n      a[20] = xr * enwindow[wp + -10 * 18 + 7];\n      xr = a[21] - a[9];\n      a[9] += a[21];\n      a[21] = xr * enwindow[wp + -10 * 18 + 7];\n      xr = a[18] - a[10];\n      a[10] += a[18];\n      a[18] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[19] - a[11];\n      a[11] += a[19];\n      a[19] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[16] - a[12];\n      a[12] += a[16];\n      a[16] = xr * enwindow[wp + -14 * 18 + 7];\n      xr = a[17] - a[13];\n      a[13] += a[17];\n      a[17] = xr * enwindow[wp + -14 * 18 + 7];\n      xr = -a[20] + a[24];\n      a[20] += a[24];\n      a[24] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = -a[21] + a[25];\n      a[21] += a[25];\n      a[25] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[4] - a[8];\n      a[4] += a[8];\n      a[8] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[5] - a[9];\n      a[5] += a[9];\n      a[9] = xr * enwindow[wp + -12 * 18 + 7];\n      xr = a[0] - a[12];\n      a[0] += a[12];\n      a[12] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[1] - a[13];\n      a[1] += a[13];\n      a[13] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = a[16] - a[28];\n      a[16] += a[28];\n      a[28] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = -a[17] + a[29];\n      a[17] += a[29];\n      a[29] = xr * enwindow[wp + -4 * 18 + 7];\n      xr = Util$4.SQRT2 * (a[2] - a[10]);\n      a[2] += a[10];\n      a[10] = xr;\n      xr = Util$4.SQRT2 * (a[3] - a[11]);\n      a[3] += a[11];\n      a[11] = xr;\n      xr = Util$4.SQRT2 * (-a[18] + a[26]);\n      a[18] += a[26];\n      a[26] = xr - a[18];\n      xr = Util$4.SQRT2 * (-a[19] + a[27]);\n      a[19] += a[27];\n      a[27] = xr - a[19];\n      xr = a[2];\n      a[19] -= a[3];\n      a[3] -= xr;\n      a[2] = a[31] - xr;\n      a[31] += xr;\n      xr = a[3];\n      a[11] -= a[19];\n      a[18] -= xr;\n      a[3] = a[30] - xr;\n      a[30] += xr;\n      xr = a[18];\n      a[27] -= a[11];\n      a[19] -= xr;\n      a[18] = a[15] - xr;\n      a[15] += xr;\n      xr = a[19];\n      a[10] -= xr;\n      a[19] = a[14] - xr;\n      a[14] += xr;\n      xr = a[10];\n      a[11] -= xr;\n      a[10] = a[23] - xr;\n      a[23] += xr;\n      xr = a[11];\n      a[26] -= xr;\n      a[11] = a[22] - xr;\n      a[22] += xr;\n      xr = a[26];\n      a[27] -= xr;\n      a[26] = a[7] - xr;\n      a[7] += xr;\n      xr = a[27];\n      a[27] = a[6] - xr;\n      a[6] += xr;\n      xr = Util$4.SQRT2 * (a[0] - a[4]);\n      a[0] += a[4];\n      a[4] = xr;\n      xr = Util$4.SQRT2 * (a[1] - a[5]);\n      a[1] += a[5];\n      a[5] = xr;\n      xr = Util$4.SQRT2 * (a[16] - a[20]);\n      a[16] += a[20];\n      a[20] = xr;\n      xr = Util$4.SQRT2 * (a[17] - a[21]);\n      a[17] += a[21];\n      a[21] = xr;\n      xr = -Util$4.SQRT2 * (a[8] - a[12]);\n      a[8] += a[12];\n      a[12] = xr - a[8];\n      xr = -Util$4.SQRT2 * (a[9] - a[13]);\n      a[9] += a[13];\n      a[13] = xr - a[9];\n      xr = -Util$4.SQRT2 * (a[25] - a[29]);\n      a[25] += a[29];\n      a[29] = xr - a[25];\n      xr = -Util$4.SQRT2 * (a[24] + a[28]);\n      a[24] -= a[28];\n      a[28] = xr - a[24];\n      xr = a[24] - a[16];\n      a[24] = xr;\n      xr = a[20] - xr;\n      a[20] = xr;\n      xr = a[28] - xr;\n      a[28] = xr;\n      xr = a[25] - a[17];\n      a[25] = xr;\n      xr = a[21] - xr;\n      a[21] = xr;\n      xr = a[29] - xr;\n      a[29] = xr;\n      xr = a[17] - a[1];\n      a[17] = xr;\n      xr = a[9] - xr;\n      a[9] = xr;\n      xr = a[25] - xr;\n      a[25] = xr;\n      xr = a[5] - xr;\n      a[5] = xr;\n      xr = a[21] - xr;\n      a[21] = xr;\n      xr = a[13] - xr;\n      a[13] = xr;\n      xr = a[29] - xr;\n      a[29] = xr;\n      xr = a[1] - a[0];\n      a[1] = xr;\n      xr = a[16] - xr;\n      a[16] = xr;\n      xr = a[17] - xr;\n      a[17] = xr;\n      xr = a[8] - xr;\n      a[8] = xr;\n      xr = a[9] - xr;\n      a[9] = xr;\n      xr = a[24] - xr;\n      a[24] = xr;\n      xr = a[25] - xr;\n      a[25] = xr;\n      xr = a[4] - xr;\n      a[4] = xr;\n      xr = a[5] - xr;\n      a[5] = xr;\n      xr = a[20] - xr;\n      a[20] = xr;\n      xr = a[21] - xr;\n      a[21] = xr;\n      xr = a[12] - xr;\n      a[12] = xr;\n      xr = a[13] - xr;\n      a[13] = xr;\n      xr = a[28] - xr;\n      a[28] = xr;\n      xr = a[29] - xr;\n      a[29] = xr;\n      xr = a[0];\n      a[0] += a[31];\n      a[31] -= xr;\n      xr = a[1];\n      a[1] += a[30];\n      a[30] -= xr;\n      xr = a[16];\n      a[16] += a[15];\n      a[15] -= xr;\n      xr = a[17];\n      a[17] += a[14];\n      a[14] -= xr;\n      xr = a[8];\n      a[8] += a[23];\n      a[23] -= xr;\n      xr = a[9];\n      a[9] += a[22];\n      a[22] -= xr;\n      xr = a[24];\n      a[24] += a[7];\n      a[7] -= xr;\n      xr = a[25];\n      a[25] += a[6];\n      a[6] -= xr;\n      xr = a[4];\n      a[4] += a[27];\n      a[27] -= xr;\n      xr = a[5];\n      a[5] += a[26];\n      a[26] -= xr;\n      xr = a[20];\n      a[20] += a[11];\n      a[11] -= xr;\n      xr = a[21];\n      a[21] += a[10];\n      a[10] -= xr;\n      xr = a[12];\n      a[12] += a[19];\n      a[19] -= xr;\n      xr = a[13];\n      a[13] += a[18];\n      a[18] -= xr;\n      xr = a[28];\n      a[28] += a[3];\n      a[3] -= xr;\n      xr = a[29];\n      a[29] += a[2];\n      a[2] -= xr;\n    }\n  }\n  function mdct_short(inout, inoutPos) {\n    for (var l = 0; l < 3; l++) {\n      var tc0, tc1, tc2, ts0, ts1, ts2;\n      ts0 = inout[inoutPos + 2 * 3] * win[Encoder.SHORT_TYPE][0] - inout[inoutPos + 5 * 3];\n      tc0 = inout[inoutPos + 0 * 3] * win[Encoder.SHORT_TYPE][2] - inout[inoutPos + 3 * 3];\n      tc1 = ts0 + tc0;\n      tc2 = ts0 - tc0;\n      ts0 = inout[inoutPos + 5 * 3] * win[Encoder.SHORT_TYPE][0] + inout[inoutPos + 2 * 3];\n      tc0 = inout[inoutPos + 3 * 3] * win[Encoder.SHORT_TYPE][2] + inout[inoutPos + 0 * 3];\n      ts1 = ts0 + tc0;\n      ts2 = -ts0 + tc0;\n      tc0 = (inout[inoutPos + 1 * 3] * win[Encoder.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2069978111953089e-26;\n      ts0 = (inout[inoutPos + 4 * 3] * win[Encoder.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2069978111953089e-26;\n      inout[inoutPos + 3 * 0] = tc1 * 190752519173728e-25 + tc0;\n      inout[inoutPos + 3 * 5] = -ts1 * 190752519173728e-25 + ts0;\n      tc2 = tc2 * 0.8660254037844387 * 1907525191737281e-26;\n      ts1 = ts1 * 0.5 * 1907525191737281e-26 + ts0;\n      inout[inoutPos + 3 * 1] = tc2 - ts1;\n      inout[inoutPos + 3 * 2] = tc2 + ts1;\n      tc1 = tc1 * 0.5 * 1907525191737281e-26 - tc0;\n      ts2 = ts2 * 0.8660254037844387 * 1907525191737281e-26;\n      inout[inoutPos + 3 * 3] = tc1 + ts2;\n      inout[inoutPos + 3 * 4] = tc1 - ts2;\n      inoutPos++;\n    }\n  }\n  function mdct_long(out, outPos, _in) {\n    var ct, st;\n    {\n      var tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n      tc1 = _in[17] - _in[9];\n      tc3 = _in[15] - _in[11];\n      tc4 = _in[14] - _in[12];\n      ts5 = _in[0] + _in[8];\n      ts6 = _in[1] + _in[7];\n      ts7 = _in[2] + _in[6];\n      ts8 = _in[3] + _in[5];\n      out[outPos + 17] = ts5 + ts7 - ts8 - (ts6 - _in[4]);\n      st = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n      ct = (tc1 - tc3 - tc4) * cx[12 + 6];\n      out[outPos + 5] = ct + st;\n      out[outPos + 6] = ct - st;\n      tc2 = (_in[16] - _in[10]) * cx[12 + 6];\n      ts6 = ts6 * cx[12 + 7] + _in[4];\n      ct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n      st = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n      out[outPos + 1] = ct + st;\n      out[outPos + 2] = ct - st;\n      ct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n      st = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n      out[outPos + 9] = ct + st;\n      out[outPos + 10] = ct - st;\n      ct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n      st = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n      out[outPos + 13] = ct + st;\n      out[outPos + 14] = ct - st;\n    }\n    {\n      var ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n      ts1 = _in[8] - _in[0];\n      ts3 = _in[6] - _in[2];\n      ts4 = _in[5] - _in[3];\n      tc5 = _in[17] + _in[9];\n      tc6 = _in[16] + _in[10];\n      tc7 = _in[15] + _in[11];\n      tc8 = _in[14] + _in[12];\n      out[outPos + 0] = tc5 + tc7 + tc8 + (tc6 + _in[13]);\n      ct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n      st = (ts1 - ts3 + ts4) * cx[12 + 6];\n      out[outPos + 11] = ct + st;\n      out[outPos + 12] = ct - st;\n      ts2 = (_in[7] - _in[1]) * cx[12 + 6];\n      tc6 = _in[13] - tc6 * cx[12 + 7];\n      ct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n      st = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n      out[outPos + 3] = ct + st;\n      out[outPos + 4] = ct - st;\n      ct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n      st = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n      out[outPos + 7] = ct + st;\n      out[outPos + 8] = ct - st;\n      ct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n      st = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n      out[outPos + 15] = ct + st;\n      out[outPos + 16] = ct - st;\n    }\n  }\n  this.mdct_sub48 = function(gfc, w0, w1) {\n    var wk = w0;\n    var wkPos = 286;\n    for (var ch = 0; ch < gfc.channels_out; ch++) {\n      for (var gr = 0; gr < gfc.mode_gr; gr++) {\n        var band;\n        var gi = gfc.l3_side.tt[gr][ch];\n        var mdct_enc = gi.xr;\n        var mdct_encPos = 0;\n        var samp = gfc.sb_sample[ch][1 - gr];\n        var sampPos = 0;\n        for (var k = 0; k < 18 / 2; k++) {\n          window_subband(wk, wkPos, samp[sampPos]);\n          window_subband(wk, wkPos + 32, samp[sampPos + 1]);\n          sampPos += 2;\n          wkPos += 64;\n          for (band = 1; band < 32; band += 2) {\n            samp[sampPos - 1][band] *= -1;\n          }\n        }\n        for (band = 0; band < 32; band++, mdct_encPos += 18) {\n          var type = gi.block_type;\n          var band0 = gfc.sb_sample[ch][gr];\n          var band1 = gfc.sb_sample[ch][1 - gr];\n          if (gi.mixed_block_flag != 0 && band < 2)\n            type = 0;\n          if (gfc.amp_filter[band] < 1e-12) {\n            Arrays$6.fill(mdct_enc, mdct_encPos + 0, mdct_encPos + 18, 0);\n          } else {\n            if (gfc.amp_filter[band] < 1) {\n              for (var k = 0; k < 18; k++) {\n                band1[k][order[band]] *= gfc.amp_filter[band];\n              }\n            }\n            if (type == Encoder.SHORT_TYPE) {\n              for (var k = -NS / 4; k < 0; k++) {\n                var w = win[Encoder.SHORT_TYPE][k + 3];\n                mdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]] * w - band0[8 - k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]] * w + band0[15 + k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]] * w - band0[14 - k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]] * w + band1[3 + k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]] * w - band1[2 - k][order[band]];\n                mdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]] * w + band1[9 + k][order[band]];\n              }\n              mdct_short(mdct_enc, mdct_encPos);\n            } else {\n              var work = new_float$e(18);\n              for (var k = -NL / 4; k < 0; k++) {\n                var a, b;\n                a = win[type][k + 27] * band1[k + 9][order[band]] + win[type][k + 36] * band1[8 - k][order[band]];\n                b = win[type][k + 9] * band0[k + 9][order[band]] - win[type][k + 18] * band0[8 - k][order[band]];\n                work[k + 9] = a - b * tantab_l[3 + k + 9];\n                work[k + 18] = a * tantab_l[3 + k + 9] + b;\n              }\n              mdct_long(mdct_enc, mdct_encPos, work);\n            }\n          }\n          if (type != Encoder.SHORT_TYPE && band != 0) {\n            for (var k = 7; k >= 0; --k) {\n              var bu, bd;\n              bu = mdct_enc[mdct_encPos + k] * ca[20 + k] + mdct_enc[mdct_encPos + -1 - k] * cs[28 + k];\n              bd = mdct_enc[mdct_encPos + k] * cs[28 + k] - mdct_enc[mdct_encPos + -1 - k] * ca[20 + k];\n              mdct_enc[mdct_encPos + -1 - k] = bu;\n              mdct_enc[mdct_encPos + k] = bd;\n            }\n          }\n        }\n      }\n      wk = w1;\n      wkPos = 286;\n      if (gfc.mode_gr == 1) {\n        for (var i = 0; i < 18; i++) {\n          System$9.arraycopy(\n            gfc.sb_sample[ch][1][i],\n            0,\n            gfc.sb_sample[ch][0][i],\n            0,\n            32\n          );\n        }\n      }\n    }\n  };\n}\nvar System$8 = common.System;\nvar new_float$d = common.new_float;\nvar new_float_n$5 = common.new_float_n;\nfunction III_psy_xmin() {\n  this.l = new_float$d(Encoder.SBMAX_l);\n  this.s = new_float_n$5([Encoder.SBMAX_s, 3]);\n  var self2 = this;\n  this.assign = function(iii_psy_xmin) {\n    System$8.arraycopy(iii_psy_xmin.l, 0, self2.l, 0, Encoder.SBMAX_l);\n    for (var i = 0; i < Encoder.SBMAX_s; i++) {\n      for (var j = 0; j < 3; j++) {\n        self2.s[i][j] = iii_psy_xmin.s[i][j];\n      }\n    }\n  };\n}\nfunction III_psy_ratio() {\n  this.thm = new III_psy_xmin();\n  this.en = new III_psy_xmin();\n}\nfunction MPEGMode(ordinal) {\n  var _ordinal = ordinal;\n  this.ordinal = function() {\n    return _ordinal;\n  };\n}\nMPEGMode.STEREO = new MPEGMode(0);\nMPEGMode.JOINT_STEREO = new MPEGMode(1);\nMPEGMode.DUAL_CHANNEL = new MPEGMode(2);\nMPEGMode.MONO = new MPEGMode(3);\nMPEGMode.NOT_SET = new MPEGMode(4);\nvar System$7 = common.System;\nvar VbrMode$6 = common.VbrMode;\nvar new_array_n = common.new_array_n;\nvar new_float$c = common.new_float;\nvar new_float_n$4 = common.new_float_n;\nvar new_int$c = common.new_int;\nvar assert$a = common.assert;\nEncoder.ENCDELAY = 576;\nEncoder.POSTDELAY = 1152;\nEncoder.MDCTDELAY = 48;\nEncoder.FFTOFFSET = 224 + Encoder.MDCTDELAY;\nEncoder.DECDELAY = 528;\nEncoder.SBLIMIT = 32;\nEncoder.CBANDS = 64;\nEncoder.SBPSY_l = 21;\nEncoder.SBPSY_s = 12;\nEncoder.SBMAX_l = 22;\nEncoder.SBMAX_s = 13;\nEncoder.PSFB21 = 6;\nEncoder.PSFB12 = 6;\nEncoder.BLKSIZE = 1024;\nEncoder.HBLKSIZE = Encoder.BLKSIZE / 2 + 1;\nEncoder.BLKSIZE_s = 256;\nEncoder.HBLKSIZE_s = Encoder.BLKSIZE_s / 2 + 1;\nEncoder.NORM_TYPE = 0;\nEncoder.START_TYPE = 1;\nEncoder.SHORT_TYPE = 2;\nEncoder.STOP_TYPE = 3;\nEncoder.MPG_MD_LR_LR = 0;\nEncoder.MPG_MD_LR_I = 1;\nEncoder.MPG_MD_MS_LR = 2;\nEncoder.MPG_MD_MS_I = 3;\nEncoder.fircoef = [\n  -0.0207887 * 5,\n  -0.0378413 * 5,\n  -0.0432472 * 5,\n  -0.031183 * 5,\n  779609e-23 * 5,\n  0.0467745 * 5,\n  0.10091 * 5,\n  0.151365 * 5,\n  0.187098 * 5\n];\nfunction Encoder() {\n  var FFTOFFSET = Encoder.FFTOFFSET;\n  var MPG_MD_MS_LR = Encoder.MPG_MD_MS_LR;\n  var bs = null;\n  this.psy = null;\n  var psy = null;\n  var vbr = null;\n  var qupvt = null;\n  this.setModules = function(_bs, _psy, _qupvt, _vbr) {\n    bs = _bs;\n    this.psy = _psy;\n    psy = _psy;\n    vbr = _vbr;\n    qupvt = _qupvt;\n  };\n  var newMDCT = new NewMDCT();\n  function adjust_ATH(gfc) {\n    var gr2_max, max_pow;\n    if (gfc.ATH.useAdjust == 0) {\n      gfc.ATH.adjust = 1;\n      return;\n    }\n    max_pow = gfc.loudness_sq[0][0];\n    gr2_max = gfc.loudness_sq[1][0];\n    if (gfc.channels_out == 2) {\n      max_pow += gfc.loudness_sq[0][1];\n      gr2_max += gfc.loudness_sq[1][1];\n    } else {\n      max_pow += max_pow;\n      gr2_max += gr2_max;\n    }\n    if (gfc.mode_gr == 2) {\n      max_pow = Math.max(max_pow, gr2_max);\n    }\n    max_pow *= 0.5;\n    max_pow *= gfc.ATH.aaSensitivityP;\n    if (max_pow > 0.03125) {\n      if (gfc.ATH.adjust >= 1) {\n        gfc.ATH.adjust = 1;\n      } else {\n        if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n          gfc.ATH.adjust = gfc.ATH.adjustLimit;\n        }\n      }\n      gfc.ATH.adjustLimit = 1;\n    } else {\n      var adj_lim_new = 31.98 * max_pow + 625e-6;\n      if (gfc.ATH.adjust >= adj_lim_new) {\n        gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n        if (gfc.ATH.adjust < adj_lim_new) {\n          gfc.ATH.adjust = adj_lim_new;\n        }\n      } else {\n        if (gfc.ATH.adjustLimit >= adj_lim_new) {\n          gfc.ATH.adjust = adj_lim_new;\n        } else {\n          if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n            gfc.ATH.adjust = gfc.ATH.adjustLimit;\n          }\n        }\n      }\n      gfc.ATH.adjustLimit = adj_lim_new;\n    }\n  }\n  function updateStats(gfc) {\n    var gr, ch;\n    assert$a(gfc.bitrate_index >= 0 && gfc.bitrate_index < 16);\n    assert$a(gfc.mode_ext >= 0 && gfc.mode_ext < 4);\n    gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n    gfc.bitrate_stereoMode_Hist[15][4]++;\n    if (gfc.channels_out == 2) {\n      gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n      gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n    }\n    for (gr = 0; gr < gfc.mode_gr; ++gr) {\n      for (ch = 0; ch < gfc.channels_out; ++ch) {\n        var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n        if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n          bt = 4;\n        gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n        gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n        gfc.bitrate_blockType_Hist[15][bt]++;\n        gfc.bitrate_blockType_Hist[15][5]++;\n      }\n    }\n  }\n  function lame_encode_frame_init(gfp, inbuf) {\n    var gfc = gfp.internal_flags;\n    var ch, gr;\n    if (gfc.lame_encode_frame_init == 0) {\n      var i, j;\n      var primebuff0 = new_float$c(286 + 1152 + 576);\n      var primebuff1 = new_float$c(286 + 1152 + 576);\n      gfc.lame_encode_frame_init = 1;\n      for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n        if (i < 576 * gfc.mode_gr) {\n          primebuff0[i] = 0;\n          if (gfc.channels_out == 2)\n            primebuff1[i] = 0;\n        } else {\n          primebuff0[i] = inbuf[0][j];\n          if (gfc.channels_out == 2)\n            primebuff1[i] = inbuf[1][j];\n          ++j;\n        }\n      }\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          gfc.l3_side.tt[gr][ch].block_type = Encoder.SHORT_TYPE;\n        }\n      }\n      newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n      assert$a(gfc.mf_size >= Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET);\n      assert$a(gfc.mf_size >= 512 + gfp.framesize - 32);\n    }\n  }\n  this.lame_encode_mp3_frame = function(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n    var mp3count;\n    var masking_LR = new_array_n([2, 2]);\n    masking_LR[0][0] = new III_psy_ratio();\n    masking_LR[0][1] = new III_psy_ratio();\n    masking_LR[1][0] = new III_psy_ratio();\n    masking_LR[1][1] = new III_psy_ratio();\n    var masking_MS = new_array_n([2, 2]);\n    masking_MS[0][0] = new III_psy_ratio();\n    masking_MS[0][1] = new III_psy_ratio();\n    masking_MS[1][0] = new III_psy_ratio();\n    masking_MS[1][1] = new III_psy_ratio();\n    var masking;\n    var inbuf = [null, null];\n    var gfc = gfp.internal_flags;\n    var tot_ener = new_float_n$4([2, 4]);\n    var ms_ener_ratio = [0.5, 0.5];\n    var pe = [\n      [0, 0],\n      [0, 0]\n    ];\n    var pe_MS = [\n      [0, 0],\n      [0, 0]\n    ];\n    var pe_use;\n    var ch, gr;\n    inbuf[0] = inbuf_l;\n    inbuf[1] = inbuf_r;\n    if (gfc.lame_encode_frame_init == 0) {\n      lame_encode_frame_init(gfp, inbuf);\n    }\n    gfc.padding = 0;\n    if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n      gfc.slot_lag += gfp.out_samplerate;\n      gfc.padding = 1;\n    }\n    if (gfc.psymodel != 0) {\n      var ret;\n      var bufp = [null, null];\n      var bufpPos = 0;\n      var blocktype = new_int$c(2);\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          bufp[ch] = inbuf[ch];\n          bufpPos = 576 + gr * 576 - Encoder.FFTOFFSET;\n        }\n        if (gfp.VBR == VbrMode$6.vbr_mtrh || gfp.VBR == VbrMode$6.vbr_mt) {\n          ret = psy.L3psycho_anal_vbr(\n            gfp,\n            bufp,\n            bufpPos,\n            gr,\n            masking_LR,\n            masking_MS,\n            pe[gr],\n            pe_MS[gr],\n            tot_ener[gr],\n            blocktype\n          );\n        } else {\n          ret = psy.L3psycho_anal_ns(\n            gfp,\n            bufp,\n            bufpPos,\n            gr,\n            masking_LR,\n            masking_MS,\n            pe[gr],\n            pe_MS[gr],\n            tot_ener[gr],\n            blocktype\n          );\n        }\n        if (ret != 0)\n          return -4;\n        if (gfp.mode == MPEGMode.JOINT_STEREO) {\n          ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n          if (ms_ener_ratio[gr] > 0) {\n            ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n          }\n        }\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          var cod_info = gfc.l3_side.tt[gr][ch];\n          cod_info.block_type = blocktype[ch];\n          cod_info.mixed_block_flag = 0;\n        }\n      }\n    } else {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          gfc.l3_side.tt[gr][ch].block_type = Encoder.NORM_TYPE;\n          gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n          pe_MS[gr][ch] = pe[gr][ch] = 700;\n        }\n      }\n    }\n    adjust_ATH(gfc);\n    newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n    gfc.mode_ext = Encoder.MPG_MD_LR_LR;\n    if (gfp.force_ms) {\n      gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n    } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n      var sum_pe_MS = 0;\n      var sum_pe_LR = 0;\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          sum_pe_MS += pe_MS[gr][ch];\n          sum_pe_LR += pe[gr][ch];\n        }\n      }\n      if (sum_pe_MS <= 1 * sum_pe_LR) {\n        var gi0 = gfc.l3_side.tt[0];\n        var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n        if (gi0[0].block_type == gi0[1].block_type && gi1[0].block_type == gi1[1].block_type) {\n          gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n        }\n      }\n    }\n    if (gfc.mode_ext == MPG_MD_MS_LR) {\n      masking = masking_MS;\n      pe_use = pe_MS;\n    } else {\n      masking = masking_LR;\n      pe_use = pe;\n    }\n    if (gfp.analysis && gfc.pinfo != null) {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n          gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n          gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n          gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n          System$7.arraycopy(\n            gfc.l3_side.tt[gr][ch].xr,\n            0,\n            gfc.pinfo.xr[gr][ch],\n            0,\n            576\n          );\n          if (gfc.mode_ext == MPG_MD_MS_LR) {\n            gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n            System$7.arraycopy(\n              gfc.pinfo.energy[gr][ch + 2],\n              0,\n              gfc.pinfo.energy[gr][ch],\n              0,\n              gfc.pinfo.energy[gr][ch].length\n            );\n          }\n        }\n      }\n    }\n    if (gfp.VBR == VbrMode$6.vbr_off || gfp.VBR == VbrMode$6.vbr_abr) {\n      var i;\n      var f;\n      for (i = 0; i < 18; i++)\n        gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n      f = 0;\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++)\n          f += pe_use[gr][ch];\n      }\n      gfc.nsPsy.pefirbuf[18] = f;\n      f = gfc.nsPsy.pefirbuf[9];\n      for (i = 0; i < 9; i++) {\n        f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i]) * Encoder.fircoef[i];\n      }\n      f = 670 * 5 * gfc.mode_gr * gfc.channels_out / f;\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          pe_use[gr][ch] *= f;\n        }\n      }\n    }\n    gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n    bs.format_bitstream(gfp);\n    mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n    if (gfp.bWriteVbrTag)\n      vbr.addVbrFrame(gfp);\n    if (gfp.analysis && gfc.pinfo != null) {\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var j;\n        for (j = 0; j < FFTOFFSET; j++) {\n          gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j + gfp.framesize];\n        }\n        for (j = FFTOFFSET; j < 1600; j++) {\n          gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n        }\n      }\n      qupvt.set_frame_pinfo(gfp, masking);\n    }\n    updateStats(gfc);\n    return mp3count;\n  };\n}\nvar Util$3 = common.Util;\nvar new_float$b = common.new_float;\nfunction FFT() {\n  var window2 = new_float$b(Encoder.BLKSIZE);\n  var window_s = new_float$b(Encoder.BLKSIZE_s / 2);\n  var costab = [\n    0.9238795325112867,\n    0.3826834323650898,\n    0.9951847266721969,\n    0.0980171403295606,\n    0.9996988186962042,\n    0.02454122852291229,\n    0.9999811752826011,\n    0.006135884649154475\n  ];\n  function fht(fz, fzPos, n) {\n    var tri = 0;\n    var k4;\n    var fi;\n    var gi;\n    n <<= 1;\n    var fn = fzPos + n;\n    k4 = 4;\n    do {\n      var s1, c1;\n      var i, k1, k2, k3, kx;\n      kx = k4 >> 1;\n      k1 = k4;\n      k2 = k4 << 1;\n      k3 = k2 + k1;\n      k4 = k2 << 1;\n      fi = fzPos;\n      gi = fi + kx;\n      do {\n        var f0, f1, f2, f3;\n        f1 = fz[fi + 0] - fz[fi + k1];\n        f0 = fz[fi + 0] + fz[fi + k1];\n        f3 = fz[fi + k2] - fz[fi + k3];\n        f2 = fz[fi + k2] + fz[fi + k3];\n        fz[fi + k2] = f0 - f2;\n        fz[fi + 0] = f0 + f2;\n        fz[fi + k3] = f1 - f3;\n        fz[fi + k1] = f1 + f3;\n        f1 = fz[gi + 0] - fz[gi + k1];\n        f0 = fz[gi + 0] + fz[gi + k1];\n        f3 = Util$3.SQRT2 * fz[gi + k3];\n        f2 = Util$3.SQRT2 * fz[gi + k2];\n        fz[gi + k2] = f0 - f2;\n        fz[gi + 0] = f0 + f2;\n        fz[gi + k3] = f1 - f3;\n        fz[gi + k1] = f1 + f3;\n        gi += k4;\n        fi += k4;\n      } while (fi < fn);\n      c1 = costab[tri + 0];\n      s1 = costab[tri + 1];\n      for (i = 1; i < kx; i++) {\n        var c2, s2;\n        c2 = 1 - 2 * s1 * s1;\n        s2 = 2 * s1 * c1;\n        fi = fzPos + i;\n        gi = fzPos + k1 - i;\n        do {\n          var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n          b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n          a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n          f1 = fz[fi + 0] - a;\n          f0 = fz[fi + 0] + a;\n          g1 = fz[gi + 0] - b;\n          g0 = fz[gi + 0] + b;\n          b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n          a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n          f3 = fz[fi + k2] - a;\n          f2 = fz[fi + k2] + a;\n          g3 = fz[gi + k2] - b;\n          g2 = fz[gi + k2] + b;\n          b = s1 * f2 - c1 * g3;\n          a = c1 * f2 + s1 * g3;\n          fz[fi + k2] = f0 - a;\n          fz[fi + 0] = f0 + a;\n          fz[gi + k3] = g1 - b;\n          fz[gi + k1] = g1 + b;\n          b = c1 * g2 - s1 * f3;\n          a = s1 * g2 + c1 * f3;\n          fz[gi + k2] = g0 - a;\n          fz[gi + 0] = g0 + a;\n          fz[fi + k3] = f1 - b;\n          fz[fi + k1] = f1 + b;\n          gi += k4;\n          fi += k4;\n        } while (fi < fn);\n        c2 = c1;\n        c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n        s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n      }\n      tri += 2;\n    } while (k4 < n);\n  }\n  var rv_tbl = [\n    0,\n    128,\n    64,\n    192,\n    32,\n    160,\n    96,\n    224,\n    16,\n    144,\n    80,\n    208,\n    48,\n    176,\n    112,\n    240,\n    8,\n    136,\n    72,\n    200,\n    40,\n    168,\n    104,\n    232,\n    24,\n    152,\n    88,\n    216,\n    56,\n    184,\n    120,\n    248,\n    4,\n    132,\n    68,\n    196,\n    36,\n    164,\n    100,\n    228,\n    20,\n    148,\n    84,\n    212,\n    52,\n    180,\n    116,\n    244,\n    12,\n    140,\n    76,\n    204,\n    44,\n    172,\n    108,\n    236,\n    28,\n    156,\n    92,\n    220,\n    60,\n    188,\n    124,\n    252,\n    2,\n    130,\n    66,\n    194,\n    34,\n    162,\n    98,\n    226,\n    18,\n    146,\n    82,\n    210,\n    50,\n    178,\n    114,\n    242,\n    10,\n    138,\n    74,\n    202,\n    42,\n    170,\n    106,\n    234,\n    26,\n    154,\n    90,\n    218,\n    58,\n    186,\n    122,\n    250,\n    6,\n    134,\n    70,\n    198,\n    38,\n    166,\n    102,\n    230,\n    22,\n    150,\n    86,\n    214,\n    54,\n    182,\n    118,\n    246,\n    14,\n    142,\n    78,\n    206,\n    46,\n    174,\n    110,\n    238,\n    30,\n    158,\n    94,\n    222,\n    62,\n    190,\n    126,\n    254\n  ];\n  this.fft_short = function(gfc, x_real, chn, buffer, bufPos) {\n    for (var b = 0; b < 3; b++) {\n      var x = Encoder.BLKSIZE_s / 2;\n      var k = 65535 & 576 / 3 * (b + 1);\n      var j = Encoder.BLKSIZE_s / 8 - 1;\n      do {\n        var f0, f1, f2, f3, w;\n        var i = rv_tbl[j << 2] & 255;\n        f0 = window_s[i] * buffer[chn][bufPos + i + k];\n        w = window_s[127 - i] * buffer[chn][bufPos + i + k + 128];\n        f1 = f0 - w;\n        f0 = f0 + w;\n        f2 = window_s[i + 64] * buffer[chn][bufPos + i + k + 64];\n        w = window_s[63 - i] * buffer[chn][bufPos + i + k + 192];\n        f3 = f2 - w;\n        f2 = f2 + w;\n        x -= 4;\n        x_real[b][x + 0] = f0 + f2;\n        x_real[b][x + 2] = f0 - f2;\n        x_real[b][x + 1] = f1 + f3;\n        x_real[b][x + 3] = f1 - f3;\n        f0 = window_s[i + 1] * buffer[chn][bufPos + i + k + 1];\n        w = window_s[126 - i] * buffer[chn][bufPos + i + k + 129];\n        f1 = f0 - w;\n        f0 = f0 + w;\n        f2 = window_s[i + 65] * buffer[chn][bufPos + i + k + 65];\n        w = window_s[62 - i] * buffer[chn][bufPos + i + k + 193];\n        f3 = f2 - w;\n        f2 = f2 + w;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 0] = f0 + f2;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 2] = f0 - f2;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 1] = f1 + f3;\n        x_real[b][x + Encoder.BLKSIZE_s / 2 + 3] = f1 - f3;\n      } while (--j >= 0);\n      fht(x_real[b], x, Encoder.BLKSIZE_s / 2);\n    }\n  };\n  this.fft_long = function(gfc, y, chn, buffer, bufPos) {\n    var jj = Encoder.BLKSIZE / 8 - 1;\n    var x = Encoder.BLKSIZE / 2;\n    do {\n      var f0, f1, f2, f3, w;\n      var i = rv_tbl[jj] & 255;\n      f0 = window2[i] * buffer[chn][bufPos + i];\n      w = window2[i + 512] * buffer[chn][bufPos + i + 512];\n      f1 = f0 - w;\n      f0 = f0 + w;\n      f2 = window2[i + 256] * buffer[chn][bufPos + i + 256];\n      w = window2[i + 768] * buffer[chn][bufPos + i + 768];\n      f3 = f2 - w;\n      f2 = f2 + w;\n      x -= 4;\n      y[x + 0] = f0 + f2;\n      y[x + 2] = f0 - f2;\n      y[x + 1] = f1 + f3;\n      y[x + 3] = f1 - f3;\n      f0 = window2[i + 1] * buffer[chn][bufPos + i + 1];\n      w = window2[i + 513] * buffer[chn][bufPos + i + 513];\n      f1 = f0 - w;\n      f0 = f0 + w;\n      f2 = window2[i + 257] * buffer[chn][bufPos + i + 257];\n      w = window2[i + 769] * buffer[chn][bufPos + i + 769];\n      f3 = f2 - w;\n      f2 = f2 + w;\n      y[x + Encoder.BLKSIZE / 2 + 0] = f0 + f2;\n      y[x + Encoder.BLKSIZE / 2 + 2] = f0 - f2;\n      y[x + Encoder.BLKSIZE / 2 + 1] = f1 + f3;\n      y[x + Encoder.BLKSIZE / 2 + 3] = f1 - f3;\n    } while (--jj >= 0);\n    fht(y, x, Encoder.BLKSIZE / 2);\n  };\n  this.init_fft = function(gfc) {\n    for (var i = 0; i < Encoder.BLKSIZE; i++) {\n      window2[i] = 0.42 - 0.5 * Math.cos(2 * Math.PI * (i + 0.5) / Encoder.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + 0.5) / Encoder.BLKSIZE);\n    }\n    for (var i = 0; i < Encoder.BLKSIZE_s / 2; i++) {\n      window_s[i] = 0.5 * (1 - Math.cos(2 * Math.PI * (i + 0.5) / Encoder.BLKSIZE_s));\n    }\n  };\n}\nvar VbrMode$5 = common.VbrMode;\nvar Float$1 = common.Float;\nvar ShortBlock$2 = common.ShortBlock;\nvar Util$2 = common.Util;\nvar Arrays$5 = common.Arrays;\nvar new_float$a = common.new_float;\nvar new_float_n$3 = common.new_float_n;\nvar new_int$b = common.new_int;\nvar assert$9 = common.assert;\nfunction PsyModel() {\n  var fft = new FFT();\n  var LOG10 = 2.302585092994046;\n  var rpelev = 2;\n  var rpelev2 = 16;\n  var rpelev_s = 2;\n  var rpelev2_s = 16;\n  var DELBARK = 0.34;\n  var VO_SCALE = 1 / (14752 * 14752) / (Encoder.BLKSIZE / 2);\n  var temporalmask_sustain_sec = 0.01;\n  var NS_PREECHO_ATT0 = 0.8;\n  var NS_PREECHO_ATT1 = 0.6;\n  var NS_PREECHO_ATT2 = 0.3;\n  var NS_MSFIX = 3.5;\n  var NSFIRLEN = 21;\n  var LN_TO_LOG10 = 0.2302585093;\n  function NON_LINEAR_SCALE_ENERGY(x) {\n    return x;\n  }\n  function psycho_loudness_approx(energy, gfc) {\n    var loudness_power = 0;\n    for (var i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n      loudness_power += energy[i] * gfc.ATH.eql_w[i];\n    }\n    loudness_power *= VO_SCALE;\n    return loudness_power;\n  }\n  function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n    var gfc = gfp.internal_flags;\n    if (chn < 2) {\n      fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n      fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n    } else if (chn == 2) {\n      for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n        var l = wsamp_l[wsamp_lPos + 0][j];\n        var r = wsamp_l[wsamp_lPos + 1][j];\n        wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$2.SQRT2 * 0.5;\n        wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$2.SQRT2 * 0.5;\n      }\n      for (var b = 2; b >= 0; --b) {\n        for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n          var l = wsamp_s[wsamp_sPos + 0][b][j];\n          var r = wsamp_s[wsamp_sPos + 1][b][j];\n          wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util$2.SQRT2 * 0.5;\n          wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util$2.SQRT2 * 0.5;\n        }\n      }\n    }\n    fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n    fftenergy[0] *= fftenergy[0];\n    for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n      var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n      var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n      fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n        (re * re + im * im) * 0.5\n      );\n    }\n    for (var b = 2; b >= 0; --b) {\n      fftenergy_s[b][0] = wsamp_s[wsamp_sPos + 0][b][0];\n      fftenergy_s[b][0] *= fftenergy_s[b][0];\n      for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n        var re = wsamp_s[wsamp_sPos + 0][b][Encoder.BLKSIZE_s / 2 - j];\n        var im = wsamp_s[wsamp_sPos + 0][b][Encoder.BLKSIZE_s / 2 + j];\n        fftenergy_s[b][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n          (re * re + im * im) * 0.5\n        );\n      }\n    }\n    {\n      var totalenergy = 0;\n      for (var j = 11; j < Encoder.HBLKSIZE; j++)\n        totalenergy += fftenergy[j];\n      gfc.tot_ener[chn] = totalenergy;\n    }\n    if (gfp.analysis) {\n      for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n        gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n        gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n      }\n      gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n    }\n    if (gfp.athaa_loudapprox == 2 && chn < 2) {\n      gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n      gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n    }\n  }\n  var I1LIMIT = 8;\n  var I2LIMIT = 23;\n  var MLIMIT = 15;\n  var ma_max_i1;\n  var ma_max_i2;\n  var ma_max_m;\n  var tab = [\n    1,\n    0.79433,\n    0.63096,\n    0.63096,\n    0.63096,\n    0.63096,\n    0.63096,\n    0.25119,\n    0.11749\n  ];\n  function init_mask_add_max_values() {\n    ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16);\n    ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16);\n    ma_max_m = Math.pow(10, MLIMIT / 10);\n  }\n  var table1 = [\n    3.3246 * 3.3246,\n    3.23837 * 3.23837,\n    3.15437 * 3.15437,\n    3.00412 * 3.00412,\n    2.86103 * 2.86103,\n    2.65407 * 2.65407,\n    2.46209 * 2.46209,\n    2.284 * 2.284,\n    2.11879 * 2.11879,\n    1.96552 * 1.96552,\n    1.82335 * 1.82335,\n    1.69146 * 1.69146,\n    1.56911 * 1.56911,\n    1.46658 * 1.46658,\n    1.37074 * 1.37074,\n    1.31036 * 1.31036,\n    1.25264 * 1.25264,\n    1.20648 * 1.20648,\n    1.16203 * 1.16203,\n    1.12765 * 1.12765,\n    1.09428 * 1.09428,\n    1.0659 * 1.0659,\n    1.03826 * 1.03826,\n    1.01895 * 1.01895,\n    1\n  ];\n  var table2 = [\n    1.33352 * 1.33352,\n    1.35879 * 1.35879,\n    1.38454 * 1.38454,\n    1.39497 * 1.39497,\n    1.40548 * 1.40548,\n    1.3537 * 1.3537,\n    1.30382 * 1.30382,\n    1.22321 * 1.22321,\n    1.14758 * 1.14758,\n    1\n  ];\n  var table3 = [\n    2.35364 * 2.35364,\n    2.29259 * 2.29259,\n    2.23313 * 2.23313,\n    2.12675 * 2.12675,\n    2.02545 * 2.02545,\n    1.87894 * 1.87894,\n    1.74303 * 1.74303,\n    1.61695 * 1.61695,\n    1.49999 * 1.49999,\n    1.39148 * 1.39148,\n    1.29083 * 1.29083,\n    1.19746 * 1.19746,\n    1.11084 * 1.11084,\n    1.03826 * 1.03826\n  ];\n  function mask_add(m1, m2, kk, b, gfc, shortblock) {\n    var ratio;\n    if (m2 > m1) {\n      if (m2 < m1 * ma_max_i2)\n        ratio = m2 / m1;\n      else\n        return m1 + m2;\n    } else {\n      if (m1 >= m2 * ma_max_i2)\n        return m1 + m2;\n      ratio = m1 / m2;\n    }\n    m1 += m2;\n    if (b + 3 <= 3 + 3) {\n      if (ratio >= ma_max_i1) {\n        return m1;\n      }\n      var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n      return m1 * table2[i];\n    }\n    var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n    if (shortblock != 0) {\n      m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n    } else {\n      m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n    }\n    if (m1 < ma_max_m * m2) {\n      if (m1 > m2) {\n        var f, r;\n        f = 1;\n        if (i <= 13)\n          f = table3[i];\n        r = Util$2.FAST_LOG10_X(m1 / m2, 10 / 15);\n        return m1 * ((table1[i] - f) * r + f);\n      }\n      if (i > 13)\n        return m1;\n      return m1 * table3[i];\n    }\n    return m1 * table1[i];\n  }\n  var table2_ = [\n    1.33352 * 1.33352,\n    1.35879 * 1.35879,\n    1.38454 * 1.38454,\n    1.39497 * 1.39497,\n    1.40548 * 1.40548,\n    1.3537 * 1.3537,\n    1.30382 * 1.30382,\n    1.22321 * 1.22321,\n    1.14758 * 1.14758,\n    1\n  ];\n  function vbrpsy_mask_add(m1, m2, b) {\n    var ratio;\n    if (m1 < 0) {\n      m1 = 0;\n    }\n    if (m2 < 0) {\n      m2 = 0;\n    }\n    if (m1 <= 0) {\n      return m2;\n    }\n    if (m2 <= 0) {\n      return m1;\n    }\n    if (m2 > m1) {\n      ratio = m2 / m1;\n    } else {\n      ratio = m1 / m2;\n    }\n    if (b >= -2 && b <= 2) {\n      if (ratio >= ma_max_i1) {\n        return m1 + m2;\n      } else {\n        var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n        return (m1 + m2) * table2_[i];\n      }\n    }\n    if (ratio < ma_max_i2) {\n      return m1 + m2;\n    }\n    if (m1 < m2) {\n      m1 = m2;\n    }\n    return m1;\n  }\n  function calc_interchannel_masking(gfp, ratio) {\n    var gfc = gfp.internal_flags;\n    if (gfc.channels_out > 1) {\n      for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n        var l = gfc.thm[0].l[sb];\n        var r = gfc.thm[1].l[sb];\n        gfc.thm[0].l[sb] += r * ratio;\n        gfc.thm[1].l[sb] += l * ratio;\n      }\n      for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n        for (var sblock = 0; sblock < 3; sblock++) {\n          var l = gfc.thm[0].s[sb][sblock];\n          var r = gfc.thm[1].s[sb][sblock];\n          gfc.thm[0].s[sb][sblock] += r * ratio;\n          gfc.thm[1].s[sb][sblock] += l * ratio;\n        }\n      }\n    }\n  }\n  function msfix1(gfc) {\n    for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n      if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb] || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb]) {\n        continue;\n      }\n      var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n      var rmid = Math.max(gfc.thm[2].l[sb], Math.min(gfc.thm[3].l[sb], mld));\n      mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n      var rside = Math.max(gfc.thm[3].l[sb], Math.min(gfc.thm[2].l[sb], mld));\n      gfc.thm[2].l[sb] = rmid;\n      gfc.thm[3].l[sb] = rside;\n    }\n    for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock] || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock]) {\n          continue;\n        }\n        var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n        var rmid = Math.max(\n          gfc.thm[2].s[sb][sblock],\n          Math.min(gfc.thm[3].s[sb][sblock], mld)\n        );\n        mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n        var rside = Math.max(\n          gfc.thm[3].s[sb][sblock],\n          Math.min(gfc.thm[2].s[sb][sblock], mld)\n        );\n        gfc.thm[2].s[sb][sblock] = rmid;\n        gfc.thm[3].s[sb][sblock] = rside;\n      }\n    }\n  }\n  function ns_msfix(gfc, msfix, athadjust) {\n    var msfix2 = msfix;\n    var athlower = Math.pow(10, athadjust);\n    msfix *= 2;\n    msfix2 *= 2;\n    for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n      var thmLR, thmM, thmS, ath;\n      ath = gfc.ATH.cb_l[gfc.bm_l[sb]] * athlower;\n      thmLR = Math.min(\n        Math.max(gfc.thm[0].l[sb], ath),\n        Math.max(gfc.thm[1].l[sb], ath)\n      );\n      thmM = Math.max(gfc.thm[2].l[sb], ath);\n      thmS = Math.max(gfc.thm[3].l[sb], ath);\n      if (thmLR * msfix < thmM + thmS) {\n        var f = thmLR * msfix2 / (thmM + thmS);\n        thmM *= f;\n        thmS *= f;\n      }\n      gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n      gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n    }\n    athlower *= Encoder.BLKSIZE_s / Encoder.BLKSIZE;\n    for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        var thmLR, thmM, thmS, ath;\n        ath = gfc.ATH.cb_s[gfc.bm_s[sb]] * athlower;\n        thmLR = Math.min(\n          Math.max(gfc.thm[0].s[sb][sblock], ath),\n          Math.max(gfc.thm[1].s[sb][sblock], ath)\n        );\n        thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n        thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n        if (thmLR * msfix < thmM + thmS) {\n          var f = thmLR * msfix / (thmM + thmS);\n          thmM *= f;\n          thmS *= f;\n        }\n        gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock], thmM);\n        gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock], thmS);\n      }\n    }\n  }\n  function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n    var sb, b;\n    var enn = 0;\n    var thmm = 0;\n    for (sb = b = 0; sb < Encoder.SBMAX_s; ++b, ++sb) {\n      var bo_s_sb = gfc.bo_s[sb];\n      var npart_s = gfc.npart_s;\n      var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n      while (b < b_lim) {\n        assert$9(eb[b] >= 0);\n        assert$9(thr[b] >= 0);\n        enn += eb[b];\n        thmm += thr[b];\n        b++;\n      }\n      gfc.en[chn].s[sb][sblock] = enn;\n      gfc.thm[chn].s[sb][sblock] = thmm;\n      if (b >= npart_s) {\n        ++sb;\n        break;\n      }\n      assert$9(eb[b] >= 0);\n      assert$9(thr[b] >= 0);\n      {\n        var w_curr = gfc.PSY.bo_s_weight[sb];\n        var w_next = 1 - w_curr;\n        enn = w_curr * eb[b];\n        thmm = w_curr * thr[b];\n        gfc.en[chn].s[sb][sblock] += enn;\n        gfc.thm[chn].s[sb][sblock] += thmm;\n        enn = w_next * eb[b];\n        thmm = w_next * thr[b];\n      }\n    }\n    for (; sb < Encoder.SBMAX_s; ++sb) {\n      gfc.en[chn].s[sb][sblock] = 0;\n      gfc.thm[chn].s[sb][sblock] = 0;\n    }\n  }\n  function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n    var sb, b;\n    var enn = 0;\n    var thmm = 0;\n    for (sb = b = 0; sb < Encoder.SBMAX_l; ++b, ++sb) {\n      var bo_l_sb = gfc.bo_l[sb];\n      var npart_l = gfc.npart_l;\n      var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n      while (b < b_lim) {\n        assert$9(eb[b] >= 0);\n        assert$9(thr[b] >= 0);\n        enn += eb[b];\n        thmm += thr[b];\n        b++;\n      }\n      gfc.en[chn].l[sb] = enn;\n      gfc.thm[chn].l[sb] = thmm;\n      if (b >= npart_l) {\n        ++sb;\n        break;\n      }\n      assert$9(eb[b] >= 0);\n      assert$9(thr[b] >= 0);\n      {\n        var w_curr = gfc.PSY.bo_l_weight[sb];\n        var w_next = 1 - w_curr;\n        enn = w_curr * eb[b];\n        thmm = w_curr * thr[b];\n        gfc.en[chn].l[sb] += enn;\n        gfc.thm[chn].l[sb] += thmm;\n        enn = w_next * eb[b];\n        thmm = w_next * thr[b];\n      }\n    }\n    for (; sb < Encoder.SBMAX_l; ++sb) {\n      gfc.en[chn].l[sb] = 0;\n      gfc.thm[chn].l[sb] = 0;\n    }\n  }\n  function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n    var gfc = gfp.internal_flags;\n    var j, b;\n    for (b = j = 0; b < gfc.npart_s; ++b) {\n      var ebb = 0;\n      var n = gfc.numlines_s[b];\n      for (var i = 0; i < n; ++i, ++j) {\n        var el = fftenergy_s[sblock][j];\n        ebb += el;\n      }\n      eb[b] = ebb;\n    }\n    assert$9(b == gfc.npart_s);\n    for (j = b = 0; b < gfc.npart_s; b++) {\n      var kk = gfc.s3ind_s[b][0];\n      var ecb = gfc.s3_ss[j++] * eb[kk];\n      ++kk;\n      while (kk <= gfc.s3ind_s[b][1]) {\n        ecb += gfc.s3_ss[j] * eb[kk];\n        ++j;\n        ++kk;\n      }\n      {\n        var x = rpelev_s * gfc.nb_s1[chn][b];\n        thr[b] = Math.min(ecb, x);\n      }\n      if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n        var x = rpelev2_s * gfc.nb_s2[chn][b];\n        var y = thr[b];\n        thr[b] = Math.min(x, y);\n      }\n      gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n      gfc.nb_s1[chn][b] = ecb;\n      assert$9(thr[b] >= 0);\n    }\n    for (; b <= Encoder.CBANDS; ++b) {\n      eb[b] = 0;\n      thr[b] = 0;\n    }\n  }\n  function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n    var gfc = gfp.internal_flags;\n    if (gfp.short_blocks == ShortBlock$2.short_block_coupled && !(uselongblock[0] != 0 && uselongblock[1] != 0)) {\n      uselongblock[0] = uselongblock[1] = 0;\n    }\n    for (var chn = 0; chn < gfc.channels_out; chn++) {\n      blocktype[chn] = Encoder.NORM_TYPE;\n      if (gfp.short_blocks == ShortBlock$2.short_block_dispensed) {\n        uselongblock[chn] = 1;\n      }\n      if (gfp.short_blocks == ShortBlock$2.short_block_forced) {\n        uselongblock[chn] = 0;\n      }\n      if (uselongblock[chn] != 0) {\n        assert$9(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n        if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) {\n          blocktype[chn] = Encoder.STOP_TYPE;\n        }\n      } else {\n        blocktype[chn] = Encoder.SHORT_TYPE;\n        if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.START_TYPE;\n        }\n        if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n        }\n      }\n      blocktype_d[chn] = gfc.blocktype_old[chn];\n      gfc.blocktype_old[chn] = blocktype[chn];\n    }\n  }\n  function NS_INTERP(x, y, r) {\n    if (r >= 1) {\n      return x;\n    }\n    if (r <= 0)\n      return y;\n    if (y > 0) {\n      return Math.pow(x / y, r) * y;\n    }\n    return 0;\n  }\n  var regcoef_s = [\n    11.8,\n    13.6,\n    17.2,\n    32,\n    46.5,\n    51.3,\n    57.5,\n    67.1,\n    71.5,\n    84.6,\n    97.6,\n    130\n  ];\n  function pecalc_s(mr, masking_lower) {\n    var pe_s = 1236.28 / 4;\n    for (var sb = 0; sb < Encoder.SBMAX_s - 1; sb++) {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        var thm = mr.thm.s[sb][sblock];\n        if (thm > 0) {\n          var x = thm * masking_lower;\n          var en = mr.en.s[sb][sblock];\n          if (en > x) {\n            if (en > x * 1e10) {\n              pe_s += regcoef_s[sb] * (10 * LOG10);\n            } else {\n              pe_s += regcoef_s[sb] * Util$2.FAST_LOG10(en / x);\n            }\n          }\n        }\n      }\n    }\n    return pe_s;\n  }\n  var regcoef_l = [\n    6.8,\n    5.8,\n    5.8,\n    6.4,\n    6.5,\n    9.9,\n    12.1,\n    14.4,\n    15,\n    18.9,\n    21.6,\n    26.9,\n    34.2,\n    40.2,\n    46.8,\n    56.5,\n    60.7,\n    73.9,\n    85.7,\n    93.4,\n    126.1\n  ];\n  function pecalc_l(mr, masking_lower) {\n    var pe_l = 1124.23 / 4;\n    for (var sb = 0; sb < Encoder.SBMAX_l - 1; sb++) {\n      var thm = mr.thm.l[sb];\n      if (thm > 0) {\n        var x = thm * masking_lower;\n        var en = mr.en.l[sb];\n        if (en > x) {\n          if (en > x * 1e10) {\n            pe_l += regcoef_l[sb] * (10 * LOG10);\n          } else {\n            pe_l += regcoef_l[sb] * Util$2.FAST_LOG10(en / x);\n          }\n        }\n      }\n    }\n    return pe_l;\n  }\n  function calc_energy(gfc, fftenergy, eb, max, avg) {\n    var b, j;\n    for (b = j = 0; b < gfc.npart_l; ++b) {\n      var ebb = 0;\n      var m = 0;\n      var i;\n      for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n        var el = fftenergy[j];\n        ebb += el;\n        if (m < el)\n          m = el;\n      }\n      eb[b] = ebb;\n      max[b] = m;\n      avg[b] = ebb * gfc.rnumlines_l[b];\n      assert$9(gfc.rnumlines_l[b] >= 0);\n      assert$9(eb[b] >= 0);\n      assert$9(max[b] >= 0);\n      assert$9(avg[b] >= 0);\n    }\n  }\n  function calc_mask_index_l(gfc, max, avg, mask_idx) {\n    var last_tab_entry = tab.length - 1;\n    var b = 0;\n    var a = avg[b] + avg[b + 1];\n    if (a > 0) {\n      var m = max[b];\n      if (m < max[b + 1])\n        m = max[b + 1];\n      assert$9(gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    for (b = 1; b < gfc.npart_l - 1; b++) {\n      a = avg[b - 1] + avg[b] + avg[b + 1];\n      if (a > 0) {\n        var m = max[b - 1];\n        if (m < max[b])\n          m = max[b];\n        if (m < max[b + 1])\n          m = max[b + 1];\n        assert$9(\n          gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1 > 0\n        );\n        a = 20 * (m * 3 - a) / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n        var k = 0 | a;\n        if (k > last_tab_entry)\n          k = last_tab_entry;\n        mask_idx[b] = k;\n      } else {\n        mask_idx[b] = 0;\n      }\n    }\n    assert$9(b == gfc.npart_l - 1);\n    a = avg[b - 1] + avg[b];\n    if (a > 0) {\n      var m = max[b - 1];\n      if (m < max[b])\n        m = max[b];\n      assert$9(gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    assert$9(b == gfc.npart_l - 1);\n  }\n  var fircoef = [\n    -865163e-23 * 2,\n    -851586e-8 * 2,\n    -674764e-23 * 2,\n    0.0209036 * 2,\n    -336639e-22 * 2,\n    -0.0438162 * 2,\n    -154175e-22 * 2,\n    0.0931738 * 2,\n    -552212e-22 * 2,\n    -0.313819 * 2\n  ];\n  this.L3psycho_anal_ns = function(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n    var gfc = gfp.internal_flags;\n    var wsamp_L = new_float_n$3([2, Encoder.BLKSIZE]);\n    var wsamp_S = new_float_n$3([2, 3, Encoder.BLKSIZE_s]);\n    var eb_l = new_float$a(Encoder.CBANDS + 1);\n    var eb_s = new_float$a(Encoder.CBANDS + 1);\n    var thr = new_float$a(Encoder.CBANDS + 2);\n    var blocktype = new_int$b(2);\n    var uselongblock = new_int$b(2);\n    var numchn, chn;\n    var b, i, j, k;\n    var sb, sblock;\n    var ns_hpfsmpl = new_float_n$3([2, 576]);\n    var pcfact;\n    var mask_idx_l = new_int$b(Encoder.CBANDS + 2);\n    var mask_idx_s = new_int$b(Encoder.CBANDS + 2);\n    Arrays$5.fill(mask_idx_s, 0);\n    numchn = gfc.channels_out;\n    if (gfp.mode == MPEGMode.JOINT_STEREO)\n      numchn = 4;\n    if (gfp.VBR == VbrMode$5.vbr_off) {\n      pcfact = gfc.ResvMax == 0 ? 0 : gfc.ResvSize / gfc.ResvMax * 0.5;\n    } else if (gfp.VBR == VbrMode$5.vbr_rh || gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt) {\n      pcfact = 0.6;\n    } else\n      pcfact = 1;\n    for (chn = 0; chn < gfc.channels_out; chn++) {\n      var firbuf2 = buffer[chn];\n      var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n      for (i = 0; i < 576; i++) {\n        var sum1, sum2;\n        sum1 = firbuf2[firbufPos + i + 10];\n        sum2 = 0;\n        for (j = 0; j < (NSFIRLEN - 1) / 2 - 1; j += 2) {\n          sum1 += fircoef[j] * (firbuf2[firbufPos + i + j] + firbuf2[firbufPos + i + NSFIRLEN - j]);\n          sum2 += fircoef[j + 1] * (firbuf2[firbufPos + i + j + 1] + firbuf2[firbufPos + i + NSFIRLEN - j - 1]);\n        }\n        ns_hpfsmpl[chn][i] = sum1 + sum2;\n      }\n      masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n      masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n      if (numchn > 2) {\n        masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n        masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n      }\n    }\n    for (chn = 0; chn < numchn; chn++) {\n      var wsamp_l;\n      var wsamp_s;\n      var en_subshort = new_float$a(12);\n      var en_short = [0, 0, 0, 0];\n      var attack_intensity = new_float$a(12);\n      var ns_uselongblock = 1;\n      var attackThreshold;\n      var max = new_float$a(Encoder.CBANDS);\n      var avg = new_float$a(Encoder.CBANDS);\n      var ns_attacks = [0, 0, 0, 0];\n      var fftenergy = new_float$a(Encoder.HBLKSIZE);\n      var fftenergy_s = new_float_n$3([3, Encoder.HBLKSIZE_s]);\n      assert$9(gfc.npart_s <= Encoder.CBANDS);\n      assert$9(gfc.npart_l <= Encoder.CBANDS);\n      for (i = 0; i < 3; i++) {\n        en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n        assert$9(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n        attack_intensity[i] = en_subshort[i] / gfc.nsPsy.last_en_subshort[chn][i + 4];\n        en_short[0] += en_subshort[i];\n      }\n      if (chn == 2) {\n        for (i = 0; i < 576; i++) {\n          var l, r;\n          l = ns_hpfsmpl[0][i];\n          r = ns_hpfsmpl[1][i];\n          ns_hpfsmpl[0][i] = l + r;\n          ns_hpfsmpl[1][i] = l - r;\n        }\n      }\n      {\n        var pf = ns_hpfsmpl[chn & 1];\n        var pfPos = 0;\n        for (i = 0; i < 9; i++) {\n          var pfe = pfPos + 576 / 9;\n          var p2 = 1;\n          for (; pfPos < pfe; pfPos++) {\n            if (p2 < Math.abs(pf[pfPos]))\n              p2 = Math.abs(pf[pfPos]);\n          }\n          gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p2;\n          en_short[1 + i / 3] += p2;\n          if (p2 > en_subshort[i + 3 - 2]) {\n            assert$9(en_subshort[i + 3 - 2] > 0);\n            p2 = p2 / en_subshort[i + 3 - 2];\n          } else if (en_subshort[i + 3 - 2] > p2 * 10) {\n            p2 = en_subshort[i + 3 - 2] / (p2 * 10);\n          } else\n            p2 = 0;\n          attack_intensity[i + 3] = p2;\n        }\n      }\n      if (gfp.analysis) {\n        var x = attack_intensity[0];\n        for (i = 1; i < 12; i++) {\n          if (x < attack_intensity[i])\n            x = attack_intensity[i];\n        }\n        gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n        gfc.pinfo.ers_save[chn] = x;\n      }\n      attackThreshold = chn == 3 ? gfc.nsPsy.attackthre_s : gfc.nsPsy.attackthre;\n      for (i = 0; i < 12; i++) {\n        if (ns_attacks[i / 3] == 0 && attack_intensity[i] > attackThreshold) {\n          ns_attacks[i / 3] = i % 3 + 1;\n        }\n      }\n      for (i = 1; i < 4; i++) {\n        var ratio;\n        if (en_short[i - 1] > en_short[i]) {\n          assert$9(en_short[i] > 0);\n          ratio = en_short[i - 1] / en_short[i];\n        } else {\n          assert$9(en_short[i - 1] > 0);\n          ratio = en_short[i] / en_short[i - 1];\n        }\n        if (ratio < 1.7) {\n          ns_attacks[i] = 0;\n          if (i == 1)\n            ns_attacks[0] = 0;\n        }\n      }\n      if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0) {\n        ns_attacks[0] = 0;\n      }\n      if (gfc.nsPsy.lastAttacks[chn] == 3 || ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3] != 0) {\n        ns_uselongblock = 0;\n        if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n          ns_attacks[1] = 0;\n        if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n          ns_attacks[2] = 0;\n        if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n          ns_attacks[3] = 0;\n      }\n      if (chn < 2) {\n        uselongblock[chn] = ns_uselongblock;\n      } else {\n        if (ns_uselongblock == 0) {\n          uselongblock[0] = uselongblock[1] = 0;\n        }\n      }\n      energy[chn] = gfc.tot_ener[chn];\n      wsamp_s = wsamp_S;\n      wsamp_l = wsamp_L;\n      compute_ffts(\n        gfp,\n        fftenergy,\n        fftenergy_s,\n        wsamp_l,\n        chn & 1,\n        wsamp_s,\n        chn & 1,\n        gr_out,\n        chn,\n        buffer,\n        bufPos\n      );\n      calc_energy(gfc, fftenergy, eb_l, max, avg);\n      calc_mask_index_l(gfc, max, avg, mask_idx_l);\n      for (sblock = 0; sblock < 3; sblock++) {\n        var enn, thmm;\n        compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n        convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n        for (sb = 0; sb < Encoder.SBMAX_s; sb++) {\n          thmm = gfc.thm[chn].s[sb][sblock];\n          thmm *= NS_PREECHO_ATT0;\n          if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n            var idx = sblock != 0 ? sblock - 1 : 2;\n            var p2 = NS_INTERP(\n              gfc.thm[chn].s[sb][idx],\n              thmm,\n              NS_PREECHO_ATT1 * pcfact\n            );\n            thmm = Math.min(thmm, p2);\n          }\n          if (ns_attacks[sblock] == 1) {\n            var idx = sblock != 0 ? sblock - 1 : 2;\n            var p2 = NS_INTERP(\n              gfc.thm[chn].s[sb][idx],\n              thmm,\n              NS_PREECHO_ATT2 * pcfact\n            );\n            thmm = Math.min(thmm, p2);\n          } else if (sblock != 0 && ns_attacks[sblock - 1] == 3 || sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3) {\n            var idx = sblock != 2 ? sblock + 1 : 0;\n            var p2 = NS_INTERP(\n              gfc.thm[chn].s[sb][idx],\n              thmm,\n              NS_PREECHO_ATT2 * pcfact\n            );\n            thmm = Math.min(thmm, p2);\n          }\n          enn = en_subshort[sblock * 3 + 3] + en_subshort[sblock * 3 + 4] + en_subshort[sblock * 3 + 5];\n          if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n            thmm *= 0.5;\n            if (en_subshort[sblock * 3 + 4] * 6 < enn)\n              thmm *= 0.5;\n          }\n          gfc.thm[chn].s[sb][sblock] = thmm;\n        }\n      }\n      gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n      k = 0;\n      {\n        for (b = 0; b < gfc.npart_l; b++) {\n          var kk = gfc.s3ind[b][0];\n          var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n          var ecb = gfc.s3_ll[k++] * eb2;\n          while (++kk <= gfc.s3ind[b][1]) {\n            eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n            ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b, gfc, 0);\n          }\n          ecb *= 0.158489319246111;\n          if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE)\n            thr[b] = ecb;\n          else {\n            thr[b] = NS_INTERP(\n              Math.min(\n                ecb,\n                Math.min(rpelev * gfc.nb_1[chn][b], rpelev2 * gfc.nb_2[chn][b])\n              ),\n              ecb,\n              pcfact\n            );\n          }\n          gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n          gfc.nb_1[chn][b] = ecb;\n        }\n      }\n      for (; b <= Encoder.CBANDS; ++b) {\n        eb_l[b] = 0;\n        thr[b] = 0;\n      }\n      convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n    }\n    if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n      if (gfp.interChRatio > 0) {\n        calc_interchannel_masking(gfp, gfp.interChRatio);\n      }\n    }\n    if (gfp.mode == MPEGMode.JOINT_STEREO) {\n      var msfix;\n      msfix1(gfc);\n      msfix = gfp.msfix;\n      if (Math.abs(msfix) > 0) {\n        ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n      }\n    }\n    block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n    for (chn = 0; chn < numchn; chn++) {\n      var ppe;\n      var ppePos = 0;\n      var type;\n      var mr;\n      if (chn > 1) {\n        ppe = percep_MS_entropy;\n        ppePos = -2;\n        type = Encoder.NORM_TYPE;\n        if (blocktype_d[0] == Encoder.SHORT_TYPE || blocktype_d[1] == Encoder.SHORT_TYPE) {\n          type = Encoder.SHORT_TYPE;\n        }\n        mr = masking_MS_ratio[gr_out][chn - 2];\n      } else {\n        ppe = percep_entropy;\n        ppePos = 0;\n        type = blocktype_d[chn];\n        mr = masking_ratio[gr_out][chn];\n      }\n      if (type == Encoder.SHORT_TYPE) {\n        ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n      } else\n        ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n      if (gfp.analysis)\n        gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n    }\n    return 0;\n  };\n  function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n    var gfc = gfp.internal_flags;\n    if (chn < 2) {\n      fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n    } else if (chn == 2) {\n      for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n        var l = wsamp_l[wsamp_lPos + 0][j];\n        var r = wsamp_l[wsamp_lPos + 1][j];\n        wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$2.SQRT2 * 0.5;\n        wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$2.SQRT2 * 0.5;\n      }\n    }\n    fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n    fftenergy[0] *= fftenergy[0];\n    for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n      var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n      var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n      fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n        (re * re + im * im) * 0.5\n      );\n    }\n    {\n      var totalenergy = 0;\n      for (var j = 11; j < Encoder.HBLKSIZE; j++)\n        totalenergy += fftenergy[j];\n      gfc.tot_ener[chn] = totalenergy;\n    }\n    if (gfp.analysis) {\n      for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n        gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n        gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n      }\n      gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n    }\n  }\n  function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n    var gfc = gfp.internal_flags;\n    if (sblock == 0 && chn < 2) {\n      fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n    }\n    if (chn == 2) {\n      for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n        var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n        var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n        wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util$2.SQRT2 * 0.5;\n        wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util$2.SQRT2 * 0.5;\n      }\n    }\n    fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n    fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n    for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n      var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 - j];\n      var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 + j];\n      fftenergy_s[sblock][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n        (re * re + im * im) * 0.5\n      );\n    }\n  }\n  function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n    var gfc = gfp.internal_flags;\n    if (gfp.athaa_loudapprox == 2 && chn < 2) {\n      gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n      gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n    }\n  }\n  var fircoef_ = [\n    -865163e-23 * 2,\n    -851586e-8 * 2,\n    -674764e-23 * 2,\n    0.0209036 * 2,\n    -336639e-22 * 2,\n    -0.0438162 * 2,\n    -154175e-22 * 2,\n    0.0931738 * 2,\n    -552212e-22 * 2,\n    -0.313819 * 2\n  ];\n  function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n    var ns_hpfsmpl = new_float_n$3([2, 576]);\n    var gfc = gfp.internal_flags;\n    var n_chn_out = gfc.channels_out;\n    var n_chn_psy = gfp.mode == MPEGMode.JOINT_STEREO ? 4 : n_chn_out;\n    for (var chn = 0; chn < n_chn_out; chn++) {\n      firbuf = buffer[chn];\n      var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n      for (var i = 0; i < 576; i++) {\n        var sum1, sum2;\n        sum1 = firbuf[firbufPos + i + 10];\n        sum2 = 0;\n        for (var j = 0; j < (NSFIRLEN - 1) / 2 - 1; j += 2) {\n          sum1 += fircoef_[j] * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i + NSFIRLEN - j]);\n          sum2 += fircoef_[j + 1] * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos + i + NSFIRLEN - j - 1]);\n        }\n        ns_hpfsmpl[chn][i] = sum1 + sum2;\n      }\n      masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n      masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n      if (n_chn_psy > 2) {\n        masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n        masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n      }\n    }\n    for (var chn = 0; chn < n_chn_psy; chn++) {\n      var attack_intensity = new_float$a(12);\n      var en_subshort = new_float$a(12);\n      var en_short = [0, 0, 0, 0];\n      var pf = ns_hpfsmpl[chn & 1];\n      var pfPos = 0;\n      var attackThreshold = chn == 3 ? gfc.nsPsy.attackthre_s : gfc.nsPsy.attackthre;\n      var ns_uselongblock = 1;\n      if (chn == 2) {\n        for (var i = 0, j = 576; j > 0; ++i, --j) {\n          var l = ns_hpfsmpl[0][i];\n          var r = ns_hpfsmpl[1][i];\n          ns_hpfsmpl[0][i] = l + r;\n          ns_hpfsmpl[1][i] = l - r;\n        }\n      }\n      for (var i = 0; i < 3; i++) {\n        en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n        assert$9(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n        attack_intensity[i] = en_subshort[i] / gfc.nsPsy.last_en_subshort[chn][i + 4];\n        en_short[0] += en_subshort[i];\n      }\n      for (var i = 0; i < 9; i++) {\n        var pfe = pfPos + 576 / 9;\n        var p2 = 1;\n        for (; pfPos < pfe; pfPos++) {\n          if (p2 < Math.abs(pf[pfPos]))\n            p2 = Math.abs(pf[pfPos]);\n        }\n        gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p2;\n        en_short[1 + i / 3] += p2;\n        if (p2 > en_subshort[i + 3 - 2]) {\n          assert$9(en_subshort[i + 3 - 2] > 0);\n          p2 = p2 / en_subshort[i + 3 - 2];\n        } else if (en_subshort[i + 3 - 2] > p2 * 10) {\n          p2 = en_subshort[i + 3 - 2] / (p2 * 10);\n        } else {\n          p2 = 0;\n        }\n        attack_intensity[i + 3] = p2;\n      }\n      for (var i = 0; i < 3; ++i) {\n        var enn = en_subshort[i * 3 + 3] + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n        var factor = 1;\n        if (en_subshort[i * 3 + 5] * 6 < enn) {\n          factor *= 0.5;\n          if (en_subshort[i * 3 + 4] * 6 < enn) {\n            factor *= 0.5;\n          }\n        }\n        sub_short_factor[chn][i] = factor;\n      }\n      if (gfp.analysis) {\n        var x = attack_intensity[0];\n        for (var i = 1; i < 12; i++) {\n          if (x < attack_intensity[i]) {\n            x = attack_intensity[i];\n          }\n        }\n        gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n        gfc.pinfo.ers_save[chn] = x;\n      }\n      for (var i = 0; i < 12; i++) {\n        if (ns_attacks[chn][i / 3] == 0 && attack_intensity[i] > attackThreshold) {\n          ns_attacks[chn][i / 3] = i % 3 + 1;\n        }\n      }\n      for (var i = 1; i < 4; i++) {\n        var u = en_short[i - 1];\n        var v = en_short[i];\n        var m = Math.max(u, v);\n        if (m < 4e4) {\n          if (u < 1.7 * v && v < 1.7 * u) {\n            if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n              ns_attacks[chn][0] = 0;\n            }\n            ns_attacks[chn][i] = 0;\n          }\n        }\n      }\n      if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n        ns_attacks[chn][0] = 0;\n      }\n      if (gfc.nsPsy.lastAttacks[chn] == 3 || ns_attacks[chn][0] + ns_attacks[chn][1] + ns_attacks[chn][2] + ns_attacks[chn][3] != 0) {\n        ns_uselongblock = 0;\n        if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n          ns_attacks[chn][1] = 0;\n        }\n        if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n          ns_attacks[chn][2] = 0;\n        }\n        if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n          ns_attacks[chn][3] = 0;\n        }\n      }\n      if (chn < 2) {\n        uselongblock[chn] = ns_uselongblock;\n      } else {\n        if (ns_uselongblock == 0) {\n          uselongblock[0] = uselongblock[1] = 0;\n        }\n      }\n      energy[chn] = gfc.tot_ener[chn];\n    }\n  }\n  function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n    if (sblock == 0) {\n      for (var b = 0; b < gfc.npart_s; b++) {\n        gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n        gfc.nb_s1[chn][b] = 0;\n      }\n    }\n  }\n  function vbrpsy_skip_masking_l(gfc, chn) {\n    for (var b = 0; b < gfc.npart_l; b++) {\n      gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n      gfc.nb_1[chn][b] = 0;\n    }\n  }\n  function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n    var last_tab_entry = tab.length - 1;\n    var b = 0;\n    var a = avg[b] + avg[b + 1];\n    if (a > 0) {\n      var m = max[b];\n      if (m < max[b + 1])\n        m = max[b + 1];\n      assert$9(gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    for (b = 1; b < gfc.npart_s - 1; b++) {\n      a = avg[b - 1] + avg[b] + avg[b + 1];\n      assert$9(b + 1 < gfc.npart_s);\n      if (a > 0) {\n        var m = max[b - 1];\n        if (m < max[b])\n          m = max[b];\n        if (m < max[b + 1])\n          m = max[b + 1];\n        assert$9(\n          gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1 > 0\n        );\n        a = 20 * (m * 3 - a) / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n        var k = 0 | a;\n        if (k > last_tab_entry)\n          k = last_tab_entry;\n        mask_idx[b] = k;\n      } else {\n        mask_idx[b] = 0;\n      }\n    }\n    assert$9(b == gfc.npart_s - 1);\n    a = avg[b - 1] + avg[b];\n    if (a > 0) {\n      var m = max[b - 1];\n      if (m < max[b])\n        m = max[b];\n      assert$9(gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1 > 0);\n      a = 20 * (m * 2 - a) / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n      var k = 0 | a;\n      if (k > last_tab_entry)\n        k = last_tab_entry;\n      mask_idx[b] = k;\n    } else {\n      mask_idx[b] = 0;\n    }\n    assert$9(b == gfc.npart_s - 1);\n  }\n  function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n    var gfc = gfp.internal_flags;\n    var max = new float[Encoder.CBANDS]();\n    var avg = new_float$a(Encoder.CBANDS);\n    var i, j, b;\n    var mask_idx_s = new int[Encoder.CBANDS]();\n    for (b = j = 0; b < gfc.npart_s; ++b) {\n      var ebb = 0;\n      var m = 0;\n      var n = gfc.numlines_s[b];\n      for (i = 0; i < n; ++i, ++j) {\n        var el = fftenergy_s[sblock][j];\n        ebb += el;\n        if (m < el)\n          m = el;\n      }\n      eb[b] = ebb;\n      max[b] = m;\n      avg[b] = ebb / n;\n      assert$9(avg[b] >= 0);\n    }\n    assert$9(b == gfc.npart_s);\n    for (; b < Encoder.CBANDS; ++b) {\n      max[b] = 0;\n      avg[b] = 0;\n    }\n    psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n    for (j = b = 0; b < gfc.npart_s; b++) {\n      var kk = gfc.s3ind_s[b][0];\n      var last = gfc.s3ind_s[b][1];\n      var dd, dd_n;\n      var x, ecb, avg_mask;\n      dd = mask_idx_s[kk];\n      dd_n = 1;\n      ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n      ++j;\n      ++kk;\n      while (kk <= last) {\n        dd += mask_idx_s[kk];\n        dd_n += 1;\n        x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n        ecb = vbrpsy_mask_add(ecb, x, kk - b);\n        ++j;\n        ++kk;\n      }\n      dd = (1 + 2 * dd) / (2 * dd_n);\n      avg_mask = tab[dd] * 0.5;\n      ecb *= avg_mask;\n      thr[b] = ecb;\n      gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n      gfc.nb_s1[chn][b] = ecb;\n      {\n        x = max[b];\n        x *= gfc.minval_s[b];\n        x *= avg_mask;\n        if (thr[b] > x) {\n          thr[b] = x;\n        }\n      }\n      if (gfc.masking_lower > 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      if (thr[b] > eb[b]) {\n        thr[b] = eb[b];\n      }\n      if (gfc.masking_lower < 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      assert$9(thr[b] >= 0);\n    }\n    for (; b < Encoder.CBANDS; ++b) {\n      eb[b] = 0;\n      thr[b] = 0;\n    }\n  }\n  function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n    var max = new_float$a(Encoder.CBANDS);\n    var avg = new_float$a(Encoder.CBANDS);\n    var mask_idx_l = new_int$b(Encoder.CBANDS + 2);\n    var b;\n    calc_energy(gfc, fftenergy, eb_l, max, avg);\n    calc_mask_index_l(gfc, max, avg, mask_idx_l);\n    var k = 0;\n    for (b = 0; b < gfc.npart_l; b++) {\n      var x, ecb, avg_mask, t;\n      var kk = gfc.s3ind[b][0];\n      var last = gfc.s3ind[b][1];\n      var dd = 0;\n      var dd_n = 0;\n      dd = mask_idx_l[kk];\n      dd_n += 1;\n      ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n      ++k;\n      ++kk;\n      while (kk <= last) {\n        dd += mask_idx_l[kk];\n        dd_n += 1;\n        x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n        t = vbrpsy_mask_add(ecb, x, kk - b);\n        ecb = t;\n        ++k;\n        ++kk;\n      }\n      dd = (1 + 2 * dd) / (2 * dd_n);\n      avg_mask = tab[dd] * 0.5;\n      ecb *= avg_mask;\n      if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n        var ecb_limit = rpelev * gfc.nb_1[chn][b];\n        if (ecb_limit > 0) {\n          thr[b] = Math.min(ecb, ecb_limit);\n        } else {\n          thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n        }\n      } else {\n        var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n        var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n        var ecb_limit;\n        if (ecb_limit_2 <= 0) {\n          ecb_limit_2 = ecb;\n        }\n        if (ecb_limit_1 <= 0) {\n          ecb_limit_1 = ecb;\n        }\n        if (gfc.blocktype_old[chn & 1] == Encoder.NORM_TYPE) {\n          ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n        } else {\n          ecb_limit = ecb_limit_1;\n        }\n        thr[b] = Math.min(ecb, ecb_limit);\n      }\n      gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n      gfc.nb_1[chn][b] = ecb;\n      {\n        x = max[b];\n        x *= gfc.minval_l[b];\n        x *= avg_mask;\n        if (thr[b] > x) {\n          thr[b] = x;\n        }\n      }\n      if (gfc.masking_lower > 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      if (thr[b] > eb_l[b]) {\n        thr[b] = eb_l[b];\n      }\n      if (gfc.masking_lower < 1) {\n        thr[b] *= gfc.masking_lower;\n      }\n      assert$9(thr[b] >= 0);\n    }\n    for (; b < Encoder.CBANDS; ++b) {\n      eb_l[b] = 0;\n      thr[b] = 0;\n    }\n  }\n  function vbrpsy_compute_block_type(gfp, uselongblock) {\n    var gfc = gfp.internal_flags;\n    if (gfp.short_blocks == ShortBlock$2.short_block_coupled && !(uselongblock[0] != 0 && uselongblock[1] != 0)) {\n      uselongblock[0] = uselongblock[1] = 0;\n    }\n    for (var chn = 0; chn < gfc.channels_out; chn++) {\n      if (gfp.short_blocks == ShortBlock$2.short_block_dispensed) {\n        uselongblock[chn] = 1;\n      }\n      if (gfp.short_blocks == ShortBlock$2.short_block_forced) {\n        uselongblock[chn] = 0;\n      }\n    }\n  }\n  function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n    var gfc = gfp.internal_flags;\n    for (var chn = 0; chn < gfc.channels_out; chn++) {\n      var blocktype = Encoder.NORM_TYPE;\n      if (uselongblock[chn] != 0) {\n        assert$9(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n        if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) {\n          blocktype = Encoder.STOP_TYPE;\n        }\n      } else {\n        blocktype = Encoder.SHORT_TYPE;\n        if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.START_TYPE;\n        }\n        if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) {\n          gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n        }\n      }\n      blocktype_d[chn] = gfc.blocktype_old[chn];\n      gfc.blocktype_old[chn] = blocktype;\n    }\n  }\n  function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n    var msfix2 = msfix * 2;\n    var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n    var rside, rmid;\n    for (var b = 0; b < n; ++b) {\n      var ebM = eb[2][b];\n      var ebS = eb[3][b];\n      var thmL = thr[0][b];\n      var thmR = thr[1][b];\n      var thmM = thr[2][b];\n      var thmS = thr[3][b];\n      if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n        var mld_m = cb_mld[b] * ebS;\n        var mld_s = cb_mld[b] * ebM;\n        rmid = Math.max(thmM, Math.min(thmS, mld_m));\n        rside = Math.max(thmS, Math.min(thmM, mld_s));\n      } else {\n        rmid = thmM;\n        rside = thmS;\n      }\n      if (msfix > 0) {\n        var thmLR, thmMS;\n        var ath = ath_cb[b] * athlower;\n        thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n        thmM = Math.max(rmid, ath);\n        thmS = Math.max(rside, ath);\n        thmMS = thmM + thmS;\n        if (thmMS > 0 && thmLR * msfix2 < thmMS) {\n          var f = thmLR * msfix2 / thmMS;\n          thmM *= f;\n          thmS *= f;\n        }\n        rmid = Math.min(thmM, rmid);\n        rside = Math.min(thmS, rside);\n      }\n      if (rmid > ebM) {\n        rmid = ebM;\n      }\n      if (rside > ebS) {\n        rside = ebS;\n      }\n      thr[2][b] = rmid;\n      thr[3][b] = rside;\n    }\n  }\n  this.L3psycho_anal_vbr = function(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n    var gfc = gfp.internal_flags;\n    var wsamp_l;\n    var wsamp_s;\n    var fftenergy = new_float$a(Encoder.HBLKSIZE);\n    var fftenergy_s = new_float_n$3([3, Encoder.HBLKSIZE_s]);\n    var wsamp_L = new_float_n$3([2, Encoder.BLKSIZE]);\n    var wsamp_S = new_float_n$3([2, 3, Encoder.BLKSIZE_s]);\n    var eb = new_float_n$3([4, Encoder.CBANDS]);\n    var thr = new_float_n$3([4, Encoder.CBANDS]);\n    var sub_short_factor = new_float_n$3([4, 3]);\n    var pcfact = 0.6;\n    var ns_attacks = [\n      [0, 0, 0, 0],\n      [0, 0, 0, 0],\n      [0, 0, 0, 0],\n      [0, 0, 0, 0]\n    ];\n    var uselongblock = new_int$b(2);\n    var n_chn_psy = gfp.mode == MPEGMode.JOINT_STEREO ? 4 : gfc.channels_out;\n    vbrpsy_attack_detection(\n      gfp,\n      buffer,\n      bufPos,\n      gr_out,\n      masking_ratio,\n      masking_MS_ratio,\n      energy,\n      sub_short_factor,\n      ns_attacks,\n      uselongblock\n    );\n    vbrpsy_compute_block_type(gfp, uselongblock);\n    {\n      for (var chn = 0; chn < n_chn_psy; chn++) {\n        var ch01 = chn & 1;\n        wsamp_l = wsamp_L;\n        vbrpsy_compute_fft_l(\n          gfp,\n          buffer,\n          bufPos,\n          chn,\n          gr_out,\n          fftenergy,\n          wsamp_l,\n          ch01\n        );\n        vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy);\n        if (uselongblock[ch01] != 0) {\n          vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn], chn);\n        } else {\n          vbrpsy_skip_masking_l(gfc, chn);\n        }\n      }\n      if (uselongblock[0] + uselongblock[1] == 2) {\n        if (gfp.mode == MPEGMode.JOINT_STEREO) {\n          vbrpsy_compute_MS_thresholds(\n            eb,\n            thr,\n            gfc.mld_cb_l,\n            gfc.ATH.cb_l,\n            gfp.ATHlower * gfc.ATH.adjust,\n            gfp.msfix,\n            gfc.npart_l\n          );\n        }\n      }\n      for (var chn = 0; chn < n_chn_psy; chn++) {\n        var ch01 = chn & 1;\n        if (uselongblock[ch01] != 0) {\n          convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n        }\n      }\n    }\n    {\n      for (var sblock = 0; sblock < 3; sblock++) {\n        for (var chn = 0; chn < n_chn_psy; ++chn) {\n          var ch01 = chn & 1;\n          if (uselongblock[ch01] != 0) {\n            vbrpsy_skip_masking_s(gfc, chn, sblock);\n          } else {\n            wsamp_s = wsamp_S;\n            vbrpsy_compute_fft_s(\n              gfp,\n              buffer,\n              bufPos,\n              chn,\n              sblock,\n              fftenergy_s,\n              wsamp_s,\n              ch01\n            );\n            vbrpsy_compute_masking_s(\n              gfp,\n              fftenergy_s,\n              eb[chn],\n              thr[chn],\n              chn,\n              sblock\n            );\n          }\n        }\n        if (uselongblock[0] + uselongblock[1] == 0) {\n          if (gfp.mode == MPEGMode.JOINT_STEREO) {\n            vbrpsy_compute_MS_thresholds(\n              eb,\n              thr,\n              gfc.mld_cb_s,\n              gfc.ATH.cb_s,\n              gfp.ATHlower * gfc.ATH.adjust,\n              gfp.msfix,\n              gfc.npart_s\n            );\n          }\n        }\n        for (var chn = 0; chn < n_chn_psy; ++chn) {\n          var ch01 = chn & 1;\n          if (uselongblock[ch01] == 0) {\n            convert_partition2scalefac_s(gfc, eb[chn], thr[chn], chn, sblock);\n          }\n        }\n      }\n      for (var chn = 0; chn < n_chn_psy; chn++) {\n        var ch01 = chn & 1;\n        if (uselongblock[ch01] != 0) {\n          continue;\n        }\n        for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n          var new_thmm = new_float$a(3);\n          for (var sblock = 0; sblock < 3; sblock++) {\n            var thmm = gfc.thm[chn].s[sb][sblock];\n            thmm *= NS_PREECHO_ATT0;\n            if (ns_attacks[chn][sblock] >= 2 || ns_attacks[chn][sblock + 1] == 1) {\n              var idx = sblock != 0 ? sblock - 1 : 2;\n              var p2 = NS_INTERP(\n                gfc.thm[chn].s[sb][idx],\n                thmm,\n                NS_PREECHO_ATT1 * pcfact\n              );\n              thmm = Math.min(thmm, p2);\n            } else if (ns_attacks[chn][sblock] == 1) {\n              var idx = sblock != 0 ? sblock - 1 : 2;\n              var p2 = NS_INTERP(\n                gfc.thm[chn].s[sb][idx],\n                thmm,\n                NS_PREECHO_ATT2 * pcfact\n              );\n              thmm = Math.min(thmm, p2);\n            } else if (sblock != 0 && ns_attacks[chn][sblock - 1] == 3 || sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3) {\n              var idx = sblock != 2 ? sblock + 1 : 0;\n              var p2 = NS_INTERP(\n                gfc.thm[chn].s[sb][idx],\n                thmm,\n                NS_PREECHO_ATT2 * pcfact\n              );\n              thmm = Math.min(thmm, p2);\n            }\n            thmm *= sub_short_factor[chn][sblock];\n            new_thmm[sblock] = thmm;\n          }\n          for (var sblock = 0; sblock < 3; sblock++) {\n            gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n          }\n        }\n      }\n    }\n    for (var chn = 0; chn < n_chn_psy; chn++) {\n      gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n    }\n    vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n    for (var chn = 0; chn < n_chn_psy; chn++) {\n      var ppe;\n      var ppePos;\n      var type;\n      var mr;\n      if (chn > 1) {\n        ppe = percep_MS_entropy;\n        ppePos = -2;\n        type = Encoder.NORM_TYPE;\n        if (blocktype_d[0] == Encoder.SHORT_TYPE || blocktype_d[1] == Encoder.SHORT_TYPE) {\n          type = Encoder.SHORT_TYPE;\n        }\n        mr = masking_MS_ratio[gr_out][chn - 2];\n      } else {\n        ppe = percep_entropy;\n        ppePos = 0;\n        type = blocktype_d[chn];\n        mr = masking_ratio[gr_out][chn];\n      }\n      if (type == Encoder.SHORT_TYPE) {\n        ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n      } else {\n        ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n      }\n      if (gfp.analysis) {\n        gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n      }\n    }\n    return 0;\n  };\n  function s3_func_x(bark, hf_slope) {\n    var tempx = bark;\n    var tempy;\n    if (tempx >= 0) {\n      tempy = -tempx * 27;\n    } else {\n      tempy = tempx * hf_slope;\n    }\n    if (tempy <= -72) {\n      return 0;\n    }\n    return Math.exp(tempy * LN_TO_LOG10);\n  }\n  function norm_s3_func_x(hf_slope) {\n    var lim_a = 0;\n    var lim_b = 0;\n    {\n      var x = 0;\n      var l;\n      var h2;\n      for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n        ;\n      l = x;\n      h2 = 0;\n      while (Math.abs(h2 - l) > 1e-12) {\n        x = (h2 + l) / 2;\n        if (s3_func_x(x, hf_slope) > 0) {\n          h2 = x;\n        } else {\n          l = x;\n        }\n      }\n      lim_a = l;\n    }\n    {\n      var x = 0;\n      var l;\n      var h2;\n      for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n        ;\n      l = 0;\n      h2 = x;\n      while (Math.abs(h2 - l) > 1e-12) {\n        x = (h2 + l) / 2;\n        if (s3_func_x(x, hf_slope) > 0) {\n          l = x;\n        } else {\n          h2 = x;\n        }\n      }\n      lim_b = h2;\n    }\n    {\n      var sum = 0;\n      var m = 1e3;\n      var i;\n      for (i = 0; i <= m; ++i) {\n        var x = lim_a + i * (lim_b - lim_a) / m;\n        var y = s3_func_x(x, hf_slope);\n        sum += y;\n      }\n      {\n        var norm = (m + 1) / (sum * (lim_b - lim_a));\n        return norm;\n      }\n    }\n  }\n  function s3_func(bark) {\n    var tempx, x, tempy, temp;\n    tempx = bark;\n    if (tempx >= 0)\n      tempx *= 3;\n    else\n      tempx *= 1.5;\n    if (tempx >= 0.5 && tempx <= 2.5) {\n      temp = tempx - 0.5;\n      x = 8 * (temp * temp - 2 * temp);\n    } else\n      x = 0;\n    tempx += 0.474;\n    tempy = 15.811389 + 7.5 * tempx - 17.5 * Math.sqrt(1 + tempx * tempx);\n    if (tempy <= -60)\n      return 0;\n    tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n    tempx /= 0.6609193;\n    return tempx;\n  }\n  function freq2bark(freq) {\n    if (freq < 0)\n      freq = 0;\n    freq = freq * 1e-3;\n    return 13 * Math.atan(0.76 * freq) + 3.5 * Math.atan(freq * freq / (7.5 * 7.5));\n  }\n  function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n    var b_frq = new_float$a(Encoder.CBANDS + 1);\n    var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n    var partition = new_int$b(Encoder.HBLKSIZE);\n    var i;\n    sfreq /= blksize;\n    var j = 0;\n    var ni = 0;\n    for (i = 0; i < Encoder.CBANDS; i++) {\n      var bark1;\n      var j2;\n      bark1 = freq2bark(sfreq * j);\n      b_frq[i] = sfreq * j;\n      for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK && j2 <= blksize / 2; j2++)\n        ;\n      numlines[i] = j2 - j;\n      ni = i + 1;\n      while (j < j2) {\n        partition[j++] = i;\n      }\n      if (j > blksize / 2) {\n        j = blksize / 2;\n        ++i;\n        break;\n      }\n    }\n    b_frq[i] = sfreq * j;\n    for (var sfb = 0; sfb < sbmax; sfb++) {\n      var i1, i2, start, end;\n      var arg;\n      start = scalepos[sfb];\n      end = scalepos[sfb + 1];\n      i1 = 0 | Math.floor(0.5 + deltafreq * (start - 0.5));\n      if (i1 < 0)\n        i1 = 0;\n      i2 = 0 | Math.floor(0.5 + deltafreq * (end - 0.5));\n      if (i2 > blksize / 2)\n        i2 = blksize / 2;\n      bm[sfb] = (partition[i1] + partition[i2]) / 2;\n      bo[sfb] = partition[i2];\n      var f_tmp = sample_freq_frac * end;\n      bo_w[sfb] = (f_tmp - b_frq[bo[sfb]]) / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n      if (bo_w[sfb] < 0) {\n        bo_w[sfb] = 0;\n      } else {\n        if (bo_w[sfb] > 1) {\n          bo_w[sfb] = 1;\n        }\n      }\n      arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n      arg = Math.min(arg, 15.5) / 15.5;\n      mld[sfb] = Math.pow(10, 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n    }\n    j = 0;\n    for (var k = 0; k < ni; k++) {\n      var w = numlines[k];\n      var bark1, bark2;\n      bark1 = freq2bark(sfreq * j);\n      bark2 = freq2bark(sfreq * (j + w - 1));\n      bval[k] = 0.5 * (bark1 + bark2);\n      bark1 = freq2bark(sfreq * (j - 0.5));\n      bark2 = freq2bark(sfreq * (j + w - 0.5));\n      bval_width[k] = bark2 - bark1;\n      j += w;\n    }\n    return ni;\n  }\n  function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n    var s3 = new_float_n$3([Encoder.CBANDS, Encoder.CBANDS]);\n    var j;\n    var numberOfNoneZero = 0;\n    if (use_old_s3) {\n      for (var i = 0; i < npart; i++) {\n        for (j = 0; j < npart; j++) {\n          var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n          s3[i][j] = v * norm[i];\n        }\n      }\n    } else {\n      for (j = 0; j < npart; j++) {\n        var hf_slope = 15 + Math.min(21 / bval[j], 12);\n        var s3_x_norm = norm_s3_func_x(hf_slope);\n        for (var i = 0; i < npart; i++) {\n          var v = s3_x_norm * s3_func_x(bval[i] - bval[j], hf_slope) * bval_width[j];\n          s3[i][j] = v * norm[i];\n        }\n      }\n    }\n    for (var i = 0; i < npart; i++) {\n      for (j = 0; j < npart; j++) {\n        if (s3[i][j] > 0)\n          break;\n      }\n      s3ind[i][0] = j;\n      for (j = npart - 1; j > 0; j--) {\n        if (s3[i][j] > 0)\n          break;\n      }\n      s3ind[i][1] = j;\n      numberOfNoneZero += s3ind[i][1] - s3ind[i][0] + 1;\n    }\n    var p2 = new_float$a(numberOfNoneZero);\n    var k = 0;\n    for (var i = 0; i < npart; i++) {\n      for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n        p2[k++] = s3[i][j];\n    }\n    return p2;\n  }\n  function stereo_demask(f) {\n    var arg = freq2bark(f);\n    arg = Math.min(arg, 15.5) / 15.5;\n    return Math.pow(10, 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n  }\n  this.psymodel_init = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var i;\n    var useOldS3 = true;\n    var bvl_a = 13;\n    var bvl_b = 24;\n    var snr_l_a = 0;\n    var snr_l_b = 0;\n    var snr_s_a = -8.25;\n    var snr_s_b = -4.5;\n    var bval = new_float$a(Encoder.CBANDS);\n    var bval_width = new_float$a(Encoder.CBANDS);\n    var norm = new_float$a(Encoder.CBANDS);\n    var sfreq = gfp.out_samplerate;\n    switch (gfp.experimentalZ) {\n      default:\n      case 0:\n        useOldS3 = true;\n        break;\n      case 1:\n        useOldS3 = !(gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt);\n        break;\n      case 2:\n        useOldS3 = false;\n        break;\n      case 3:\n        bvl_a = 8;\n        snr_l_a = -1.75;\n        snr_l_b = -0.0125;\n        snr_s_a = -8.25;\n        snr_s_b = -2.25;\n        break;\n    }\n    gfc.ms_ener_ratio_old = 0.25;\n    gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder.NORM_TYPE;\n    for (i = 0; i < 4; ++i) {\n      for (var j = 0; j < Encoder.CBANDS; ++j) {\n        gfc.nb_1[i][j] = 1e20;\n        gfc.nb_2[i][j] = 1e20;\n        gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1;\n      }\n      for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n        gfc.en[i].l[sb] = 1e20;\n        gfc.thm[i].l[sb] = 1e20;\n      }\n      for (var j = 0; j < 3; ++j) {\n        for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n          gfc.en[i].s[sb][j] = 1e20;\n          gfc.thm[i].s[sb][j] = 1e20;\n        }\n        gfc.nsPsy.lastAttacks[i] = 0;\n      }\n      for (var j = 0; j < 9; j++)\n        gfc.nsPsy.last_en_subshort[i][j] = 10;\n    }\n    gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0;\n    gfc.npart_l = init_numline(\n      gfc.numlines_l,\n      gfc.bo_l,\n      gfc.bm_l,\n      bval,\n      bval_width,\n      gfc.mld_l,\n      gfc.PSY.bo_l_weight,\n      sfreq,\n      Encoder.BLKSIZE,\n      gfc.scalefac_band.l,\n      Encoder.BLKSIZE / (2 * 576),\n      Encoder.SBMAX_l\n    );\n    assert$9(gfc.npart_l < Encoder.CBANDS);\n    for (i = 0; i < gfc.npart_l; i++) {\n      var snr = snr_l_a;\n      if (bval[i] >= bvl_a) {\n        snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n      }\n      norm[i] = Math.pow(10, snr / 10);\n      if (gfc.numlines_l[i] > 0) {\n        gfc.rnumlines_l[i] = 1 / gfc.numlines_l[i];\n      } else {\n        gfc.rnumlines_l[i] = 0;\n      }\n    }\n    gfc.s3_ll = init_s3_values(\n      gfc.s3ind,\n      gfc.npart_l,\n      bval,\n      bval_width,\n      norm,\n      useOldS3\n    );\n    var j = 0;\n    for (i = 0; i < gfc.npart_l; i++) {\n      var x;\n      x = Float$1.MAX_VALUE;\n      for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n        var freq = sfreq * j / (1e3 * Encoder.BLKSIZE);\n        var level;\n        level = this.ATHformula(freq * 1e3, gfp) - 20;\n        level = Math.pow(10, 0.1 * level);\n        level *= gfc.numlines_l[i];\n        if (x > level)\n          x = level;\n      }\n      gfc.ATH.cb_l[i] = x;\n      x = -20 + bval[i] * 20 / 10;\n      if (x > 6) {\n        x = 100;\n      }\n      if (x < -15) {\n        x = -15;\n      }\n      x -= 8;\n      gfc.minval_l[i] = Math.pow(10, x / 10) * gfc.numlines_l[i];\n    }\n    gfc.npart_s = init_numline(\n      gfc.numlines_s,\n      gfc.bo_s,\n      gfc.bm_s,\n      bval,\n      bval_width,\n      gfc.mld_s,\n      gfc.PSY.bo_s_weight,\n      sfreq,\n      Encoder.BLKSIZE_s,\n      gfc.scalefac_band.s,\n      Encoder.BLKSIZE_s / (2 * 192),\n      Encoder.SBMAX_s\n    );\n    assert$9(gfc.npart_s < Encoder.CBANDS);\n    j = 0;\n    for (i = 0; i < gfc.npart_s; i++) {\n      var x;\n      var snr = snr_s_a;\n      if (bval[i] >= bvl_a) {\n        snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n      }\n      norm[i] = Math.pow(10, snr / 10);\n      x = Float$1.MAX_VALUE;\n      for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n        var freq = sfreq * j / (1e3 * Encoder.BLKSIZE_s);\n        var level;\n        level = this.ATHformula(freq * 1e3, gfp) - 20;\n        level = Math.pow(10, 0.1 * level);\n        level *= gfc.numlines_s[i];\n        if (x > level)\n          x = level;\n      }\n      gfc.ATH.cb_s[i] = x;\n      x = -7 + bval[i] * 7 / 12;\n      if (bval[i] > 12) {\n        x *= 1 + Math.log(1 + x) * 3.1;\n      }\n      if (bval[i] < 12) {\n        x *= 1 + Math.log(1 - x) * 2.3;\n      }\n      if (x < -15) {\n        x = -15;\n      }\n      x -= 8;\n      gfc.minval_s[i] = Math.pow(10, x / 10) * gfc.numlines_s[i];\n    }\n    gfc.s3_ss = init_s3_values(\n      gfc.s3ind_s,\n      gfc.npart_s,\n      bval,\n      bval_width,\n      norm,\n      useOldS3\n    );\n    init_mask_add_max_values();\n    fft.init_fft(gfc);\n    gfc.decay = Math.exp(\n      -1 * LOG10 / (temporalmask_sustain_sec * sfreq / 192)\n    );\n    {\n      var msfix;\n      msfix = NS_MSFIX;\n      if ((gfp.exp_nspsytune & 2) != 0)\n        msfix = 1;\n      if (Math.abs(gfp.msfix) > 0)\n        msfix = gfp.msfix;\n      gfp.msfix = msfix;\n      for (var b = 0; b < gfc.npart_l; b++) {\n        if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n          gfc.s3ind[b][1] = gfc.npart_l - 1;\n      }\n    }\n    var frame_duration = 576 * gfc.mode_gr / sfreq;\n    gfc.ATH.decay = Math.pow(10, -12 / 10 * frame_duration);\n    gfc.ATH.adjust = 0.01;\n    gfc.ATH.adjustLimit = 1;\n    assert$9(gfc.bo_l[Encoder.SBMAX_l - 1] <= gfc.npart_l);\n    assert$9(gfc.bo_s[Encoder.SBMAX_s - 1] <= gfc.npart_s);\n    if (gfp.ATHtype != -1) {\n      var freq;\n      var freq_inc = gfp.out_samplerate / Encoder.BLKSIZE;\n      var eql_balance = 0;\n      freq = 0;\n      for (i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n        freq += freq_inc;\n        gfc.ATH.eql_w[i] = 1 / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n        eql_balance += gfc.ATH.eql_w[i];\n      }\n      eql_balance = 1 / eql_balance;\n      for (i = Encoder.BLKSIZE / 2; --i >= 0; ) {\n        gfc.ATH.eql_w[i] *= eql_balance;\n      }\n    }\n    {\n      for (var b = j = 0; b < gfc.npart_s; ++b) {\n        for (i = 0; i < gfc.numlines_s[b]; ++i) {\n          ++j;\n        }\n      }\n      for (var b = j = 0; b < gfc.npart_l; ++b) {\n        for (i = 0; i < gfc.numlines_l[b]; ++i) {\n          ++j;\n        }\n      }\n    }\n    j = 0;\n    for (i = 0; i < gfc.npart_l; i++) {\n      var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1 * Encoder.BLKSIZE);\n      gfc.mld_cb_l[i] = stereo_demask(freq);\n      j += gfc.numlines_l[i];\n    }\n    for (; i < Encoder.CBANDS; ++i) {\n      gfc.mld_cb_l[i] = 1;\n    }\n    j = 0;\n    for (i = 0; i < gfc.npart_s; i++) {\n      var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1 * Encoder.BLKSIZE_s);\n      gfc.mld_cb_s[i] = stereo_demask(freq);\n      j += gfc.numlines_s[i];\n    }\n    for (; i < Encoder.CBANDS; ++i) {\n      gfc.mld_cb_s[i] = 1;\n    }\n    return 0;\n  };\n  function ATHformula_GB(f, value) {\n    if (f < -0.3)\n      f = 3410;\n    f /= 1e3;\n    f = Math.max(0.1, f);\n    var ath = 3.64 * Math.pow(f, -0.8) - 6.8 * Math.exp(-0.6 * Math.pow(f - 3.4, 2)) + 6 * Math.exp(-0.15 * Math.pow(f - 8.7, 2)) + (0.6 + 0.04 * value) * 1e-3 * Math.pow(f, 4);\n    return ath;\n  }\n  this.ATHformula = function(f, gfp) {\n    var ath;\n    switch (gfp.ATHtype) {\n      case 0:\n        ath = ATHformula_GB(f, 9);\n        break;\n      case 1:\n        ath = ATHformula_GB(f, -1);\n        break;\n      case 2:\n        ath = ATHformula_GB(f, 0);\n        break;\n      case 3:\n        ath = ATHformula_GB(f, 1) + 6;\n        break;\n      case 4:\n        ath = ATHformula_GB(f, gfp.ATHcurve);\n        break;\n      default:\n        ath = ATHformula_GB(f, 0);\n        break;\n    }\n    return ath;\n  };\n}\nfunction LameGlobalFlags() {\n  this.class_id = 0;\n  this.num_samples = 0;\n  this.num_channels = 0;\n  this.in_samplerate = 0;\n  this.out_samplerate = 0;\n  this.scale = 0;\n  this.scale_left = 0;\n  this.scale_right = 0;\n  this.analysis = false;\n  this.bWriteVbrTag = false;\n  this.decode_only = false;\n  this.quality = 0;\n  this.mode = MPEGMode.STEREO;\n  this.force_ms = false;\n  this.free_format = false;\n  this.findReplayGain = false;\n  this.decode_on_the_fly = false;\n  this.write_id3tag_automatic = false;\n  this.brate = 0;\n  this.compression_ratio = 0;\n  this.copyright = 0;\n  this.original = 0;\n  this.extension = 0;\n  this.emphasis = 0;\n  this.error_protection = 0;\n  this.strict_ISO = false;\n  this.disable_reservoir = false;\n  this.quant_comp = 0;\n  this.quant_comp_short = 0;\n  this.experimentalY = false;\n  this.experimentalZ = 0;\n  this.exp_nspsytune = 0;\n  this.preset = 0;\n  this.VBR = null;\n  this.VBR_q_frac = 0;\n  this.VBR_q = 0;\n  this.VBR_mean_bitrate_kbps = 0;\n  this.VBR_min_bitrate_kbps = 0;\n  this.VBR_max_bitrate_kbps = 0;\n  this.VBR_hard_min = 0;\n  this.lowpassfreq = 0;\n  this.highpassfreq = 0;\n  this.lowpasswidth = 0;\n  this.highpasswidth = 0;\n  this.maskingadjust = 0;\n  this.maskingadjust_short = 0;\n  this.ATHonly = false;\n  this.ATHshort = false;\n  this.noATH = false;\n  this.ATHtype = 0;\n  this.ATHcurve = 0;\n  this.ATHlower = 0;\n  this.athaa_type = 0;\n  this.athaa_loudapprox = 0;\n  this.athaa_sensitivity = 0;\n  this.short_blocks = null;\n  this.useTemporal = false;\n  this.interChRatio = 0;\n  this.msfix = 0;\n  this.tune = false;\n  this.tune_value_a = 0;\n  this.version = 0;\n  this.encoder_delay = 0;\n  this.encoder_padding = 0;\n  this.framesize = 0;\n  this.frameNum = 0;\n  this.lame_allocated_gfp = 0;\n  this.internal_flags = null;\n}\nvar L3Side$1 = {};\nL3Side$1.SFBMAX = Encoder.SBMAX_s * 3;\nvar new_float$9 = common.new_float;\nvar new_int$a = common.new_int;\nfunction GrInfo() {\n  this.xr = new_float$9(576);\n  this.l3_enc = new_int$a(576);\n  this.scalefac = new_int$a(L3Side$1.SFBMAX);\n  this.xrpow_max = 0;\n  this.part2_3_length = 0;\n  this.big_values = 0;\n  this.count1 = 0;\n  this.global_gain = 0;\n  this.scalefac_compress = 0;\n  this.block_type = 0;\n  this.mixed_block_flag = 0;\n  this.table_select = new_int$a(3);\n  this.subblock_gain = new_int$a(3 + 1);\n  this.region0_count = 0;\n  this.region1_count = 0;\n  this.preflag = 0;\n  this.scalefac_scale = 0;\n  this.count1table_select = 0;\n  this.part2_length = 0;\n  this.sfb_lmax = 0;\n  this.sfb_smin = 0;\n  this.psy_lmax = 0;\n  this.sfbmax = 0;\n  this.psymax = 0;\n  this.sfbdivide = 0;\n  this.width = new_int$a(L3Side$1.SFBMAX);\n  this.window = new_int$a(L3Side$1.SFBMAX);\n  this.count1bits = 0;\n  this.sfb_partition_table = null;\n  this.slen = new_int$a(4);\n  this.max_nonzero_coeff = 0;\n  var self2 = this;\n  function clone_int(array) {\n    return new Int32Array(array);\n  }\n  function clone_float(array) {\n    return new Float32Array(array);\n  }\n  this.assign = function(other) {\n    self2.xr = clone_float(other.xr);\n    self2.l3_enc = clone_int(other.l3_enc);\n    self2.scalefac = clone_int(other.scalefac);\n    self2.xrpow_max = other.xrpow_max;\n    self2.part2_3_length = other.part2_3_length;\n    self2.big_values = other.big_values;\n    self2.count1 = other.count1;\n    self2.global_gain = other.global_gain;\n    self2.scalefac_compress = other.scalefac_compress;\n    self2.block_type = other.block_type;\n    self2.mixed_block_flag = other.mixed_block_flag;\n    self2.table_select = clone_int(other.table_select);\n    self2.subblock_gain = clone_int(other.subblock_gain);\n    self2.region0_count = other.region0_count;\n    self2.region1_count = other.region1_count;\n    self2.preflag = other.preflag;\n    self2.scalefac_scale = other.scalefac_scale;\n    self2.count1table_select = other.count1table_select;\n    self2.part2_length = other.part2_length;\n    self2.sfb_lmax = other.sfb_lmax;\n    self2.sfb_smin = other.sfb_smin;\n    self2.psy_lmax = other.psy_lmax;\n    self2.sfbmax = other.sfbmax;\n    self2.psymax = other.psymax;\n    self2.sfbdivide = other.sfbdivide;\n    self2.width = clone_int(other.width);\n    self2.window = clone_int(other.window);\n    self2.count1bits = other.count1bits;\n    self2.sfb_partition_table = other.sfb_partition_table.slice(0);\n    self2.slen = clone_int(other.slen);\n    self2.max_nonzero_coeff = other.max_nonzero_coeff;\n  };\n}\nvar new_int$9 = common.new_int;\nfunction IIISideInfo() {\n  this.tt = [\n    [null, null],\n    [null, null]\n  ];\n  this.main_data_begin = 0;\n  this.private_bits = 0;\n  this.resvDrain_pre = 0;\n  this.resvDrain_post = 0;\n  this.scfsi = [new_int$9(4), new_int$9(4)];\n  for (var gr = 0; gr < 2; gr++) {\n    for (var ch = 0; ch < 2; ch++) {\n      this.tt[gr][ch] = new GrInfo();\n    }\n  }\n}\nvar System$6 = common.System;\nvar new_int$8 = common.new_int;\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n  this.l = new_int$8(1 + Encoder.SBMAX_l);\n  this.s = new_int$8(1 + Encoder.SBMAX_s);\n  this.psfb21 = new_int$8(1 + Encoder.PSFB21);\n  this.psfb12 = new_int$8(1 + Encoder.PSFB12);\n  var l = this.l;\n  var s = this.s;\n  if (arguments.length == 4) {\n    this.arrL = arguments[0];\n    this.arrS = arguments[1];\n    this.arr21 = arguments[2];\n    this.arr12 = arguments[3];\n    System$6.arraycopy(\n      this.arrL,\n      0,\n      l,\n      0,\n      Math.min(this.arrL.length, this.l.length)\n    );\n    System$6.arraycopy(\n      this.arrS,\n      0,\n      s,\n      0,\n      Math.min(this.arrS.length, this.s.length)\n    );\n    System$6.arraycopy(\n      this.arr21,\n      0,\n      this.psfb21,\n      0,\n      Math.min(this.arr21.length, this.psfb21.length)\n    );\n    System$6.arraycopy(\n      this.arr12,\n      0,\n      this.psfb12,\n      0,\n      Math.min(this.arr12.length, this.psfb12.length)\n    );\n  }\n}\nvar new_float$8 = common.new_float;\nvar new_float_n$2 = common.new_float_n;\nvar new_int$7 = common.new_int;\nfunction NsPsy() {\n  this.last_en_subshort = new_float_n$2([4, 9]);\n  this.lastAttacks = new_int$7(4);\n  this.pefirbuf = new_float$8(19);\n  this.longfact = new_float$8(Encoder.SBMAX_l);\n  this.shortfact = new_float$8(Encoder.SBMAX_s);\n  this.attackthre = 0;\n  this.attackthre_s = 0;\n}\nfunction VBRSeekInfo() {\n  this.sum = 0;\n  this.seen = 0;\n  this.want = 0;\n  this.pos = 0;\n  this.size = 0;\n  this.bag = null;\n  this.nVbrNumFrames = 0;\n  this.nBytesWritten = 0;\n  this.TotalFrameSize = 0;\n}\nvar new_byte$3 = common.new_byte;\nvar new_double = common.new_double;\nvar new_float$7 = common.new_float;\nvar new_float_n$1 = common.new_float_n;\nvar new_int$6 = common.new_int;\nvar new_int_n$1 = common.new_int_n;\nLameInternalFlags$1.MFSIZE = 3 * 1152 + Encoder.ENCDELAY - Encoder.MDCTDELAY;\nLameInternalFlags$1.MAX_HEADER_BUF = 256;\nLameInternalFlags$1.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags$1.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags$1.BPC = 320;\nfunction LameInternalFlags$1() {\n  var MAX_HEADER_LEN = 40;\n  this.Class_ID = 0;\n  this.lame_encode_frame_init = 0;\n  this.iteration_init_init = 0;\n  this.fill_buffer_resample_init = 0;\n  this.mfbuf = new_float_n$1([2, LameInternalFlags$1.MFSIZE]);\n  this.mode_gr = 0;\n  this.channels_in = 0;\n  this.channels_out = 0;\n  this.resample_ratio = 0;\n  this.mf_samples_to_encode = 0;\n  this.mf_size = 0;\n  this.VBR_min_bitrate = 0;\n  this.VBR_max_bitrate = 0;\n  this.bitrate_index = 0;\n  this.samplerate_index = 0;\n  this.mode_ext = 0;\n  this.lowpass1 = 0;\n  this.lowpass2 = 0;\n  this.highpass1 = 0;\n  this.highpass2 = 0;\n  this.noise_shaping = 0;\n  this.noise_shaping_amp = 0;\n  this.substep_shaping = 0;\n  this.psymodel = 0;\n  this.noise_shaping_stop = 0;\n  this.subblock_gain = 0;\n  this.use_best_huffman = 0;\n  this.full_outer_loop = 0;\n  this.l3_side = new IIISideInfo();\n  this.ms_ratio = new_float$7(2);\n  this.padding = 0;\n  this.frac_SpF = 0;\n  this.slot_lag = 0;\n  this.tag_spec = null;\n  this.nMusicCRC = 0;\n  this.OldValue = new_int$6(2);\n  this.CurrentStep = new_int$6(2);\n  this.masking_lower = 0;\n  this.bv_scf = new_int$6(576);\n  this.pseudohalf = new_int$6(L3Side$1.SFBMAX);\n  this.sfb21_extra = false;\n  this.inbuf_old = new Array(2);\n  this.blackfilt = new Array(2 * LameInternalFlags$1.BPC + 1);\n  this.itime = new_double(2);\n  this.sideinfo_len = 0;\n  this.sb_sample = new_float_n$1([2, 2, 18, Encoder.SBLIMIT]);\n  this.amp_filter = new_float$7(32);\n  function Header() {\n    this.write_timing = 0;\n    this.ptr = 0;\n    this.buf = new_byte$3(MAX_HEADER_LEN);\n  }\n  this.header = new Array(LameInternalFlags$1.MAX_HEADER_BUF);\n  this.h_ptr = 0;\n  this.w_ptr = 0;\n  this.ancillary_flag = 0;\n  this.ResvSize = 0;\n  this.ResvMax = 0;\n  this.scalefac_band = new ScaleFac();\n  this.minval_l = new_float$7(Encoder.CBANDS);\n  this.minval_s = new_float$7(Encoder.CBANDS);\n  this.nb_1 = new_float_n$1([4, Encoder.CBANDS]);\n  this.nb_2 = new_float_n$1([4, Encoder.CBANDS]);\n  this.nb_s1 = new_float_n$1([4, Encoder.CBANDS]);\n  this.nb_s2 = new_float_n$1([4, Encoder.CBANDS]);\n  this.s3_ss = null;\n  this.s3_ll = null;\n  this.decay = 0;\n  this.thm = new Array(4);\n  this.en = new Array(4);\n  this.tot_ener = new_float$7(4);\n  this.loudness_sq = new_float_n$1([2, 2]);\n  this.loudness_sq_save = new_float$7(2);\n  this.mld_l = new_float$7(Encoder.SBMAX_l);\n  this.mld_s = new_float$7(Encoder.SBMAX_s);\n  this.bm_l = new_int$6(Encoder.SBMAX_l);\n  this.bo_l = new_int$6(Encoder.SBMAX_l);\n  this.bm_s = new_int$6(Encoder.SBMAX_s);\n  this.bo_s = new_int$6(Encoder.SBMAX_s);\n  this.npart_l = 0;\n  this.npart_s = 0;\n  this.s3ind = new_int_n$1([Encoder.CBANDS, 2]);\n  this.s3ind_s = new_int_n$1([Encoder.CBANDS, 2]);\n  this.numlines_s = new_int$6(Encoder.CBANDS);\n  this.numlines_l = new_int$6(Encoder.CBANDS);\n  this.rnumlines_l = new_float$7(Encoder.CBANDS);\n  this.mld_cb_l = new_float$7(Encoder.CBANDS);\n  this.mld_cb_s = new_float$7(Encoder.CBANDS);\n  this.numlines_s_num1 = 0;\n  this.numlines_l_num1 = 0;\n  this.pe = new_float$7(4);\n  this.ms_ratio_s_old = 0;\n  this.ms_ratio_l_old = 0;\n  this.ms_ener_ratio_old = 0;\n  this.blocktype_old = new_int$6(2);\n  this.nsPsy = new NsPsy();\n  this.VBR_seek_table = new VBRSeekInfo();\n  this.ATH = null;\n  this.PSY = null;\n  this.nogap_total = 0;\n  this.nogap_current = 0;\n  this.decode_on_the_fly = true;\n  this.findReplayGain = true;\n  this.findPeakSample = true;\n  this.PeakSample = 0;\n  this.RadioGain = 0;\n  this.AudiophileGain = 0;\n  this.rgdata = null;\n  this.noclipGainChange = 0;\n  this.noclipScale = 0;\n  this.bitrate_stereoMode_Hist = new_int_n$1([16, 4 + 1]);\n  this.bitrate_blockType_Hist = new_int_n$1([16, 4 + 1 + 1]);\n  this.pinfo = null;\n  this.hip = null;\n  this.in_buffer_nsamples = 0;\n  this.in_buffer_0 = null;\n  this.in_buffer_1 = null;\n  this.iteration_loop = null;\n  for (var i = 0; i < this.en.length; i++) {\n    this.en[i] = new III_psy_xmin();\n  }\n  for (var i = 0; i < this.thm.length; i++) {\n    this.thm[i] = new III_psy_xmin();\n  }\n  for (var i = 0; i < this.header.length; i++) {\n    this.header[i] = new Header();\n  }\n}\nvar new_float$6 = common.new_float;\nfunction ATH() {\n  this.useAdjust = 0;\n  this.aaSensitivityP = 0;\n  this.adjust = 0;\n  this.adjustLimit = 0;\n  this.decay = 0;\n  this.floor = 0;\n  this.l = new_float$6(Encoder.SBMAX_l);\n  this.s = new_float$6(Encoder.SBMAX_s);\n  this.psfb21 = new_float$6(Encoder.PSFB21);\n  this.psfb12 = new_float$6(Encoder.PSFB12);\n  this.cb_l = new_float$6(Encoder.CBANDS);\n  this.cb_s = new_float$6(Encoder.CBANDS);\n  this.eql_w = new_float$6(Encoder.BLKSIZE / 2);\n}\nvar System$5 = common.System;\nvar Arrays$4 = common.Arrays;\nGainAnalysis$1.STEPS_per_dB = 100;\nGainAnalysis$1.MAX_dB = 120;\nGainAnalysis$1.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis$1.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.YULE_ORDER = 10;\nGainAnalysis$1.MAX_ORDER = GainAnalysis$1.YULE_ORDER;\nGainAnalysis$1.MAX_SAMP_FREQ = 48e3;\nGainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis$1.MAX_SAMPLES_PER_WINDOW = GainAnalysis$1.MAX_SAMP_FREQ * GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR / GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR + 1;\nfunction GainAnalysis$1() {\n  var PINK_REF = 64.82;\n  var RMS_PERCENTILE = 0.95;\n  var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR;\n  var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR;\n  var ABYule = [\n    [\n      0.038575994352,\n      -3.84664617118067,\n      -0.02160367184185,\n      7.81501653005538,\n      -0.00123395316851,\n      -11.34170355132042,\n      -9291677959e-14,\n      13.05504219327545,\n      -0.01655260341619,\n      -12.28759895145294,\n      0.02161526843274,\n      9.4829380631979,\n      -0.02074045215285,\n      -5.87257861775999,\n      0.00594298065125,\n      2.75465861874613,\n      0.00306428023191,\n      -0.86984376593551,\n      12025322027e-14,\n      0.13919314567432,\n      0.00288463683916\n    ],\n    [\n      0.0541865640643,\n      -3.47845948550071,\n      -0.02911007808948,\n      6.36317777566148,\n      -0.00848709379851,\n      -8.54751527471874,\n      -0.00851165645469,\n      9.4769360780128,\n      -0.00834990904936,\n      -8.81498681370155,\n      0.02245293253339,\n      6.85401540936998,\n      -0.02596338512915,\n      -4.39470996079559,\n      0.01624864962975,\n      2.19611684890774,\n      -0.00240879051584,\n      -0.75104302451432,\n      0.00674613682247,\n      0.13149317958808,\n      -0.00187763777362\n    ],\n    [\n      0.15457299681924,\n      -2.37898834973084,\n      -0.09331049056315,\n      2.84868151156327,\n      -0.06247880153653,\n      -2.64577170229825,\n      0.02163541888798,\n      2.23697657451713,\n      -0.05588393329856,\n      -1.67148153367602,\n      0.04781476674921,\n      1.00595954808547,\n      0.00222312597743,\n      -0.45953458054983,\n      0.03174092540049,\n      0.16378164858596,\n      -0.01390589421898,\n      -0.05032077717131,\n      0.00651420667831,\n      0.0234789740702,\n      -0.00881362733839\n    ],\n    [\n      0.30296907319327,\n      -1.61273165137247,\n      -0.22613988682123,\n      1.0797749225997,\n      -0.08587323730772,\n      -0.2565625775407,\n      0.03282930172664,\n      -0.1627671912044,\n      -0.00915702933434,\n      -0.22638893773906,\n      -0.02364141202522,\n      0.39120800788284,\n      -0.00584456039913,\n      -0.22138138954925,\n      0.06276101321749,\n      0.04500235387352,\n      -828086748e-14,\n      0.02005851806501,\n      0.00205861885564,\n      0.00302439095741,\n      -0.02950134983287\n    ],\n    [\n      0.33642304856132,\n      -1.49858979367799,\n      -0.2557224142557,\n      0.87350271418188,\n      -0.11828570177555,\n      0.12205022308084,\n      0.11921148675203,\n      -0.80774944671438,\n      -0.07834489609479,\n      0.47854794562326,\n      -0.0046997791438,\n      -0.12453458140019,\n      -0.0058950022444,\n      -0.04067510197014,\n      0.05724228140351,\n      0.08333755284107,\n      0.00832043980773,\n      -0.04237348025746,\n      -0.0163538138454,\n      0.02977207319925,\n      -0.0176017656815\n    ],\n    [\n      0.4491525660845,\n      -0.62820619233671,\n      -0.14351757464547,\n      0.29661783706366,\n      -0.22784394429749,\n      -0.372563729424,\n      -0.01419140100551,\n      0.00213767857124,\n      0.04078262797139,\n      -0.42029820170918,\n      -0.12398163381748,\n      0.22199650564824,\n      0.04097565135648,\n      0.00613424350682,\n      0.10478503600251,\n      0.06747620744683,\n      -0.01863887810927,\n      0.05784820375801,\n      -0.03193428438915,\n      0.03222754072173,\n      0.00541907748707\n    ],\n    [\n      0.56619470757641,\n      -1.04800335126349,\n      -0.75464456939302,\n      0.29156311971249,\n      0.1624213774223,\n      -0.26806001042947,\n      0.16744243493672,\n      0.00819999645858,\n      -0.18901604199609,\n      0.45054734505008,\n      0.3093178284183,\n      -0.33032403314006,\n      -0.27562961986224,\n      0.0673936833311,\n      0.00647310677246,\n      -0.04784254229033,\n      0.08647503780351,\n      0.01639907836189,\n      -0.0378898455484,\n      0.01807364323573,\n      -0.00588215443421\n    ],\n    [\n      0.58100494960553,\n      -0.51035327095184,\n      -0.53174909058578,\n      -0.31863563325245,\n      -0.14289799034253,\n      -0.20256413484477,\n      0.17520704835522,\n      0.1472815413433,\n      0.02377945217615,\n      0.38952639978999,\n      0.15558449135573,\n      -0.23313271880868,\n      -0.25344790059353,\n      -0.05246019024463,\n      0.01628462406333,\n      -0.02505961724053,\n      0.06920467763959,\n      0.02442357316099,\n      -0.03721611395801,\n      0.01818801111503,\n      -0.00749618797172\n    ],\n    [\n      0.53648789255105,\n      -0.2504987195602,\n      -0.42163034350696,\n      -0.43193942311114,\n      -0.00275953611929,\n      -0.03424681017675,\n      0.04267842219415,\n      -0.04678328784242,\n      -0.10214864179676,\n      0.26408300200955,\n      0.14590772289388,\n      0.15113130533216,\n      -0.02459864859345,\n      -0.17556493366449,\n      -0.11202315195388,\n      -0.18823009262115,\n      -0.04060034127,\n      0.05477720428674,\n      0.0478866554818,\n      0.0470440968812,\n      -0.02217936801134\n    ]\n  ];\n  var ABButter = [\n    [\n      0.98621192462708,\n      -1.97223372919527,\n      -1.97242384925416,\n      0.97261396931306,\n      0.98621192462708\n    ],\n    [\n      0.98500175787242,\n      -1.96977855582618,\n      -1.97000351574484,\n      0.9702284756635,\n      0.98500175787242\n    ],\n    [\n      0.97938932735214,\n      -1.95835380975398,\n      -1.95877865470428,\n      0.95920349965459,\n      0.97938932735214\n    ],\n    [\n      0.97531843204928,\n      -1.95002759149878,\n      -1.95063686409857,\n      0.95124613669835,\n      0.97531843204928\n    ],\n    [\n      0.97316523498161,\n      -1.94561023566527,\n      -1.94633046996323,\n      0.94705070426118,\n      0.97316523498161\n    ],\n    [\n      0.96454515552826,\n      -1.92783286977036,\n      -1.92909031105652,\n      0.93034775234268,\n      0.96454515552826\n    ],\n    [\n      0.96009142950541,\n      -1.91858953033784,\n      -1.92018285901082,\n      0.92177618768381,\n      0.96009142950541\n    ],\n    [\n      0.95856916599601,\n      -1.9154210807478,\n      -1.91713833199203,\n      0.91885558323625,\n      0.95856916599601\n    ],\n    [\n      0.94597685600279,\n      -1.88903307939452,\n      -1.89195371200558,\n      0.89487434461664,\n      0.94597685600279\n    ]\n  ];\n  function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n    while (nSamples-- != 0) {\n      output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0] - output[outputPos - 1] * kernel[1] + input[inputPos - 1] * kernel[2] - output[outputPos - 2] * kernel[3] + input[inputPos - 2] * kernel[4] - output[outputPos - 3] * kernel[5] + input[inputPos - 3] * kernel[6] - output[outputPos - 4] * kernel[7] + input[inputPos - 4] * kernel[8] - output[outputPos - 5] * kernel[9] + input[inputPos - 5] * kernel[10] - output[outputPos - 6] * kernel[11] + input[inputPos - 6] * kernel[12] - output[outputPos - 7] * kernel[13] + input[inputPos - 7] * kernel[14] - output[outputPos - 8] * kernel[15] + input[inputPos - 8] * kernel[16] - output[outputPos - 9] * kernel[17] + input[inputPos - 9] * kernel[18] - output[outputPos - 10] * kernel[19] + input[inputPos - 10] * kernel[20];\n      ++outputPos;\n      ++inputPos;\n    }\n  }\n  function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n    while (nSamples-- != 0) {\n      output[outputPos] = input[inputPos + 0] * kernel[0] - output[outputPos - 1] * kernel[1] + input[inputPos - 1] * kernel[2] - output[outputPos - 2] * kernel[3] + input[inputPos - 2] * kernel[4];\n      ++outputPos;\n      ++inputPos;\n    }\n  }\n  function ResetSampleFrequency(rgData, samplefreq) {\n    for (var i = 0; i < MAX_ORDER; i++) {\n      rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0;\n    }\n    switch (0 | samplefreq) {\n      case 48e3:\n        rgData.reqindex = 0;\n        break;\n      case 44100:\n        rgData.reqindex = 1;\n        break;\n      case 32e3:\n        rgData.reqindex = 2;\n        break;\n      case 24e3:\n        rgData.reqindex = 3;\n        break;\n      case 22050:\n        rgData.reqindex = 4;\n        break;\n      case 16e3:\n        rgData.reqindex = 5;\n        break;\n      case 12e3:\n        rgData.reqindex = 6;\n        break;\n      case 11025:\n        rgData.reqindex = 7;\n        break;\n      case 8e3:\n        rgData.reqindex = 8;\n        break;\n      default:\n        return INIT_GAIN_ANALYSIS_ERROR;\n    }\n    rgData.sampleWindow = 0 | (samplefreq * RMS_WINDOW_TIME_NUMERATOR + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR;\n    rgData.lsum = 0;\n    rgData.rsum = 0;\n    rgData.totsamp = 0;\n    Arrays$4.ill(rgData.A, 0);\n    return INIT_GAIN_ANALYSIS_OK;\n  }\n  this.InitGainAnalysis = function(rgData, samplefreq) {\n    if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n      return INIT_GAIN_ANALYSIS_ERROR;\n    }\n    rgData.linpre = MAX_ORDER;\n    rgData.rinpre = MAX_ORDER;\n    rgData.lstep = MAX_ORDER;\n    rgData.rstep = MAX_ORDER;\n    rgData.lout = MAX_ORDER;\n    rgData.rout = MAX_ORDER;\n    Arrays$4.fill(rgData.B, 0);\n    return INIT_GAIN_ANALYSIS_OK;\n  };\n  function fsqr(d) {\n    return d * d;\n  }\n  this.AnalyzeSamples = function(rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples, num_channels) {\n    var curleft;\n    var curleftBase;\n    var curright;\n    var currightBase;\n    var batchsamples;\n    var cursamples;\n    var cursamplepos;\n    if (num_samples == 0)\n      return GAIN_ANALYSIS_OK;\n    cursamplepos = 0;\n    batchsamples = num_samples;\n    switch (num_channels) {\n      case 1:\n        right_samples = left_samples;\n        right_samplesPos = left_samplesPos;\n        break;\n      case 2:\n        break;\n      default:\n        return GAIN_ANALYSIS_ERROR;\n    }\n    if (num_samples < MAX_ORDER) {\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos,\n        rgData.linprebuf,\n        MAX_ORDER,\n        num_samples\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos,\n        rgData.rinprebuf,\n        MAX_ORDER,\n        num_samples\n      );\n    } else {\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos,\n        rgData.linprebuf,\n        MAX_ORDER,\n        MAX_ORDER\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos,\n        rgData.rinprebuf,\n        MAX_ORDER,\n        MAX_ORDER\n      );\n    }\n    while (batchsamples > 0) {\n      cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow - rgData.totsamp : batchsamples;\n      if (cursamplepos < MAX_ORDER) {\n        curleft = rgData.linpre + cursamplepos;\n        curleftBase = rgData.linprebuf;\n        curright = rgData.rinpre + cursamplepos;\n        currightBase = rgData.rinprebuf;\n        if (cursamples > MAX_ORDER - cursamplepos) {\n          cursamples = MAX_ORDER - cursamplepos;\n        }\n      } else {\n        curleft = left_samplesPos + cursamplepos;\n        curleftBase = left_samples;\n        curright = right_samplesPos + cursamplepos;\n        currightBase = right_samples;\n      }\n      filterYule(\n        curleftBase,\n        curleft,\n        rgData.lstepbuf,\n        rgData.lstep + rgData.totsamp,\n        cursamples,\n        ABYule[rgData.reqindex]\n      );\n      filterYule(\n        currightBase,\n        curright,\n        rgData.rstepbuf,\n        rgData.rstep + rgData.totsamp,\n        cursamples,\n        ABYule[rgData.reqindex]\n      );\n      filterButter(\n        rgData.lstepbuf,\n        rgData.lstep + rgData.totsamp,\n        rgData.loutbuf,\n        rgData.lout + rgData.totsamp,\n        cursamples,\n        ABButter[rgData.reqindex]\n      );\n      filterButter(\n        rgData.rstepbuf,\n        rgData.rstep + rgData.totsamp,\n        rgData.routbuf,\n        rgData.rout + rgData.totsamp,\n        cursamples,\n        ABButter[rgData.reqindex]\n      );\n      curleft = rgData.lout + rgData.totsamp;\n      curleftBase = rgData.loutbuf;\n      curright = rgData.rout + rgData.totsamp;\n      currightBase = rgData.routbuf;\n      var i = cursamples % 8;\n      while (i-- != 0) {\n        rgData.lsum += fsqr(curleftBase[curleft++]);\n        rgData.rsum += fsqr(currightBase[curright++]);\n      }\n      i = cursamples / 8;\n      while (i-- != 0) {\n        rgData.lsum += fsqr(curleftBase[curleft + 0]) + fsqr(curleftBase[curleft + 1]) + fsqr(curleftBase[curleft + 2]) + fsqr(curleftBase[curleft + 3]) + fsqr(curleftBase[curleft + 4]) + fsqr(curleftBase[curleft + 5]) + fsqr(curleftBase[curleft + 6]) + fsqr(curleftBase[curleft + 7]);\n        curleft += 8;\n        rgData.rsum += fsqr(currightBase[curright + 0]) + fsqr(currightBase[curright + 1]) + fsqr(currightBase[curright + 2]) + fsqr(currightBase[curright + 3]) + fsqr(currightBase[curright + 4]) + fsqr(currightBase[curright + 5]) + fsqr(currightBase[curright + 6]) + fsqr(currightBase[curright + 7]);\n        curright += 8;\n      }\n      batchsamples -= cursamples;\n      cursamplepos += cursamples;\n      rgData.totsamp += cursamples;\n      if (rgData.totsamp == rgData.sampleWindow) {\n        var val = GainAnalysis$1.STEPS_per_dB * 10 * Math.log10(\n          (rgData.lsum + rgData.rsum) / rgData.totsamp * 0.5 + 1e-37\n        );\n        var ival = val <= 0 ? 0 : 0 | val;\n        if (ival >= rgData.A.length)\n          ival = rgData.A.length - 1;\n        rgData.A[ival]++;\n        rgData.lsum = rgData.rsum = 0;\n        System$5.arraycopy(\n          rgData.loutbuf,\n          rgData.totsamp,\n          rgData.loutbuf,\n          0,\n          MAX_ORDER\n        );\n        System$5.arraycopy(\n          rgData.routbuf,\n          rgData.totsamp,\n          rgData.routbuf,\n          0,\n          MAX_ORDER\n        );\n        System$5.arraycopy(\n          rgData.lstepbuf,\n          rgData.totsamp,\n          rgData.lstepbuf,\n          0,\n          MAX_ORDER\n        );\n        System$5.arraycopy(\n          rgData.rstepbuf,\n          rgData.totsamp,\n          rgData.rstepbuf,\n          0,\n          MAX_ORDER\n        );\n        rgData.totsamp = 0;\n      }\n      if (rgData.totsamp > rgData.sampleWindow) {\n        return GAIN_ANALYSIS_ERROR;\n      }\n    }\n    if (num_samples < MAX_ORDER) {\n      System$5.arraycopy(\n        rgData.linprebuf,\n        num_samples,\n        rgData.linprebuf,\n        0,\n        MAX_ORDER - num_samples\n      );\n      System$5.arraycopy(\n        rgData.rinprebuf,\n        num_samples,\n        rgData.rinprebuf,\n        0,\n        MAX_ORDER - num_samples\n      );\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos,\n        rgData.linprebuf,\n        MAX_ORDER - num_samples,\n        num_samples\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos,\n        rgData.rinprebuf,\n        MAX_ORDER - num_samples,\n        num_samples\n      );\n    } else {\n      System$5.arraycopy(\n        left_samples,\n        left_samplesPos + num_samples - MAX_ORDER,\n        rgData.linprebuf,\n        0,\n        MAX_ORDER\n      );\n      System$5.arraycopy(\n        right_samples,\n        right_samplesPos + num_samples - MAX_ORDER,\n        rgData.rinprebuf,\n        0,\n        MAX_ORDER\n      );\n    }\n    return GAIN_ANALYSIS_OK;\n  };\n  function analyzeResult(Array2, len) {\n    var i;\n    var elems = 0;\n    for (i = 0; i < len; i++)\n      elems += Array2[i];\n    if (elems == 0)\n      return GAIN_NOT_ENOUGH_SAMPLES;\n    var upper = 0 | Math.ceil(elems * (1 - RMS_PERCENTILE));\n    for (i = len; i-- > 0; ) {\n      if ((upper -= Array2[i]) <= 0)\n        break;\n    }\n    return PINK_REF - i / GainAnalysis$1.STEPS_per_dB;\n  }\n  this.GetTitleGain = function(rgData) {\n    var retval = analyzeResult(rgData.A, rgData.A.length);\n    for (var i = 0; i < rgData.A.length; i++) {\n      rgData.B[i] += rgData.A[i];\n      rgData.A[i] = 0;\n    }\n    for (var i = 0; i < MAX_ORDER; i++) {\n      rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0;\n    }\n    rgData.totsamp = 0;\n    rgData.lsum = rgData.rsum = 0;\n    return retval;\n  };\n}\nvar new_float$5 = common.new_float;\nvar new_int$5 = common.new_int;\nfunction ReplayGain() {\n  this.linprebuf = new_float$5(void 0 * 2);\n  this.linpre = 0;\n  this.lstepbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.lstep = 0;\n  this.loutbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.lout = 0;\n  this.rinprebuf = new_float$5(void 0 * 2);\n  this.rinpre = 0;\n  this.rstepbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.rstep = 0;\n  this.routbuf = new_float$5(\n    void 0 + void 0\n  );\n  this.rout = 0;\n  this.sampleWindow = 0;\n  this.totsamp = 0;\n  this.lsum = 0;\n  this.rsum = 0;\n  this.freqindex = 0;\n  this.first = 0;\n  this.A = new_int$5(0 | void 0 * void 0);\n  this.B = new_int$5(0 | void 0 * void 0);\n}\nfunction MeanBits$1(meanBits) {\n  this.bits = meanBits;\n}\nvar new_float$4 = common.new_float;\nvar new_int$4 = common.new_int;\nvar assert$8 = common.assert;\nfunction CBRNewIterationLoop(_quantize) {\n  var quantize = _quantize;\n  this.quantize = quantize;\n  this.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n    var gfc = gfp.internal_flags;\n    var l3_xmin = new_float$4(L3Side$1.SFBMAX);\n    var xrpow = new_float$4(576);\n    var targ_bits = new_int$4(2);\n    var mean_bits = 0;\n    var max_bits;\n    var l3_side = gfc.l3_side;\n    var mb = new MeanBits$1(mean_bits);\n    this.quantize.rv.ResvFrameBegin(gfp, mb);\n    mean_bits = mb.bits;\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      max_bits = this.quantize.qupvt.on_pe(\n        gfp,\n        pe,\n        targ_bits,\n        mean_bits,\n        gr,\n        gr\n      );\n      if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n        this.quantize.ms_convert(gfc.l3_side, gr);\n        this.quantize.qupvt.reduce_side(\n          targ_bits,\n          ms_ener_ratio[gr],\n          mean_bits,\n          max_bits\n        );\n      }\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        var adjust, masking_lower_db;\n        var cod_info = l3_side.tt[gr][ch];\n        if (cod_info.block_type != Encoder.SHORT_TYPE) {\n          adjust = 0;\n          masking_lower_db = gfc.PSY.mask_adjust - adjust;\n        } else {\n          adjust = 0;\n          masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n        }\n        gfc.masking_lower = Math.pow(10, masking_lower_db * 0.1);\n        this.quantize.init_outer_loop(gfc, cod_info);\n        if (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n          this.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, l3_xmin);\n          this.quantize.outer_loop(\n            gfp,\n            cod_info,\n            l3_xmin,\n            xrpow,\n            ch,\n            targ_bits[ch]\n          );\n        }\n        this.quantize.iteration_finish_one(gfc, gr, ch);\n        assert$8(\n          cod_info.part2_3_length <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL\n        );\n        assert$8(cod_info.part2_3_length <= targ_bits[ch]);\n      }\n    }\n    this.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n  };\n}\nfunction HuffCodeTab(len, max, tab, hl) {\n  this.xlen = len;\n  this.linmax = max;\n  this.table = tab;\n  this.hlen = hl;\n}\nvar Tables$1 = {};\nTables$1.t1HB = [1, 1, 1, 0];\nTables$1.t2HB = [1, 2, 1, 3, 1, 1, 3, 2, 0];\nTables$1.t3HB = [3, 2, 1, 1, 1, 1, 3, 2, 0];\nTables$1.t5HB = [1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0];\nTables$1.t6HB = [7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0];\nTables$1.t7HB = [\n  1,\n  2,\n  10,\n  19,\n  16,\n  10,\n  3,\n  3,\n  7,\n  10,\n  5,\n  3,\n  11,\n  4,\n  13,\n  17,\n  8,\n  4,\n  12,\n  11,\n  18,\n  15,\n  11,\n  2,\n  7,\n  6,\n  9,\n  14,\n  3,\n  1,\n  6,\n  4,\n  5,\n  3,\n  2,\n  0\n];\nTables$1.t8HB = [\n  3,\n  4,\n  6,\n  18,\n  12,\n  5,\n  5,\n  1,\n  2,\n  16,\n  9,\n  3,\n  7,\n  3,\n  5,\n  14,\n  7,\n  3,\n  19,\n  17,\n  15,\n  13,\n  10,\n  4,\n  13,\n  5,\n  8,\n  11,\n  5,\n  1,\n  12,\n  4,\n  4,\n  1,\n  1,\n  0\n];\nTables$1.t9HB = [\n  7,\n  5,\n  9,\n  14,\n  15,\n  7,\n  6,\n  4,\n  5,\n  5,\n  6,\n  7,\n  7,\n  6,\n  8,\n  8,\n  8,\n  5,\n  15,\n  6,\n  9,\n  10,\n  5,\n  1,\n  11,\n  7,\n  9,\n  6,\n  4,\n  1,\n  14,\n  4,\n  6,\n  2,\n  6,\n  0\n];\nTables$1.t10HB = [\n  1,\n  2,\n  10,\n  23,\n  35,\n  30,\n  12,\n  17,\n  3,\n  3,\n  8,\n  12,\n  18,\n  21,\n  12,\n  7,\n  11,\n  9,\n  15,\n  21,\n  32,\n  40,\n  19,\n  6,\n  14,\n  13,\n  22,\n  34,\n  46,\n  23,\n  18,\n  7,\n  20,\n  19,\n  33,\n  47,\n  27,\n  22,\n  9,\n  3,\n  31,\n  22,\n  41,\n  26,\n  21,\n  20,\n  5,\n  3,\n  14,\n  13,\n  10,\n  11,\n  16,\n  6,\n  5,\n  1,\n  9,\n  8,\n  7,\n  8,\n  4,\n  4,\n  2,\n  0\n];\nTables$1.t11HB = [\n  3,\n  4,\n  10,\n  24,\n  34,\n  33,\n  21,\n  15,\n  5,\n  3,\n  4,\n  10,\n  32,\n  17,\n  11,\n  10,\n  11,\n  7,\n  13,\n  18,\n  30,\n  31,\n  20,\n  5,\n  25,\n  11,\n  19,\n  59,\n  27,\n  18,\n  12,\n  5,\n  35,\n  33,\n  31,\n  58,\n  30,\n  16,\n  7,\n  5,\n  28,\n  26,\n  32,\n  19,\n  17,\n  15,\n  8,\n  14,\n  14,\n  12,\n  9,\n  13,\n  14,\n  9,\n  4,\n  1,\n  11,\n  4,\n  6,\n  6,\n  6,\n  3,\n  2,\n  0\n];\nTables$1.t12HB = [\n  9,\n  6,\n  16,\n  33,\n  41,\n  39,\n  38,\n  26,\n  7,\n  5,\n  6,\n  9,\n  23,\n  16,\n  26,\n  11,\n  17,\n  7,\n  11,\n  14,\n  21,\n  30,\n  10,\n  7,\n  17,\n  10,\n  15,\n  12,\n  18,\n  28,\n  14,\n  5,\n  32,\n  13,\n  22,\n  19,\n  18,\n  16,\n  9,\n  5,\n  40,\n  17,\n  31,\n  29,\n  17,\n  13,\n  4,\n  2,\n  27,\n  12,\n  11,\n  15,\n  10,\n  7,\n  4,\n  1,\n  27,\n  12,\n  8,\n  12,\n  6,\n  3,\n  1,\n  0\n];\nTables$1.t13HB = [\n  1,\n  5,\n  14,\n  21,\n  34,\n  51,\n  46,\n  71,\n  42,\n  52,\n  68,\n  52,\n  67,\n  44,\n  43,\n  19,\n  3,\n  4,\n  12,\n  19,\n  31,\n  26,\n  44,\n  33,\n  31,\n  24,\n  32,\n  24,\n  31,\n  35,\n  22,\n  14,\n  15,\n  13,\n  23,\n  36,\n  59,\n  49,\n  77,\n  65,\n  29,\n  40,\n  30,\n  40,\n  27,\n  33,\n  42,\n  16,\n  22,\n  20,\n  37,\n  61,\n  56,\n  79,\n  73,\n  64,\n  43,\n  76,\n  56,\n  37,\n  26,\n  31,\n  25,\n  14,\n  35,\n  16,\n  60,\n  57,\n  97,\n  75,\n  114,\n  91,\n  54,\n  73,\n  55,\n  41,\n  48,\n  53,\n  23,\n  24,\n  58,\n  27,\n  50,\n  96,\n  76,\n  70,\n  93,\n  84,\n  77,\n  58,\n  79,\n  29,\n  74,\n  49,\n  41,\n  17,\n  47,\n  45,\n  78,\n  74,\n  115,\n  94,\n  90,\n  79,\n  69,\n  83,\n  71,\n  50,\n  59,\n  38,\n  36,\n  15,\n  72,\n  34,\n  56,\n  95,\n  92,\n  85,\n  91,\n  90,\n  86,\n  73,\n  77,\n  65,\n  51,\n  44,\n  43,\n  42,\n  43,\n  20,\n  30,\n  44,\n  55,\n  78,\n  72,\n  87,\n  78,\n  61,\n  46,\n  54,\n  37,\n  30,\n  20,\n  16,\n  53,\n  25,\n  41,\n  37,\n  44,\n  59,\n  54,\n  81,\n  66,\n  76,\n  57,\n  54,\n  37,\n  18,\n  39,\n  11,\n  35,\n  33,\n  31,\n  57,\n  42,\n  82,\n  72,\n  80,\n  47,\n  58,\n  55,\n  21,\n  22,\n  26,\n  38,\n  22,\n  53,\n  25,\n  23,\n  38,\n  70,\n  60,\n  51,\n  36,\n  55,\n  26,\n  34,\n  23,\n  27,\n  14,\n  9,\n  7,\n  34,\n  32,\n  28,\n  39,\n  49,\n  75,\n  30,\n  52,\n  48,\n  40,\n  52,\n  28,\n  18,\n  17,\n  9,\n  5,\n  45,\n  21,\n  34,\n  64,\n  56,\n  50,\n  49,\n  45,\n  31,\n  19,\n  12,\n  15,\n  10,\n  7,\n  6,\n  3,\n  48,\n  23,\n  20,\n  39,\n  36,\n  35,\n  53,\n  21,\n  16,\n  23,\n  13,\n  10,\n  6,\n  1,\n  4,\n  2,\n  16,\n  15,\n  17,\n  27,\n  25,\n  20,\n  29,\n  11,\n  17,\n  12,\n  16,\n  8,\n  1,\n  1,\n  0,\n  1\n];\nTables$1.t15HB = [\n  7,\n  12,\n  18,\n  53,\n  47,\n  76,\n  124,\n  108,\n  89,\n  123,\n  108,\n  119,\n  107,\n  81,\n  122,\n  63,\n  13,\n  5,\n  16,\n  27,\n  46,\n  36,\n  61,\n  51,\n  42,\n  70,\n  52,\n  83,\n  65,\n  41,\n  59,\n  36,\n  19,\n  17,\n  15,\n  24,\n  41,\n  34,\n  59,\n  48,\n  40,\n  64,\n  50,\n  78,\n  62,\n  80,\n  56,\n  33,\n  29,\n  28,\n  25,\n  43,\n  39,\n  63,\n  55,\n  93,\n  76,\n  59,\n  93,\n  72,\n  54,\n  75,\n  50,\n  29,\n  52,\n  22,\n  42,\n  40,\n  67,\n  57,\n  95,\n  79,\n  72,\n  57,\n  89,\n  69,\n  49,\n  66,\n  46,\n  27,\n  77,\n  37,\n  35,\n  66,\n  58,\n  52,\n  91,\n  74,\n  62,\n  48,\n  79,\n  63,\n  90,\n  62,\n  40,\n  38,\n  125,\n  32,\n  60,\n  56,\n  50,\n  92,\n  78,\n  65,\n  55,\n  87,\n  71,\n  51,\n  73,\n  51,\n  70,\n  30,\n  109,\n  53,\n  49,\n  94,\n  88,\n  75,\n  66,\n  122,\n  91,\n  73,\n  56,\n  42,\n  64,\n  44,\n  21,\n  25,\n  90,\n  43,\n  41,\n  77,\n  73,\n  63,\n  56,\n  92,\n  77,\n  66,\n  47,\n  67,\n  48,\n  53,\n  36,\n  20,\n  71,\n  34,\n  67,\n  60,\n  58,\n  49,\n  88,\n  76,\n  67,\n  106,\n  71,\n  54,\n  38,\n  39,\n  23,\n  15,\n  109,\n  53,\n  51,\n  47,\n  90,\n  82,\n  58,\n  57,\n  48,\n  72,\n  57,\n  41,\n  23,\n  27,\n  62,\n  9,\n  86,\n  42,\n  40,\n  37,\n  70,\n  64,\n  52,\n  43,\n  70,\n  55,\n  42,\n  25,\n  29,\n  18,\n  11,\n  11,\n  118,\n  68,\n  30,\n  55,\n  50,\n  46,\n  74,\n  65,\n  49,\n  39,\n  24,\n  16,\n  22,\n  13,\n  14,\n  7,\n  91,\n  44,\n  39,\n  38,\n  34,\n  63,\n  52,\n  45,\n  31,\n  52,\n  28,\n  19,\n  14,\n  8,\n  9,\n  3,\n  123,\n  60,\n  58,\n  53,\n  47,\n  43,\n  32,\n  22,\n  37,\n  24,\n  17,\n  12,\n  15,\n  10,\n  2,\n  1,\n  71,\n  37,\n  34,\n  30,\n  28,\n  20,\n  17,\n  26,\n  21,\n  16,\n  10,\n  6,\n  8,\n  6,\n  2,\n  0\n];\nTables$1.t16HB = [\n  1,\n  5,\n  14,\n  44,\n  74,\n  63,\n  110,\n  93,\n  172,\n  149,\n  138,\n  242,\n  225,\n  195,\n  376,\n  17,\n  3,\n  4,\n  12,\n  20,\n  35,\n  62,\n  53,\n  47,\n  83,\n  75,\n  68,\n  119,\n  201,\n  107,\n  207,\n  9,\n  15,\n  13,\n  23,\n  38,\n  67,\n  58,\n  103,\n  90,\n  161,\n  72,\n  127,\n  117,\n  110,\n  209,\n  206,\n  16,\n  45,\n  21,\n  39,\n  69,\n  64,\n  114,\n  99,\n  87,\n  158,\n  140,\n  252,\n  212,\n  199,\n  387,\n  365,\n  26,\n  75,\n  36,\n  68,\n  65,\n  115,\n  101,\n  179,\n  164,\n  155,\n  264,\n  246,\n  226,\n  395,\n  382,\n  362,\n  9,\n  66,\n  30,\n  59,\n  56,\n  102,\n  185,\n  173,\n  265,\n  142,\n  253,\n  232,\n  400,\n  388,\n  378,\n  445,\n  16,\n  111,\n  54,\n  52,\n  100,\n  184,\n  178,\n  160,\n  133,\n  257,\n  244,\n  228,\n  217,\n  385,\n  366,\n  715,\n  10,\n  98,\n  48,\n  91,\n  88,\n  165,\n  157,\n  148,\n  261,\n  248,\n  407,\n  397,\n  372,\n  380,\n  889,\n  884,\n  8,\n  85,\n  84,\n  81,\n  159,\n  156,\n  143,\n  260,\n  249,\n  427,\n  401,\n  392,\n  383,\n  727,\n  713,\n  708,\n  7,\n  154,\n  76,\n  73,\n  141,\n  131,\n  256,\n  245,\n  426,\n  406,\n  394,\n  384,\n  735,\n  359,\n  710,\n  352,\n  11,\n  139,\n  129,\n  67,\n  125,\n  247,\n  233,\n  229,\n  219,\n  393,\n  743,\n  737,\n  720,\n  885,\n  882,\n  439,\n  4,\n  243,\n  120,\n  118,\n  115,\n  227,\n  223,\n  396,\n  746,\n  742,\n  736,\n  721,\n  712,\n  706,\n  223,\n  436,\n  6,\n  202,\n  224,\n  222,\n  218,\n  216,\n  389,\n  386,\n  381,\n  364,\n  888,\n  443,\n  707,\n  440,\n  437,\n  1728,\n  4,\n  747,\n  211,\n  210,\n  208,\n  370,\n  379,\n  734,\n  723,\n  714,\n  1735,\n  883,\n  877,\n  876,\n  3459,\n  865,\n  2,\n  377,\n  369,\n  102,\n  187,\n  726,\n  722,\n  358,\n  711,\n  709,\n  866,\n  1734,\n  871,\n  3458,\n  870,\n  434,\n  0,\n  12,\n  10,\n  7,\n  11,\n  10,\n  17,\n  11,\n  9,\n  13,\n  12,\n  10,\n  7,\n  5,\n  3,\n  1,\n  3\n];\nTables$1.t24HB = [\n  15,\n  13,\n  46,\n  80,\n  146,\n  262,\n  248,\n  434,\n  426,\n  669,\n  653,\n  649,\n  621,\n  517,\n  1032,\n  88,\n  14,\n  12,\n  21,\n  38,\n  71,\n  130,\n  122,\n  216,\n  209,\n  198,\n  327,\n  345,\n  319,\n  297,\n  279,\n  42,\n  47,\n  22,\n  41,\n  74,\n  68,\n  128,\n  120,\n  221,\n  207,\n  194,\n  182,\n  340,\n  315,\n  295,\n  541,\n  18,\n  81,\n  39,\n  75,\n  70,\n  134,\n  125,\n  116,\n  220,\n  204,\n  190,\n  178,\n  325,\n  311,\n  293,\n  271,\n  16,\n  147,\n  72,\n  69,\n  135,\n  127,\n  118,\n  112,\n  210,\n  200,\n  188,\n  352,\n  323,\n  306,\n  285,\n  540,\n  14,\n  263,\n  66,\n  129,\n  126,\n  119,\n  114,\n  214,\n  202,\n  192,\n  180,\n  341,\n  317,\n  301,\n  281,\n  262,\n  12,\n  249,\n  123,\n  121,\n  117,\n  113,\n  215,\n  206,\n  195,\n  185,\n  347,\n  330,\n  308,\n  291,\n  272,\n  520,\n  10,\n  435,\n  115,\n  111,\n  109,\n  211,\n  203,\n  196,\n  187,\n  353,\n  332,\n  313,\n  298,\n  283,\n  531,\n  381,\n  17,\n  427,\n  212,\n  208,\n  205,\n  201,\n  193,\n  186,\n  177,\n  169,\n  320,\n  303,\n  286,\n  268,\n  514,\n  377,\n  16,\n  335,\n  199,\n  197,\n  191,\n  189,\n  181,\n  174,\n  333,\n  321,\n  305,\n  289,\n  275,\n  521,\n  379,\n  371,\n  11,\n  668,\n  184,\n  183,\n  179,\n  175,\n  344,\n  331,\n  314,\n  304,\n  290,\n  277,\n  530,\n  383,\n  373,\n  366,\n  10,\n  652,\n  346,\n  171,\n  168,\n  164,\n  318,\n  309,\n  299,\n  287,\n  276,\n  263,\n  513,\n  375,\n  368,\n  362,\n  6,\n  648,\n  322,\n  316,\n  312,\n  307,\n  302,\n  292,\n  284,\n  269,\n  261,\n  512,\n  376,\n  370,\n  364,\n  359,\n  4,\n  620,\n  300,\n  296,\n  294,\n  288,\n  282,\n  273,\n  266,\n  515,\n  380,\n  374,\n  369,\n  365,\n  361,\n  357,\n  2,\n  1033,\n  280,\n  278,\n  274,\n  267,\n  264,\n  259,\n  382,\n  378,\n  372,\n  367,\n  363,\n  360,\n  358,\n  356,\n  0,\n  43,\n  20,\n  19,\n  17,\n  15,\n  13,\n  11,\n  9,\n  7,\n  6,\n  4,\n  7,\n  5,\n  3,\n  1,\n  3\n];\nTables$1.t32HB = [\n  1 << 0,\n  5 << 1,\n  4 << 1,\n  5 << 2,\n  6 << 1,\n  5 << 2,\n  4 << 2,\n  4 << 3,\n  7 << 1,\n  3 << 2,\n  6 << 2,\n  0 << 3,\n  7 << 2,\n  2 << 3,\n  3 << 3,\n  1 << 4\n];\nTables$1.t33HB = [\n  15 << 0,\n  14 << 1,\n  13 << 1,\n  12 << 2,\n  11 << 1,\n  10 << 2,\n  9 << 2,\n  8 << 3,\n  7 << 1,\n  6 << 2,\n  5 << 2,\n  4 << 3,\n  3 << 2,\n  2 << 3,\n  1 << 3,\n  0 << 4\n];\nTables$1.t1l = [1, 4, 3, 5];\nTables$1.t2l = [1, 4, 7, 4, 5, 7, 6, 7, 8];\nTables$1.t3l = [2, 3, 7, 4, 4, 7, 6, 7, 8];\nTables$1.t5l = [1, 4, 7, 8, 4, 5, 8, 9, 7, 8, 9, 10, 8, 8, 9, 10];\nTables$1.t6l = [3, 4, 6, 8, 4, 4, 6, 7, 5, 6, 7, 8, 7, 7, 8, 9];\nTables$1.t7l = [\n  1,\n  4,\n  7,\n  9,\n  9,\n  10,\n  4,\n  6,\n  8,\n  9,\n  9,\n  10,\n  7,\n  7,\n  9,\n  10,\n  10,\n  11,\n  8,\n  9,\n  10,\n  11,\n  11,\n  11,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12\n];\nTables$1.t8l = [\n  2,\n  4,\n  7,\n  9,\n  9,\n  10,\n  4,\n  4,\n  6,\n  10,\n  10,\n  10,\n  7,\n  6,\n  8,\n  10,\n  10,\n  11,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  9,\n  9,\n  10,\n  11,\n  12,\n  12,\n  10,\n  10,\n  11,\n  11,\n  13,\n  13\n];\nTables$1.t9l = [\n  3,\n  4,\n  6,\n  7,\n  9,\n  10,\n  4,\n  5,\n  6,\n  7,\n  8,\n  10,\n  5,\n  6,\n  7,\n  8,\n  9,\n  10,\n  7,\n  7,\n  8,\n  9,\n  9,\n  10,\n  8,\n  8,\n  9,\n  9,\n  10,\n  11,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11\n];\nTables$1.t10l = [\n  1,\n  4,\n  7,\n  9,\n  10,\n  10,\n  10,\n  11,\n  4,\n  6,\n  8,\n  9,\n  10,\n  11,\n  10,\n  10,\n  7,\n  8,\n  9,\n  10,\n  11,\n  12,\n  11,\n  11,\n  8,\n  9,\n  10,\n  11,\n  12,\n  12,\n  11,\n  12,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  12,\n  13,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  10,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13\n];\nTables$1.t11l = [\n  2,\n  4,\n  6,\n  8,\n  9,\n  10,\n  9,\n  10,\n  4,\n  5,\n  6,\n  8,\n  10,\n  10,\n  9,\n  10,\n  6,\n  7,\n  8,\n  9,\n  10,\n  11,\n  10,\n  10,\n  8,\n  8,\n  9,\n  11,\n  10,\n  12,\n  10,\n  11,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  11,\n  12,\n  9,\n  10,\n  11,\n  12,\n  12,\n  13,\n  12,\n  13,\n  9,\n  9,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  9,\n  9,\n  10,\n  11,\n  12,\n  12,\n  12,\n  12\n];\nTables$1.t12l = [\n  4,\n  4,\n  6,\n  8,\n  9,\n  10,\n  10,\n  10,\n  4,\n  5,\n  6,\n  7,\n  9,\n  9,\n  10,\n  10,\n  6,\n  6,\n  7,\n  8,\n  9,\n  10,\n  9,\n  10,\n  7,\n  7,\n  8,\n  8,\n  9,\n  10,\n  10,\n  10,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  10,\n  11,\n  9,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12\n];\nTables$1.t13l = [\n  1,\n  5,\n  7,\n  8,\n  9,\n  10,\n  10,\n  11,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  4,\n  6,\n  8,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  13,\n  14,\n  14,\n  14,\n  7,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  15,\n  15,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  15,\n  15,\n  9,\n  9,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  16,\n  10,\n  10,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  13,\n  15,\n  15,\n  16,\n  16,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  16,\n  11,\n  11,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  18,\n  18,\n  10,\n  10,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  17,\n  17,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  15,\n  14,\n  15,\n  15,\n  16,\n  16,\n  16,\n  18,\n  17,\n  11,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  14,\n  15,\n  16,\n  15,\n  16,\n  17,\n  18,\n  19,\n  12,\n  12,\n  12,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  17,\n  17,\n  17,\n  18,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  14,\n  15,\n  16,\n  16,\n  17,\n  17,\n  17,\n  18,\n  18,\n  18,\n  13,\n  13,\n  14,\n  15,\n  15,\n  15,\n  16,\n  16,\n  16,\n  16,\n  16,\n  17,\n  18,\n  17,\n  18,\n  18,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  17,\n  16,\n  16,\n  19,\n  17,\n  17,\n  17,\n  19,\n  18,\n  18,\n  13,\n  14,\n  15,\n  16,\n  16,\n  16,\n  17,\n  16,\n  17,\n  17,\n  18,\n  18,\n  21,\n  20,\n  21,\n  18\n];\nTables$1.t15l = [\n  3,\n  5,\n  6,\n  8,\n  8,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  14,\n  5,\n  5,\n  7,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  6,\n  7,\n  7,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  7,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  9,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  10,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  15,\n  14,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  12,\n  12,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  14,\n  15,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15\n];\nTables$1.t16_5l = [\n  1,\n  5,\n  7,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  11,\n  4,\n  6,\n  8,\n  9,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  14,\n  13,\n  14,\n  11,\n  7,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  12,\n  9,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  13,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  12,\n  10,\n  10,\n  11,\n  11,\n  12,\n  13,\n  13,\n  14,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  13,\n  11,\n  11,\n  11,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  13,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  17,\n  13,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  16,\n  16,\n  13,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  15,\n  16,\n  15,\n  14,\n  12,\n  13,\n  12,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  17,\n  17,\n  16,\n  13,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  15,\n  16,\n  14,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  16,\n  16,\n  16,\n  16,\n  18,\n  14,\n  15,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  16,\n  16,\n  18,\n  17,\n  17,\n  17,\n  19,\n  17,\n  14,\n  14,\n  15,\n  13,\n  14,\n  16,\n  16,\n  15,\n  16,\n  16,\n  17,\n  18,\n  17,\n  19,\n  17,\n  16,\n  14,\n  11,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  14,\n  14,\n  14,\n  12\n];\nTables$1.t16l = [\n  1,\n  5,\n  7,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  10,\n  4,\n  6,\n  8,\n  9,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  14,\n  13,\n  14,\n  10,\n  7,\n  8,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  11,\n  9,\n  9,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  12,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  11,\n  10,\n  10,\n  11,\n  11,\n  12,\n  13,\n  13,\n  14,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  16,\n  12,\n  11,\n  11,\n  11,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  12,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  17,\n  12,\n  11,\n  12,\n  12,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  16,\n  16,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  16,\n  15,\n  16,\n  15,\n  13,\n  12,\n  13,\n  12,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  17,\n  17,\n  16,\n  12,\n  13,\n  13,\n  13,\n  13,\n  14,\n  14,\n  15,\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  15,\n  16,\n  13,\n  13,\n  14,\n  14,\n  14,\n  14,\n  15,\n  15,\n  15,\n  15,\n  17,\n  16,\n  16,\n  16,\n  16,\n  18,\n  13,\n  15,\n  14,\n  14,\n  14,\n  15,\n  15,\n  16,\n  16,\n  16,\n  18,\n  17,\n  17,\n  17,\n  19,\n  17,\n  13,\n  14,\n  15,\n  13,\n  14,\n  16,\n  16,\n  15,\n  16,\n  16,\n  17,\n  18,\n  17,\n  19,\n  17,\n  16,\n  13,\n  10,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10\n];\nTables$1.t24l = [\n  4,\n  5,\n  7,\n  8,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  10,\n  5,\n  6,\n  7,\n  8,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  10,\n  7,\n  7,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  13,\n  9,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  9,\n  9,\n  9,\n  9,\n  10,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  9,\n  10,\n  9,\n  10,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  9,\n  10,\n  10,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  9,\n  11,\n  10,\n  10,\n  10,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  10,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  10,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  10,\n  12,\n  11,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  10,\n  12,\n  12,\n  11,\n  11,\n  11,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  10,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10,\n  13,\n  12,\n  12,\n  12,\n  12,\n  12,\n  12,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  13,\n  10,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  9,\n  10,\n  10,\n  10,\n  10,\n  6\n];\nTables$1.t32l = [\n  1 + 0,\n  4 + 1,\n  4 + 1,\n  5 + 2,\n  4 + 1,\n  6 + 2,\n  5 + 2,\n  6 + 3,\n  4 + 1,\n  5 + 2,\n  5 + 2,\n  6 + 3,\n  5 + 2,\n  6 + 3,\n  6 + 3,\n  6 + 4\n];\nTables$1.t33l = [\n  4 + 0,\n  4 + 1,\n  4 + 1,\n  4 + 2,\n  4 + 1,\n  4 + 2,\n  4 + 2,\n  4 + 3,\n  4 + 1,\n  4 + 2,\n  4 + 2,\n  4 + 3,\n  4 + 2,\n  4 + 3,\n  4 + 3,\n  4 + 4\n];\nTables$1.ht = [\n  new HuffCodeTab(0, 0, null, null),\n  new HuffCodeTab(2, 0, Tables$1.t1HB, Tables$1.t1l),\n  new HuffCodeTab(3, 0, Tables$1.t2HB, Tables$1.t2l),\n  new HuffCodeTab(3, 0, Tables$1.t3HB, Tables$1.t3l),\n  new HuffCodeTab(0, 0, null, null),\n  new HuffCodeTab(4, 0, Tables$1.t5HB, Tables$1.t5l),\n  new HuffCodeTab(4, 0, Tables$1.t6HB, Tables$1.t6l),\n  new HuffCodeTab(6, 0, Tables$1.t7HB, Tables$1.t7l),\n  new HuffCodeTab(6, 0, Tables$1.t8HB, Tables$1.t8l),\n  new HuffCodeTab(6, 0, Tables$1.t9HB, Tables$1.t9l),\n  new HuffCodeTab(8, 0, Tables$1.t10HB, Tables$1.t10l),\n  new HuffCodeTab(8, 0, Tables$1.t11HB, Tables$1.t11l),\n  new HuffCodeTab(8, 0, Tables$1.t12HB, Tables$1.t12l),\n  new HuffCodeTab(16, 0, Tables$1.t13HB, Tables$1.t13l),\n  new HuffCodeTab(0, 0, null, Tables$1.t16_5l),\n  new HuffCodeTab(16, 0, Tables$1.t15HB, Tables$1.t15l),\n  new HuffCodeTab(1, 1, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(2, 3, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(3, 7, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(4, 15, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(6, 63, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(8, 255, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(10, 1023, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(13, 8191, Tables$1.t16HB, Tables$1.t16l),\n  new HuffCodeTab(4, 15, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(5, 31, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(6, 63, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(7, 127, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(8, 255, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(9, 511, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(11, 2047, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(13, 8191, Tables$1.t24HB, Tables$1.t24l),\n  new HuffCodeTab(0, 0, Tables$1.t32HB, Tables$1.t32l),\n  new HuffCodeTab(0, 0, Tables$1.t33HB, Tables$1.t33l)\n];\nTables$1.largetbl = [\n  65540,\n  327685,\n  458759,\n  589832,\n  655369,\n  655370,\n  720906,\n  720907,\n  786443,\n  786444,\n  786444,\n  851980,\n  851980,\n  851980,\n  917517,\n  655370,\n  262149,\n  393222,\n  524295,\n  589832,\n  655369,\n  720906,\n  720906,\n  720907,\n  786443,\n  786443,\n  786444,\n  851980,\n  917516,\n  851980,\n  917516,\n  655370,\n  458759,\n  524295,\n  589832,\n  655369,\n  720905,\n  720906,\n  786442,\n  786443,\n  851979,\n  786443,\n  851979,\n  851980,\n  851980,\n  917516,\n  917517,\n  720905,\n  589832,\n  589832,\n  655369,\n  720905,\n  720906,\n  786442,\n  786442,\n  786443,\n  851979,\n  851979,\n  917515,\n  917516,\n  917516,\n  983052,\n  983052,\n  786441,\n  655369,\n  655369,\n  720905,\n  720906,\n  786442,\n  786442,\n  851978,\n  851979,\n  851979,\n  917515,\n  917516,\n  917516,\n  983052,\n  983052,\n  983053,\n  720905,\n  655370,\n  655369,\n  720906,\n  720906,\n  786442,\n  851978,\n  851979,\n  917515,\n  851979,\n  917515,\n  917516,\n  983052,\n  983052,\n  983052,\n  1048588,\n  786441,\n  720906,\n  720906,\n  720906,\n  786442,\n  851978,\n  851979,\n  851979,\n  851979,\n  917515,\n  917516,\n  917516,\n  917516,\n  983052,\n  983052,\n  1048589,\n  786441,\n  720907,\n  720906,\n  786442,\n  786442,\n  851979,\n  851979,\n  851979,\n  917515,\n  917516,\n  983052,\n  983052,\n  983052,\n  983052,\n  1114125,\n  1114125,\n  786442,\n  720907,\n  786443,\n  786443,\n  851979,\n  851979,\n  851979,\n  917515,\n  917515,\n  983051,\n  983052,\n  983052,\n  983052,\n  1048588,\n  1048589,\n  1048589,\n  786442,\n  786443,\n  786443,\n  786443,\n  851979,\n  851979,\n  917515,\n  917515,\n  983052,\n  983052,\n  983052,\n  983052,\n  1048588,\n  983053,\n  1048589,\n  983053,\n  851978,\n  786444,\n  851979,\n  786443,\n  851979,\n  917515,\n  917516,\n  917516,\n  917516,\n  983052,\n  1048588,\n  1048588,\n  1048589,\n  1114125,\n  1114125,\n  1048589,\n  786442,\n  851980,\n  851980,\n  851979,\n  851979,\n  917515,\n  917516,\n  983052,\n  1048588,\n  1048588,\n  1048588,\n  1048588,\n  1048589,\n  1048589,\n  983053,\n  1048589,\n  851978,\n  851980,\n  917516,\n  917516,\n  917516,\n  917516,\n  983052,\n  983052,\n  983052,\n  983052,\n  1114124,\n  1048589,\n  1048589,\n  1048589,\n  1048589,\n  1179661,\n  851978,\n  983052,\n  917516,\n  917516,\n  917516,\n  983052,\n  983052,\n  1048588,\n  1048588,\n  1048589,\n  1179661,\n  1114125,\n  1114125,\n  1114125,\n  1245197,\n  1114125,\n  851978,\n  917517,\n  983052,\n  851980,\n  917516,\n  1048588,\n  1048588,\n  983052,\n  1048589,\n  1048589,\n  1114125,\n  1179661,\n  1114125,\n  1245197,\n  1114125,\n  1048589,\n  851978,\n  655369,\n  655369,\n  655369,\n  720905,\n  720905,\n  786441,\n  786441,\n  786441,\n  851977,\n  851977,\n  851977,\n  851978,\n  851978,\n  851978,\n  851978,\n  655366\n];\nTables$1.table23 = [\n  65538,\n  262147,\n  458759,\n  262148,\n  327684,\n  458759,\n  393222,\n  458759,\n  524296\n];\nTables$1.table56 = [\n  65539,\n  262148,\n  458758,\n  524296,\n  262148,\n  327684,\n  524294,\n  589831,\n  458757,\n  524294,\n  589831,\n  655368,\n  524295,\n  524295,\n  589832,\n  655369\n];\nTables$1.bitrate_table = [\n  [\n    0,\n    8,\n    16,\n    24,\n    32,\n    40,\n    48,\n    56,\n    64,\n    80,\n    96,\n    112,\n    128,\n    144,\n    160,\n    -1\n  ],\n  [\n    0,\n    32,\n    40,\n    48,\n    56,\n    64,\n    80,\n    96,\n    112,\n    128,\n    160,\n    192,\n    224,\n    256,\n    320,\n    -1\n  ],\n  [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1]\n];\nTables$1.samplerate_table = [\n  [22050, 24e3, 16e3, -1],\n  [44100, 48e3, 32e3, -1],\n  [11025, 12e3, 8e3, -1]\n];\nTables$1.scfsi_band = [0, 6, 11, 16, 21];\nvar VbrMode$4 = common.VbrMode;\nvar Float = common.Float;\nvar Util$1 = common.Util;\nvar new_float$3 = common.new_float;\nvar new_int$3 = common.new_int;\nvar assert$7 = common.assert;\nQuantizePVT.Q_MAX = 256 + 1;\nQuantizePVT.Q_MAX2 = 116;\nQuantizePVT.LARGE_BITS = 1e5;\nQuantizePVT.IXMAX_VAL = 8206;\nfunction QuantizePVT() {\n  var tak = null;\n  var rv = null;\n  var psy = null;\n  this.setModules = function(_tk, _rv, _psy) {\n    tak = _tk;\n    rv = _rv;\n    psy = _psy;\n  };\n  function POW20(x) {\n    return pow20[x + QuantizePVT.Q_MAX2];\n  }\n  this.IPOW20 = function(x) {\n    return ipow20[x];\n  };\n  var DBL_EPSILON = 2220446049250313e-31;\n  var IXMAX_VAL = QuantizePVT.IXMAX_VAL;\n  var PRECALC_SIZE = IXMAX_VAL + 2;\n  var Q_MAX = QuantizePVT.Q_MAX;\n  var Q_MAX2 = QuantizePVT.Q_MAX2;\n  var NSATHSCALE = 100;\n  this.nr_of_sfb_block = [\n    [\n      [6, 5, 5, 5],\n      [9, 9, 9, 9],\n      [6, 9, 9, 9]\n    ],\n    [\n      [6, 5, 7, 3],\n      [9, 9, 12, 6],\n      [6, 9, 12, 6]\n    ],\n    [\n      [11, 10, 0, 0],\n      [18, 18, 0, 0],\n      [15, 18, 0, 0]\n    ],\n    [\n      [7, 7, 7, 0],\n      [12, 12, 12, 0],\n      [6, 15, 12, 0]\n    ],\n    [\n      [6, 6, 6, 3],\n      [12, 9, 9, 6],\n      [6, 12, 9, 6]\n    ],\n    [\n      [8, 8, 5, 0],\n      [15, 12, 9, 0],\n      [6, 18, 9, 0]\n    ]\n  ];\n  var pretab = [\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    1,\n    1,\n    1,\n    1,\n    2,\n    2,\n    3,\n    3,\n    3,\n    2,\n    0\n  ];\n  this.pretab = pretab;\n  this.sfBandIndex = [\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        114,\n        136,\n        162,\n        194,\n        232,\n        278,\n        332,\n        394,\n        464,\n        540,\n        576\n      ],\n      [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        4,\n        8,\n        12,\n        16,\n        20,\n        24,\n        30,\n        36,\n        44,\n        52,\n        62,\n        74,\n        90,\n        110,\n        134,\n        162,\n        196,\n        238,\n        288,\n        342,\n        418,\n        576\n      ],\n      [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        4,\n        8,\n        12,\n        16,\n        20,\n        24,\n        30,\n        36,\n        42,\n        50,\n        60,\n        72,\n        88,\n        106,\n        128,\n        156,\n        190,\n        230,\n        276,\n        330,\n        384,\n        576\n      ],\n      [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        4,\n        8,\n        12,\n        16,\n        20,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        82,\n        102,\n        126,\n        156,\n        194,\n        240,\n        296,\n        364,\n        448,\n        550,\n        576\n      ],\n      [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [\n        0 / 3,\n        12 / 3,\n        24 / 3,\n        36 / 3,\n        54 / 3,\n        78 / 3,\n        108 / 3,\n        144 / 3,\n        186 / 3,\n        240 / 3,\n        312 / 3,\n        402 / 3,\n        522 / 3,\n        576 / 3\n      ],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        6,\n        12,\n        18,\n        24,\n        30,\n        36,\n        44,\n        54,\n        66,\n        80,\n        96,\n        116,\n        140,\n        168,\n        200,\n        238,\n        284,\n        336,\n        396,\n        464,\n        522,\n        576\n      ],\n      [\n        0 / 3,\n        12 / 3,\n        24 / 3,\n        36 / 3,\n        54 / 3,\n        78 / 3,\n        108 / 3,\n        144 / 3,\n        186 / 3,\n        240 / 3,\n        312 / 3,\n        402 / 3,\n        522 / 3,\n        576 / 3\n      ],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    ),\n    new ScaleFac(\n      [\n        0,\n        12,\n        24,\n        36,\n        48,\n        60,\n        72,\n        88,\n        108,\n        132,\n        160,\n        192,\n        232,\n        280,\n        336,\n        400,\n        476,\n        566,\n        568,\n        570,\n        572,\n        574,\n        576\n      ],\n      [\n        0 / 3,\n        24 / 3,\n        48 / 3,\n        72 / 3,\n        108 / 3,\n        156 / 3,\n        216 / 3,\n        288 / 3,\n        372 / 3,\n        480 / 3,\n        486 / 3,\n        492 / 3,\n        498 / 3,\n        576 / 3\n      ],\n      [0, 0, 0, 0, 0, 0, 0],\n      [0, 0, 0, 0, 0, 0, 0]\n    )\n  ];\n  var pow20 = new_float$3(Q_MAX + Q_MAX2 + 1);\n  var ipow20 = new_float$3(Q_MAX);\n  var pow43 = new_float$3(PRECALC_SIZE);\n  var adj43 = new_float$3(PRECALC_SIZE);\n  this.adj43 = adj43;\n  function ATHmdct(gfp, f) {\n    var ath = psy.ATHformula(f, gfp);\n    ath -= NSATHSCALE;\n    ath = Math.pow(10, ath / 10 + gfp.ATHlower);\n    return ath;\n  }\n  function compute_ath(gfp) {\n    var ATH_l = gfp.internal_flags.ATH.l;\n    var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n    var ATH_s = gfp.internal_flags.ATH.s;\n    var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n    var gfc = gfp.internal_flags;\n    var samp_freq = gfp.out_samplerate;\n    for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n      var start = gfc.scalefac_band.l[sfb];\n      var end = gfc.scalefac_band.l[sfb + 1];\n      ATH_l[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 576);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n      }\n    }\n    for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n      var start = gfc.scalefac_band.psfb21[sfb];\n      var end = gfc.scalefac_band.psfb21[sfb + 1];\n      ATH_psfb21[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 576);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n      }\n    }\n    for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n      var start = gfc.scalefac_band.s[sfb];\n      var end = gfc.scalefac_band.s[sfb + 1];\n      ATH_s[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 192);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n      }\n      ATH_s[sfb] *= gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb];\n    }\n    for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n      var start = gfc.scalefac_band.psfb12[sfb];\n      var end = gfc.scalefac_band.psfb12[sfb + 1];\n      ATH_psfb12[sfb] = Float.MAX_VALUE;\n      for (var i = start; i < end; i++) {\n        var freq = i * samp_freq / (2 * 192);\n        var ATH_f = ATHmdct(gfp, freq);\n        ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n      }\n      ATH_psfb12[sfb] *= gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12];\n    }\n    if (gfp.noATH) {\n      for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n        ATH_l[sfb] = 1e-20;\n      }\n      for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n        ATH_psfb21[sfb] = 1e-20;\n      }\n      for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n        ATH_s[sfb] = 1e-20;\n      }\n      for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n        ATH_psfb12[sfb] = 1e-20;\n      }\n    }\n    gfc.ATH.floor = 10 * Math.log10(ATHmdct(gfp, -1));\n  }\n  this.iteration_init = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var l3_side = gfc.l3_side;\n    var i;\n    if (gfc.iteration_init_init == 0) {\n      gfc.iteration_init_init = 1;\n      l3_side.main_data_begin = 0;\n      compute_ath(gfp);\n      pow43[0] = 0;\n      for (i = 1; i < PRECALC_SIZE; i++)\n        pow43[i] = Math.pow(i, 4 / 3);\n      for (i = 0; i < PRECALC_SIZE - 1; i++) {\n        adj43[i] = i + 1 - Math.pow(0.5 * (pow43[i] + pow43[i + 1]), 0.75);\n      }\n      adj43[i] = 0.5;\n      for (i = 0; i < Q_MAX; i++)\n        ipow20[i] = Math.pow(2, (i - 210) * -0.1875);\n      for (i = 0; i <= Q_MAX + Q_MAX2; i++) {\n        pow20[i] = Math.pow(2, (i - 210 - Q_MAX2) * 0.25);\n      }\n      tak.huffman_init(gfc);\n      {\n        var bass, alto, treble, sfb21;\n        i = gfp.exp_nspsytune >> 2 & 63;\n        if (i >= 32)\n          i -= 64;\n        bass = Math.pow(10, i / 4 / 10);\n        i = gfp.exp_nspsytune >> 8 & 63;\n        if (i >= 32)\n          i -= 64;\n        alto = Math.pow(10, i / 4 / 10);\n        i = gfp.exp_nspsytune >> 14 & 63;\n        if (i >= 32)\n          i -= 64;\n        treble = Math.pow(10, i / 4 / 10);\n        i = gfp.exp_nspsytune >> 20 & 63;\n        if (i >= 32)\n          i -= 64;\n        sfb21 = treble * Math.pow(10, i / 4 / 10);\n        for (i = 0; i < Encoder.SBMAX_l; i++) {\n          var f;\n          if (i <= 6)\n            f = bass;\n          else if (i <= 13)\n            f = alto;\n          else if (i <= 20)\n            f = treble;\n          else\n            f = sfb21;\n          gfc.nsPsy.longfact[i] = f;\n        }\n        for (i = 0; i < Encoder.SBMAX_s; i++) {\n          var f;\n          if (i <= 5)\n            f = bass;\n          else if (i <= 10)\n            f = alto;\n          else if (i <= 11)\n            f = treble;\n          else\n            f = sfb21;\n          gfc.nsPsy.shortfact[i] = f;\n        }\n      }\n    }\n  };\n  this.on_pe = function(gfp, pe, targ_bits, mean_bits, gr, cbr) {\n    var gfc = gfp.internal_flags;\n    var tbits = 0;\n    var bits;\n    var add_bits = new_int$3(2);\n    var ch;\n    var mb = new MeanBits$1(tbits);\n    var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n    tbits = mb.bits;\n    var max_bits = tbits + extra_bits;\n    if (max_bits > LameInternalFlags$1.MAX_BITS_PER_GRANULE) {\n      max_bits = LameInternalFlags$1.MAX_BITS_PER_GRANULE;\n    }\n    for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n      targ_bits[ch] = Math.min(\n        LameInternalFlags$1.MAX_BITS_PER_CHANNEL,\n        tbits / gfc.channels_out\n      );\n      add_bits[ch] = 0 | targ_bits[ch] * pe[gr][ch] / 700 - targ_bits[ch];\n      if (add_bits[ch] > mean_bits * 3 / 4)\n        add_bits[ch] = mean_bits * 3 / 4;\n      if (add_bits[ch] < 0)\n        add_bits[ch] = 0;\n      if (add_bits[ch] + targ_bits[ch] > LameInternalFlags$1.MAX_BITS_PER_CHANNEL) {\n        add_bits[ch] = Math.max(\n          0,\n          LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[ch]\n        );\n      }\n      bits += add_bits[ch];\n    }\n    if (bits > extra_bits) {\n      for (ch = 0; ch < gfc.channels_out; ++ch) {\n        add_bits[ch] = extra_bits * add_bits[ch] / bits;\n      }\n    }\n    for (ch = 0; ch < gfc.channels_out; ++ch) {\n      targ_bits[ch] += add_bits[ch];\n      extra_bits -= add_bits[ch];\n    }\n    for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n      bits += targ_bits[ch];\n    }\n    if (bits > LameInternalFlags$1.MAX_BITS_PER_GRANULE) {\n      var sum = 0;\n      for (ch = 0; ch < gfc.channels_out; ++ch) {\n        targ_bits[ch] *= LameInternalFlags$1.MAX_BITS_PER_GRANULE;\n        targ_bits[ch] /= bits;\n        sum += targ_bits[ch];\n      }\n    }\n    return max_bits;\n  };\n  this.reduce_side = function(targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n    assert$7(\n      targ_bits[0] + targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_GRANULE\n    );\n    var fac = 0.33 * (0.5 - ms_ener_ratio) / 0.5;\n    if (fac < 0)\n      fac = 0;\n    if (fac > 0.5)\n      fac = 0.5;\n    var move_bits = 0 | fac * 0.5 * (targ_bits[0] + targ_bits[1]);\n    if (move_bits > LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n      move_bits = LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[0];\n    }\n    if (move_bits < 0)\n      move_bits = 0;\n    if (targ_bits[1] >= 125) {\n      if (targ_bits[1] - move_bits > 125) {\n        if (targ_bits[0] < mean_bits)\n          targ_bits[0] += move_bits;\n        targ_bits[1] -= move_bits;\n      } else {\n        targ_bits[0] += targ_bits[1] - 125;\n        targ_bits[1] = 125;\n      }\n    }\n    move_bits = targ_bits[0] + targ_bits[1];\n    if (move_bits > max_bits) {\n      targ_bits[0] = max_bits * targ_bits[0] / move_bits;\n      targ_bits[1] = max_bits * targ_bits[1] / move_bits;\n    }\n    assert$7(targ_bits[0] <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL);\n    assert$7(targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL);\n    assert$7(\n      targ_bits[0] + targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_GRANULE\n    );\n  };\n  this.athAdjust = function(a, x, athFloor) {\n    var o = 90.30873362;\n    var p2 = 94.82444863;\n    var u = Util$1.FAST_LOG10_X(x, 10);\n    var v = a * a;\n    var w = 0;\n    u -= athFloor;\n    if (v > 1e-20)\n      w = 1 + Util$1.FAST_LOG10_X(v, 10 / o);\n    if (w < 0)\n      w = 0;\n    u *= w;\n    u += athFloor + o - p2;\n    return Math.pow(10, 0.1 * u);\n  };\n  this.calc_xmin = function(gfp, ratio, cod_info, pxmin) {\n    var pxminPos = 0;\n    var gfc = gfp.internal_flags;\n    var gsfb;\n    var j = 0;\n    var ath_over = 0;\n    var ATH2 = gfc.ATH;\n    var xr = cod_info.xr;\n    var enable_athaa_fix = gfp.VBR == VbrMode$4.vbr_mtrh ? 1 : 0;\n    var masking_lower = gfc.masking_lower;\n    if (gfp.VBR == VbrMode$4.vbr_mtrh || gfp.VBR == VbrMode$4.vbr_mt) {\n      masking_lower = 1;\n    }\n    for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n      var en0, xmin;\n      var rh1, rh2;\n      var width, l;\n      if (gfp.VBR == VbrMode$4.vbr_rh || gfp.VBR == VbrMode$4.vbr_mtrh) {\n        xmin = athAdjust(ATH2.adjust, ATH2.l[gsfb], ATH2.floor);\n      } else\n        xmin = ATH2.adjust * ATH2.l[gsfb];\n      width = cod_info.width[gsfb];\n      rh1 = xmin / width;\n      rh2 = DBL_EPSILON;\n      l = width >> 1;\n      en0 = 0;\n      do {\n        var xa, xb;\n        xa = xr[j] * xr[j];\n        en0 += xa;\n        rh2 += xa < rh1 ? xa : rh1;\n        j++;\n        xb = xr[j] * xr[j];\n        en0 += xb;\n        rh2 += xb < rh1 ? xb : rh1;\n        j++;\n      } while (--l > 0);\n      if (en0 > xmin)\n        ath_over++;\n      if (gsfb == Encoder.SBPSY_l) {\n        var x = xmin * gfc.nsPsy.longfact[gsfb];\n        if (rh2 < x) {\n          rh2 = x;\n        }\n      }\n      if (enable_athaa_fix != 0) {\n        xmin = rh2;\n      }\n      if (!gfp.ATHonly) {\n        var e = ratio.en.l[gsfb];\n        if (e > 0) {\n          var x;\n          x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n          if (enable_athaa_fix != 0)\n            x *= gfc.nsPsy.longfact[gsfb];\n          if (xmin < x)\n            xmin = x;\n        }\n      }\n      if (enable_athaa_fix != 0)\n        pxmin[pxminPos++] = xmin;\n      else\n        pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n    }\n    var max_nonzero = 575;\n    if (cod_info.block_type != Encoder.SHORT_TYPE) {\n      var k = 576;\n      while (k-- != 0 && BitStream$1.EQ(xr[k], 0)) {\n        max_nonzero = k;\n      }\n    }\n    cod_info.max_nonzero_coeff = max_nonzero;\n    for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n      var width, b;\n      var tmpATH;\n      if (gfp.VBR == VbrMode$4.vbr_rh || gfp.VBR == VbrMode$4.vbr_mtrh) {\n        tmpATH = athAdjust(ATH2.adjust, ATH2.s[sfb], ATH2.floor);\n      } else\n        tmpATH = ATH2.adjust * ATH2.s[sfb];\n      width = cod_info.width[gsfb];\n      for (b = 0; b < 3; b++) {\n        var en0 = 0;\n        var xmin;\n        var rh1, rh2;\n        var l = width >> 1;\n        rh1 = tmpATH / width;\n        rh2 = DBL_EPSILON;\n        do {\n          var xa, xb;\n          xa = xr[j] * xr[j];\n          en0 += xa;\n          rh2 += xa < rh1 ? xa : rh1;\n          j++;\n          xb = xr[j] * xr[j];\n          en0 += xb;\n          rh2 += xb < rh1 ? xb : rh1;\n          j++;\n        } while (--l > 0);\n        if (en0 > tmpATH)\n          ath_over++;\n        if (sfb == Encoder.SBPSY_s) {\n          var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n          if (rh2 < x) {\n            rh2 = x;\n          }\n        }\n        if (enable_athaa_fix != 0)\n          xmin = rh2;\n        else\n          xmin = tmpATH;\n        if (!gfp.ATHonly && !gfp.ATHshort) {\n          var e = ratio.en.s[sfb][b];\n          if (e > 0) {\n            var x;\n            x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n            if (enable_athaa_fix != 0)\n              x *= gfc.nsPsy.shortfact[sfb];\n            if (xmin < x)\n              xmin = x;\n          }\n        }\n        if (enable_athaa_fix != 0)\n          pxmin[pxminPos++] = xmin;\n        else\n          pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n      }\n      if (gfp.useTemporal) {\n        if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1]) {\n          pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1]) * gfc.decay;\n        }\n        if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2]) {\n          pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2]) * gfc.decay;\n        }\n      }\n    }\n    return ath_over;\n  };\n  function StartLine(j) {\n    this.s = j;\n  }\n  this.calc_noise_core = function(cod_info, startline, l, step) {\n    var noise = 0;\n    var j = startline.s;\n    var ix = cod_info.l3_enc;\n    if (j > cod_info.count1) {\n      while (l-- != 0) {\n        var temp;\n        temp = cod_info.xr[j];\n        j++;\n        noise += temp * temp;\n        temp = cod_info.xr[j];\n        j++;\n        noise += temp * temp;\n      }\n    } else if (j > cod_info.big_values) {\n      var ix01 = new_float$3(2);\n      ix01[0] = 0;\n      ix01[1] = step;\n      while (l-- != 0) {\n        var temp;\n        temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n        j++;\n        noise += temp * temp;\n        temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n        j++;\n        noise += temp * temp;\n      }\n    } else {\n      while (l-- != 0) {\n        var temp;\n        temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n        j++;\n        noise += temp * temp;\n        temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n        j++;\n        noise += temp * temp;\n      }\n    }\n    startline.s = j;\n    return noise;\n  };\n  this.calc_noise = function(cod_info, l3_xmin, distort, res, prev_noise) {\n    var distortPos = 0;\n    var l3_xminPos = 0;\n    var sfb;\n    var l;\n    var over = 0;\n    var over_noise_db = 0;\n    var tot_noise_db = 0;\n    var max_noise = -20;\n    var j = 0;\n    var scalefac = cod_info.scalefac;\n    var scalefacPos = 0;\n    res.over_SSD = 0;\n    for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n      var s = cod_info.global_gain - (scalefac[scalefacPos++] + (cod_info.preflag != 0 ? pretab[sfb] : 0) << cod_info.scalefac_scale + 1) - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n      var noise = 0;\n      if (prev_noise != null && prev_noise.step[sfb] == s) {\n        noise = prev_noise.noise[sfb];\n        j += cod_info.width[sfb];\n        distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n        noise = prev_noise.noise_log[sfb];\n      } else {\n        var step = POW20(s);\n        l = cod_info.width[sfb] >> 1;\n        if (j + cod_info.width[sfb] > cod_info.max_nonzero_coeff) {\n          var usefullsize;\n          usefullsize = cod_info.max_nonzero_coeff - j + 1;\n          if (usefullsize > 0)\n            l = usefullsize >> 1;\n          else\n            l = 0;\n        }\n        var sl = new StartLine(j);\n        noise = this.calc_noise_core(cod_info, sl, l, step);\n        j = sl.s;\n        if (prev_noise != null) {\n          prev_noise.step[sfb] = s;\n          prev_noise.noise[sfb] = noise;\n        }\n        noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n        noise = Util$1.FAST_LOG10(Math.max(noise, 1e-20));\n        if (prev_noise != null) {\n          prev_noise.noise_log[sfb] = noise;\n        }\n      }\n      if (prev_noise != null) {\n        prev_noise.global_gain = cod_info.global_gain;\n      }\n      tot_noise_db += noise;\n      if (noise > 0) {\n        var tmp;\n        tmp = Math.max(0 | noise * 10 + 0.5, 1);\n        res.over_SSD += tmp * tmp;\n        over++;\n        over_noise_db += noise;\n      }\n      max_noise = Math.max(max_noise, noise);\n    }\n    res.over_count = over;\n    res.tot_noise = tot_noise_db;\n    res.over_noise = over_noise_db;\n    res.max_noise = max_noise;\n    return over;\n  };\n  this.set_pinfo = function(gfp, cod_info, ratio, gr, ch) {\n    var gfc = gfp.internal_flags;\n    var sfb, sfb2;\n    var l;\n    var en0, en1;\n    var ifqstep = cod_info.scalefac_scale == 0 ? 0.5 : 1;\n    var scalefac = cod_info.scalefac;\n    var l3_xmin = new_float$3(L3Side.SFBMAX);\n    var xfsf = new_float$3(L3Side.SFBMAX);\n    var noise = new CalcNoiseResult();\n    calc_xmin(gfp, ratio, cod_info, l3_xmin);\n    calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n    var j = 0;\n    sfb2 = cod_info.sfb_lmax;\n    if (cod_info.block_type != Encoder.SHORT_TYPE && cod_info.mixed_block_flag == 0) {\n      sfb2 = 22;\n    }\n    for (sfb = 0; sfb < sfb2; sfb++) {\n      var start = gfc.scalefac_band.l[sfb];\n      var end = gfc.scalefac_band.l[sfb + 1];\n      var bw = end - start;\n      for (en0 = 0; j < end; j++)\n        en0 += cod_info.xr[j] * cod_info.xr[j];\n      en0 /= bw;\n      en1 = 1e15;\n      gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n      gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n      if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n        en0 = en0 / ratio.en.l[sfb];\n      else\n        en0 = 0;\n      gfc.pinfo.thr[gr][ch][sfb] = en1 * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n      gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n      if (cod_info.preflag != 0 && sfb >= 11) {\n        gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n      }\n      if (sfb < Encoder.SBPSY_l) {\n        assert$7(scalefac[sfb] >= 0);\n        gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n      }\n    }\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      sfb2 = sfb;\n      for (sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n        var start = gfc.scalefac_band.s[sfb];\n        var end = gfc.scalefac_band.s[sfb + 1];\n        var bw = end - start;\n        for (var i = 0; i < 3; i++) {\n          for (en0 = 0, l = start; l < end; l++) {\n            en0 += cod_info.xr[j] * cod_info.xr[j];\n            j++;\n          }\n          en0 = Math.max(en0 / bw, 1e-20);\n          en1 = 1e15;\n          gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n          gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2] * xfsf[sfb2] / bw;\n          if (ratio.en.s[sfb][i] > 0)\n            en0 = en0 / ratio.en.s[sfb][i];\n          else\n            en0 = 0;\n          if (gfp.ATHonly || gfp.ATHshort)\n            en0 = 0;\n          gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1 * Math.max(en0 * ratio.thm.s[sfb][i], gfc.ATH.s[sfb]);\n          gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2 * cod_info.subblock_gain[i];\n          if (sfb < Encoder.SBPSY_s) {\n            gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep * scalefac[sfb2];\n          }\n          sfb2++;\n        }\n      }\n    }\n    gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n    gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length + cod_info.part2_length;\n    gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n    gfc.pinfo.over[gr][ch] = noise.over_count;\n    gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10;\n    gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10;\n    gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10;\n    gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n  };\n}\nvar System$4 = common.System;\nvar Arrays$3 = common.Arrays;\nvar new_int$2 = common.new_int;\nvar assert$6 = common.assert;\nfunction Takehiro() {\n  var qupvt = null;\n  this.qupvt = null;\n  this.setModules = function(_qupvt) {\n    this.qupvt = _qupvt;\n    qupvt = _qupvt;\n  };\n  function Bits(b) {\n    this.bits = 0 | b;\n  }\n  var subdv_table = [\n    [0, 0],\n    [0, 0],\n    [0, 0],\n    [0, 0],\n    [0, 0],\n    [0, 1],\n    [1, 1],\n    [1, 1],\n    [1, 2],\n    [2, 2],\n    [2, 3],\n    [2, 3],\n    [3, 4],\n    [3, 4],\n    [3, 4],\n    [4, 5],\n    [4, 5],\n    [4, 6],\n    [5, 6],\n    [5, 6],\n    [5, 7],\n    [6, 7],\n    [6, 7]\n  ];\n  function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n    var compareval0 = (1 - 0.4054) / istep;\n    l = l >> 1;\n    while (l-- != 0) {\n      ix[ixPos++] = compareval0 > xr[xrPos++] ? 0 : 1;\n      ix[ixPos++] = compareval0 > xr[xrPos++] ? 0 : 1;\n    }\n  }\n  function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n    l = l >> 1;\n    var remaining = l % 2;\n    l = l >> 1;\n    while (l-- != 0) {\n      var x0, x1, x2, x3;\n      var rx0, rx1, rx2, rx3;\n      x0 = xr[xrPos++] * istep;\n      x1 = xr[xrPos++] * istep;\n      rx0 = 0 | x0;\n      x2 = xr[xrPos++] * istep;\n      rx1 = 0 | x1;\n      x3 = xr[xrPos++] * istep;\n      rx2 = 0 | x2;\n      x0 += qupvt.adj43[rx0];\n      rx3 = 0 | x3;\n      x1 += qupvt.adj43[rx1];\n      ix[ixPos++] = 0 | x0;\n      x2 += qupvt.adj43[rx2];\n      ix[ixPos++] = 0 | x1;\n      x3 += qupvt.adj43[rx3];\n      ix[ixPos++] = 0 | x2;\n      ix[ixPos++] = 0 | x3;\n    }\n    if (remaining != 0) {\n      var x0, x1;\n      var rx0, rx1;\n      x0 = xr[xrPos++] * istep;\n      x1 = xr[xrPos++] * istep;\n      rx0 = 0 | x0;\n      rx1 = 0 | x1;\n      x0 += qupvt.adj43[rx0];\n      x1 += qupvt.adj43[rx1];\n      ix[ixPos++] = 0 | x0;\n      ix[ixPos++] = 0 | x1;\n    }\n  }\n  function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n    var sfb;\n    var sfbmax;\n    var j = 0;\n    var prev_data_use;\n    var accumulate = 0;\n    var accumulate01 = 0;\n    var xpPos = 0;\n    var iData = pi;\n    var iDataPos = 0;\n    var acc_iData = iData;\n    var acc_iDataPos = 0;\n    var acc_xp = xp;\n    var acc_xpPos = 0;\n    prev_data_use = prevNoise != null && codInfo.global_gain == prevNoise.global_gain;\n    if (codInfo.block_type == Encoder.SHORT_TYPE)\n      sfbmax = 38;\n    else\n      sfbmax = 21;\n    for (sfb = 0; sfb <= sfbmax; sfb++) {\n      var step = -1;\n      if (prev_data_use || codInfo.block_type == Encoder.NORM_TYPE) {\n        step = codInfo.global_gain - (codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb] : 0) << codInfo.scalefac_scale + 1) - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n      }\n      assert$6(codInfo.width[sfb] >= 0);\n      if (prev_data_use && prevNoise.step[sfb] == step) {\n        if (accumulate != 0) {\n          quantize_lines_xrpow(\n            accumulate,\n            istep,\n            acc_xp,\n            acc_xpPos,\n            acc_iData,\n            acc_iDataPos\n          );\n          accumulate = 0;\n        }\n        if (accumulate01 != 0) {\n          quantize_lines_xrpow_01(\n            accumulate01,\n            istep,\n            acc_xp,\n            acc_xpPos,\n            acc_iData,\n            acc_iDataPos\n          );\n          accumulate01 = 0;\n        }\n      } else {\n        var l = codInfo.width[sfb];\n        if (j + codInfo.width[sfb] > codInfo.max_nonzero_coeff) {\n          var usefullsize;\n          usefullsize = codInfo.max_nonzero_coeff - j + 1;\n          Arrays$3.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n          l = usefullsize;\n          if (l < 0) {\n            l = 0;\n          }\n          sfb = sfbmax + 1;\n        }\n        if (accumulate == 0 && accumulate01 == 0) {\n          acc_iData = iData;\n          acc_iDataPos = iDataPos;\n          acc_xp = xp;\n          acc_xpPos = xpPos;\n        }\n        if (prevNoise != null && prevNoise.sfb_count1 > 0 && sfb >= prevNoise.sfb_count1 && prevNoise.step[sfb] > 0 && step >= prevNoise.step[sfb]) {\n          if (accumulate != 0) {\n            quantize_lines_xrpow(\n              accumulate,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate = 0;\n            acc_iData = iData;\n            acc_iDataPos = iDataPos;\n            acc_xp = xp;\n            acc_xpPos = xpPos;\n          }\n          accumulate01 += l;\n        } else {\n          if (accumulate01 != 0) {\n            quantize_lines_xrpow_01(\n              accumulate01,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate01 = 0;\n            acc_iData = iData;\n            acc_iDataPos = iDataPos;\n            acc_xp = xp;\n            acc_xpPos = xpPos;\n          }\n          accumulate += l;\n        }\n        if (l <= 0) {\n          if (accumulate01 != 0) {\n            quantize_lines_xrpow_01(\n              accumulate01,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate01 = 0;\n          }\n          if (accumulate != 0) {\n            quantize_lines_xrpow(\n              accumulate,\n              istep,\n              acc_xp,\n              acc_xpPos,\n              acc_iData,\n              acc_iDataPos\n            );\n            accumulate = 0;\n          }\n          break;\n        }\n      }\n      if (sfb <= sfbmax) {\n        iDataPos += codInfo.width[sfb];\n        xpPos += codInfo.width[sfb];\n        j += codInfo.width[sfb];\n      }\n    }\n    if (accumulate != 0) {\n      quantize_lines_xrpow(\n        accumulate,\n        istep,\n        acc_xp,\n        acc_xpPos,\n        acc_iData,\n        acc_iDataPos\n      );\n      accumulate = 0;\n    }\n    if (accumulate01 != 0) {\n      quantize_lines_xrpow_01(\n        accumulate01,\n        istep,\n        acc_xp,\n        acc_xpPos,\n        acc_iData,\n        acc_iDataPos\n      );\n      accumulate01 = 0;\n    }\n  }\n  function ix_max(ix, ixPos, endPos) {\n    var max1 = 0;\n    var max2 = 0;\n    do {\n      var x1 = ix[ixPos++];\n      var x2 = ix[ixPos++];\n      if (max1 < x1)\n        max1 = x1;\n      if (max2 < x2)\n        max2 = x2;\n    } while (ixPos < endPos);\n    if (max1 < max2)\n      max1 = max2;\n    return max1;\n  }\n  function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n    var linbits = Tables$1.ht[t1].xlen * 65536 + Tables$1.ht[t2].xlen;\n    var sum = 0;\n    var sum2;\n    do {\n      var x = ix[ixPos++];\n      var y = ix[ixPos++];\n      if (x != 0) {\n        if (x > 14) {\n          x = 15;\n          sum += linbits;\n        }\n        x *= 16;\n      }\n      if (y != 0) {\n        if (y > 14) {\n          y = 15;\n          sum += linbits;\n        }\n        x += y;\n      }\n      sum += Tables$1.largetbl[x];\n    } while (ixPos < end);\n    sum2 = sum & 65535;\n    sum >>= 16;\n    if (sum > sum2) {\n      sum = sum2;\n      t1 = t2;\n    }\n    s.bits += sum;\n    return t1;\n  }\n  function count_bit_noESC(ix, ixPos, end, s) {\n    var sum1 = 0;\n    var hlen1 = Tables$1.ht[1].hlen;\n    do {\n      var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n      ixPos += 2;\n      sum1 += hlen1[x];\n    } while (ixPos < end);\n    s.bits += sum1;\n    return 1;\n  }\n  function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n    var sum = 0;\n    var sum2;\n    var xlen = Tables$1.ht[t1].xlen;\n    var hlen;\n    if (t1 == 2)\n      hlen = Tables$1.table23;\n    else\n      hlen = Tables$1.table56;\n    do {\n      var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n      ixPos += 2;\n      sum += hlen[x];\n    } while (ixPos < end);\n    sum2 = sum & 65535;\n    sum >>= 16;\n    if (sum > sum2) {\n      sum = sum2;\n      t1++;\n    }\n    s.bits += sum;\n    return t1;\n  }\n  function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n    var sum1 = 0;\n    var sum2 = 0;\n    var sum3 = 0;\n    var xlen = Tables$1.ht[t1].xlen;\n    var hlen1 = Tables$1.ht[t1].hlen;\n    var hlen2 = Tables$1.ht[t1 + 1].hlen;\n    var hlen3 = Tables$1.ht[t1 + 2].hlen;\n    do {\n      var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n      ixPos += 2;\n      sum1 += hlen1[x];\n      sum2 += hlen2[x];\n      sum3 += hlen3[x];\n    } while (ixPos < end);\n    var t = t1;\n    if (sum1 > sum2) {\n      sum1 = sum2;\n      t++;\n    }\n    if (sum1 > sum3) {\n      sum1 = sum3;\n      t = t1 + 2;\n    }\n    s.bits += sum1;\n    return t;\n  }\n  var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13];\n  function choose_table(ix, ixPos, endPos, s) {\n    var max = ix_max(ix, ixPos, endPos);\n    switch (max) {\n      case 0:\n        return max;\n      case 1:\n        return count_bit_noESC(ix, ixPos, endPos, s);\n      case 2:\n      case 3:\n        return count_bit_noESC_from2(\n          ix,\n          ixPos,\n          endPos,\n          huf_tbl_noESC[max - 1],\n          s\n        );\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n      case 8:\n      case 9:\n      case 10:\n      case 11:\n      case 12:\n      case 13:\n      case 14:\n      case 15:\n        return count_bit_noESC_from3(\n          ix,\n          ixPos,\n          endPos,\n          huf_tbl_noESC[max - 1],\n          s\n        );\n      default:\n        if (max > QuantizePVT.IXMAX_VAL) {\n          s.bits = QuantizePVT.LARGE_BITS;\n          return -1;\n        }\n        max -= 15;\n        var choice2;\n        for (choice2 = 24; choice2 < 32; choice2++) {\n          if (Tables$1.ht[choice2].linmax >= max) {\n            break;\n          }\n        }\n        var choice;\n        for (choice = choice2 - 8; choice < 24; choice++) {\n          if (Tables$1.ht[choice].linmax >= max) {\n            break;\n          }\n        }\n        return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n    }\n  }\n  this.noquant_count_bits = function(gfc, gi, prev_noise) {\n    var ix = gi.l3_enc;\n    var i = Math.min(576, gi.max_nonzero_coeff + 2 >> 1 << 1);\n    if (prev_noise != null)\n      prev_noise.sfb_count1 = 0;\n    for (; i > 1; i -= 2)\n      if ((ix[i - 1] | ix[i - 2]) != 0)\n        break;\n    gi.count1 = i;\n    var a1 = 0;\n    var a2 = 0;\n    for (; i > 3; i -= 4) {\n      var p2;\n      if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 2147483647) > 1) {\n        break;\n      }\n      p2 = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n      a1 += Tables$1.t32l[p2];\n      a2 += Tables$1.t33l[p2];\n    }\n    var bits = a1;\n    gi.count1table_select = 0;\n    if (a1 > a2) {\n      bits = a2;\n      gi.count1table_select = 1;\n    }\n    gi.count1bits = bits;\n    gi.big_values = i;\n    if (i == 0)\n      return bits;\n    if (gi.block_type == Encoder.SHORT_TYPE) {\n      a1 = 3 * gfc.scalefac_band.s[3];\n      if (a1 > gi.big_values)\n        a1 = gi.big_values;\n      a2 = gi.big_values;\n    } else if (gi.block_type == Encoder.NORM_TYPE) {\n      a1 = gi.region0_count = gfc.bv_scf[i - 2];\n      a2 = gi.region1_count = gfc.bv_scf[i - 1];\n      a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n      a1 = gfc.scalefac_band.l[a1 + 1];\n      if (a2 < i) {\n        var bi = new Bits(bits);\n        gi.table_select[2] = choose_table(ix, a2, i, bi);\n        bits = bi.bits;\n      }\n    } else {\n      gi.region0_count = 7;\n      gi.region1_count = Encoder.SBMAX_l - 1 - 7 - 1;\n      a1 = gfc.scalefac_band.l[7 + 1];\n      a2 = i;\n      if (a1 > a2) {\n        a1 = a2;\n      }\n    }\n    a1 = Math.min(a1, i);\n    a2 = Math.min(a2, i);\n    if (a1 > 0) {\n      var bi = new Bits(bits);\n      gi.table_select[0] = choose_table(ix, 0, a1, bi);\n      bits = bi.bits;\n    }\n    if (a1 < a2) {\n      var bi = new Bits(bits);\n      gi.table_select[1] = choose_table(ix, a1, a2, bi);\n      bits = bi.bits;\n    }\n    if (gfc.use_best_huffman == 2) {\n      gi.part2_3_length = bits;\n      best_huffman_divide(gfc, gi);\n      bits = gi.part2_3_length;\n    }\n    if (prev_noise != null) {\n      if (gi.block_type == Encoder.NORM_TYPE) {\n        var sfb = 0;\n        while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n          sfb++;\n        }\n        prev_noise.sfb_count1 = sfb;\n      }\n    }\n    return bits;\n  };\n  this.count_bits = function(gfc, xr, gi, prev_noise) {\n    var ix = gi.l3_enc;\n    var w = QuantizePVT.IXMAX_VAL / qupvt.IPOW20(gi.global_gain);\n    if (gi.xrpow_max > w)\n      return QuantizePVT.LARGE_BITS;\n    quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n    if ((gfc.substep_shaping & 2) != 0) {\n      var j = 0;\n      var gain = gi.global_gain + gi.scalefac_scale;\n      var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n      for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n        var width = gi.width[sfb];\n        if (gfc.pseudohalf[sfb] == 0) {\n          j += width;\n        } else {\n          var k;\n          for (k = j, j += width; k < j; ++k) {\n            ix[k] = xr[k] >= roundfac ? ix[k] : 0;\n          }\n        }\n      }\n    }\n    return this.noquant_count_bits(gfc, gi, prev_noise);\n  };\n  function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n    var bigv = cod_info.big_values;\n    for (var r0 = 0; r0 <= 7 + 15; r0++) {\n      r01_bits[r0] = QuantizePVT.LARGE_BITS;\n    }\n    for (var r0 = 0; r0 < 16; r0++) {\n      var a1 = gfc.scalefac_band.l[r0 + 1];\n      if (a1 >= bigv)\n        break;\n      var r0bits = 0;\n      var bi = new Bits(r0bits);\n      var r0t = choose_table(ix, 0, a1, bi);\n      r0bits = bi.bits;\n      for (var r1 = 0; r1 < 8; r1++) {\n        var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n        if (a2 >= bigv)\n          break;\n        var bits = r0bits;\n        bi = new Bits(bits);\n        var r1t = choose_table(ix, a1, a2, bi);\n        bits = bi.bits;\n        if (r01_bits[r0 + r1] > bits) {\n          r01_bits[r0 + r1] = bits;\n          r01_div[r0 + r1] = r0;\n          r0_tbl[r0 + r1] = r0t;\n          r1_tbl[r0 + r1] = r1t;\n        }\n      }\n    }\n  }\n  function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n    var bigv = cod_info2.big_values;\n    for (var r2 = 2; r2 < Encoder.SBMAX_l + 1; r2++) {\n      var a2 = gfc.scalefac_band.l[r2];\n      if (a2 >= bigv)\n        break;\n      var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n      if (gi.part2_3_length <= bits)\n        break;\n      var bi = new Bits(bits);\n      var r2t = choose_table(ix, a2, bigv, bi);\n      bits = bi.bits;\n      if (gi.part2_3_length <= bits)\n        continue;\n      gi.assign(cod_info2);\n      gi.part2_3_length = bits;\n      gi.region0_count = r01_div[r2 - 2];\n      gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n      gi.table_select[0] = r0_tbl[r2 - 2];\n      gi.table_select[1] = r1_tbl[r2 - 2];\n      gi.table_select[2] = r2t;\n    }\n  }\n  this.best_huffman_divide = function(gfc, gi) {\n    var cod_info2 = new GrInfo();\n    var ix = gi.l3_enc;\n    var r01_bits = new_int$2(7 + 15 + 1);\n    var r01_div = new_int$2(7 + 15 + 1);\n    var r0_tbl = new_int$2(7 + 15 + 1);\n    var r1_tbl = new_int$2(7 + 15 + 1);\n    if (gi.block_type == Encoder.SHORT_TYPE && gfc.mode_gr == 1)\n      return;\n    cod_info2.assign(gi);\n    if (gi.block_type == Encoder.NORM_TYPE) {\n      recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n      recalc_divide_sub(\n        gfc,\n        cod_info2,\n        gi,\n        ix,\n        r01_bits,\n        r01_div,\n        r0_tbl,\n        r1_tbl\n      );\n    }\n    var i = cod_info2.big_values;\n    if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n      return;\n    i = gi.count1 + 2;\n    if (i > 576)\n      return;\n    cod_info2.assign(gi);\n    cod_info2.count1 = i;\n    var a1 = 0;\n    var a2 = 0;\n    for (; i > cod_info2.big_values; i -= 4) {\n      var p2 = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n      a1 += Tables$1.t32l[p2];\n      a2 += Tables$1.t33l[p2];\n    }\n    cod_info2.big_values = i;\n    cod_info2.count1table_select = 0;\n    if (a1 > a2) {\n      a1 = a2;\n      cod_info2.count1table_select = 1;\n    }\n    cod_info2.count1bits = a1;\n    if (cod_info2.block_type == Encoder.NORM_TYPE) {\n      recalc_divide_sub(\n        gfc,\n        cod_info2,\n        gi,\n        ix,\n        r01_bits,\n        r01_div,\n        r0_tbl,\n        r1_tbl\n      );\n    } else {\n      cod_info2.part2_3_length = a1;\n      a1 = gfc.scalefac_band.l[7 + 1];\n      if (a1 > i) {\n        a1 = i;\n      }\n      if (a1 > 0) {\n        var bi = new Bits(cod_info2.part2_3_length);\n        cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n        cod_info2.part2_3_length = bi.bits;\n      }\n      if (i > a1) {\n        var bi = new Bits(cod_info2.part2_3_length);\n        cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n        cod_info2.part2_3_length = bi.bits;\n      }\n      if (gi.part2_3_length > cod_info2.part2_3_length)\n        gi.assign(cod_info2);\n    }\n  };\n  var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n  var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n  var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n  var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n  Takehiro.slen1_tab = slen1_tab;\n  Takehiro.slen2_tab = slen2_tab;\n  function scfsi_calc(ch, l3_side) {\n    var sfb;\n    var gi = l3_side.tt[1][ch];\n    var g0 = l3_side.tt[0][ch];\n    for (var i = 0; i < Tables$1.scfsi_band.length - 1; i++) {\n      for (sfb = Tables$1.scfsi_band[i]; sfb < Tables$1.scfsi_band[i + 1]; sfb++) {\n        if (g0.scalefac[sfb] != gi.scalefac[sfb] && gi.scalefac[sfb] >= 0)\n          break;\n      }\n      if (sfb == Tables$1.scfsi_band[i + 1]) {\n        for (sfb = Tables$1.scfsi_band[i]; sfb < Tables$1.scfsi_band[i + 1]; sfb++) {\n          gi.scalefac[sfb] = -1;\n        }\n        l3_side.scfsi[ch][i] = 1;\n      }\n    }\n    var s1 = 0;\n    var c1 = 0;\n    for (sfb = 0; sfb < 11; sfb++) {\n      if (gi.scalefac[sfb] == -1)\n        continue;\n      c1++;\n      if (s1 < gi.scalefac[sfb])\n        s1 = gi.scalefac[sfb];\n    }\n    var s2 = 0;\n    var c2 = 0;\n    for (; sfb < Encoder.SBPSY_l; sfb++) {\n      if (gi.scalefac[sfb] == -1)\n        continue;\n      c2++;\n      if (s2 < gi.scalefac[sfb])\n        s2 = gi.scalefac[sfb];\n    }\n    for (var i = 0; i < 16; i++) {\n      if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n        var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n        if (gi.part2_length > c) {\n          gi.part2_length = c;\n          gi.scalefac_compress = i;\n        }\n      }\n    }\n  }\n  this.best_scalefac_store = function(gfc, gr, ch, l3_side) {\n    var gi = l3_side.tt[gr][ch];\n    var sfb, i, j, l;\n    var recalc = 0;\n    j = 0;\n    for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n      var width = gi.width[sfb];\n      j += width;\n      for (l = -width; l < 0; l++) {\n        if (gi.l3_enc[l + j] != 0)\n          break;\n      }\n      if (l == 0)\n        gi.scalefac[sfb] = recalc = -2;\n    }\n    if (gi.scalefac_scale == 0 && gi.preflag == 0) {\n      var s = 0;\n      for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n        if (gi.scalefac[sfb] > 0)\n          s |= gi.scalefac[sfb];\n      }\n      if ((s & 1) == 0 && s != 0) {\n        for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n          if (gi.scalefac[sfb] > 0)\n            gi.scalefac[sfb] >>= 1;\n        }\n        gi.scalefac_scale = recalc = 1;\n      }\n    }\n    if (gi.preflag == 0 && gi.block_type != Encoder.SHORT_TYPE && gfc.mode_gr == 2) {\n      for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n        if (gi.scalefac[sfb] < qupvt.pretab[sfb] && gi.scalefac[sfb] != -2) {\n          break;\n        }\n      }\n      if (sfb == Encoder.SBPSY_l) {\n        for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n          if (gi.scalefac[sfb] > 0)\n            gi.scalefac[sfb] -= qupvt.pretab[sfb];\n        }\n        gi.preflag = recalc = 1;\n      }\n    }\n    for (i = 0; i < 4; i++)\n      l3_side.scfsi[ch][i] = 0;\n    if (gfc.mode_gr == 2 && gr == 1 && l3_side.tt[0][ch].block_type != Encoder.SHORT_TYPE && l3_side.tt[1][ch].block_type != Encoder.SHORT_TYPE) {\n      scfsi_calc(ch, l3_side);\n      recalc = 0;\n    }\n    for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n      if (gi.scalefac[sfb] == -2) {\n        gi.scalefac[sfb] = 0;\n      }\n    }\n    if (recalc != 0) {\n      if (gfc.mode_gr == 2) {\n        this.scale_bitcount(gi);\n      } else {\n        this.scale_bitcount_lsf(gfc, gi);\n      }\n    }\n  };\n  function all_scalefactors_not_negative(scalefac, n) {\n    for (var i = 0; i < n; ++i) {\n      if (scalefac[i] < 0)\n        return false;\n    }\n    return true;\n  }\n  var scale_short = [\n    0,\n    18,\n    36,\n    54,\n    54,\n    36,\n    54,\n    72,\n    54,\n    72,\n    90,\n    72,\n    90,\n    108,\n    108,\n    126\n  ];\n  var scale_mixed = [\n    0,\n    18,\n    36,\n    54,\n    51,\n    35,\n    53,\n    71,\n    52,\n    70,\n    88,\n    69,\n    87,\n    105,\n    104,\n    122\n  ];\n  var scale_long = [\n    0,\n    10,\n    20,\n    30,\n    33,\n    21,\n    31,\n    41,\n    32,\n    42,\n    52,\n    43,\n    53,\n    63,\n    64,\n    74\n  ];\n  this.scale_bitcount = function(cod_info) {\n    var k;\n    var sfb;\n    var max_slen1 = 0;\n    var max_slen2 = 0;\n    var tab;\n    var scalefac = cod_info.scalefac;\n    assert$6(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      tab = scale_short;\n      if (cod_info.mixed_block_flag != 0)\n        tab = scale_mixed;\n    } else {\n      tab = scale_long;\n      if (cod_info.preflag == 0) {\n        for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n          if (scalefac[sfb] < qupvt.pretab[sfb])\n            break;\n        }\n        if (sfb == Encoder.SBPSY_l) {\n          cod_info.preflag = 1;\n          for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n            scalefac[sfb] -= qupvt.pretab[sfb];\n          }\n        }\n      }\n    }\n    for (sfb = 0; sfb < cod_info.sfbdivide; sfb++) {\n      if (max_slen1 < scalefac[sfb])\n        max_slen1 = scalefac[sfb];\n    }\n    for (; sfb < cod_info.sfbmax; sfb++) {\n      if (max_slen2 < scalefac[sfb])\n        max_slen2 = scalefac[sfb];\n    }\n    cod_info.part2_length = QuantizePVT.LARGE_BITS;\n    for (k = 0; k < 16; k++) {\n      if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] && cod_info.part2_length > tab[k]) {\n        cod_info.part2_length = tab[k];\n        cod_info.scalefac_compress = k;\n      }\n    }\n    return cod_info.part2_length == QuantizePVT.LARGE_BITS;\n  };\n  var max_range_sfac_tab = [\n    [15, 15, 7, 7],\n    [15, 15, 7, 0],\n    [7, 3, 0, 0],\n    [15, 31, 31, 0],\n    [7, 7, 7, 0],\n    [3, 3, 0, 0]\n  ];\n  this.scale_bitcount_lsf = function(gfc, cod_info) {\n    var table_number, row_in_table, partition, nr_sfb, window2;\n    var over;\n    var i, sfb;\n    var max_sfac = new_int$2(4);\n    var scalefac = cod_info.scalefac;\n    if (cod_info.preflag != 0)\n      table_number = 2;\n    else\n      table_number = 0;\n    for (i = 0; i < 4; i++)\n      max_sfac[i] = 0;\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      row_in_table = 1;\n      var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n      for (sfb = 0, partition = 0; partition < 4; partition++) {\n        nr_sfb = partition_table[partition] / 3;\n        for (i = 0; i < nr_sfb; i++, sfb++) {\n          for (window2 = 0; window2 < 3; window2++) {\n            if (scalefac[sfb * 3 + window2] > max_sfac[partition]) {\n              max_sfac[partition] = scalefac[sfb * 3 + window2];\n            }\n          }\n        }\n      }\n    } else {\n      row_in_table = 0;\n      var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n      for (sfb = 0, partition = 0; partition < 4; partition++) {\n        nr_sfb = partition_table[partition];\n        for (i = 0; i < nr_sfb; i++, sfb++) {\n          if (scalefac[sfb] > max_sfac[partition]) {\n            max_sfac[partition] = scalefac[sfb];\n          }\n        }\n      }\n    }\n    for (over = false, partition = 0; partition < 4; partition++) {\n      if (max_sfac[partition] > max_range_sfac_tab[table_number][partition]) {\n        over = true;\n      }\n    }\n    if (!over) {\n      var slen1, slen2, slen3, slen4;\n      cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n      for (partition = 0; partition < 4; partition++) {\n        cod_info.slen[partition] = log2tab[max_sfac[partition]];\n      }\n      slen1 = cod_info.slen[0];\n      slen2 = cod_info.slen[1];\n      slen3 = cod_info.slen[2];\n      slen4 = cod_info.slen[3];\n      switch (table_number) {\n        case 0:\n          cod_info.scalefac_compress = (slen1 * 5 + slen2 << 4) + (slen3 << 2) + slen4;\n          break;\n        case 1:\n          cod_info.scalefac_compress = 400 + (slen1 * 5 + slen2 << 2) + slen3;\n          break;\n        case 2:\n          cod_info.scalefac_compress = 500 + slen1 * 3 + slen2;\n          break;\n        default:\n          System$4.err.printf(\"intensity stereo not implemented yet\\n\");\n          break;\n      }\n    }\n    if (!over) {\n      assert$6(cod_info.sfb_partition_table != null);\n      cod_info.part2_length = 0;\n      for (partition = 0; partition < 4; partition++) {\n        cod_info.part2_length += cod_info.slen[partition] * cod_info.sfb_partition_table[partition];\n      }\n    }\n    return over;\n  };\n  var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4];\n  this.huffman_init = function(gfc) {\n    for (var i = 2; i <= 576; i += 2) {\n      var scfb_anz = 0;\n      var bv_index;\n      while (gfc.scalefac_band.l[++scfb_anz] < i)\n        ;\n      bv_index = subdv_table[scfb_anz][0];\n      while (gfc.scalefac_band.l[bv_index + 1] > i)\n        bv_index--;\n      if (bv_index < 0) {\n        bv_index = subdv_table[scfb_anz][0];\n      }\n      gfc.bv_scf[i - 2] = bv_index;\n      bv_index = subdv_table[scfb_anz][1];\n      while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i) {\n        bv_index--;\n      }\n      if (bv_index < 0) {\n        bv_index = subdv_table[scfb_anz][1];\n      }\n      gfc.bv_scf[i - 1] = bv_index;\n    }\n  };\n}\nvar System$3 = common.System;\nvar Arrays$2 = common.Arrays;\nvar new_byte$2 = common.new_byte;\nvar new_float_n = common.new_float_n;\nvar new_int$1 = common.new_int;\nvar assert$5 = common.assert;\nBitStream$1.EQ = function(a, b) {\n  return Math.abs(a) > Math.abs(b) ? Math.abs(a - b) <= Math.abs(a) * 1e-6 : Math.abs(a - b) <= Math.abs(b) * 1e-6;\n};\nBitStream$1.NEQ = function(a, b) {\n  return !BitStream$1.EQ(a, b);\n};\nfunction BitStream$1() {\n  var self2 = this;\n  var CRC16_POLYNOMIAL = 32773;\n  var ga = null;\n  var mpg = null;\n  var ver = null;\n  var vbr = null;\n  this.setModules = function(_ga, _mpg, _ver, _vbr) {\n    ga = _ga;\n    mpg = _mpg;\n    ver = _ver;\n    vbr = _vbr;\n  };\n  var buf = null;\n  var totbit = 0;\n  var bufByteIdx = 0;\n  var bufBitIdx = 0;\n  this.getframebits = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var bit_rate;\n    if (gfc.bitrate_index != 0) {\n      bit_rate = Tables$1.bitrate_table[gfp.version][gfc.bitrate_index];\n    } else\n      bit_rate = gfp.brate;\n    var bytes = 0 | (gfp.version + 1) * 72e3 * bit_rate / gfp.out_samplerate + gfc.padding;\n    return 8 * bytes;\n  };\n  function putheader_bits(gfc) {\n    System$3.arraycopy(\n      gfc.header[gfc.w_ptr].buf,\n      0,\n      buf,\n      bufByteIdx,\n      gfc.sideinfo_len\n    );\n    bufByteIdx += gfc.sideinfo_len;\n    totbit += gfc.sideinfo_len * 8;\n    gfc.w_ptr = gfc.w_ptr + 1 & LameInternalFlags$1.MAX_HEADER_BUF - 1;\n  }\n  function putbits2(gfc, val, j) {\n    while (j > 0) {\n      var k;\n      if (bufBitIdx == 0) {\n        bufBitIdx = 8;\n        bufByteIdx++;\n        assert$5(gfc.header[gfc.w_ptr].write_timing >= totbit);\n        if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n          putheader_bits(gfc);\n        }\n        buf[bufByteIdx] = 0;\n      }\n      k = Math.min(j, bufBitIdx);\n      j -= k;\n      bufBitIdx -= k;\n      buf[bufByteIdx] |= val >> j << bufBitIdx;\n      totbit += k;\n    }\n  }\n  function putbits_noheaders(gfc, val, j) {\n    while (j > 0) {\n      var k;\n      if (bufBitIdx == 0) {\n        bufBitIdx = 8;\n        bufByteIdx++;\n        buf[bufByteIdx] = 0;\n      }\n      k = Math.min(j, bufBitIdx);\n      j -= k;\n      bufBitIdx -= k;\n      buf[bufByteIdx] |= val >> j << bufBitIdx;\n      totbit += k;\n    }\n  }\n  function drain_into_ancillary(gfp, remainingBits) {\n    var gfc = gfp.internal_flags;\n    var i;\n    if (remainingBits >= 8) {\n      putbits2(gfc, 76, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 8) {\n      putbits2(gfc, 65, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 8) {\n      putbits2(gfc, 77, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 8) {\n      putbits2(gfc, 69, 8);\n      remainingBits -= 8;\n    }\n    if (remainingBits >= 32) {\n      var version2 = ver.getLameShortVersion();\n      if (remainingBits >= 32) {\n        for (i = 0; i < version2.length && remainingBits >= 8; ++i) {\n          remainingBits -= 8;\n          putbits2(gfc, version2.charAt(i), 8);\n        }\n      }\n    }\n    for (; remainingBits >= 1; remainingBits -= 1) {\n      putbits2(gfc, gfc.ancillary_flag, 1);\n      gfc.ancillary_flag ^= !gfp.disable_reservoir ? 1 : 0;\n    }\n  }\n  function writeheader(gfc, val, j) {\n    var ptr = gfc.header[gfc.h_ptr].ptr;\n    while (j > 0) {\n      var k = Math.min(j, 8 - (ptr & 7));\n      j -= k;\n      gfc.header[gfc.h_ptr].buf[ptr >> 3] |= val >> j << 8 - (ptr & 7) - k;\n      ptr += k;\n    }\n    gfc.header[gfc.h_ptr].ptr = ptr;\n  }\n  function CRC_update(value, crc) {\n    value <<= 8;\n    for (var i = 0; i < 8; i++) {\n      value <<= 1;\n      crc <<= 1;\n      if (((crc ^ value) & 65536) != 0)\n        crc ^= CRC16_POLYNOMIAL;\n    }\n    return crc;\n  }\n  this.CRC_writeheader = function(gfc, header) {\n    var crc = 65535;\n    crc = CRC_update(header[2] & 255, crc);\n    crc = CRC_update(header[3] & 255, crc);\n    for (var i = 6; i < gfc.sideinfo_len; i++) {\n      crc = CRC_update(header[i] & 255, crc);\n    }\n    header[4] = byte(crc >> 8);\n    header[5] = byte(crc & 255);\n  };\n  function encodeSideInfo2(gfp, bitsPerFrame) {\n    var gfc = gfp.internal_flags;\n    var l3_side;\n    var gr, ch;\n    l3_side = gfc.l3_side;\n    gfc.header[gfc.h_ptr].ptr = 0;\n    Arrays$2.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n    if (gfp.out_samplerate < 16e3)\n      writeheader(gfc, 4094, 12);\n    else\n      writeheader(gfc, 4095, 12);\n    writeheader(gfc, gfp.version, 1);\n    writeheader(gfc, 4 - 3, 2);\n    writeheader(gfc, !gfp.error_protection ? 1 : 0, 1);\n    writeheader(gfc, gfc.bitrate_index, 4);\n    writeheader(gfc, gfc.samplerate_index, 2);\n    writeheader(gfc, gfc.padding, 1);\n    writeheader(gfc, gfp.extension, 1);\n    writeheader(gfc, gfp.mode.ordinal(), 2);\n    writeheader(gfc, gfc.mode_ext, 2);\n    writeheader(gfc, gfp.copyright, 1);\n    writeheader(gfc, gfp.original, 1);\n    writeheader(gfc, gfp.emphasis, 2);\n    if (gfp.error_protection) {\n      writeheader(gfc, 0, 16);\n    }\n    if (gfp.version == 1) {\n      assert$5(l3_side.main_data_begin >= 0);\n      writeheader(gfc, l3_side.main_data_begin, 9);\n      if (gfc.channels_out == 2)\n        writeheader(gfc, l3_side.private_bits, 3);\n      else\n        writeheader(gfc, l3_side.private_bits, 5);\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var band;\n        for (band = 0; band < 4; band++) {\n          writeheader(gfc, l3_side.scfsi[ch][band], 1);\n        }\n      }\n      for (gr = 0; gr < 2; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          var gi = l3_side.tt[gr][ch];\n          writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n          writeheader(gfc, gi.big_values / 2, 9);\n          writeheader(gfc, gi.global_gain, 8);\n          writeheader(gfc, gi.scalefac_compress, 4);\n          if (gi.block_type != Encoder.NORM_TYPE) {\n            writeheader(gfc, 1, 1);\n            writeheader(gfc, gi.block_type, 2);\n            writeheader(gfc, gi.mixed_block_flag, 1);\n            if (gi.table_select[0] == 14)\n              gi.table_select[0] = 16;\n            writeheader(gfc, gi.table_select[0], 5);\n            if (gi.table_select[1] == 14)\n              gi.table_select[1] = 16;\n            writeheader(gfc, gi.table_select[1], 5);\n            writeheader(gfc, gi.subblock_gain[0], 3);\n            writeheader(gfc, gi.subblock_gain[1], 3);\n            writeheader(gfc, gi.subblock_gain[2], 3);\n          } else {\n            writeheader(gfc, 0, 1);\n            if (gi.table_select[0] == 14)\n              gi.table_select[0] = 16;\n            writeheader(gfc, gi.table_select[0], 5);\n            if (gi.table_select[1] == 14)\n              gi.table_select[1] = 16;\n            writeheader(gfc, gi.table_select[1], 5);\n            if (gi.table_select[2] == 14)\n              gi.table_select[2] = 16;\n            writeheader(gfc, gi.table_select[2], 5);\n            assert$5(gi.region0_count >= 0 && gi.region0_count < 16);\n            assert$5(gi.region1_count >= 0 && gi.region1_count < 8);\n            writeheader(gfc, gi.region0_count, 4);\n            writeheader(gfc, gi.region1_count, 3);\n          }\n          writeheader(gfc, gi.preflag, 1);\n          writeheader(gfc, gi.scalefac_scale, 1);\n          writeheader(gfc, gi.count1table_select, 1);\n        }\n      }\n    } else {\n      assert$5(l3_side.main_data_begin >= 0);\n      writeheader(gfc, l3_side.main_data_begin, 8);\n      writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n      gr = 0;\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var gi = l3_side.tt[gr][ch];\n        writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n        writeheader(gfc, gi.big_values / 2, 9);\n        writeheader(gfc, gi.global_gain, 8);\n        writeheader(gfc, gi.scalefac_compress, 9);\n        if (gi.block_type != Encoder.NORM_TYPE) {\n          writeheader(gfc, 1, 1);\n          writeheader(gfc, gi.block_type, 2);\n          writeheader(gfc, gi.mixed_block_flag, 1);\n          if (gi.table_select[0] == 14)\n            gi.table_select[0] = 16;\n          writeheader(gfc, gi.table_select[0], 5);\n          if (gi.table_select[1] == 14)\n            gi.table_select[1] = 16;\n          writeheader(gfc, gi.table_select[1], 5);\n          writeheader(gfc, gi.subblock_gain[0], 3);\n          writeheader(gfc, gi.subblock_gain[1], 3);\n          writeheader(gfc, gi.subblock_gain[2], 3);\n        } else {\n          writeheader(gfc, 0, 1);\n          if (gi.table_select[0] == 14)\n            gi.table_select[0] = 16;\n          writeheader(gfc, gi.table_select[0], 5);\n          if (gi.table_select[1] == 14)\n            gi.table_select[1] = 16;\n          writeheader(gfc, gi.table_select[1], 5);\n          if (gi.table_select[2] == 14)\n            gi.table_select[2] = 16;\n          writeheader(gfc, gi.table_select[2], 5);\n          assert$5(gi.region0_count >= 0 && gi.region0_count < 16);\n          assert$5(gi.region1_count >= 0 && gi.region1_count < 8);\n          writeheader(gfc, gi.region0_count, 4);\n          writeheader(gfc, gi.region1_count, 3);\n        }\n        writeheader(gfc, gi.scalefac_scale, 1);\n        writeheader(gfc, gi.count1table_select, 1);\n      }\n    }\n    if (gfp.error_protection) {\n      CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n    }\n    {\n      var old = gfc.h_ptr;\n      assert$5(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n      gfc.h_ptr = old + 1 & LameInternalFlags$1.MAX_HEADER_BUF - 1;\n      gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing + bitsPerFrame;\n      if (gfc.h_ptr == gfc.w_ptr) {\n        System$3.err.println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n      }\n    }\n  }\n  function huffman_coder_count1(gfc, gi) {\n    var h2 = Tables$1.ht[gi.count1table_select + 32];\n    var i;\n    var bits = 0;\n    var ix = gi.big_values;\n    var xr = gi.big_values;\n    assert$5(gi.count1table_select < 2);\n    for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n      var huffbits = 0;\n      var p2 = 0;\n      var v;\n      v = gi.l3_enc[ix + 0];\n      if (v != 0) {\n        p2 += 8;\n        if (gi.xr[xr + 0] < 0)\n          huffbits++;\n      }\n      v = gi.l3_enc[ix + 1];\n      if (v != 0) {\n        p2 += 4;\n        huffbits *= 2;\n        if (gi.xr[xr + 1] < 0)\n          huffbits++;\n      }\n      v = gi.l3_enc[ix + 2];\n      if (v != 0) {\n        p2 += 2;\n        huffbits *= 2;\n        if (gi.xr[xr + 2] < 0)\n          huffbits++;\n      }\n      v = gi.l3_enc[ix + 3];\n      if (v != 0) {\n        p2++;\n        huffbits *= 2;\n        if (gi.xr[xr + 3] < 0)\n          huffbits++;\n      }\n      ix += 4;\n      xr += 4;\n      putbits2(gfc, huffbits + h2.table[p2], h2.hlen[p2]);\n      bits += h2.hlen[p2];\n    }\n    return bits;\n  }\n  function Huffmancode(gfc, tableindex, start, end, gi) {\n    var h2 = Tables$1.ht[tableindex];\n    var bits = 0;\n    if (tableindex == 0)\n      return bits;\n    for (var i = start; i < end; i += 2) {\n      var cbits = 0;\n      var xbits = 0;\n      var linbits = h2.xlen;\n      var xlen = h2.xlen;\n      var ext = 0;\n      var x1 = gi.l3_enc[i];\n      var x2 = gi.l3_enc[i + 1];\n      if (x1 != 0) {\n        if (gi.xr[i] < 0)\n          ext++;\n        cbits--;\n      }\n      if (tableindex > 15) {\n        if (x1 > 14) {\n          var linbits_x1 = x1 - 15;\n          assert$5(linbits_x1 <= h2.linmax);\n          ext |= linbits_x1 << 1;\n          xbits = linbits;\n          x1 = 15;\n        }\n        if (x2 > 14) {\n          var linbits_x2 = x2 - 15;\n          assert$5(linbits_x2 <= h2.linmax);\n          ext <<= linbits;\n          ext |= linbits_x2;\n          xbits += linbits;\n          x2 = 15;\n        }\n        xlen = 16;\n      }\n      if (x2 != 0) {\n        ext <<= 1;\n        if (gi.xr[i + 1] < 0)\n          ext++;\n        cbits--;\n      }\n      x1 = x1 * xlen + x2;\n      xbits -= cbits;\n      cbits += h2.hlen[x1];\n      putbits2(gfc, h2.table[x1], cbits);\n      putbits2(gfc, ext, xbits);\n      bits += cbits + xbits;\n    }\n    return bits;\n  }\n  function ShortHuffmancodebits(gfc, gi) {\n    var region1Start = 3 * gfc.scalefac_band.s[3];\n    if (region1Start > gi.big_values)\n      region1Start = gi.big_values;\n    var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n    bits += Huffmancode(\n      gfc,\n      gi.table_select[1],\n      region1Start,\n      gi.big_values,\n      gi\n    );\n    return bits;\n  }\n  function LongHuffmancodebits(gfc, gi) {\n    var bigvalues, bits;\n    var region1Start, region2Start;\n    bigvalues = gi.big_values;\n    var i = gi.region0_count + 1;\n    assert$5(i < gfc.scalefac_band.l.length);\n    region1Start = gfc.scalefac_band.l[i];\n    i += gi.region1_count + 1;\n    assert$5(i < gfc.scalefac_band.l.length);\n    region2Start = gfc.scalefac_band.l[i];\n    if (region1Start > bigvalues)\n      region1Start = bigvalues;\n    if (region2Start > bigvalues)\n      region2Start = bigvalues;\n    bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n    bits += Huffmancode(gfc, gi.table_select[1], region1Start, region2Start, gi);\n    bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues, gi);\n    return bits;\n  }\n  function writeMainData(gfp) {\n    var gr;\n    var ch;\n    var sfb;\n    var data_bits;\n    var tot_bits = 0;\n    var gfc = gfp.internal_flags;\n    var l3_side = gfc.l3_side;\n    if (gfp.version == 1) {\n      for (gr = 0; gr < 2; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          var gi = l3_side.tt[gr][ch];\n          var slen1 = Takehiro.slen1_tab[gi.scalefac_compress];\n          var slen2 = Takehiro.slen2_tab[gi.scalefac_compress];\n          data_bits = 0;\n          for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n            if (gi.scalefac[sfb] == -1)\n              continue;\n            putbits2(gfc, gi.scalefac[sfb], slen1);\n            data_bits += slen1;\n          }\n          for (; sfb < gi.sfbmax; sfb++) {\n            if (gi.scalefac[sfb] == -1)\n              continue;\n            putbits2(gfc, gi.scalefac[sfb], slen2);\n            data_bits += slen2;\n          }\n          assert$5(data_bits == gi.part2_length);\n          if (gi.block_type == Encoder.SHORT_TYPE) {\n            data_bits += ShortHuffmancodebits(gfc, gi);\n          } else {\n            data_bits += LongHuffmancodebits(gfc, gi);\n          }\n          data_bits += huffman_coder_count1(gfc, gi);\n          assert$5(data_bits == gi.part2_3_length + gi.part2_length);\n          tot_bits += data_bits;\n        }\n      }\n    } else {\n      gr = 0;\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        var gi = l3_side.tt[gr][ch];\n        var i;\n        var sfb_partition;\n        var scale_bits = 0;\n        assert$5(gi.sfb_partition_table != null);\n        data_bits = 0;\n        sfb = 0;\n        sfb_partition = 0;\n        if (gi.block_type == Encoder.SHORT_TYPE) {\n          for (; sfb_partition < 4; sfb_partition++) {\n            var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n            var slen = gi.slen[sfb_partition];\n            for (i = 0; i < sfbs; i++, sfb++) {\n              putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n              putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n              putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n              scale_bits += 3 * slen;\n            }\n          }\n          data_bits += ShortHuffmancodebits(gfc, gi);\n        } else {\n          for (; sfb_partition < 4; sfb_partition++) {\n            var sfbs = gi.sfb_partition_table[sfb_partition];\n            var slen = gi.slen[sfb_partition];\n            for (i = 0; i < sfbs; i++, sfb++) {\n              putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n              scale_bits += slen;\n            }\n          }\n          data_bits += LongHuffmancodebits(gfc, gi);\n        }\n        data_bits += huffman_coder_count1(gfc, gi);\n        assert$5(data_bits == gi.part2_3_length);\n        assert$5(scale_bits == gi.part2_length);\n        tot_bits += scale_bits + data_bits;\n      }\n    }\n    return tot_bits;\n  }\n  function TotalBytes() {\n    this.total = 0;\n  }\n  function compute_flushbits(gfp, total_bytes_output) {\n    var gfc = gfp.internal_flags;\n    var flushbits, remaining_headers;\n    var bitsPerFrame;\n    var last_ptr, first_ptr;\n    first_ptr = gfc.w_ptr;\n    last_ptr = gfc.h_ptr - 1;\n    if (last_ptr == -1)\n      last_ptr = LameInternalFlags$1.MAX_HEADER_BUF - 1;\n    flushbits = gfc.header[last_ptr].write_timing - totbit;\n    total_bytes_output.total = flushbits;\n    if (flushbits >= 0) {\n      remaining_headers = 1 + last_ptr - first_ptr;\n      if (last_ptr < first_ptr) {\n        remaining_headers = 1 + last_ptr - first_ptr + LameInternalFlags$1.MAX_HEADER_BUF;\n      }\n      flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n    }\n    bitsPerFrame = self2.getframebits(gfp);\n    flushbits += bitsPerFrame;\n    total_bytes_output.total += bitsPerFrame;\n    if (total_bytes_output.total % 8 != 0) {\n      total_bytes_output.total = 1 + total_bytes_output.total / 8;\n    } else\n      total_bytes_output.total = total_bytes_output.total / 8;\n    total_bytes_output.total += bufByteIdx + 1;\n    if (flushbits < 0) {\n      System$3.err.println(\"strange error flushing buffer ... \\n\");\n    }\n    return flushbits;\n  }\n  this.flush_bitstream = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var l3_side;\n    var flushbits;\n    var last_ptr = gfc.h_ptr - 1;\n    if (last_ptr == -1)\n      last_ptr = LameInternalFlags$1.MAX_HEADER_BUF - 1;\n    l3_side = gfc.l3_side;\n    if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n      return;\n    drain_into_ancillary(gfp, flushbits);\n    assert$5(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n    gfc.ResvSize = 0;\n    l3_side.main_data_begin = 0;\n    if (gfc.findReplayGain) {\n      var RadioGain = ga.GetTitleGain(gfc.rgdata);\n      assert$5(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n      gfc.RadioGain = Math.floor(RadioGain * 10 + 0.5) | 0;\n    }\n    if (gfc.findPeakSample) {\n      gfc.noclipGainChange = Math.ceil(Math.log10(gfc.PeakSample / 32767) * 20 * 10) | 0;\n      if (gfc.noclipGainChange > 0) {\n        if (EQ(gfp.scale, 1) || EQ(gfp.scale, 0)) {\n          gfc.noclipScale = Math.floor(32767 / gfc.PeakSample * 100) / 100;\n        } else {\n          gfc.noclipScale = -1;\n        }\n      } else {\n        gfc.noclipScale = -1;\n      }\n    }\n  };\n  this.add_dummy_byte = function(gfp, val, n) {\n    var gfc = gfp.internal_flags;\n    var i;\n    while (n-- > 0) {\n      putbits_noheaders(gfc, val, 8);\n      for (i = 0; i < LameInternalFlags$1.MAX_HEADER_BUF; ++i) {\n        gfc.header[i].write_timing += 8;\n      }\n    }\n  };\n  this.format_bitstream = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var l3_side;\n    l3_side = gfc.l3_side;\n    var bitsPerFrame = this.getframebits(gfp);\n    drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n    encodeSideInfo2(gfp, bitsPerFrame);\n    var bits = 8 * gfc.sideinfo_len;\n    bits += writeMainData(gfp);\n    drain_into_ancillary(gfp, l3_side.resvDrain_post);\n    bits += l3_side.resvDrain_post;\n    l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n    if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n      System$3.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n    }\n    if (l3_side.main_data_begin * 8 != gfc.ResvSize) {\n      System$3.err.printf(\n        \"bit reservoir error: \\nl3_side.main_data_begin: %d \\nResvoir size:             %d \\nresv drain (post)         %d \\nresv drain (pre)          %d \\nheader and sideinfo:      %d \\ndata bits:                %d \\ntotal bits:               %d (remainder: %d) \\nbitsperframe:             %d \\n\",\n        8 * l3_side.main_data_begin,\n        gfc.ResvSize,\n        l3_side.resvDrain_post,\n        l3_side.resvDrain_pre,\n        8 * gfc.sideinfo_len,\n        bits - l3_side.resvDrain_post - 8 * gfc.sideinfo_len,\n        bits,\n        bits % 8,\n        bitsPerFrame\n      );\n      System$3.err.println(\n        \"This is a fatal error.  It has several possible causes:\"\n      );\n      System$3.err.println(\n        \"90%%  LAME compiled with buggy version of gcc using advanced optimizations\"\n      );\n      System$3.err.println(\" 9%%  Your system is overclocked\");\n      System$3.err.println(\" 1%%  bug in LAME encoding library\");\n      gfc.ResvSize = l3_side.main_data_begin * 8;\n    }\n    if (totbit > 1e9) {\n      var i;\n      for (i = 0; i < LameInternalFlags$1.MAX_HEADER_BUF; ++i) {\n        gfc.header[i].write_timing -= totbit;\n      }\n      totbit = 0;\n    }\n    return 0;\n  };\n  this.copy_buffer = function(gfc, buffer, bufferPos, size2, mp3data) {\n    var minimum = bufByteIdx + 1;\n    if (minimum <= 0)\n      return 0;\n    if (size2 != 0 && minimum > size2) {\n      return -1;\n    }\n    System$3.arraycopy(buf, 0, buffer, bufferPos, minimum);\n    bufByteIdx = -1;\n    bufBitIdx = 0;\n    if (mp3data != 0) {\n      var crc = new_int$1(1);\n      crc[0] = gfc.nMusicCRC;\n      vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n      gfc.nMusicCRC = crc[0];\n      if (minimum > 0) {\n        gfc.VBR_seek_table.nBytesWritten += minimum;\n      }\n      if (gfc.decode_on_the_fly) {\n        var pcm_buf = new_float_n([2, 1152]);\n        var mp3_in = minimum;\n        var samples_out = -1;\n        var i;\n        while (samples_out != 0) {\n          samples_out = mpg.hip_decode1_unclipped(\n            gfc.hip,\n            buffer,\n            bufferPos,\n            mp3_in,\n            pcm_buf[0],\n            pcm_buf[1]\n          );\n          mp3_in = 0;\n          if (samples_out == -1) {\n            samples_out = 0;\n          }\n          if (samples_out > 0) {\n            if (gfc.findPeakSample) {\n              for (i = 0; i < samples_out; i++) {\n                if (pcm_buf[0][i] > gfc.PeakSample) {\n                  gfc.PeakSample = pcm_buf[0][i];\n                } else if (-pcm_buf[0][i] > gfc.PeakSample) {\n                  gfc.PeakSample = -pcm_buf[0][i];\n                }\n              }\n              if (gfc.channels_out > 1) {\n                for (i = 0; i < samples_out; i++) {\n                  if (pcm_buf[1][i] > gfc.PeakSample) {\n                    gfc.PeakSample = pcm_buf[1][i];\n                  } else if (-pcm_buf[1][i] > gfc.PeakSample) {\n                    gfc.PeakSample = -pcm_buf[1][i];\n                  }\n                }\n              }\n            }\n            if (gfc.findReplayGain) {\n              if (ga.AnalyzeSamples(\n                gfc.rgdata,\n                pcm_buf[0],\n                0,\n                pcm_buf[1],\n                0,\n                samples_out,\n                gfc.channels_out\n              ) == GainAnalysis.GAIN_ANALYSIS_ERROR) {\n                return -6;\n              }\n            }\n          }\n        }\n      }\n    }\n    return minimum;\n  };\n  this.init_bit_stream_w = function(gfc) {\n    buf = new_byte$2(Lame$1.LAME_MAXMP3BUFFER);\n    gfc.h_ptr = gfc.w_ptr = 0;\n    gfc.header[gfc.h_ptr].write_timing = 0;\n    bufByteIdx = -1;\n    bufBitIdx = 0;\n    totbit = 0;\n  };\n}\nvar System$2 = common.System;\nvar VbrMode$3 = common.VbrMode;\nvar ShortBlock$1 = common.ShortBlock;\nvar new_float$2 = common.new_float;\nvar new_int_n = common.new_int_n;\nvar new_short_n = common.new_short_n;\nvar assert$4 = common.assert;\nfunction Lame$1() {\n  var self2 = this;\n  var LAME_MAXALBUMART = 128 * 1024;\n  Lame$1.V9 = 410;\n  Lame$1.V8 = 420;\n  Lame$1.V7 = 430;\n  Lame$1.V6 = 440;\n  Lame$1.V5 = 450;\n  Lame$1.V4 = 460;\n  Lame$1.V3 = 470;\n  Lame$1.V2 = 480;\n  Lame$1.V1 = 490;\n  Lame$1.V0 = 500;\n  Lame$1.R3MIX = 1e3;\n  Lame$1.STANDARD = 1001;\n  Lame$1.EXTREME = 1002;\n  Lame$1.INSANE = 1003;\n  Lame$1.STANDARD_FAST = 1004;\n  Lame$1.EXTREME_FAST = 1005;\n  Lame$1.MEDIUM = 1006;\n  Lame$1.MEDIUM_FAST = 1007;\n  var LAME_MAXMP3BUFFER = 16384 + LAME_MAXALBUMART;\n  Lame$1.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n  var ga;\n  var bs;\n  var p2;\n  var qupvt;\n  var qu;\n  var psy = new PsyModel();\n  var vbr;\n  var id3;\n  var mpglib;\n  this.enc = new Encoder();\n  this.setModules = function(_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n    ga = _ga;\n    bs = _bs;\n    p2 = _p;\n    qupvt = _qupvt;\n    qu = _qu;\n    vbr = _vbr;\n    id3 = _id3;\n    mpglib = _mpglib;\n    this.enc.setModules(bs, psy, qupvt, vbr);\n  };\n  function PSY() {\n    this.mask_adjust = 0;\n    this.mask_adjust_short = 0;\n    this.bo_l_weight = new_float$2(Encoder.SBMAX_l);\n    this.bo_s_weight = new_float$2(Encoder.SBMAX_s);\n  }\n  function LowPassHighPass() {\n    this.lowerlimit = 0;\n  }\n  function BandPass(bitrate, lPass) {\n    this.lowpass = lPass;\n  }\n  var LAME_ID = 4294479419;\n  function lame_init_old(gfp) {\n    var gfc;\n    gfp.class_id = LAME_ID;\n    gfc = gfp.internal_flags = new LameInternalFlags$1();\n    gfp.mode = MPEGMode.NOT_SET;\n    gfp.original = 1;\n    gfp.in_samplerate = 44100;\n    gfp.num_channels = 2;\n    gfp.num_samples = -1;\n    gfp.bWriteVbrTag = true;\n    gfp.quality = -1;\n    gfp.short_blocks = null;\n    gfc.subblock_gain = -1;\n    gfp.lowpassfreq = 0;\n    gfp.highpassfreq = 0;\n    gfp.lowpasswidth = -1;\n    gfp.highpasswidth = -1;\n    gfp.VBR = VbrMode$3.vbr_off;\n    gfp.VBR_q = 4;\n    gfp.ATHcurve = -1;\n    gfp.VBR_mean_bitrate_kbps = 128;\n    gfp.VBR_min_bitrate_kbps = 0;\n    gfp.VBR_max_bitrate_kbps = 0;\n    gfp.VBR_hard_min = 0;\n    gfc.VBR_min_bitrate = 1;\n    gfc.VBR_max_bitrate = 13;\n    gfp.quant_comp = -1;\n    gfp.quant_comp_short = -1;\n    gfp.msfix = -1;\n    gfc.resample_ratio = 1;\n    gfc.OldValue[0] = 180;\n    gfc.OldValue[1] = 180;\n    gfc.CurrentStep[0] = 4;\n    gfc.CurrentStep[1] = 4;\n    gfc.masking_lower = 1;\n    gfc.nsPsy.attackthre = -1;\n    gfc.nsPsy.attackthre_s = -1;\n    gfp.scale = -1;\n    gfp.athaa_type = -1;\n    gfp.ATHtype = -1;\n    gfp.athaa_loudapprox = -1;\n    gfp.athaa_sensitivity = 0;\n    gfp.useTemporal = null;\n    gfp.interChRatio = -1;\n    gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n    gfp.encoder_padding = 0;\n    gfc.mf_size = Encoder.ENCDELAY - Encoder.MDCTDELAY;\n    gfp.findReplayGain = false;\n    gfp.decode_on_the_fly = false;\n    gfc.decode_on_the_fly = false;\n    gfc.findReplayGain = false;\n    gfc.findPeakSample = false;\n    gfc.RadioGain = 0;\n    gfc.AudiophileGain = 0;\n    gfc.noclipGainChange = 0;\n    gfc.noclipScale = -1;\n    gfp.preset = 0;\n    gfp.write_id3tag_automatic = true;\n    return 0;\n  }\n  this.lame_init = function() {\n    var gfp = new LameGlobalFlags();\n    lame_init_old(gfp);\n    gfp.lame_allocated_gfp = 1;\n    return gfp;\n  };\n  function filter_coef(x) {\n    if (x > 1)\n      return 0;\n    if (x <= 0)\n      return 1;\n    return Math.cos(Math.PI / 2 * x);\n  }\n  this.nearestBitrateFullIndex = function(bitrate) {\n    var full_bitrate_table = [\n      8,\n      16,\n      24,\n      32,\n      40,\n      48,\n      56,\n      64,\n      80,\n      96,\n      112,\n      128,\n      160,\n      192,\n      224,\n      256,\n      320\n    ];\n    var lower_range = 0;\n    var lower_range_kbps = 0;\n    var upper_range = 0;\n    var upper_range_kbps = 0;\n    upper_range_kbps = full_bitrate_table[16];\n    upper_range = 16;\n    lower_range_kbps = full_bitrate_table[16];\n    lower_range = 16;\n    for (var b = 0; b < 16; b++) {\n      if (Math.max(bitrate, full_bitrate_table[b + 1]) != bitrate) {\n        upper_range_kbps = full_bitrate_table[b + 1];\n        upper_range = b + 1;\n        lower_range_kbps = full_bitrate_table[b];\n        lower_range = b;\n        break;\n      }\n    }\n    if (upper_range_kbps - bitrate > bitrate - lower_range_kbps) {\n      return lower_range;\n    }\n    return upper_range;\n  };\n  function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n    var suggested_samplefreq = 44100;\n    if (input_samplefreq >= 48e3)\n      suggested_samplefreq = 48e3;\n    else if (input_samplefreq >= 44100)\n      suggested_samplefreq = 44100;\n    else if (input_samplefreq >= 32e3)\n      suggested_samplefreq = 32e3;\n    else if (input_samplefreq >= 24e3)\n      suggested_samplefreq = 24e3;\n    else if (input_samplefreq >= 22050)\n      suggested_samplefreq = 22050;\n    else if (input_samplefreq >= 16e3)\n      suggested_samplefreq = 16e3;\n    else if (input_samplefreq >= 12e3)\n      suggested_samplefreq = 12e3;\n    else if (input_samplefreq >= 11025)\n      suggested_samplefreq = 11025;\n    else if (input_samplefreq >= 8e3)\n      suggested_samplefreq = 8e3;\n    if (lowpassfreq == -1)\n      return suggested_samplefreq;\n    if (lowpassfreq <= 15960)\n      suggested_samplefreq = 44100;\n    if (lowpassfreq <= 15250)\n      suggested_samplefreq = 32e3;\n    if (lowpassfreq <= 11220)\n      suggested_samplefreq = 24e3;\n    if (lowpassfreq <= 9970)\n      suggested_samplefreq = 22050;\n    if (lowpassfreq <= 7230)\n      suggested_samplefreq = 16e3;\n    if (lowpassfreq <= 5420)\n      suggested_samplefreq = 12e3;\n    if (lowpassfreq <= 4510)\n      suggested_samplefreq = 11025;\n    if (lowpassfreq <= 3970)\n      suggested_samplefreq = 8e3;\n    if (input_samplefreq < suggested_samplefreq) {\n      if (input_samplefreq > 44100) {\n        return 48e3;\n      }\n      if (input_samplefreq > 32e3) {\n        return 44100;\n      }\n      if (input_samplefreq > 24e3) {\n        return 32e3;\n      }\n      if (input_samplefreq > 22050) {\n        return 24e3;\n      }\n      if (input_samplefreq > 16e3) {\n        return 22050;\n      }\n      if (input_samplefreq > 12e3) {\n        return 16e3;\n      }\n      if (input_samplefreq > 11025) {\n        return 12e3;\n      }\n      if (input_samplefreq > 8e3) {\n        return 11025;\n      }\n      return 8e3;\n    }\n    return suggested_samplefreq;\n  }\n  function SmpFrqIndex(sample_freq, gpf) {\n    switch (sample_freq) {\n      case 44100:\n        gpf.version = 1;\n        return 0;\n      case 48e3:\n        gpf.version = 1;\n        return 1;\n      case 32e3:\n        gpf.version = 1;\n        return 2;\n      case 22050:\n        gpf.version = 0;\n        return 0;\n      case 24e3:\n        gpf.version = 0;\n        return 1;\n      case 16e3:\n        gpf.version = 0;\n        return 2;\n      case 11025:\n        gpf.version = 0;\n        return 0;\n      case 12e3:\n        gpf.version = 0;\n        return 1;\n      case 8e3:\n        gpf.version = 0;\n        return 2;\n      default:\n        gpf.version = 0;\n        return -1;\n    }\n  }\n  function FindNearestBitrate(bRate, version2, samplerate) {\n    if (samplerate < 16e3)\n      version2 = 2;\n    var bitrate = Tables$1.bitrate_table[version2][1];\n    for (var i = 2; i <= 14; i++) {\n      if (Tables$1.bitrate_table[version2][i] > 0) {\n        if (Math.abs(Tables$1.bitrate_table[version2][i] - bRate) < Math.abs(bitrate - bRate)) {\n          bitrate = Tables$1.bitrate_table[version2][i];\n        }\n      }\n    }\n    return bitrate;\n  }\n  function BitrateIndex(bRate, version2, samplerate) {\n    if (samplerate < 16e3)\n      version2 = 2;\n    for (var i = 0; i <= 14; i++) {\n      if (Tables$1.bitrate_table[version2][i] > 0) {\n        if (Tables$1.bitrate_table[version2][i] == bRate) {\n          return i;\n        }\n      }\n    }\n    return -1;\n  }\n  function optimum_bandwidth(lh, bitrate) {\n    var freq_map = [\n      new BandPass(8, 2e3),\n      new BandPass(16, 3700),\n      new BandPass(24, 3900),\n      new BandPass(32, 5500),\n      new BandPass(40, 7e3),\n      new BandPass(48, 7500),\n      new BandPass(56, 1e4),\n      new BandPass(64, 11e3),\n      new BandPass(80, 13500),\n      new BandPass(96, 15100),\n      new BandPass(112, 15600),\n      new BandPass(128, 17e3),\n      new BandPass(160, 17500),\n      new BandPass(192, 18600),\n      new BandPass(224, 19400),\n      new BandPass(256, 19700),\n      new BandPass(320, 20500)\n    ];\n    var table_index = self2.nearestBitrateFullIndex(bitrate);\n    lh.lowerlimit = freq_map[table_index].lowpass;\n  }\n  function lame_init_params_ppflt(gfp) {\n    var gfc = gfp.internal_flags;\n    var lowpass_band = 32;\n    var highpass_band = -1;\n    if (gfc.lowpass1 > 0) {\n      var minband = 999;\n      for (var band = 0; band <= 31; band++) {\n        var freq = band / 31;\n        if (freq >= gfc.lowpass2) {\n          lowpass_band = Math.min(lowpass_band, band);\n        }\n        if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n          minband = Math.min(minband, band);\n        }\n      }\n      if (minband == 999) {\n        gfc.lowpass1 = (lowpass_band - 0.75) / 31;\n      } else {\n        gfc.lowpass1 = (minband - 0.75) / 31;\n      }\n      gfc.lowpass2 = lowpass_band / 31;\n    }\n    if (gfc.highpass2 > 0) {\n      if (gfc.highpass2 < 0.9 * (0.75 / 31)) {\n        gfc.highpass1 = 0;\n        gfc.highpass2 = 0;\n        System$2.err.println(\n          \"Warning: highpass filter disabled.  highpass frequency too small\\n\"\n        );\n      }\n    }\n    if (gfc.highpass2 > 0) {\n      var maxband = -1;\n      for (var band = 0; band <= 31; band++) {\n        var freq = band / 31;\n        if (freq <= gfc.highpass1) {\n          highpass_band = Math.max(highpass_band, band);\n        }\n        if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n          maxband = Math.max(maxband, band);\n        }\n      }\n      gfc.highpass1 = highpass_band / 31;\n      if (maxband == -1) {\n        gfc.highpass2 = (highpass_band + 0.75) / 31;\n      } else {\n        gfc.highpass2 = (maxband + 0.75) / 31;\n      }\n    }\n    for (var band = 0; band < 32; band++) {\n      var fc1, fc2;\n      var freq = band / 31;\n      if (gfc.highpass2 > gfc.highpass1) {\n        fc1 = filter_coef(\n          (gfc.highpass2 - freq) / (gfc.highpass2 - gfc.highpass1 + 1e-20)\n        );\n      } else {\n        fc1 = 1;\n      }\n      if (gfc.lowpass2 > gfc.lowpass1) {\n        fc2 = filter_coef(\n          (freq - gfc.lowpass1) / (gfc.lowpass2 - gfc.lowpass1 + 1e-20)\n        );\n      } else {\n        fc2 = 1;\n      }\n      gfc.amp_filter[band] = fc1 * fc2;\n    }\n  }\n  function lame_init_qval(gfp) {\n    var gfc = gfp.internal_flags;\n    switch (gfp.quality) {\n      default:\n      case 9:\n        gfc.psymodel = 0;\n        gfc.noise_shaping = 0;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 8:\n        gfp.quality = 7;\n      case 7:\n        gfc.psymodel = 1;\n        gfc.noise_shaping = 0;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 6:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 5:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 0;\n        gfc.full_outer_loop = 0;\n        break;\n      case 4:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 0;\n        gfc.noise_shaping_stop = 0;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 3:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        gfc.noise_shaping_amp = 1;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 2:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        if (gfc.substep_shaping == 0)\n          gfc.substep_shaping = 2;\n        gfc.noise_shaping_amp = 1;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 1:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        if (gfc.substep_shaping == 0)\n          gfc.substep_shaping = 2;\n        gfc.noise_shaping_amp = 2;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n      case 0:\n        gfc.psymodel = 1;\n        if (gfc.noise_shaping == 0)\n          gfc.noise_shaping = 1;\n        if (gfc.substep_shaping == 0)\n          gfc.substep_shaping = 2;\n        gfc.noise_shaping_amp = 2;\n        gfc.noise_shaping_stop = 1;\n        if (gfc.subblock_gain == -1)\n          gfc.subblock_gain = 1;\n        gfc.use_best_huffman = 1;\n        gfc.full_outer_loop = 0;\n        break;\n    }\n  }\n  function lame_init_bitstream(gfp) {\n    var gfc = gfp.internal_flags;\n    gfp.frameNum = 0;\n    if (gfp.write_id3tag_automatic) {\n      id3.id3tag_write_v2(gfp);\n    }\n    gfc.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n    gfc.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n    gfc.PeakSample = 0;\n    if (gfp.bWriteVbrTag)\n      vbr.InitVbrTag(gfp);\n  }\n  this.lame_init_params = function(gfp) {\n    var gfc = gfp.internal_flags;\n    gfc.Class_ID = 0;\n    if (gfc.ATH == null)\n      gfc.ATH = new ATH();\n    if (gfc.PSY == null)\n      gfc.PSY = new PSY();\n    if (gfc.rgdata == null)\n      gfc.rgdata = new ReplayGain();\n    gfc.channels_in = gfp.num_channels;\n    if (gfc.channels_in == 1)\n      gfp.mode = MPEGMode.MONO;\n    gfc.channels_out = gfp.mode == MPEGMode.MONO ? 1 : 2;\n    gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n    if (gfp.mode == MPEGMode.MONO)\n      gfp.force_ms = false;\n    if (gfp.VBR == VbrMode$3.vbr_off && gfp.VBR_mean_bitrate_kbps != 128 && gfp.brate == 0) {\n      gfp.brate = gfp.VBR_mean_bitrate_kbps;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off || gfp.VBR == VbrMode$3.vbr_mtrh || gfp.VBR == VbrMode$3.vbr_mt)\n      ;\n    else {\n      gfp.free_format = false;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off && gfp.brate == 0) {\n      if (BitStream$1.EQ(gfp.compression_ratio, 0))\n        gfp.compression_ratio = 11.025;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off && gfp.compression_ratio > 0) {\n      if (gfp.out_samplerate == 0) {\n        gfp.out_samplerate = map2MP3Frequency(int(0.97 * gfp.in_samplerate));\n      }\n      gfp.brate = 0 | gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.compression_ratio);\n      gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n      if (!gfp.free_format) {\n        gfp.brate = FindNearestBitrate(\n          gfp.brate,\n          gfp.version,\n          gfp.out_samplerate\n        );\n      }\n    }\n    if (gfp.out_samplerate != 0) {\n      if (gfp.out_samplerate < 16e3) {\n        gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n        gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 64);\n      } else if (gfp.out_samplerate < 32e3) {\n        gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n        gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 160);\n      } else {\n        gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 32);\n        gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n      }\n    }\n    if (gfp.lowpassfreq == 0) {\n      var lowpass = 16e3;\n      switch (gfp.VBR) {\n        case VbrMode$3.vbr_off: {\n          var lh = new LowPassHighPass();\n          optimum_bandwidth(lh, gfp.brate);\n          lowpass = lh.lowerlimit;\n          break;\n        }\n        case VbrMode$3.vbr_abr: {\n          var lh = new LowPassHighPass();\n          optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n          lowpass = lh.lowerlimit;\n          break;\n        }\n        case VbrMode$3.vbr_rh: {\n          var x = [\n            19500,\n            19e3,\n            18600,\n            18e3,\n            17500,\n            16e3,\n            15600,\n            14900,\n            12500,\n            1e4,\n            3950\n          ];\n          if (gfp.VBR_q >= 0 && gfp.VBR_q <= 9) {\n            var a = x[gfp.VBR_q];\n            var b = x[gfp.VBR_q + 1];\n            var m = gfp.VBR_q_frac;\n            lowpass = linear_int(a, b, m);\n          } else {\n            lowpass = 19500;\n          }\n          break;\n        }\n        default: {\n          var x = [\n            19500,\n            19e3,\n            18500,\n            18e3,\n            17500,\n            16500,\n            15500,\n            14500,\n            12500,\n            9500,\n            3950\n          ];\n          if (gfp.VBR_q >= 0 && gfp.VBR_q <= 9) {\n            var a = x[gfp.VBR_q];\n            var b = x[gfp.VBR_q + 1];\n            var m = gfp.VBR_q_frac;\n            lowpass = linear_int(a, b, m);\n          } else {\n            lowpass = 19500;\n          }\n        }\n      }\n      if (gfp.mode == MPEGMode.MONO && (gfp.VBR == VbrMode$3.vbr_off || gfp.VBR == VbrMode$3.vbr_abr)) {\n        lowpass *= 1.5;\n      }\n      gfp.lowpassfreq = lowpass | 0;\n    }\n    if (gfp.out_samplerate == 0) {\n      if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n        gfp.lowpassfreq = gfp.in_samplerate / 2;\n      }\n      gfp.out_samplerate = optimum_samplefreq(\n        gfp.lowpassfreq | 0,\n        gfp.in_samplerate\n      );\n    }\n    gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n    gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n    if (gfp.VBR == VbrMode$3.vbr_off) {\n      gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.brate);\n    }\n    if (gfp.VBR == VbrMode$3.vbr_abr) {\n      gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.VBR_mean_bitrate_kbps);\n    }\n    if (!gfp.bWriteVbrTag) {\n      gfp.findReplayGain = false;\n      gfp.decode_on_the_fly = false;\n      gfc.findPeakSample = false;\n    }\n    gfc.findReplayGain = gfp.findReplayGain;\n    gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n    if (gfc.decode_on_the_fly)\n      gfc.findPeakSample = true;\n    if (gfc.findReplayGain) {\n      if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n        gfp.internal_flags = null;\n        return -6;\n      }\n    }\n    if (gfc.decode_on_the_fly && !gfp.decode_only) {\n      if (gfc.hip != null) {\n        mpglib.hip_decode_exit(gfc.hip);\n      }\n      gfc.hip = mpglib.hip_decode_init();\n    }\n    gfc.mode_gr = gfp.out_samplerate <= 24e3 ? 1 : 2;\n    gfp.framesize = 576 * gfc.mode_gr;\n    gfp.encoder_delay = Encoder.ENCDELAY;\n    gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n    switch (gfp.VBR) {\n      case VbrMode$3.vbr_mt:\n      case VbrMode$3.vbr_rh:\n      case VbrMode$3.vbr_mtrh:\n        {\n          var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, 15, 16.5];\n          gfp.compression_ratio = cmp[gfp.VBR_q];\n        }\n        break;\n      case VbrMode$3.vbr_abr:\n        gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.VBR_mean_bitrate_kbps);\n        break;\n      default:\n        gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.brate);\n        break;\n    }\n    if (gfp.mode == MPEGMode.NOT_SET) {\n      gfp.mode = MPEGMode.JOINT_STEREO;\n    }\n    if (gfp.highpassfreq > 0) {\n      gfc.highpass1 = 2 * gfp.highpassfreq;\n      if (gfp.highpasswidth >= 0) {\n        gfc.highpass2 = 2 * (gfp.highpassfreq + gfp.highpasswidth);\n      } else {\n        gfc.highpass2 = (1 + 0) * 2 * gfp.highpassfreq;\n      }\n      gfc.highpass1 /= gfp.out_samplerate;\n      gfc.highpass2 /= gfp.out_samplerate;\n    } else {\n      gfc.highpass1 = 0;\n      gfc.highpass2 = 0;\n    }\n    if (gfp.lowpassfreq > 0) {\n      gfc.lowpass2 = 2 * gfp.lowpassfreq;\n      if (gfp.lowpasswidth >= 0) {\n        gfc.lowpass1 = 2 * (gfp.lowpassfreq - gfp.lowpasswidth);\n        if (gfc.lowpass1 < 0)\n          gfc.lowpass1 = 0;\n      } else {\n        gfc.lowpass1 = (1 - 0) * 2 * gfp.lowpassfreq;\n      }\n      gfc.lowpass1 /= gfp.out_samplerate;\n      gfc.lowpass2 /= gfp.out_samplerate;\n    } else {\n      gfc.lowpass1 = 0;\n      gfc.lowpass2 = 0;\n    }\n    lame_init_params_ppflt(gfp);\n    gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n    if (gfc.samplerate_index < 0) {\n      gfp.internal_flags = null;\n      return -1;\n    }\n    if (gfp.VBR == VbrMode$3.vbr_off) {\n      if (gfp.free_format) {\n        gfc.bitrate_index = 0;\n      } else {\n        gfp.brate = FindNearestBitrate(\n          gfp.brate,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        gfc.bitrate_index = BitrateIndex(\n          gfp.brate,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        if (gfc.bitrate_index <= 0) {\n          gfp.internal_flags = null;\n          return -1;\n        }\n      }\n    } else {\n      gfc.bitrate_index = 1;\n    }\n    if (gfp.analysis)\n      gfp.bWriteVbrTag = false;\n    if (gfc.pinfo != null)\n      gfp.bWriteVbrTag = false;\n    bs.init_bit_stream_w(gfc);\n    var j = gfc.samplerate_index + 3 * gfp.version + 6 * (gfp.out_samplerate < 16e3 ? 1 : 0);\n    for (var i = 0; i < Encoder.SBMAX_l + 1; i++) {\n      gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n    }\n    for (var i = 0; i < Encoder.PSFB21 + 1; i++) {\n      var size2 = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21]) / Encoder.PSFB21;\n      var start = gfc.scalefac_band.l[21] + i * size2;\n      gfc.scalefac_band.psfb21[i] = start;\n    }\n    gfc.scalefac_band.psfb21[Encoder.PSFB21] = 576;\n    for (var i = 0; i < Encoder.SBMAX_s + 1; i++) {\n      gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n    }\n    for (var i = 0; i < Encoder.PSFB12 + 1; i++) {\n      var size2 = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) / Encoder.PSFB12;\n      var start = gfc.scalefac_band.s[12] + i * size2;\n      gfc.scalefac_band.psfb12[i] = start;\n    }\n    gfc.scalefac_band.psfb12[Encoder.PSFB12] = 192;\n    if (gfp.version == 1) {\n      gfc.sideinfo_len = gfc.channels_out == 1 ? 4 + 17 : 4 + 32;\n    } else\n      gfc.sideinfo_len = gfc.channels_out == 1 ? 4 + 9 : 4 + 17;\n    if (gfp.error_protection)\n      gfc.sideinfo_len += 2;\n    lame_init_bitstream(gfp);\n    gfc.Class_ID = LAME_ID;\n    {\n      var k;\n      for (k = 0; k < 19; k++) {\n        gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n      }\n      if (gfp.ATHtype == -1)\n        gfp.ATHtype = 4;\n    }\n    assert$4(gfp.VBR_q <= 9);\n    assert$4(gfp.VBR_q >= 0);\n    switch (gfp.VBR) {\n      case VbrMode$3.vbr_mt:\n        gfp.VBR = VbrMode$3.vbr_mtrh;\n      case VbrMode$3.vbr_mtrh: {\n        if (gfp.useTemporal == null) {\n          gfp.useTemporal = false;\n        }\n        p2.apply_preset(gfp, 500 - gfp.VBR_q * 10, 0);\n        if (gfp.quality < 0)\n          gfp.quality = LAME_DEFAULT_QUALITY;\n        if (gfp.quality < 5)\n          gfp.quality = 0;\n        if (gfp.quality > 5)\n          gfp.quality = 5;\n        gfc.PSY.mask_adjust = gfp.maskingadjust;\n        gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n        if (gfp.experimentalY)\n          gfc.sfb21_extra = false;\n        else\n          gfc.sfb21_extra = gfp.out_samplerate > 44e3;\n        gfc.iteration_loop = new VBRNewIterationLoop(qu);\n        break;\n      }\n      case VbrMode$3.vbr_rh: {\n        p2.apply_preset(gfp, 500 - gfp.VBR_q * 10, 0);\n        gfc.PSY.mask_adjust = gfp.maskingadjust;\n        gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n        if (gfp.experimentalY)\n          gfc.sfb21_extra = false;\n        else\n          gfc.sfb21_extra = gfp.out_samplerate > 44e3;\n        if (gfp.quality > 6)\n          gfp.quality = 6;\n        if (gfp.quality < 0)\n          gfp.quality = LAME_DEFAULT_QUALITY;\n        gfc.iteration_loop = new VBROldIterationLoop(qu);\n        break;\n      }\n      default: {\n        var vbrmode;\n        gfc.sfb21_extra = false;\n        if (gfp.quality < 0)\n          gfp.quality = LAME_DEFAULT_QUALITY;\n        vbrmode = gfp.VBR;\n        if (vbrmode == VbrMode$3.vbr_off)\n          gfp.VBR_mean_bitrate_kbps = gfp.brate;\n        p2.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n        gfp.VBR = vbrmode;\n        gfc.PSY.mask_adjust = gfp.maskingadjust;\n        gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n        if (vbrmode == VbrMode$3.vbr_off) {\n          gfc.iteration_loop = new CBRNewIterationLoop(qu);\n        } else {\n          gfc.iteration_loop = new ABRIterationLoop(qu);\n        }\n        break;\n      }\n    }\n    assert$4(gfp.scale >= 0);\n    if (gfp.VBR != VbrMode$3.vbr_off) {\n      gfc.VBR_min_bitrate = 1;\n      gfc.VBR_max_bitrate = 14;\n      if (gfp.out_samplerate < 16e3)\n        gfc.VBR_max_bitrate = 8;\n      if (gfp.VBR_min_bitrate_kbps != 0) {\n        gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n          gfp.VBR_min_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        gfc.VBR_min_bitrate = BitrateIndex(\n          gfp.VBR_min_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        if (gfc.VBR_min_bitrate < 0)\n          return -1;\n      }\n      if (gfp.VBR_max_bitrate_kbps != 0) {\n        gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n          gfp.VBR_max_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        gfc.VBR_max_bitrate = BitrateIndex(\n          gfp.VBR_max_bitrate_kbps,\n          gfp.version,\n          gfp.out_samplerate\n        );\n        if (gfc.VBR_max_bitrate < 0)\n          return -1;\n      }\n      gfp.VBR_min_bitrate_kbps = Tables$1.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n      gfp.VBR_max_bitrate_kbps = Tables$1.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n      gfp.VBR_mean_bitrate_kbps = Math.min(\n        Tables$1.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n        gfp.VBR_mean_bitrate_kbps\n      );\n      gfp.VBR_mean_bitrate_kbps = Math.max(\n        Tables$1.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n        gfp.VBR_mean_bitrate_kbps\n      );\n    }\n    if (gfp.tune) {\n      gfc.PSY.mask_adjust += gfp.tune_value_a;\n      gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n    }\n    lame_init_qval(gfp);\n    assert$4(gfp.scale >= 0);\n    if (gfp.athaa_type < 0)\n      gfc.ATH.useAdjust = 3;\n    else\n      gfc.ATH.useAdjust = gfp.athaa_type;\n    gfc.ATH.aaSensitivityP = Math.pow(10, gfp.athaa_sensitivity / -10);\n    if (gfp.short_blocks == null) {\n      gfp.short_blocks = ShortBlock$1.short_block_allowed;\n    }\n    if (gfp.short_blocks == ShortBlock$1.short_block_allowed && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n      gfp.short_blocks = ShortBlock$1.short_block_coupled;\n    }\n    if (gfp.quant_comp < 0)\n      gfp.quant_comp = 1;\n    if (gfp.quant_comp_short < 0)\n      gfp.quant_comp_short = 0;\n    if (gfp.msfix < 0)\n      gfp.msfix = 0;\n    gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n    if (gfp.internal_flags.nsPsy.attackthre < 0) {\n      gfp.internal_flags.nsPsy.attackthre = PsyModel.NSATTACKTHRE;\n    }\n    if (gfp.internal_flags.nsPsy.attackthre_s < 0) {\n      gfp.internal_flags.nsPsy.attackthre_s = PsyModel.NSATTACKTHRE_S;\n    }\n    assert$4(gfp.scale >= 0);\n    if (gfp.scale < 0)\n      gfp.scale = 1;\n    if (gfp.ATHtype < 0)\n      gfp.ATHtype = 4;\n    if (gfp.ATHcurve < 0)\n      gfp.ATHcurve = 4;\n    if (gfp.athaa_loudapprox < 0)\n      gfp.athaa_loudapprox = 2;\n    if (gfp.interChRatio < 0)\n      gfp.interChRatio = 0;\n    if (gfp.useTemporal == null)\n      gfp.useTemporal = true;\n    gfc.slot_lag = gfc.frac_SpF = 0;\n    if (gfp.VBR == VbrMode$3.vbr_off) {\n      gfc.slot_lag = gfc.frac_SpF = (gfp.version + 1) * 72e3 * gfp.brate % gfp.out_samplerate | 0;\n    }\n    qupvt.iteration_init(gfp);\n    psy.psymodel_init(gfp);\n    assert$4(gfp.scale >= 0);\n    return 0;\n  };\n  function update_inbuffer_size(gfc, nsamples) {\n    if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n      gfc.in_buffer_0 = new_float$2(nsamples);\n      gfc.in_buffer_1 = new_float$2(nsamples);\n      gfc.in_buffer_nsamples = nsamples;\n    }\n  }\n  this.lame_encode_flush = function(gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n    var gfc = gfp.internal_flags;\n    var buffer = new_short_n([2, 1152]);\n    var imp3 = 0;\n    var mp3count;\n    var mp3buffer_size_remaining;\n    var end_padding;\n    var frames_left;\n    var samples_to_encode = gfc.mf_samples_to_encode - Encoder.POSTDELAY;\n    var mf_needed = calcNeeded(gfp);\n    if (gfc.mf_samples_to_encode < 1) {\n      return 0;\n    }\n    mp3count = 0;\n    if (gfp.in_samplerate != gfp.out_samplerate) {\n      samples_to_encode += 16 * gfp.out_samplerate / gfp.in_samplerate;\n    }\n    end_padding = gfp.framesize - samples_to_encode % gfp.framesize;\n    if (end_padding < 576)\n      end_padding += gfp.framesize;\n    gfp.encoder_padding = end_padding;\n    frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n    while (frames_left > 0 && imp3 >= 0) {\n      var bunch = mf_needed - gfc.mf_size;\n      var frame_num = gfp.frameNum;\n      bunch *= gfp.in_samplerate;\n      bunch /= gfp.out_samplerate;\n      if (bunch > 1152)\n        bunch = 1152;\n      if (bunch < 1)\n        bunch = 1;\n      mp3buffer_size_remaining = mp3buffer_size - mp3count;\n      if (mp3buffer_size == 0)\n        mp3buffer_size_remaining = 0;\n      imp3 = this.lame_encode_buffer(\n        gfp,\n        buffer[0],\n        buffer[1],\n        bunch,\n        mp3buffer,\n        mp3bufferPos,\n        mp3buffer_size_remaining\n      );\n      mp3bufferPos += imp3;\n      mp3count += imp3;\n      frames_left -= frame_num != gfp.frameNum ? 1 : 0;\n    }\n    gfc.mf_samples_to_encode = 0;\n    if (imp3 < 0) {\n      return imp3;\n    }\n    mp3buffer_size_remaining = mp3buffer_size - mp3count;\n    if (mp3buffer_size == 0)\n      mp3buffer_size_remaining = 0;\n    bs.flush_bitstream(gfp);\n    imp3 = bs.copy_buffer(\n      gfc,\n      mp3buffer,\n      mp3bufferPos,\n      mp3buffer_size_remaining,\n      1\n    );\n    if (imp3 < 0) {\n      return imp3;\n    }\n    mp3bufferPos += imp3;\n    mp3count += imp3;\n    mp3buffer_size_remaining = mp3buffer_size - mp3count;\n    if (mp3buffer_size == 0)\n      mp3buffer_size_remaining = 0;\n    if (gfp.write_id3tag_automatic) {\n      id3.id3tag_write_v1(gfp);\n      imp3 = bs.copy_buffer(\n        gfc,\n        mp3buffer,\n        mp3bufferPos,\n        mp3buffer_size_remaining,\n        0\n      );\n      if (imp3 < 0) {\n        return imp3;\n      }\n      mp3count += imp3;\n    }\n    return mp3count;\n  };\n  this.lame_encode_buffer = function(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n    var gfc = gfp.internal_flags;\n    var in_buffer = [null, null];\n    if (gfc.Class_ID != LAME_ID)\n      return -3;\n    if (nsamples == 0)\n      return 0;\n    update_inbuffer_size(gfc, nsamples);\n    in_buffer[0] = gfc.in_buffer_0;\n    in_buffer[1] = gfc.in_buffer_1;\n    for (var i = 0; i < nsamples; i++) {\n      in_buffer[0][i] = buffer_l[i];\n      if (gfc.channels_in > 1)\n        in_buffer[1][i] = buffer_r[i];\n    }\n    return lame_encode_buffer_sample(\n      gfp,\n      in_buffer[0],\n      in_buffer[1],\n      nsamples,\n      mp3buf,\n      mp3bufPos,\n      mp3buf_size\n    );\n  };\n  function calcNeeded(gfp) {\n    var mf_needed = Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET;\n    mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n    return mf_needed;\n  }\n  function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n    var gfc = gfp.internal_flags;\n    var mp3size = 0;\n    var ret;\n    var i;\n    var ch;\n    var mf_needed;\n    var mp3out;\n    var mfbuf = [null, null];\n    var in_buffer = [null, null];\n    if (gfc.Class_ID != LAME_ID)\n      return -3;\n    if (nsamples == 0)\n      return 0;\n    mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n    if (mp3out < 0)\n      return mp3out;\n    mp3bufPos += mp3out;\n    mp3size += mp3out;\n    in_buffer[0] = buffer_l;\n    in_buffer[1] = buffer_r;\n    if (BitStream$1.NEQ(gfp.scale, 0) && BitStream$1.NEQ(gfp.scale, 1)) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[0][i] *= gfp.scale;\n        if (gfc.channels_out == 2)\n          in_buffer[1][i] *= gfp.scale;\n      }\n    }\n    if (BitStream$1.NEQ(gfp.scale_left, 0) && BitStream$1.NEQ(gfp.scale_left, 1)) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[0][i] *= gfp.scale_left;\n      }\n    }\n    if (BitStream$1.NEQ(gfp.scale_right, 0) && BitStream$1.NEQ(gfp.scale_right, 1)) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[1][i] *= gfp.scale_right;\n      }\n    }\n    if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n      for (i = 0; i < nsamples; ++i) {\n        in_buffer[0][i] = 0.5 * (in_buffer[0][i] + in_buffer[1][i]);\n        in_buffer[1][i] = 0;\n      }\n    }\n    mf_needed = calcNeeded(gfp);\n    mfbuf[0] = gfc.mfbuf[0];\n    mfbuf[1] = gfc.mfbuf[1];\n    var in_bufferPos = 0;\n    while (nsamples > 0) {\n      var in_buffer_ptr = [null, null];\n      var n_in = 0;\n      var n_out = 0;\n      in_buffer_ptr[0] = in_buffer[0];\n      in_buffer_ptr[1] = in_buffer[1];\n      var inOut = new InOut();\n      fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples, inOut);\n      n_in = inOut.n_in;\n      n_out = inOut.n_out;\n      if (gfc.findReplayGain && !gfc.decode_on_the_fly) {\n        if (ga.AnalyzeSamples(\n          gfc.rgdata,\n          mfbuf[0],\n          gfc.mf_size,\n          mfbuf[1],\n          gfc.mf_size,\n          n_out,\n          gfc.channels_out\n        ) == GainAnalysis.GAIN_ANALYSIS_ERROR) {\n          return -6;\n        }\n      }\n      nsamples -= n_in;\n      in_bufferPos += n_in;\n      if (gfc.channels_out == 2)\n        ;\n      gfc.mf_size += n_out;\n      assert$4(gfc.mf_size <= LameInternalFlags$1.MFSIZE);\n      if (gfc.mf_samples_to_encode < 1) {\n        gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n      }\n      gfc.mf_samples_to_encode += n_out;\n      if (gfc.mf_size >= mf_needed) {\n        var buf_size = mp3buf_size - mp3size;\n        if (mp3buf_size == 0)\n          buf_size = 0;\n        ret = lame_encode_frame(\n          gfp,\n          mfbuf[0],\n          mfbuf[1],\n          mp3buf,\n          mp3bufPos,\n          buf_size\n        );\n        if (ret < 0)\n          return ret;\n        mp3bufPos += ret;\n        mp3size += ret;\n        gfc.mf_size -= gfp.framesize;\n        gfc.mf_samples_to_encode -= gfp.framesize;\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          for (i = 0; i < gfc.mf_size; i++) {\n            mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n          }\n        }\n      }\n    }\n    return mp3size;\n  }\n  function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n    var ret = self2.enc.lame_encode_mp3_frame(\n      gfp,\n      inbuf_l,\n      inbuf_r,\n      mp3buf,\n      mp3bufPos,\n      mp3buf_size\n    );\n    gfp.frameNum++;\n    return ret;\n  }\n  function InOut() {\n    this.n_in = 0;\n    this.n_out = 0;\n  }\n  function NumUsed() {\n    this.num_used = 0;\n  }\n  function gcd(i, j) {\n    return j != 0 ? gcd(j, i % j) : i;\n  }\n  function blackman(x, fcn, l) {\n    var wcn = Math.PI * fcn;\n    x /= l;\n    if (x < 0)\n      x = 0;\n    if (x > 1)\n      x = 1;\n    var x2 = x - 0.5;\n    var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n    if (Math.abs(x2) < 1e-9)\n      return wcn / Math.PI;\n    else\n      return bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2);\n  }\n  function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n    var gfc = gfp.internal_flags;\n    var i;\n    var j = 0;\n    var k;\n    var bpc = gfp.out_samplerate / gcd(gfp.out_samplerate, gfp.in_samplerate);\n    if (bpc > LameInternalFlags$1.BPC)\n      bpc = LameInternalFlags$1.BPC;\n    var intratio = Math.abs(gfc.resample_ratio - Math.floor(0.5 + gfc.resample_ratio)) < 1e-4 ? 1 : 0;\n    var fcn = 1 / gfc.resample_ratio;\n    if (fcn > 1)\n      fcn = 1;\n    var filter_l = 31;\n    if (filter_l % 2 == 0)\n      --filter_l;\n    filter_l += intratio;\n    var BLACKSIZE = filter_l + 1;\n    if (gfc.fill_buffer_resample_init == 0) {\n      gfc.inbuf_old[0] = new_float$2(BLACKSIZE);\n      gfc.inbuf_old[1] = new_float$2(BLACKSIZE);\n      for (i = 0; i <= 2 * bpc; ++i)\n        gfc.blackfilt[i] = new_float$2(BLACKSIZE);\n      gfc.itime[0] = 0;\n      gfc.itime[1] = 0;\n      for (j = 0; j <= 2 * bpc; j++) {\n        var sum = 0;\n        var offset = (j - bpc) / (2 * bpc);\n        for (i = 0; i <= filter_l; i++) {\n          sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn, filter_l);\n        }\n        for (i = 0; i <= filter_l; i++)\n          gfc.blackfilt[j][i] /= sum;\n      }\n      gfc.fill_buffer_resample_init = 1;\n    }\n    var inbuf_old = gfc.inbuf_old[ch];\n    for (k = 0; k < desired_len; k++) {\n      var time0;\n      var joff;\n      time0 = k * gfc.resample_ratio;\n      j = 0 | Math.floor(time0 - gfc.itime[ch]);\n      if (filter_l + j - filter_l / 2 >= len)\n        break;\n      var offset = time0 - gfc.itime[ch] - (j + 0.5 * (filter_l % 2));\n      joff = 0 | Math.floor(offset * 2 * bpc + bpc + 0.5);\n      var xvalue = 0;\n      for (i = 0; i <= filter_l; ++i) {\n        var j2 = 0 | i + j - filter_l / 2;\n        var y;\n        y = j2 < 0 ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos + j2];\n        xvalue += y * gfc.blackfilt[joff][i];\n      }\n      outbuf[outbufPos + k] = xvalue;\n    }\n    num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n    gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n    if (num_used.num_used >= BLACKSIZE) {\n      for (i = 0; i < BLACKSIZE; i++) {\n        inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i - BLACKSIZE];\n      }\n    } else {\n      var n_shift = BLACKSIZE - num_used.num_used;\n      for (i = 0; i < n_shift; ++i) {\n        inbuf_old[i] = inbuf_old[i + num_used.num_used];\n      }\n      for (j = 0; i < BLACKSIZE; ++i, ++j) {\n        inbuf_old[i] = inbuf[in_bufferPos + j];\n      }\n      assert$4(j == num_used.num_used);\n    }\n    return k;\n  }\n  function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n    var gfc = gfp.internal_flags;\n    if (gfc.resample_ratio < 0.9999 || gfc.resample_ratio > 1.0001) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        var numUsed = new NumUsed();\n        io.n_out = fill_buffer_resample(\n          gfp,\n          mfbuf[ch],\n          gfc.mf_size,\n          gfp.framesize,\n          in_buffer[ch],\n          in_bufferPos,\n          nsamples,\n          numUsed,\n          ch\n        );\n        io.n_in = numUsed.num_used;\n      }\n    } else {\n      io.n_out = Math.min(gfp.framesize, nsamples);\n      io.n_in = io.n_out;\n      for (var i = 0; i < io.n_out; ++i) {\n        mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n        if (gfc.channels_out == 2) {\n          mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n        }\n      }\n    }\n  }\n}\nvar VbrMode$2 = common.VbrMode;\nfunction Presets() {\n  function VBRPresets(qual, comp, compS, y, shThreshold, shThresholdS, adj, adjShort, lower, curve, sens, inter, joint, mod, fix) {\n    this.vbr_q = qual;\n    this.quant_comp = comp;\n    this.quant_comp_s = compS;\n    this.expY = y;\n    this.st_lrm = shThreshold;\n    this.st_s = shThresholdS;\n    this.masking_adj = adj;\n    this.masking_adj_short = adjShort;\n    this.ath_lower = lower;\n    this.ath_curve = curve;\n    this.ath_sensitivity = sens;\n    this.interch = inter;\n    this.safejoint = joint;\n    this.sfb21mod = mod;\n    this.msfix = fix;\n  }\n  function ABRPresets(kbps, comp, compS, joint, fix, shThreshold, shThresholdS, bass, sc, mask, lower, curve, interCh, sfScale) {\n    this.quant_comp = comp;\n    this.quant_comp_s = compS;\n    this.safejoint = joint;\n    this.nsmsfix = fix;\n    this.st_lrm = shThreshold;\n    this.st_s = shThresholdS;\n    this.nsbass = bass;\n    this.scale = sc;\n    this.masking_adj = mask;\n    this.ath_lower = lower;\n    this.ath_curve = curve;\n    this.interch = interCh;\n    this.sfscale = sfScale;\n  }\n  var lame;\n  this.setModules = function(_lame) {\n    lame = _lame;\n  };\n  var vbr_old_switch_map = [\n    new VBRPresets(\n      0,\n      9,\n      9,\n      0,\n      5.2,\n      125,\n      -4.2,\n      -6.3,\n      4.8,\n      1,\n      0,\n      0,\n      2,\n      21,\n      0.97\n    ),\n    new VBRPresets(\n      1,\n      9,\n      9,\n      0,\n      5.3,\n      125,\n      -3.6,\n      -5.6,\n      4.5,\n      1.5,\n      0,\n      0,\n      2,\n      21,\n      1.35\n    ),\n    new VBRPresets(\n      2,\n      9,\n      9,\n      0,\n      5.6,\n      125,\n      -2.2,\n      -3.5,\n      2.8,\n      2,\n      0,\n      0,\n      2,\n      21,\n      1.49\n    ),\n    new VBRPresets(\n      3,\n      9,\n      9,\n      1,\n      5.8,\n      130,\n      -1.8,\n      -2.8,\n      2.6,\n      3,\n      -4,\n      0,\n      2,\n      20,\n      1.64\n    ),\n    new VBRPresets(\n      4,\n      9,\n      9,\n      1,\n      6,\n      135,\n      -0.7,\n      -1.1,\n      1.1,\n      3.5,\n      -8,\n      0,\n      2,\n      0,\n      1.79\n    ),\n    new VBRPresets(\n      5,\n      9,\n      9,\n      1,\n      6.4,\n      140,\n      0.5,\n      0.4,\n      -7.5,\n      4,\n      -12,\n      2e-4,\n      0,\n      0,\n      1.95\n    ),\n    new VBRPresets(\n      6,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      0.67,\n      0.65,\n      -14.7,\n      6.5,\n      -19,\n      4e-4,\n      0,\n      0,\n      2.3\n    ),\n    new VBRPresets(\n      7,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      0.8,\n      0.75,\n      -19.7,\n      8,\n      -22,\n      6e-4,\n      0,\n      0,\n      2.7\n    ),\n    new VBRPresets(\n      8,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      1.2,\n      1.15,\n      -27.5,\n      10,\n      -23,\n      7e-4,\n      0,\n      0,\n      0\n    ),\n    new VBRPresets(\n      9,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      1.6,\n      1.6,\n      -36,\n      11,\n      -25,\n      8e-4,\n      0,\n      0,\n      0\n    ),\n    new VBRPresets(\n      10,\n      9,\n      9,\n      1,\n      6.6,\n      145,\n      2,\n      2,\n      -36,\n      12,\n      -25,\n      8e-4,\n      0,\n      0,\n      0\n    )\n  ];\n  var vbr_psy_switch_map = [\n    new VBRPresets(\n      0,\n      9,\n      9,\n      0,\n      4.2,\n      25,\n      -7,\n      -4,\n      7.5,\n      1,\n      0,\n      0,\n      2,\n      26,\n      0.97\n    ),\n    new VBRPresets(\n      1,\n      9,\n      9,\n      0,\n      4.2,\n      25,\n      -5.6,\n      -3.6,\n      4.5,\n      1.5,\n      0,\n      0,\n      2,\n      21,\n      1.35\n    ),\n    new VBRPresets(2, 9, 9, 0, 4.2, 25, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n    new VBRPresets(\n      3,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      -3.4,\n      -1.25,\n      1.1,\n      3,\n      -4,\n      0,\n      2,\n      15,\n      1.64\n    ),\n    new VBRPresets(4, 9, 9, 1, 4.2, 25, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n    new VBRPresets(\n      5,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      -1,\n      1.65,\n      -7.7,\n      4,\n      -12,\n      2e-4,\n      0,\n      0,\n      1.95\n    ),\n    new VBRPresets(\n      6,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      -0,\n      2.47,\n      -7.7,\n      6.5,\n      -19,\n      4e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      7,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      0.5,\n      2,\n      -14.5,\n      8,\n      -22,\n      6e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      8,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      1,\n      2.4,\n      -22,\n      10,\n      -23,\n      7e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      9,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      1.5,\n      2.95,\n      -30,\n      11,\n      -25,\n      8e-4,\n      0,\n      0,\n      2\n    ),\n    new VBRPresets(\n      10,\n      9,\n      9,\n      1,\n      4.2,\n      25,\n      2,\n      2.95,\n      -36,\n      12,\n      -30,\n      8e-4,\n      0,\n      0,\n      2\n    )\n  ];\n  function apply_vbr_preset(gfp, a, enforce) {\n    var vbr_preset = gfp.VBR == VbrMode$2.vbr_rh ? vbr_old_switch_map : vbr_psy_switch_map;\n    var x = gfp.VBR_q_frac;\n    var p2 = vbr_preset[a];\n    var q = vbr_preset[a + 1];\n    var set2 = p2;\n    p2.st_lrm = p2.st_lrm + x * (q.st_lrm - p2.st_lrm);\n    p2.st_s = p2.st_s + x * (q.st_s - p2.st_s);\n    p2.masking_adj = p2.masking_adj + x * (q.masking_adj - p2.masking_adj);\n    p2.masking_adj_short = p2.masking_adj_short + x * (q.masking_adj_short - p2.masking_adj_short);\n    p2.ath_lower = p2.ath_lower + x * (q.ath_lower - p2.ath_lower);\n    p2.ath_curve = p2.ath_curve + x * (q.ath_curve - p2.ath_curve);\n    p2.ath_sensitivity = p2.ath_sensitivity + x * (q.ath_sensitivity - p2.ath_sensitivity);\n    p2.interch = p2.interch + x * (q.interch - p2.interch);\n    p2.msfix = p2.msfix + x * (q.msfix - p2.msfix);\n    lame_set_VBR_q(gfp, set2.vbr_q);\n    if (enforce != 0)\n      gfp.quant_comp = set2.quant_comp;\n    else if (!(Math.abs(gfp.quant_comp - -1) > 0)) {\n      gfp.quant_comp = set2.quant_comp;\n    }\n    if (enforce != 0)\n      gfp.quant_comp_short = set2.quant_comp_s;\n    else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) {\n      gfp.quant_comp_short = set2.quant_comp_s;\n    }\n    if (set2.expY != 0) {\n      gfp.experimentalY = set2.expY != 0;\n    }\n    if (enforce != 0)\n      gfp.internal_flags.nsPsy.attackthre = set2.st_lrm;\n    else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre = set2.st_lrm;\n    }\n    if (enforce != 0)\n      gfp.internal_flags.nsPsy.attackthre_s = set2.st_s;\n    else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre_s = set2.st_s;\n    }\n    if (enforce != 0)\n      gfp.maskingadjust = set2.masking_adj;\n    else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) {\n      gfp.maskingadjust = set2.masking_adj;\n    }\n    if (enforce != 0)\n      gfp.maskingadjust_short = set2.masking_adj_short;\n    else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n      gfp.maskingadjust_short = set2.masking_adj_short;\n    }\n    if (enforce != 0)\n      gfp.ATHlower = -set2.ath_lower / 10;\n    else if (!(Math.abs(-gfp.ATHlower * 10 - 0) > 0)) {\n      gfp.ATHlower = -set2.ath_lower / 10;\n    }\n    if (enforce != 0)\n      gfp.ATHcurve = set2.ath_curve;\n    else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n      gfp.ATHcurve = set2.ath_curve;\n    if (enforce != 0)\n      gfp.athaa_sensitivity = set2.ath_sensitivity;\n    else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0)) {\n      gfp.athaa_sensitivity = set2.ath_sensitivity;\n    }\n    if (set2.interch > 0) {\n      if (enforce != 0)\n        gfp.interChRatio = set2.interch;\n      else if (!(Math.abs(gfp.interChRatio - -1) > 0)) {\n        gfp.interChRatio = set2.interch;\n      }\n    }\n    if (set2.safejoint > 0) {\n      gfp.exp_nspsytune = gfp.exp_nspsytune | set2.safejoint;\n    }\n    if (set2.sfb21mod > 0) {\n      gfp.exp_nspsytune = gfp.exp_nspsytune | set2.sfb21mod << 20;\n    }\n    if (enforce != 0)\n      gfp.msfix = set2.msfix;\n    else if (!(Math.abs(gfp.msfix - -1) > 0))\n      gfp.msfix = set2.msfix;\n    if (enforce == 0) {\n      gfp.VBR_q = a;\n      gfp.VBR_q_frac = x;\n    }\n  }\n  var abr_switch_map = [\n    new ABRPresets(\n      8,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -30,\n      11,\n      12e-4,\n      1\n    ),\n    new ABRPresets(\n      16,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -25,\n      11,\n      1e-3,\n      1\n    ),\n    new ABRPresets(\n      24,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -20,\n      11,\n      1e-3,\n      1\n    ),\n    new ABRPresets(\n      32,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -15,\n      11,\n      1e-3,\n      1\n    ),\n    new ABRPresets(\n      40,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -10,\n      11,\n      9e-4,\n      1\n    ),\n    new ABRPresets(\n      48,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -10,\n      11,\n      9e-4,\n      1\n    ),\n    new ABRPresets(\n      56,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -6,\n      11,\n      8e-4,\n      1\n    ),\n    new ABRPresets(\n      64,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      -2,\n      11,\n      8e-4,\n      1\n    ),\n    new ABRPresets(\n      80,\n      9,\n      9,\n      0,\n      0,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      0,\n      8,\n      7e-4,\n      1\n    ),\n    new ABRPresets(\n      96,\n      9,\n      9,\n      0,\n      2.5,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      1,\n      5.5,\n      6e-4,\n      1\n    ),\n    new ABRPresets(\n      112,\n      9,\n      9,\n      0,\n      2.25,\n      6.6,\n      145,\n      0,\n      0.95,\n      0,\n      2,\n      4.5,\n      5e-4,\n      1\n    ),\n    new ABRPresets(\n      128,\n      9,\n      9,\n      0,\n      1.95,\n      6.4,\n      140,\n      0,\n      0.95,\n      0,\n      3,\n      4,\n      2e-4,\n      1\n    ),\n    new ABRPresets(\n      160,\n      9,\n      9,\n      1,\n      1.79,\n      6,\n      135,\n      0,\n      0.95,\n      -2,\n      5,\n      3.5,\n      0,\n      1\n    ),\n    new ABRPresets(\n      192,\n      9,\n      9,\n      1,\n      1.49,\n      5.6,\n      125,\n      0,\n      0.97,\n      -4,\n      7,\n      3,\n      0,\n      0\n    ),\n    new ABRPresets(\n      224,\n      9,\n      9,\n      1,\n      1.25,\n      5.2,\n      125,\n      0,\n      0.98,\n      -6,\n      9,\n      2,\n      0,\n      0\n    ),\n    new ABRPresets(\n      256,\n      9,\n      9,\n      1,\n      0.97,\n      5.2,\n      125,\n      0,\n      1,\n      -8,\n      10,\n      1,\n      0,\n      0\n    ),\n    new ABRPresets(\n      320,\n      9,\n      9,\n      1,\n      0.9,\n      5.2,\n      125,\n      0,\n      1,\n      -10,\n      12,\n      0,\n      0,\n      0\n    )\n  ];\n  function apply_abr_preset(gfp, preset, enforce) {\n    var actual_bitrate = preset;\n    var r = lame.nearestBitrateFullIndex(preset);\n    gfp.VBR = VbrMode$2.vbr_abr;\n    gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n    gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n    gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n    gfp.brate = gfp.VBR_mean_bitrate_kbps;\n    if (gfp.VBR_mean_bitrate_kbps > 320) {\n      gfp.disable_reservoir = true;\n    }\n    if (abr_switch_map[r].safejoint > 0) {\n      gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n    }\n    if (abr_switch_map[r].sfscale > 0) {\n      gfp.internal_flags.noise_shaping = 2;\n    }\n    if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n      var k = int(abr_switch_map[r].nsbass * 4);\n      if (k < 0)\n        k += 64;\n      gfp.exp_nspsytune = gfp.exp_nspsytune | k << 2;\n    }\n    if (enforce != 0)\n      gfp.quant_comp = abr_switch_map[r].quant_comp;\n    else if (!(Math.abs(gfp.quant_comp - -1) > 0)) {\n      gfp.quant_comp = abr_switch_map[r].quant_comp;\n    }\n    if (enforce != 0)\n      gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n    else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) {\n      gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n    }\n    if (enforce != 0)\n      gfp.msfix = abr_switch_map[r].nsmsfix;\n    else if (!(Math.abs(gfp.msfix - -1) > 0)) {\n      gfp.msfix = abr_switch_map[r].nsmsfix;\n    }\n    if (enforce != 0) {\n      gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n    } else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n    }\n    if (enforce != 0) {\n      gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n    } else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) {\n      gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n    }\n    if (enforce != 0)\n      gfp.scale = abr_switch_map[r].scale;\n    else if (!(Math.abs(gfp.scale - -1) > 0)) {\n      gfp.scale = abr_switch_map[r].scale;\n    }\n    if (enforce != 0)\n      gfp.maskingadjust = abr_switch_map[r].masking_adj;\n    else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) {\n      gfp.maskingadjust = abr_switch_map[r].masking_adj;\n    }\n    if (abr_switch_map[r].masking_adj > 0) {\n      if (enforce != 0) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 0.9;\n      } else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 0.9;\n      }\n    } else {\n      if (enforce != 0) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 1.1;\n      } else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n        gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 1.1;\n      }\n    }\n    if (enforce != 0)\n      gfp.ATHlower = -abr_switch_map[r].ath_lower / 10;\n    else if (!(Math.abs(-gfp.ATHlower * 10 - 0) > 0)) {\n      gfp.ATHlower = -abr_switch_map[r].ath_lower / 10;\n    }\n    if (enforce != 0)\n      gfp.ATHcurve = abr_switch_map[r].ath_curve;\n    else if (!(Math.abs(gfp.ATHcurve - -1) > 0)) {\n      gfp.ATHcurve = abr_switch_map[r].ath_curve;\n    }\n    if (enforce != 0)\n      gfp.interChRatio = abr_switch_map[r].interch;\n    else if (!(Math.abs(gfp.interChRatio - -1) > 0)) {\n      gfp.interChRatio = abr_switch_map[r].interch;\n    }\n    return preset;\n  }\n  this.apply_preset = function(gfp, preset, enforce) {\n    switch (preset) {\n      case Lame$1.R3MIX: {\n        preset = Lame$1.V3;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.MEDIUM: {\n        preset = Lame$1.V4;\n        gfp.VBR = VbrMode$2.vbr_rh;\n        break;\n      }\n      case Lame$1.MEDIUM_FAST: {\n        preset = Lame$1.V4;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.STANDARD: {\n        preset = Lame$1.V2;\n        gfp.VBR = VbrMode$2.vbr_rh;\n        break;\n      }\n      case Lame$1.STANDARD_FAST: {\n        preset = Lame$1.V2;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.EXTREME: {\n        preset = Lame$1.V0;\n        gfp.VBR = VbrMode$2.vbr_rh;\n        break;\n      }\n      case Lame$1.EXTREME_FAST: {\n        preset = Lame$1.V0;\n        gfp.VBR = VbrMode$2.vbr_mtrh;\n        break;\n      }\n      case Lame$1.INSANE: {\n        preset = 320;\n        gfp.preset = preset;\n        apply_abr_preset(gfp, preset, enforce);\n        gfp.VBR = VbrMode$2.vbr_off;\n        return preset;\n      }\n    }\n    gfp.preset = preset;\n    {\n      switch (preset) {\n        case Lame$1.V9:\n          apply_vbr_preset(gfp, 9, enforce);\n          return preset;\n        case Lame$1.V8:\n          apply_vbr_preset(gfp, 8, enforce);\n          return preset;\n        case Lame$1.V7:\n          apply_vbr_preset(gfp, 7, enforce);\n          return preset;\n        case Lame$1.V6:\n          apply_vbr_preset(gfp, 6, enforce);\n          return preset;\n        case Lame$1.V5:\n          apply_vbr_preset(gfp, 5, enforce);\n          return preset;\n        case Lame$1.V4:\n          apply_vbr_preset(gfp, 4, enforce);\n          return preset;\n        case Lame$1.V3:\n          apply_vbr_preset(gfp, 3, enforce);\n          return preset;\n        case Lame$1.V2:\n          apply_vbr_preset(gfp, 2, enforce);\n          return preset;\n        case Lame$1.V1:\n          apply_vbr_preset(gfp, 1, enforce);\n          return preset;\n        case Lame$1.V0:\n          apply_vbr_preset(gfp, 0, enforce);\n          return preset;\n      }\n    }\n    if (preset >= 8 && preset <= 320) {\n      return apply_abr_preset(gfp, preset, enforce);\n    }\n    gfp.preset = 0;\n    return preset;\n  };\n  function lame_set_VBR_q(gfp, VBR_q) {\n    var ret = 0;\n    if (VBR_q < 0) {\n      ret = -1;\n      VBR_q = 0;\n    }\n    if (VBR_q > 9) {\n      ret = -1;\n      VBR_q = 9;\n    }\n    gfp.VBR_q = VBR_q;\n    gfp.VBR_q_frac = 0;\n    return ret;\n  }\n}\nfunction VBRQuantize() {\n  this.setModules = function(_qupvt, _tk) {\n  };\n}\nfunction CalcNoiseResult$1() {\n  this.over_noise = 0;\n  this.tot_noise = 0;\n  this.max_noise = 0;\n  this.over_count = 0;\n  this.over_SSD = 0;\n  this.bits = 0;\n}\nvar new_float$1 = common.new_float;\nvar new_int = common.new_int;\nfunction CalcNoiseData() {\n  this.global_gain = 0;\n  this.sfb_count1 = 0;\n  this.step = new_int(39);\n  this.noise = new_float$1(39);\n  this.noise_log = new_float$1(39);\n}\nvar System$1 = common.System;\nvar VbrMode$1 = common.VbrMode;\nvar Util = common.Util;\nvar Arrays$1 = common.Arrays;\nvar new_float = common.new_float;\nvar assert$3 = common.assert;\nfunction Quantize() {\n  var bs;\n  this.rv = null;\n  var rv;\n  this.qupvt = null;\n  var qupvt;\n  var vbr = new VBRQuantize();\n  var tk;\n  this.setModules = function(_bs, _rv, _qupvt, _tk) {\n    bs = _bs;\n    rv = _rv;\n    this.rv = _rv;\n    qupvt = _qupvt;\n    this.qupvt = _qupvt;\n    tk = _tk;\n    vbr.setModules(qupvt, tk);\n  };\n  this.ms_convert = function(l3_side, gr) {\n    for (var i = 0; i < 576; ++i) {\n      var l = l3_side.tt[gr][0].xr[i];\n      var r = l3_side.tt[gr][1].xr[i];\n      l3_side.tt[gr][0].xr[i] = (l + r) * (Util.SQRT2 * 0.5);\n      l3_side.tt[gr][1].xr[i] = (l - r) * (Util.SQRT2 * 0.5);\n    }\n  };\n  function init_xrpow_core(cod_info, xrpow, upper, sum) {\n    sum = 0;\n    for (var i = 0; i <= upper; ++i) {\n      var tmp = Math.abs(cod_info.xr[i]);\n      sum += tmp;\n      xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n      if (xrpow[i] > cod_info.xrpow_max)\n        cod_info.xrpow_max = xrpow[i];\n    }\n    return sum;\n  }\n  this.init_xrpow = function(gfc, cod_info, xrpow) {\n    var sum = 0;\n    var upper = 0 | cod_info.max_nonzero_coeff;\n    cod_info.xrpow_max = 0;\n    Arrays$1.fill(xrpow, upper, 576, 0);\n    sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n    if (sum > 1e-20) {\n      var j = 0;\n      if ((gfc.substep_shaping & 2) != 0)\n        j = 1;\n      for (var i = 0; i < cod_info.psymax; i++)\n        gfc.pseudohalf[i] = j;\n      return true;\n    }\n    Arrays$1.fill(cod_info.l3_enc, 0, 576, 0);\n    return false;\n  };\n  function psfb21_analogsilence(gfc, cod_info) {\n    var ath = gfc.ATH;\n    var xr = cod_info.xr;\n    if (cod_info.block_type != Encoder.SHORT_TYPE) {\n      var stop = false;\n      for (var gsfb = Encoder.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n        var start = gfc.scalefac_band.psfb21[gsfb];\n        var end = gfc.scalefac_band.psfb21[gsfb + 1];\n        var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb], ath.floor);\n        if (gfc.nsPsy.longfact[21] > 1e-12)\n          ath21 *= gfc.nsPsy.longfact[21];\n        for (var j = end - 1; j >= start; j--) {\n          if (Math.abs(xr[j]) < ath21)\n            xr[j] = 0;\n          else {\n            stop = true;\n            break;\n          }\n        }\n      }\n    } else {\n      for (var block = 0; block < 3; block++) {\n        var stop = false;\n        for (var gsfb = Encoder.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n          var start = gfc.scalefac_band.s[12] * 3 + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) * block + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n          var end = start + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n          var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb], ath.floor);\n          if (gfc.nsPsy.shortfact[12] > 1e-12)\n            ath12 *= gfc.nsPsy.shortfact[12];\n          for (var j = end - 1; j >= start; j--) {\n            if (Math.abs(xr[j]) < ath12)\n              xr[j] = 0;\n            else {\n              stop = true;\n              break;\n            }\n          }\n        }\n      }\n    }\n  }\n  this.init_outer_loop = function(gfc, cod_info) {\n    cod_info.part2_3_length = 0;\n    cod_info.big_values = 0;\n    cod_info.count1 = 0;\n    cod_info.global_gain = 210;\n    cod_info.scalefac_compress = 0;\n    cod_info.table_select[0] = 0;\n    cod_info.table_select[1] = 0;\n    cod_info.table_select[2] = 0;\n    cod_info.subblock_gain[0] = 0;\n    cod_info.subblock_gain[1] = 0;\n    cod_info.subblock_gain[2] = 0;\n    cod_info.subblock_gain[3] = 0;\n    cod_info.region0_count = 0;\n    cod_info.region1_count = 0;\n    cod_info.preflag = 0;\n    cod_info.scalefac_scale = 0;\n    cod_info.count1table_select = 0;\n    cod_info.part2_length = 0;\n    cod_info.sfb_lmax = Encoder.SBPSY_l;\n    cod_info.sfb_smin = Encoder.SBPSY_s;\n    cod_info.psy_lmax = gfc.sfb21_extra ? Encoder.SBMAX_l : Encoder.SBPSY_l;\n    cod_info.psymax = cod_info.psy_lmax;\n    cod_info.sfbmax = cod_info.sfb_lmax;\n    cod_info.sfbdivide = 11;\n    for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n      cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1] - gfc.scalefac_band.l[sfb];\n      cod_info.window[sfb] = 3;\n    }\n    if (cod_info.block_type == Encoder.SHORT_TYPE) {\n      var ixwork = new_float(576);\n      cod_info.sfb_smin = 0;\n      cod_info.sfb_lmax = 0;\n      if (cod_info.mixed_block_flag != 0) {\n        cod_info.sfb_smin = 3;\n        cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n      }\n      cod_info.psymax = cod_info.sfb_lmax + 3 * ((gfc.sfb21_extra ? Encoder.SBMAX_s : Encoder.SBPSY_s) - cod_info.sfb_smin);\n      cod_info.sfbmax = cod_info.sfb_lmax + 3 * (Encoder.SBPSY_s - cod_info.sfb_smin);\n      cod_info.sfbdivide = cod_info.sfbmax - 18;\n      cod_info.psy_lmax = cod_info.sfb_lmax;\n      var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n      System$1.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n      for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n        var start = gfc.scalefac_band.s[sfb];\n        var end = gfc.scalefac_band.s[sfb + 1];\n        for (var window2 = 0; window2 < 3; window2++) {\n          for (var l = start; l < end; l++) {\n            cod_info.xr[ix++] = ixwork[3 * l + window2];\n          }\n        }\n      }\n      var j = cod_info.sfb_lmax;\n      for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n        cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb];\n        cod_info.window[j] = 0;\n        cod_info.window[j + 1] = 1;\n        cod_info.window[j + 2] = 2;\n        j += 3;\n      }\n    }\n    cod_info.count1bits = 0;\n    cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n    cod_info.slen[0] = 0;\n    cod_info.slen[1] = 0;\n    cod_info.slen[2] = 0;\n    cod_info.slen[3] = 0;\n    cod_info.max_nonzero_coeff = 575;\n    Arrays$1.fill(cod_info.scalefac, 0);\n    psfb21_analogsilence(gfc, cod_info);\n  };\n  function BinSearchDirection(ordinal) {\n    this.ordinal = ordinal;\n  }\n  BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n  BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n  BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n  function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n    var nBits;\n    var CurrentStep = gfc.CurrentStep[ch];\n    var flagGoneOver = false;\n    var start = gfc.OldValue[ch];\n    var Direction = BinSearchDirection.BINSEARCH_NONE;\n    cod_info.global_gain = start;\n    desired_rate -= cod_info.part2_length;\n    for (; ; ) {\n      var step;\n      nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n      if (CurrentStep == 1 || nBits == desired_rate)\n        break;\n      if (nBits > desired_rate) {\n        if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n          flagGoneOver = true;\n        if (flagGoneOver)\n          CurrentStep /= 2;\n        Direction = BinSearchDirection.BINSEARCH_UP;\n        step = CurrentStep;\n      } else {\n        if (Direction == BinSearchDirection.BINSEARCH_UP)\n          flagGoneOver = true;\n        if (flagGoneOver)\n          CurrentStep /= 2;\n        Direction = BinSearchDirection.BINSEARCH_DOWN;\n        step = -CurrentStep;\n      }\n      cod_info.global_gain += step;\n      if (cod_info.global_gain < 0) {\n        cod_info.global_gain = 0;\n        flagGoneOver = true;\n      }\n      if (cod_info.global_gain > 255) {\n        cod_info.global_gain = 255;\n        flagGoneOver = true;\n      }\n    }\n    assert$3(cod_info.global_gain >= 0);\n    assert$3(cod_info.global_gain < 256);\n    while (nBits > desired_rate && cod_info.global_gain < 255) {\n      cod_info.global_gain++;\n      nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n    }\n    gfc.CurrentStep[ch] = start - cod_info.global_gain >= 4 ? 4 : 2;\n    gfc.OldValue[ch] = cod_info.global_gain;\n    cod_info.part2_3_length = nBits;\n    return nBits;\n  }\n  this.trancate_smallspectrums = function(gfc, gi, l3_xmin, work) {\n    var distort = new_float(L3Side$1.SFBMAX);\n    if ((gfc.substep_shaping & 4) == 0 && gi.block_type == Encoder.SHORT_TYPE || (gfc.substep_shaping & 128) != 0) {\n      return;\n    }\n    qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult$1(), null);\n    for (var j = 0; j < 576; j++) {\n      var xr = 0;\n      if (gi.l3_enc[j] != 0)\n        xr = Math.abs(gi.xr[j]);\n      work[j] = xr;\n    }\n    var j = 0;\n    var sfb = 8;\n    if (gi.block_type == Encoder.SHORT_TYPE)\n      sfb = 6;\n    do {\n      var allowedNoise, trancateThreshold;\n      var nsame, start;\n      var width = gi.width[sfb];\n      j += width;\n      if (distort[sfb] >= 1)\n        continue;\n      Arrays$1.sort(work, j - width, width);\n      if (BitStream.EQ(work[j - 1], 0))\n        continue;\n      allowedNoise = (1 - distort[sfb]) * l3_xmin[sfb];\n      trancateThreshold = 0;\n      start = 0;\n      do {\n        var noise;\n        for (nsame = 1; start + nsame < width; nsame++) {\n          if (BitStream.NEQ(\n            work[start + j - width],\n            work[start + j + nsame - width]\n          )) {\n            break;\n          }\n        }\n        noise = work[start + j - width] * work[start + j - width] * nsame;\n        if (allowedNoise < noise) {\n          if (start != 0)\n            trancateThreshold = work[start + j - width - 1];\n          break;\n        }\n        allowedNoise -= noise;\n        start += nsame;\n      } while (start < width);\n      if (BitStream.EQ(trancateThreshold, 0))\n        continue;\n      do {\n        if (Math.abs(gi.xr[j - width]) <= trancateThreshold) {\n          gi.l3_enc[j - width] = 0;\n        }\n      } while (--width > 0);\n    } while (++sfb < gi.psymax);\n    gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n  };\n  function loop_break(cod_info) {\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      if (cod_info.scalefac[sfb] + cod_info.subblock_gain[cod_info.window[sfb]] == 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  function penalties(noise) {\n    return Util.FAST_LOG10(0.368 + 0.632 * noise * noise * noise);\n  }\n  function get_klemm_noise(distort, gi) {\n    var klemm_noise = 1e-37;\n    for (var sfb = 0; sfb < gi.psymax; sfb++) {\n      klemm_noise += penalties(distort[sfb]);\n    }\n    return Math.max(1e-20, klemm_noise);\n  }\n  function quant_compare(quant_comp, best, calc, gi, distort) {\n    var better;\n    switch (quant_comp) {\n      default:\n      case 9: {\n        if (best.over_count > 0) {\n          better = calc.over_SSD <= best.over_SSD;\n          if (calc.over_SSD == best.over_SSD)\n            better = calc.bits < best.bits;\n        } else {\n          better = calc.max_noise < 0 && calc.max_noise * 10 + calc.bits <= best.max_noise * 10 + best.bits;\n        }\n        break;\n      }\n      case 0:\n        better = calc.over_count < best.over_count || calc.over_count == best.over_count && calc.over_noise < best.over_noise || calc.over_count == best.over_count && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise;\n        break;\n      case 8:\n        calc.max_noise = get_klemm_noise(distort, gi);\n      case 1:\n        better = calc.max_noise < best.max_noise;\n        break;\n      case 2:\n        better = calc.tot_noise < best.tot_noise;\n        break;\n      case 3:\n        better = calc.tot_noise < best.tot_noise && calc.max_noise < best.max_noise;\n        break;\n      case 4:\n        better = calc.max_noise <= 0 && best.max_noise > 0.2 || calc.max_noise <= 0 && best.max_noise < 0 && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise || calc.max_noise <= 0 && best.max_noise > 0 && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise + best.over_noise || calc.max_noise > 0 && best.max_noise > -0.05 && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise + calc.over_noise < best.tot_noise + best.over_noise || calc.max_noise > 0 && best.max_noise > -0.1 && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise + calc.over_noise + calc.over_noise < best.tot_noise + best.over_noise + best.over_noise;\n        break;\n      case 5:\n        better = calc.over_noise < best.over_noise || BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise;\n        break;\n      case 6:\n        better = calc.over_noise < best.over_noise || BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || BitStream.EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise);\n        break;\n      case 7:\n        better = calc.over_count < best.over_count || calc.over_noise < best.over_noise;\n        break;\n    }\n    if (best.over_count == 0) {\n      better = better && calc.bits < best.bits;\n    }\n    return better;\n  }\n  function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n    var gfc = gfp.internal_flags;\n    var ifqstep34;\n    if (cod_info.scalefac_scale == 0) {\n      ifqstep34 = 1.2968395546510096;\n    } else {\n      ifqstep34 = 1.6817928305074292;\n    }\n    var trigger2 = 0;\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      if (trigger2 < distort[sfb])\n        trigger2 = distort[sfb];\n    }\n    var noise_shaping_amp = gfc.noise_shaping_amp;\n    if (noise_shaping_amp == 3) {\n      if (bRefine)\n        noise_shaping_amp = 2;\n      else\n        noise_shaping_amp = 1;\n    }\n    switch (noise_shaping_amp) {\n      case 2:\n        break;\n      case 1:\n        if (trigger2 > 1)\n          trigger2 = Math.pow(trigger2, 0.5);\n        else\n          trigger2 *= 0.95;\n        break;\n      case 0:\n      default:\n        if (trigger2 > 1)\n          trigger2 = 1;\n        else\n          trigger2 *= 0.95;\n        break;\n    }\n    var j = 0;\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      var width = cod_info.width[sfb];\n      var l;\n      j += width;\n      if (distort[sfb] < trigger2)\n        continue;\n      if ((gfc.substep_shaping & 2) != 0) {\n        gfc.pseudohalf[sfb] = gfc.pseudohalf[sfb] == 0 ? 1 : 0;\n        if (gfc.pseudohalf[sfb] == 0 && gfc.noise_shaping_amp == 2)\n          return;\n      }\n      cod_info.scalefac[sfb]++;\n      for (l = -width; l < 0; l++) {\n        xrpow[j + l] *= ifqstep34;\n        if (xrpow[j + l] > cod_info.xrpow_max)\n          cod_info.xrpow_max = xrpow[j + l];\n      }\n      if (gfc.noise_shaping_amp == 2)\n        return;\n    }\n  }\n  function inc_scalefac_scale(cod_info, xrpow) {\n    var ifqstep34 = 1.2968395546510096;\n    var j = 0;\n    for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n      var width = cod_info.width[sfb];\n      var s = cod_info.scalefac[sfb];\n      if (cod_info.preflag != 0)\n        s += qupvt.pretab[sfb];\n      j += width;\n      if ((s & 1) != 0) {\n        s++;\n        for (var l = -width; l < 0; l++) {\n          xrpow[j + l] *= ifqstep34;\n          if (xrpow[j + l] > cod_info.xrpow_max) {\n            cod_info.xrpow_max = xrpow[j + l];\n          }\n        }\n      }\n      cod_info.scalefac[sfb] = s >> 1;\n    }\n    cod_info.preflag = 0;\n    cod_info.scalefac_scale = 1;\n  }\n  function inc_subblock_gain(gfc, cod_info, xrpow) {\n    var sfb;\n    var scalefac = cod_info.scalefac;\n    for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n      if (scalefac[sfb] >= 16)\n        return true;\n    }\n    for (var window2 = 0; window2 < 3; window2++) {\n      var s1 = 0;\n      var s2 = 0;\n      for (sfb = cod_info.sfb_lmax + window2; sfb < cod_info.sfbdivide; sfb += 3) {\n        if (s1 < scalefac[sfb])\n          s1 = scalefac[sfb];\n      }\n      for (; sfb < cod_info.sfbmax; sfb += 3) {\n        if (s2 < scalefac[sfb])\n          s2 = scalefac[sfb];\n      }\n      if (s1 < 16 && s2 < 8)\n        continue;\n      if (cod_info.subblock_gain[window2] >= 7)\n        return true;\n      cod_info.subblock_gain[window2]++;\n      var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n      for (sfb = cod_info.sfb_lmax + window2; sfb < cod_info.sfbmax; sfb += 3) {\n        var amp;\n        var width = cod_info.width[sfb];\n        var s = scalefac[sfb];\n        s = s - (4 >> cod_info.scalefac_scale);\n        if (s >= 0) {\n          scalefac[sfb] = s;\n          j += width * 3;\n          continue;\n        }\n        scalefac[sfb] = 0;\n        {\n          var gain = 210 + (s << cod_info.scalefac_scale + 1);\n          amp = qupvt.IPOW20(gain);\n        }\n        j += width * (window2 + 1);\n        for (var l = -width; l < 0; l++) {\n          xrpow[j + l] *= amp;\n          if (xrpow[j + l] > cod_info.xrpow_max) {\n            cod_info.xrpow_max = xrpow[j + l];\n          }\n        }\n        j += width * (3 - window2 - 1);\n      }\n      {\n        var amp = qupvt.IPOW20(202);\n        j += cod_info.width[sfb] * (window2 + 1);\n        for (var l = -cod_info.width[sfb]; l < 0; l++) {\n          xrpow[j + l] *= amp;\n          if (xrpow[j + l] > cod_info.xrpow_max) {\n            cod_info.xrpow_max = xrpow[j + l];\n          }\n        }\n      }\n    }\n    return false;\n  }\n  function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n    var gfc = gfp.internal_flags;\n    amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n    var status = loop_break(cod_info);\n    if (status)\n      return false;\n    if (gfc.mode_gr == 2)\n      status = tk.scale_bitcount(cod_info);\n    else\n      status = tk.scale_bitcount_lsf(gfc, cod_info);\n    if (!status)\n      return true;\n    if (gfc.noise_shaping > 1) {\n      Arrays$1.fill(gfc.pseudohalf, 0);\n      if (cod_info.scalefac_scale == 0) {\n        inc_scalefac_scale(cod_info, xrpow);\n        status = false;\n      } else {\n        if (cod_info.block_type == Encoder.SHORT_TYPE && gfc.subblock_gain > 0) {\n          status = inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info);\n        }\n      }\n    }\n    if (!status) {\n      if (gfc.mode_gr == 2)\n        status = tk.scale_bitcount(cod_info);\n      else\n        status = tk.scale_bitcount_lsf(gfc, cod_info);\n    }\n    return !status;\n  }\n  this.outer_loop = function(gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n    var gfc = gfp.internal_flags;\n    var cod_info_w = new GrInfo();\n    var save_xrpow = new_float(576);\n    var distort = new_float(L3Side$1.SFBMAX);\n    var best_noise_info = new CalcNoiseResult$1();\n    var better;\n    var prev_noise = new CalcNoiseData();\n    var best_part2_3_length = 9999999;\n    var bEndOfSearch = false;\n    var bRefine = false;\n    var best_ggain_pass1 = 0;\n    bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n    if (gfc.noise_shaping == 0) {\n      return 100;\n    }\n    qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info, prev_noise);\n    best_noise_info.bits = cod_info.part2_3_length;\n    cod_info_w.assign(cod_info);\n    var age = 0;\n    System$1.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n    while (!bEndOfSearch) {\n      do {\n        var noise_info = new CalcNoiseResult$1();\n        var search_limit;\n        var maxggain = 255;\n        if ((gfc.substep_shaping & 2) != 0) {\n          search_limit = 20;\n        } else {\n          search_limit = 3;\n        }\n        if (gfc.sfb21_extra) {\n          if (distort[cod_info_w.sfbmax] > 1)\n            break;\n          if (cod_info_w.block_type == Encoder.SHORT_TYPE && (distort[cod_info_w.sfbmax + 1] > 1 || distort[cod_info_w.sfbmax + 2] > 1)) {\n            break;\n          }\n        }\n        if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n          break;\n        if (cod_info_w.scalefac_scale != 0)\n          maxggain = 254;\n        var huff_bits = targ_bits - cod_info_w.part2_length;\n        if (huff_bits <= 0)\n          break;\n        while ((cod_info_w.part2_3_length = tk.count_bits(\n          gfc,\n          xrpow,\n          cod_info_w,\n          prev_noise\n        )) > huff_bits && cod_info_w.global_gain <= maxggain) {\n          cod_info_w.global_gain++;\n        }\n        if (cod_info_w.global_gain > maxggain)\n          break;\n        if (best_noise_info.over_count == 0) {\n          while ((cod_info_w.part2_3_length = tk.count_bits(\n            gfc,\n            xrpow,\n            cod_info_w,\n            prev_noise\n          )) > best_part2_3_length && cod_info_w.global_gain <= maxggain) {\n            cod_info_w.global_gain++;\n          }\n          if (cod_info_w.global_gain > maxggain)\n            break;\n        }\n        qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info, prev_noise);\n        noise_info.bits = cod_info_w.part2_3_length;\n        if (cod_info.block_type != Encoder.SHORT_TYPE) {\n          better = gfp.quant_comp;\n        } else\n          better = gfp.quant_comp_short;\n        better = quant_compare(\n          better,\n          best_noise_info,\n          noise_info,\n          cod_info_w,\n          distort\n        ) ? 1 : 0;\n        if (better != 0) {\n          best_part2_3_length = cod_info.part2_3_length;\n          best_noise_info = noise_info;\n          cod_info.assign(cod_info_w);\n          age = 0;\n          System$1.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n        } else {\n          if (gfc.full_outer_loop == 0) {\n            if (++age > search_limit && best_noise_info.over_count == 0)\n              break;\n            if (gfc.noise_shaping_amp == 3 && bRefine && age > 30)\n              break;\n            if (gfc.noise_shaping_amp == 3 && bRefine && cod_info_w.global_gain - best_ggain_pass1 > 15) {\n              break;\n            }\n          }\n        }\n      } while (cod_info_w.global_gain + cod_info_w.scalefac_scale < 255);\n      if (gfc.noise_shaping_amp == 3) {\n        if (!bRefine) {\n          cod_info_w.assign(cod_info);\n          System$1.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n          age = 0;\n          best_ggain_pass1 = cod_info_w.global_gain;\n          bRefine = true;\n        } else {\n          bEndOfSearch = true;\n        }\n      } else {\n        bEndOfSearch = true;\n      }\n    }\n    assert$3(cod_info.global_gain + cod_info.scalefac_scale <= 255);\n    if (gfp.VBR == VbrMode$1.vbr_rh || gfp.VBR == VbrMode$1.vbr_mtrh) {\n      System$1.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n    } else if ((gfc.substep_shaping & 1) != 0) {\n      trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n    }\n    return best_noise_info.over_count;\n  };\n  this.iteration_finish_one = function(gfc, gr, ch) {\n    var l3_side = gfc.l3_side;\n    var cod_info = l3_side.tt[gr][ch];\n    tk.best_scalefac_store(gfc, gr, ch, l3_side);\n    if (gfc.use_best_huffman == 1)\n      tk.best_huffman_divide(gfc, cod_info);\n    rv.ResvAdjust(gfc, cod_info);\n  };\n  this.VBR_encode_granule = function(gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n    var gfc = gfp.internal_flags;\n    var bst_cod_info = new GrInfo();\n    var bst_xrpow = new_float(576);\n    var Max_bits = max_bits;\n    var real_bits = max_bits + 1;\n    var this_bits = (max_bits + min_bits) / 2;\n    var dbits;\n    var over;\n    var found = 0;\n    var sfb21_extra = gfc.sfb21_extra;\n    assert$3(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n    Arrays$1.fill(bst_cod_info.l3_enc, 0);\n    do {\n      if (this_bits > Max_bits - 42)\n        gfc.sfb21_extra = false;\n      else\n        gfc.sfb21_extra = sfb21_extra;\n      over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n      if (over <= 0) {\n        found = 1;\n        real_bits = cod_info.part2_3_length;\n        bst_cod_info.assign(cod_info);\n        System$1.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n        max_bits = real_bits - 32;\n        dbits = max_bits - min_bits;\n        this_bits = (max_bits + min_bits) / 2;\n      } else {\n        min_bits = this_bits + 32;\n        dbits = max_bits - min_bits;\n        this_bits = (max_bits + min_bits) / 2;\n        if (found != 0) {\n          found = 2;\n          cod_info.assign(bst_cod_info);\n          System$1.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n        }\n      }\n    } while (dbits > 12);\n    gfc.sfb21_extra = sfb21_extra;\n    if (found == 2) {\n      System$1.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n    }\n    assert$3(cod_info.part2_3_length <= Max_bits);\n  };\n  this.get_framebits = function(gfp, frameBits) {\n    var gfc = gfp.internal_flags;\n    gfc.bitrate_index = gfc.VBR_min_bitrate;\n    var bitsPerFrame = bs.getframebits(gfp);\n    gfc.bitrate_index = 1;\n    bitsPerFrame = bs.getframebits(gfp);\n    for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n      gfc.bitrate_index = i;\n      var mb = new MeanBits(bitsPerFrame);\n      frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n      bitsPerFrame = mb.bits;\n    }\n  };\n  this.VBR_old_prepare = function(gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits, max_bits, bands) {\n    var gfc = gfp.internal_flags;\n    var masking_lower_db;\n    var adjust = 0;\n    var analog_silence = 1;\n    var bits = 0;\n    gfc.bitrate_index = gfc.VBR_max_bitrate;\n    var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n    get_framebits(gfp, frameBits);\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n      if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n        ms_convert(gfc.l3_side, gr);\n        qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n      }\n      for (var ch = 0; ch < gfc.channels_out; ++ch) {\n        var cod_info = gfc.l3_side.tt[gr][ch];\n        if (cod_info.block_type != Encoder.SHORT_TYPE) {\n          adjust = 1.28 / (1 + Math.exp(3.5 - pe[gr][ch] / 300)) - 0.05;\n          masking_lower_db = gfc.PSY.mask_adjust - adjust;\n        } else {\n          adjust = 2.56 / (1 + Math.exp(3.5 - pe[gr][ch] / 300)) - 0.14;\n          masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n        }\n        gfc.masking_lower = Math.pow(10, masking_lower_db * 0.1);\n        init_outer_loop(gfc, cod_info);\n        bands[gr][ch] = qupvt.calc_xmin(\n          gfp,\n          ratio[gr][ch],\n          cod_info,\n          l3_xmin[gr][ch]\n        );\n        if (bands[gr][ch] != 0)\n          analog_silence = 0;\n        min_bits[gr][ch] = 126;\n        bits += max_bits[gr][ch];\n      }\n    }\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        if (bits > frameBits[gfc.VBR_max_bitrate]) {\n          max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n          max_bits[gr][ch] /= bits;\n        }\n        if (min_bits[gr][ch] > max_bits[gr][ch]) {\n          min_bits[gr][ch] = max_bits[gr][ch];\n        }\n      }\n    }\n    return analog_silence;\n  };\n  this.bitpressure_strategy = function(gfc, l3_xmin, min_bits, max_bits) {\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        var gi = gfc.l3_side.tt[gr][ch];\n        var pxmin = l3_xmin[gr][ch];\n        var pxminPos = 0;\n        for (var sfb = 0; sfb < gi.psy_lmax; sfb++) {\n          pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_l / Encoder.SBMAX_l;\n        }\n        if (gi.block_type == Encoder.SHORT_TYPE) {\n          for (var sfb = gi.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n            pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n            pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n            pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n          }\n        }\n        max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch], 0.9 * max_bits[gr][ch]);\n      }\n    }\n  };\n  this.VBR_new_prepare = function(gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n    var gfc = gfp.internal_flags;\n    var analog_silence = 1;\n    var avg = 0;\n    var bits = 0;\n    var maximum_framebits;\n    if (!gfp.free_format) {\n      gfc.bitrate_index = gfc.VBR_max_bitrate;\n      var mb = new MeanBits(avg);\n      rv.ResvFrameBegin(gfp, mb);\n      avg = mb.bits;\n      get_framebits(gfp, frameBits);\n      maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n    } else {\n      gfc.bitrate_index = 0;\n      var mb = new MeanBits(avg);\n      maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n      avg = mb.bits;\n      frameBits[0] = maximum_framebits;\n    }\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n      if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n        ms_convert(gfc.l3_side, gr);\n      }\n      for (var ch = 0; ch < gfc.channels_out; ++ch) {\n        var cod_info = gfc.l3_side.tt[gr][ch];\n        gfc.masking_lower = Math.pow(10, gfc.PSY.mask_adjust * 0.1);\n        init_outer_loop(gfc, cod_info);\n        if (qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, l3_xmin[gr][ch]) != 0) {\n          analog_silence = 0;\n        }\n        bits += max_bits[gr][ch];\n      }\n    }\n    for (var gr = 0; gr < gfc.mode_gr; gr++) {\n      for (var ch = 0; ch < gfc.channels_out; ch++) {\n        if (bits > maximum_framebits) {\n          max_bits[gr][ch] *= maximum_framebits;\n          max_bits[gr][ch] /= bits;\n        }\n      }\n    }\n    return analog_silence;\n  };\n  this.calc_target_bits = function(gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n    var gfc = gfp.internal_flags;\n    var l3_side = gfc.l3_side;\n    var res_factor;\n    var gr;\n    var ch;\n    var totbits;\n    var mean_bits = 0;\n    gfc.bitrate_index = gfc.VBR_max_bitrate;\n    var mb = new MeanBits(mean_bits);\n    max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n    mean_bits = mb.bits;\n    gfc.bitrate_index = 1;\n    mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n    analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n    mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1e3;\n    if ((gfc.substep_shaping & 1) != 0)\n      mean_bits *= 1.09;\n    mean_bits /= gfp.out_samplerate;\n    mean_bits -= gfc.sideinfo_len * 8;\n    mean_bits /= gfc.mode_gr * gfc.channels_out;\n    res_factor = 0.93 + 0.07 * (11 - gfp.compression_ratio) / (11 - 5.5);\n    if (res_factor < 0.9)\n      res_factor = 0.9;\n    if (res_factor > 1)\n      res_factor = 1;\n    for (gr = 0; gr < gfc.mode_gr; gr++) {\n      var sum = 0;\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        targ_bits[gr][ch] = int(res_factor * mean_bits);\n        if (pe[gr][ch] > 700) {\n          var add_bits = int((pe[gr][ch] - 700) / 1.4);\n          var cod_info = l3_side.tt[gr][ch];\n          targ_bits[gr][ch] = int(res_factor * mean_bits);\n          if (cod_info.block_type == Encoder.SHORT_TYPE) {\n            if (add_bits < mean_bits / 2)\n              add_bits = mean_bits / 2;\n          }\n          if (add_bits > mean_bits * 3 / 2)\n            add_bits = mean_bits * 3 / 2;\n          else if (add_bits < 0)\n            add_bits = 0;\n          targ_bits[gr][ch] += add_bits;\n        }\n        if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n          targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n        }\n        sum += targ_bits[gr][ch];\n      }\n      if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n        for (ch = 0; ch < gfc.channels_out; ++ch) {\n          targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n          targ_bits[gr][ch] /= sum;\n        }\n      }\n    }\n    if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        qupvt.reduce_side(\n          targ_bits[gr],\n          ms_ener_ratio[gr],\n          mean_bits * gfc.channels_out,\n          LameInternalFlags.MAX_BITS_PER_GRANULE\n        );\n      }\n    }\n    totbits = 0;\n    for (gr = 0; gr < gfc.mode_gr; gr++) {\n      for (ch = 0; ch < gfc.channels_out; ch++) {\n        if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n          targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n        }\n        totbits += targ_bits[gr][ch];\n      }\n    }\n    if (totbits > max_frame_bits[0]) {\n      for (gr = 0; gr < gfc.mode_gr; gr++) {\n        for (ch = 0; ch < gfc.channels_out; ch++) {\n          targ_bits[gr][ch] *= max_frame_bits[0];\n          targ_bits[gr][ch] /= totbits;\n        }\n      }\n    }\n  };\n}\nvar assert$2 = common.assert;\nfunction Reservoir() {\n  var bs;\n  this.setModules = function(_bs) {\n    bs = _bs;\n  };\n  this.ResvFrameBegin = function(gfp, mean_bits) {\n    var gfc = gfp.internal_flags;\n    var maxmp3buf;\n    var l3_side = gfc.l3_side;\n    var frameLength = bs.getframebits(gfp);\n    mean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n    var resvLimit = 8 * 256 * gfc.mode_gr - 8;\n    if (gfp.brate > 320) {\n      maxmp3buf = 8 * int(gfp.brate * 1e3 / (gfp.out_samplerate / 1152) / 8 + 0.5);\n    } else {\n      maxmp3buf = 8 * 1440;\n      if (gfp.strict_ISO) {\n        maxmp3buf = 8 * int(32e4 / (gfp.out_samplerate / 1152) / 8 + 0.5);\n      }\n    }\n    gfc.ResvMax = maxmp3buf - frameLength;\n    if (gfc.ResvMax > resvLimit)\n      gfc.ResvMax = resvLimit;\n    if (gfc.ResvMax < 0 || gfp.disable_reservoir)\n      gfc.ResvMax = 0;\n    var fullFrameBits = mean_bits.bits * gfc.mode_gr + Math.min(gfc.ResvSize, gfc.ResvMax);\n    if (fullFrameBits > maxmp3buf)\n      fullFrameBits = maxmp3buf;\n    assert$2(gfc.ResvMax % 8 == 0);\n    assert$2(gfc.ResvMax >= 0);\n    l3_side.resvDrain_pre = 0;\n    if (gfc.pinfo != null) {\n      gfc.pinfo.mean_bits = mean_bits.bits / 2;\n      gfc.pinfo.resvsize = gfc.ResvSize;\n    }\n    return fullFrameBits;\n  };\n  this.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n    var gfc = gfp.internal_flags;\n    var add_bits;\n    var ResvSize = gfc.ResvSize;\n    var ResvMax = gfc.ResvMax;\n    if (cbr != 0)\n      ResvSize += mean_bits;\n    if ((gfc.substep_shaping & 1) != 0)\n      ResvMax *= 0.9;\n    targ_bits.bits = mean_bits;\n    if (ResvSize * 10 > ResvMax * 9) {\n      add_bits = ResvSize - ResvMax * 9 / 10;\n      targ_bits.bits += add_bits;\n      gfc.substep_shaping |= 128;\n    } else {\n      add_bits = 0;\n      gfc.substep_shaping &= 127;\n      if (!gfp.disable_reservoir && (gfc.substep_shaping & 1) == 0) {\n        targ_bits.bits -= 0.1 * mean_bits;\n      }\n    }\n    var extra_bits = ResvSize < gfc.ResvMax * 6 / 10 ? ResvSize : gfc.ResvMax * 6 / 10;\n    extra_bits -= add_bits;\n    if (extra_bits < 0)\n      extra_bits = 0;\n    return extra_bits;\n  };\n  this.ResvAdjust = function(gfc, gi) {\n    gfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n  };\n  this.ResvFrameEnd = function(gfc, mean_bits) {\n    var over_bits;\n    var l3_side = gfc.l3_side;\n    gfc.ResvSize += mean_bits * gfc.mode_gr;\n    var stuffingBits = 0;\n    l3_side.resvDrain_post = 0;\n    l3_side.resvDrain_pre = 0;\n    if ((over_bits = gfc.ResvSize % 8) != 0)\n      stuffingBits += over_bits;\n    over_bits = gfc.ResvSize - stuffingBits - gfc.ResvMax;\n    if (over_bits > 0) {\n      stuffingBits += over_bits;\n    }\n    {\n      var mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n      l3_side.resvDrain_pre += 8 * mdb_bytes;\n      stuffingBits -= 8 * mdb_bytes;\n      gfc.ResvSize -= 8 * mdb_bytes;\n      l3_side.main_data_begin -= mdb_bytes;\n    }\n    l3_side.resvDrain_post += stuffingBits;\n    gfc.ResvSize -= stuffingBits;\n  };\n}\nfunction Version() {\n  var LAME_URL = \"http://www.mp3dev.org/\";\n  var LAME_MAJOR_VERSION = 3;\n  var LAME_MINOR_VERSION = 98;\n  var LAME_PATCH_VERSION = 4;\n  var PSY_MAJOR_VERSION = 0;\n  var PSY_MINOR_VERSION = 93;\n  this.getLameVersion = function() {\n    return LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION;\n  };\n  this.getLameShortVersion = function() {\n    return LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION;\n  };\n  this.getLameVeryShortVersion = function() {\n    return \"LAME\" + LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \"r\";\n  };\n  this.getPsyVersion = function() {\n    return PSY_MAJOR_VERSION + \".\" + PSY_MINOR_VERSION;\n  };\n  this.getLameUrl = function() {\n    return LAME_URL;\n  };\n  this.getLameOsBitness = function() {\n    return \"32bits\";\n  };\n}\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar ShortBlock = common.ShortBlock;\nvar Arrays = common.Arrays;\nvar new_byte$1 = common.new_byte;\nvar assert$1 = common.assert;\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\nfunction VBRTag() {\n  var lame;\n  var bs;\n  var v;\n  this.setModules = function(_lame, _bs, _v) {\n    lame = _lame;\n    bs = _bs;\n    v = _v;\n  };\n  var FRAMES_FLAG = 1;\n  var BYTES_FLAG = 2;\n  var TOC_FLAG = 4;\n  var VBR_SCALE_FLAG = 8;\n  var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n  var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n  var VBRHEADERSIZE = NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4;\n  var LAMEHEADERSIZE = VBRHEADERSIZE + 9 + 1 + 1 + 8 + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2;\n  var XING_BITRATE1 = 128;\n  var XING_BITRATE2 = 64;\n  var XING_BITRATE25 = 32;\n  var ISO_8859_1 = null;\n  var VBRTag0 = \"Xing\";\n  var VBRTag1 = \"Info\";\n  var crc16Lookup = [\n    0,\n    49345,\n    49537,\n    320,\n    49921,\n    960,\n    640,\n    49729,\n    50689,\n    1728,\n    1920,\n    51009,\n    1280,\n    50625,\n    50305,\n    1088,\n    52225,\n    3264,\n    3456,\n    52545,\n    3840,\n    53185,\n    52865,\n    3648,\n    2560,\n    51905,\n    52097,\n    2880,\n    51457,\n    2496,\n    2176,\n    51265,\n    55297,\n    6336,\n    6528,\n    55617,\n    6912,\n    56257,\n    55937,\n    6720,\n    7680,\n    57025,\n    57217,\n    8e3,\n    56577,\n    7616,\n    7296,\n    56385,\n    5120,\n    54465,\n    54657,\n    5440,\n    55041,\n    6080,\n    5760,\n    54849,\n    53761,\n    4800,\n    4992,\n    54081,\n    4352,\n    53697,\n    53377,\n    4160,\n    61441,\n    12480,\n    12672,\n    61761,\n    13056,\n    62401,\n    62081,\n    12864,\n    13824,\n    63169,\n    63361,\n    14144,\n    62721,\n    13760,\n    13440,\n    62529,\n    15360,\n    64705,\n    64897,\n    15680,\n    65281,\n    16320,\n    16e3,\n    65089,\n    64001,\n    15040,\n    15232,\n    64321,\n    14592,\n    63937,\n    63617,\n    14400,\n    10240,\n    59585,\n    59777,\n    10560,\n    60161,\n    11200,\n    10880,\n    59969,\n    60929,\n    11968,\n    12160,\n    61249,\n    11520,\n    60865,\n    60545,\n    11328,\n    58369,\n    9408,\n    9600,\n    58689,\n    9984,\n    59329,\n    59009,\n    9792,\n    8704,\n    58049,\n    58241,\n    9024,\n    57601,\n    8640,\n    8320,\n    57409,\n    40961,\n    24768,\n    24960,\n    41281,\n    25344,\n    41921,\n    41601,\n    25152,\n    26112,\n    42689,\n    42881,\n    26432,\n    42241,\n    26048,\n    25728,\n    42049,\n    27648,\n    44225,\n    44417,\n    27968,\n    44801,\n    28608,\n    28288,\n    44609,\n    43521,\n    27328,\n    27520,\n    43841,\n    26880,\n    43457,\n    43137,\n    26688,\n    30720,\n    47297,\n    47489,\n    31040,\n    47873,\n    31680,\n    31360,\n    47681,\n    48641,\n    32448,\n    32640,\n    48961,\n    32e3,\n    48577,\n    48257,\n    31808,\n    46081,\n    29888,\n    30080,\n    46401,\n    30464,\n    47041,\n    46721,\n    30272,\n    29184,\n    45761,\n    45953,\n    29504,\n    45313,\n    29120,\n    28800,\n    45121,\n    20480,\n    37057,\n    37249,\n    20800,\n    37633,\n    21440,\n    21120,\n    37441,\n    38401,\n    22208,\n    22400,\n    38721,\n    21760,\n    38337,\n    38017,\n    21568,\n    39937,\n    23744,\n    23936,\n    40257,\n    24320,\n    40897,\n    40577,\n    24128,\n    23040,\n    39617,\n    39809,\n    23360,\n    39169,\n    22976,\n    22656,\n    38977,\n    34817,\n    18624,\n    18816,\n    35137,\n    19200,\n    35777,\n    35457,\n    19008,\n    19968,\n    36545,\n    36737,\n    20288,\n    36097,\n    19904,\n    19584,\n    35905,\n    17408,\n    33985,\n    34177,\n    17728,\n    34561,\n    18368,\n    18048,\n    34369,\n    33281,\n    17088,\n    17280,\n    33601,\n    16640,\n    33217,\n    32897,\n    16448\n  ];\n  function addVbr(v2, bitrate) {\n    v2.nVbrNumFrames++;\n    v2.sum += bitrate;\n    v2.seen++;\n    if (v2.seen < v2.want) {\n      return;\n    }\n    if (v2.pos < v2.size) {\n      v2.bag[v2.pos] = v2.sum;\n      v2.pos++;\n      v2.seen = 0;\n    }\n    if (v2.pos == v2.size) {\n      for (var i = 1; i < v2.size; i += 2) {\n        v2.bag[i / 2] = v2.bag[i];\n      }\n      v2.want *= 2;\n      v2.pos /= 2;\n    }\n  }\n  function xingSeekTable(v2, t) {\n    if (v2.pos <= 0)\n      return;\n    for (var i = 1; i < NUMTOCENTRIES; ++i) {\n      var j = i / NUMTOCENTRIES;\n      var act;\n      var sum;\n      var indx = 0 | Math.floor(j * v2.pos);\n      if (indx > v2.pos - 1)\n        indx = v2.pos - 1;\n      act = v2.bag[indx];\n      sum = v2.sum;\n      var seek_point = 0 | 256 * act / sum;\n      if (seek_point > 255)\n        seek_point = 255;\n      t[i] = 255 & seek_point;\n    }\n  }\n  this.addVbrFrame = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n    assert$1(gfc.VBR_seek_table.bag != null);\n    addVbr(gfc.VBR_seek_table, kbps);\n  };\n  function extractInteger(buf, bufPos) {\n    var x = buf[bufPos + 0] & 255;\n    x <<= 8;\n    x |= buf[bufPos + 1] & 255;\n    x <<= 8;\n    x |= buf[bufPos + 2] & 255;\n    x <<= 8;\n    x |= buf[bufPos + 3] & 255;\n    return x;\n  }\n  function createInteger(buf, bufPos, value) {\n    buf[bufPos + 0] = 255 & (value >> 24 & 255);\n    buf[bufPos + 1] = 255 & (value >> 16 & 255);\n    buf[bufPos + 2] = 255 & (value >> 8 & 255);\n    buf[bufPos + 3] = 255 & (value & 255);\n  }\n  function createShort(buf, bufPos, value) {\n    buf[bufPos + 0] = 255 & (value >> 8 & 255);\n    buf[bufPos + 1] = 255 & (value & 255);\n  }\n  function isVbrTag(buf, bufPos) {\n    return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1).equals(VBRTag0) || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1).equals(VBRTag1);\n  }\n  function shiftInBitsValue(x, n, v2) {\n    return 255 & (x << n | v2 & ~(-1 << n));\n  }\n  function setLameTagFrameHeader(gfp, buffer) {\n    var gfc = gfp.internal_flags;\n    buffer[0] = shiftInBitsValue(buffer[0], 8, 255);\n    buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n    buffer[1] = shiftInBitsValue(\n      buffer[1],\n      1,\n      gfp.out_samplerate < 16e3 ? 0 : 1\n    );\n    buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n    buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n    buffer[1] = shiftInBitsValue(buffer[1], 1, !gfp.error_protection ? 1 : 0);\n    buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n    buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n    buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n    buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n    buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n    buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n    buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n    buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n    buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n    buffer[0] = 255;\n    var abyte = 255 & (buffer[1] & 241);\n    var bitrate;\n    if (gfp.version == 1) {\n      bitrate = XING_BITRATE1;\n    } else {\n      if (gfp.out_samplerate < 16e3)\n        bitrate = XING_BITRATE25;\n      else\n        bitrate = XING_BITRATE2;\n    }\n    if (gfp.VBR == VbrMode.vbr_off)\n      bitrate = gfp.brate;\n    var bbyte;\n    if (gfp.free_format)\n      bbyte = 0;\n    else {\n      bbyte = 255 & 16 * lame.BitrateIndex(bitrate, gfp.version, gfp.out_samplerate);\n    }\n    if (gfp.version == 1) {\n      buffer[1] = 255 & (abyte | 10);\n      abyte = 255 & (buffer[2] & 13);\n      buffer[2] = 255 & (bbyte | abyte);\n    } else {\n      buffer[1] = 255 & (abyte | 2);\n      abyte = 255 & (buffer[2] & 13);\n      buffer[2] = 255 & (bbyte | abyte);\n    }\n  }\n  this.getVbrTag = function(buf) {\n    var pTagData = new VBRTagData();\n    var bufPos = 0;\n    pTagData.flags = 0;\n    var hId = buf[bufPos + 1] >> 3 & 1;\n    var hSrIndex = buf[bufPos + 2] >> 2 & 3;\n    var hMode = buf[bufPos + 3] >> 6 & 3;\n    var hBitrate = buf[bufPos + 2] >> 4 & 15;\n    hBitrate = Tables.bitrate_table[hId][hBitrate];\n    if (buf[bufPos + 1] >> 4 == 14) {\n      pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n    } else\n      pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n    if (hId != 0) {\n      if (hMode != 3)\n        bufPos += 32 + 4;\n      else\n        bufPos += 17 + 4;\n    } else {\n      if (hMode != 3)\n        bufPos += 17 + 4;\n      else\n        bufPos += 9 + 4;\n    }\n    if (!isVbrTag(buf, bufPos))\n      return null;\n    bufPos += 4;\n    pTagData.hId = hId;\n    var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n    bufPos += 4;\n    if ((head_flags & FRAMES_FLAG) != 0) {\n      pTagData.frames = extractInteger(buf, bufPos);\n      bufPos += 4;\n    }\n    if ((head_flags & BYTES_FLAG) != 0) {\n      pTagData.bytes = extractInteger(buf, bufPos);\n      bufPos += 4;\n    }\n    if ((head_flags & TOC_FLAG) != 0) {\n      if (pTagData.toc != null) {\n        for (var i = 0; i < NUMTOCENTRIES; i++) {\n          pTagData.toc[i] = buf[bufPos + i];\n        }\n      }\n      bufPos += NUMTOCENTRIES;\n    }\n    pTagData.vbrScale = -1;\n    if ((head_flags & VBR_SCALE_FLAG) != 0) {\n      pTagData.vbrScale = extractInteger(buf, bufPos);\n      bufPos += 4;\n    }\n    pTagData.headersize = (hId + 1) * 72e3 * hBitrate / pTagData.samprate;\n    bufPos += 21;\n    var encDelay = buf[bufPos + 0] << 4;\n    encDelay += buf[bufPos + 1] >> 4;\n    var encPadding = (buf[bufPos + 1] & 15) << 8;\n    encPadding += buf[bufPos + 2] & 255;\n    if (encDelay < 0 || encDelay > 3e3)\n      encDelay = -1;\n    if (encPadding < 0 || encPadding > 3e3)\n      encPadding = -1;\n    pTagData.encDelay = encDelay;\n    pTagData.encPadding = encPadding;\n    return pTagData;\n  };\n  this.InitVbrTag = function(gfp) {\n    var gfc = gfp.internal_flags;\n    var kbps_header;\n    if (gfp.version == 1) {\n      kbps_header = XING_BITRATE1;\n    } else {\n      if (gfp.out_samplerate < 16e3)\n        kbps_header = XING_BITRATE25;\n      else\n        kbps_header = XING_BITRATE2;\n    }\n    if (gfp.VBR == VbrMode.vbr_off)\n      kbps_header = gfp.brate;\n    var totalFrameSize = (gfp.version + 1) * 72e3 * kbps_header / gfp.out_samplerate;\n    var headerSize = gfc.sideinfo_len + LAMEHEADERSIZE;\n    gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n    if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n      gfp.bWriteVbrTag = false;\n      return;\n    }\n    gfc.VBR_seek_table.nVbrNumFrames = 0;\n    gfc.VBR_seek_table.nBytesWritten = 0;\n    gfc.VBR_seek_table.sum = 0;\n    gfc.VBR_seek_table.seen = 0;\n    gfc.VBR_seek_table.want = 1;\n    gfc.VBR_seek_table.pos = 0;\n    if (gfc.VBR_seek_table.bag == null) {\n      gfc.VBR_seek_table.bag = new int[400]();\n      gfc.VBR_seek_table.size = 400;\n    }\n    var buffer = new_byte$1(MAXFRAMESIZE);\n    setLameTagFrameHeader(gfp, buffer);\n    var n = gfc.VBR_seek_table.TotalFrameSize;\n    for (var i = 0; i < n; ++i) {\n      bs.add_dummy_byte(gfp, buffer[i] & 255, 1);\n    }\n  };\n  function crcUpdateLookup(value, crc) {\n    var tmp = crc ^ value;\n    crc = crc >> 8 ^ crc16Lookup[tmp & 255];\n    return crc;\n  }\n  this.updateMusicCRC = function(crc, buffer, bufferPos, size2) {\n    for (var i = 0; i < size2; ++i) {\n      crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n    }\n  };\n  function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n    var gfc = gfp.internal_flags;\n    var bytesWritten = 0;\n    var encDelay = gfp.encoder_delay;\n    var encPadding = gfp.encoder_padding;\n    var quality = 100 - 10 * gfp.VBR_q - gfp.quality;\n    var version2 = v.getLameVeryShortVersion();\n    var vbr;\n    var revision = 0;\n    var revMethod;\n    var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n    var lowpass = 0 | (gfp.lowpassfreq / 100 + 0.5 > 255 ? 255 : gfp.lowpassfreq / 100 + 0.5);\n    var peakSignalAmplitude = 0;\n    var radioReplayGain = 0;\n    var audiophileReplayGain = 0;\n    var noiseShaping = gfp.internal_flags.noise_shaping;\n    var stereoMode = 0;\n    var nonOptimal = 0;\n    var sourceFreq = 0;\n    var misc = 0;\n    var musicCRC = 0;\n    var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n    var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n    var noGapMore = false;\n    var noGapPrevious = false;\n    var noGapCount = gfp.internal_flags.nogap_total;\n    var noGapCurr = gfp.internal_flags.nogap_current;\n    var athType = gfp.ATHtype;\n    var flags = 0;\n    var abrBitrate;\n    switch (gfp.VBR) {\n      case vbr_abr:\n        abrBitrate = gfp.VBR_mean_bitrate_kbps;\n        break;\n      case vbr_off:\n        abrBitrate = gfp.brate;\n        break;\n      default:\n        abrBitrate = gfp.VBR_min_bitrate_kbps;\n    }\n    if (gfp.VBR.ordinal() < vbrTypeTranslator.length) {\n      vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n    } else\n      vbr = 0;\n    revMethod = 16 * revision + vbr;\n    if (gfc.findReplayGain) {\n      if (gfc.RadioGain > 510)\n        gfc.RadioGain = 510;\n      if (gfc.RadioGain < -510)\n        gfc.RadioGain = -510;\n      radioReplayGain = 8192;\n      radioReplayGain |= 3072;\n      if (gfc.RadioGain >= 0) {\n        radioReplayGain |= gfc.RadioGain;\n      } else {\n        radioReplayGain |= 512;\n        radioReplayGain |= -gfc.RadioGain;\n      }\n    }\n    if (gfc.findPeakSample) {\n      peakSignalAmplitude = Math.abs(\n        0 | gfc.PeakSample / 32767 * Math.pow(2, 23) + 0.5\n      );\n    }\n    if (noGapCount != -1) {\n      if (noGapCurr > 0)\n        noGapPrevious = true;\n      if (noGapCurr < noGapCount - 1)\n        noGapMore = true;\n    }\n    flags = athType + ((expNPsyTune ? 1 : 0) << 4) + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6) + ((noGapPrevious ? 1 : 0) << 7);\n    if (quality < 0)\n      quality = 0;\n    switch (gfp.mode) {\n      case MONO:\n        stereoMode = 0;\n        break;\n      case STEREO:\n        stereoMode = 1;\n        break;\n      case DUAL_CHANNEL:\n        stereoMode = 2;\n        break;\n      case JOINT_STEREO:\n        if (gfp.force_ms)\n          stereoMode = 4;\n        else\n          stereoMode = 3;\n        break;\n      case NOT_SET:\n      default:\n        stereoMode = 7;\n        break;\n    }\n    if (gfp.in_samplerate <= 32e3)\n      sourceFreq = 0;\n    else if (gfp.in_samplerate == 48e3)\n      sourceFreq = 2;\n    else if (gfp.in_samplerate > 48e3)\n      sourceFreq = 3;\n    else {\n      sourceFreq = 1;\n    }\n    if (gfp.short_blocks == ShortBlock.short_block_forced || gfp.short_blocks == ShortBlock.short_block_dispensed || gfp.lowpassfreq == -1 && gfp.highpassfreq == -1 || gfp.scale_left < gfp.scale_right || gfp.scale_left > gfp.scale_right || gfp.disable_reservoir && gfp.brate < 320 || gfp.noATH || gfp.ATHonly || athType == 0 || gfp.in_samplerate <= 32e3) {\n      nonOptimal = 1;\n    }\n    misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5) + (sourceFreq << 6);\n    musicCRC = gfc.nMusicCRC;\n    createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n    bytesWritten += 4;\n    for (var j = 0; j < 9; j++) {\n      streamBuffer[streamBufferPos + bytesWritten + j] = 255 & version2.charAt(j);\n    }\n    bytesWritten += 9;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & revMethod;\n    bytesWritten++;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & lowpass;\n    bytesWritten++;\n    createInteger(\n      streamBuffer,\n      streamBufferPos + bytesWritten,\n      peakSignalAmplitude\n    );\n    bytesWritten += 4;\n    createShort(streamBuffer, streamBufferPos + bytesWritten, radioReplayGain);\n    bytesWritten += 2;\n    createShort(\n      streamBuffer,\n      streamBufferPos + bytesWritten,\n      audiophileReplayGain\n    );\n    bytesWritten += 2;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & flags;\n    bytesWritten++;\n    if (abrBitrate >= 255)\n      streamBuffer[streamBufferPos + bytesWritten] = 255;\n    else\n      streamBuffer[streamBufferPos + bytesWritten] = 255 & abrBitrate;\n    bytesWritten++;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & encDelay >> 4;\n    streamBuffer[streamBufferPos + bytesWritten + 1] = 255 & (encDelay << 4) + (encPadding >> 8);\n    streamBuffer[streamBufferPos + bytesWritten + 2] = 255 & encPadding;\n    bytesWritten += 3;\n    streamBuffer[streamBufferPos + bytesWritten] = 255 & misc;\n    bytesWritten++;\n    streamBuffer[streamBufferPos + bytesWritten++] = 0;\n    createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n    bytesWritten += 2;\n    createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n    bytesWritten += 4;\n    createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n    bytesWritten += 2;\n    for (var i = 0; i < bytesWritten; i++) {\n      crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n    }\n    createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n    bytesWritten += 2;\n    return bytesWritten;\n  }\n  function skipId3v2(fpStream) {\n    fpStream.seek(0);\n    var id3v2Header = new_byte$1(10);\n    fpStream.readFully(id3v2Header);\n    var id3v2TagSize;\n    if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n      id3v2TagSize = ((id3v2Header[6] & 127) << 21 | (id3v2Header[7] & 127) << 14 | (id3v2Header[8] & 127) << 7 | id3v2Header[9] & 127) + id3v2Header.length;\n    } else {\n      id3v2TagSize = 0;\n    }\n    return id3v2TagSize;\n  }\n  this.getLameTagFrame = function(gfp, buffer) {\n    var gfc = gfp.internal_flags;\n    if (!gfp.bWriteVbrTag) {\n      return 0;\n    }\n    if (gfc.Class_ID != Lame.LAME_ID) {\n      return 0;\n    }\n    if (gfc.VBR_seek_table.pos <= 0) {\n      return 0;\n    }\n    if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n      return gfc.VBR_seek_table.TotalFrameSize;\n    }\n    Arrays.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n    setLameTagFrameHeader(gfp, buffer);\n    var toc = new_byte$1(NUMTOCENTRIES);\n    if (gfp.free_format) {\n      for (var i = 1; i < NUMTOCENTRIES; ++i)\n        toc[i] = 255 & 255 * i / 100;\n    } else {\n      xingSeekTable(gfc.VBR_seek_table, toc);\n    }\n    var streamIndex = gfc.sideinfo_len;\n    if (gfp.error_protection)\n      streamIndex -= 2;\n    if (gfp.VBR == VbrMode.vbr_off) {\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(0);\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(1);\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(2);\n      buffer[streamIndex++] = 255 & VBRTag1.charAt(3);\n    } else {\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(0);\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(1);\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(2);\n      buffer[streamIndex++] = 255 & VBRTag0.charAt(3);\n    }\n    createInteger(\n      buffer,\n      streamIndex,\n      FRAMES_FLAG + BYTES_FLAG + TOC_FLAG + VBR_SCALE_FLAG\n    );\n    streamIndex += 4;\n    createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n    streamIndex += 4;\n    var streamSize = gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize;\n    createInteger(buffer, streamIndex, 0 | streamSize);\n    streamIndex += 4;\n    System.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n    streamIndex += toc.length;\n    if (gfp.error_protection) {\n      bs.CRC_writeheader(gfc, buffer);\n    }\n    var crc = 0;\n    for (var i = 0; i < streamIndex; i++)\n      crc = crcUpdateLookup(buffer[i], crc);\n    streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n    return gfc.VBR_seek_table.TotalFrameSize;\n  };\n  this.putVbrTag = function(gfp, stream) {\n    var gfc = gfp.internal_flags;\n    if (gfc.VBR_seek_table.pos <= 0)\n      return -1;\n    stream.seek(stream.length());\n    if (stream.length() == 0)\n      return -1;\n    var id3v2TagSize = skipId3v2(stream);\n    stream.seek(id3v2TagSize);\n    var buffer = new_byte$1(MAXFRAMESIZE);\n    var bytes = getLameTagFrame(gfp, buffer);\n    if (bytes > buffer.length) {\n      return -1;\n    }\n    if (bytes < 1) {\n      return 0;\n    }\n    stream.write(buffer, 0, bytes);\n    return 0;\n  };\n}\nvar new_byte = common.new_byte;\nvar assert = common.assert;\nfunction GetAudio() {\n  this.setModules = function(parse2, mpg2) {\n  };\n}\nfunction Parse() {\n  this.setModules = function(ver2, id32, pre2) {\n  };\n}\nfunction MPGLib() {\n}\nfunction ID3Tag() {\n  this.setModules = function(_bits, _ver) {\n  };\n}\nfunction Mp3Encoder$1(channels, samplerate, kbps) {\n  if (arguments.length != 3) {\n    console.error(\"WARN: Mp3Encoder(channels, samplerate, kbps) not specified\");\n    channels = 1;\n    samplerate = 44100;\n    kbps = 128;\n  }\n  var lame = new Lame$1();\n  var gaud = new GetAudio();\n  var ga = new GainAnalysis$1();\n  var bs = new BitStream$1();\n  var p2 = new Presets();\n  var qupvt = new QuantizePVT();\n  var qu = new Quantize();\n  var vbr = new VBRTag();\n  var ver = new Version();\n  var id3 = new ID3Tag();\n  var rv = new Reservoir();\n  var tak = new Takehiro();\n  var parse2 = new Parse();\n  var mpg = new MPGLib();\n  lame.setModules(ga, bs, p2, qupvt, qu, vbr, ver, id3, mpg);\n  bs.setModules(ga, mpg, ver, vbr);\n  id3.setModules(bs, ver);\n  p2.setModules(lame);\n  qu.setModules(bs, rv, qupvt, tak);\n  qupvt.setModules(tak, rv, lame.enc.psy);\n  rv.setModules(bs);\n  tak.setModules(qupvt);\n  vbr.setModules(lame, bs, ver);\n  gaud.setModules(parse2, mpg);\n  parse2.setModules(ver, id3, p2);\n  var gfp = lame.lame_init();\n  gfp.num_channels = channels;\n  gfp.in_samplerate = samplerate;\n  gfp.brate = kbps;\n  gfp.mode = MPEGMode.STEREO;\n  gfp.quality = 3;\n  gfp.bWriteVbrTag = false;\n  gfp.disable_reservoir = true;\n  gfp.write_id3tag_automatic = false;\n  lame.lame_init_params(gfp);\n  var maxSamples = 1152;\n  var mp3buf_size = 0 | 1.25 * maxSamples + 7200;\n  var mp3buf = new_byte(mp3buf_size);\n  this.encodeBuffer = function(left, right) {\n    if (channels == 1) {\n      right = left;\n    }\n    assert(left.length == right.length);\n    if (left.length > maxSamples) {\n      maxSamples = left.length;\n      mp3buf_size = 0 | 1.25 * maxSamples + 7200;\n      mp3buf = new_byte(mp3buf_size);\n    }\n    var _sz = lame.lame_encode_buffer(\n      gfp,\n      left,\n      right,\n      left.length,\n      mp3buf,\n      0,\n      mp3buf_size\n    );\n    return new Int8Array(mp3buf.subarray(0, _sz));\n  };\n  this.flush = function() {\n    var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n    return new Int8Array(mp3buf.subarray(0, _sz));\n  };\n}\nfunction fourccToInt(fourcc) {\n  return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\nfourccToInt(\"RIFF\");\nfourccToInt(\"WAVE\");\nfourccToInt(\"fmt \");\nfourccToInt(\"data\");\nclass Mp3Encoder {\n  constructor(config) {\n    this.bitRate = config.bitRate;\n    this.sampleRate = config.sampleRate;\n    this.dataBuffer = [];\n    this.encoder = new Mp3Encoder$1(1, this.sampleRate, this.bitRate);\n  }\n  encode(arrayBuffer) {\n    const maxSamples = 1152;\n    const samples = this._convertBuffer(arrayBuffer);\n    let remaining = samples.length;\n    for (let i = 0; remaining >= 0; i += maxSamples) {\n      const left = samples.subarray(i, i + maxSamples);\n      const buffer = this.encoder.encodeBuffer(left);\n      this.dataBuffer.push(new Int8Array(buffer));\n      remaining -= maxSamples;\n    }\n  }\n  finish() {\n    this.dataBuffer.push(this.encoder.flush());\n    const blob = new Blob(this.dataBuffer, { type: \"audio/mp3\" });\n    this.dataBuffer = [];\n    return {\n      id: Date.now(),\n      blob,\n      url: URL.createObjectURL(blob)\n    };\n  }\n  _floatTo16BitPCM(input, output) {\n    for (let i = 0; i < input.length; i++) {\n      const s = Math.max(-1, Math.min(1, input[i]));\n      output[i] = s < 0 ? s * 32768 : s * 32767;\n    }\n  }\n  _convertBuffer(arrayBuffer) {\n    const data = new Float32Array(arrayBuffer);\n    const out = new Int16Array(arrayBuffer.length);\n    this._floatTo16BitPCM(data, out);\n    return out;\n  }\n}\nclass Recorder {\n  constructor(options = {}) {\n    this.beforeRecording = options.beforeRecording;\n    this.pauseRecording = options.pauseRecording;\n    this.afterRecording = options.afterRecording;\n    this.micFailed = options.micFailed;\n    this.encoderOptions = {\n      bitRate: options.bitRate,\n      sampleRate: options.sampleRate\n    };\n    this.bufferSize = 4096;\n    this.records = [];\n    this.isPause = false;\n    this.isRecording = false;\n    this.duration = 0;\n    this.volume = 0;\n    this._duration = 0;\n  }\n  start() {\n    const constraints = {\n      video: false,\n      audio: {\n        channelCount: 1,\n        echoCancellation: false\n      }\n    };\n    this.beforeRecording && this.beforeRecording(\"start recording\");\n    navigator.mediaDevices.getUserMedia(constraints).then(this._micCaptured.bind(this)).catch(this._micError.bind(this));\n    this.isPause = false;\n    this.isRecording = true;\n    if (!this.lameEncoder) {\n      this.lameEncoder = new Mp3Encoder(this.encoderOptions);\n    }\n  }\n  stop() {\n    this.stream.getTracks().forEach((track2) => track2.stop());\n    this.input.disconnect();\n    this.processor.disconnect();\n    this.context.close();\n    let record = null;\n    record = this.lameEncoder.finish();\n    record.duration = this.duration;\n    this.records.push(record);\n    this._duration = 0;\n    this.duration = 0;\n    this.isPause = false;\n    this.isRecording = false;\n    this.afterRecording && this.afterRecording(record);\n  }\n  pause() {\n    this.stream.getTracks().forEach((track2) => track2.stop());\n    this.input.disconnect();\n    this.processor.disconnect();\n    this._duration = this.duration;\n    this.isPause = true;\n    this.pauseRecording && this.pauseRecording(\"pause recording\");\n  }\n  _micCaptured(stream) {\n    this.context = new (window.AudioContext || window.webkitAudioContext)();\n    this.duration = this._duration;\n    this.input = this.context.createMediaStreamSource(stream);\n    this.processor = this.context.createScriptProcessor(this.bufferSize, 1, 1);\n    this.stream = stream;\n    this.processor.onaudioprocess = (ev) => {\n      const sample = ev.inputBuffer.getChannelData(0);\n      let sum = 0;\n      if (this.lameEncoder) {\n        this.lameEncoder.encode(sample);\n      }\n      for (let i = 0; i < sample.length; ++i) {\n        sum += sample[i] * sample[i];\n      }\n      this.duration = parseFloat(this._duration) + parseFloat(this.context.currentTime.toFixed(2));\n      this.volume = Math.sqrt(sum / sample.length).toFixed(2);\n    };\n    this.input.connect(this.processor);\n    this.processor.connect(this.context.destination);\n  }\n  _micError(error) {\n    this.micFailed && this.micFailed(error);\n  }\n}\nvar isChromium = window.chrome;\nvar winNav = window.navigator;\nvar vendorName = winNav.vendor;\nvar isOpera = typeof window.opr !== \"undefined\";\nvar isIEedge = winNav.userAgent.indexOf(\"Edg\") > -1;\nvar isIOSChrome = winNav.userAgent.match(\"CriOS\");\nfunction detectChrome() {\n  if (isIOSChrome) {\n    return true;\n  } else if (isChromium !== null && typeof isChromium !== \"undefined\" && vendorName === \"Google Inc.\" && isOpera === false && isIEedge === false) {\n    return true;\n  } else {\n    return false;\n  }\n}\nfunction detectMobile() {\n  var userAgent = getUserAgent();\n  var userAgentPart = userAgent.substr(0, 4);\n  return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n    userAgent\n  ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(\n    userAgentPart\n  );\n}\nfunction getUserAgent() {\n  var userAgent = navigator.userAgent || navigator.vendor || window.opera || null;\n  if (!userAgent)\n    throw new Error(\"Failed to look for user agent information.\");\n  return userAgent;\n}\nconst _sfc_main$a = {\n  name: \"RoomFooter\",\n  components: {\n    SvgIcon,\n    EmojiPickerContainer,\n    RoomFiles,\n    RoomMessageReply,\n    RoomUsersTag,\n    RoomEmojis,\n    RoomTemplatesText\n  },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    room: { type: Object, required: true },\n    roomId: { type: [String, Number], required: true },\n    roomMessage: { type: String, default: null },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    textMessages: { type: Object, required: true },\n    showSendIcon: { type: Boolean, required: true },\n    showFiles: { type: Boolean, required: true },\n    showAudio: { type: Boolean, required: true },\n    showEmojis: { type: Boolean, required: true },\n    showFooter: { type: Boolean, required: true },\n    acceptedFiles: { type: String, required: true },\n    multipleFiles: { type: Boolean, default: true },\n    captureFiles: { type: String, required: true },\n    textareaActionEnabled: { type: Boolean, required: true },\n    textareaAutoFocus: { type: Boolean, required: true },\n    userTagsEnabled: { type: Boolean, required: true },\n    emojisSuggestionEnabled: { type: Boolean, required: true },\n    templatesText: { type: Array, default: null },\n    audioBitRate: { type: Number, required: true },\n    audioSampleRate: { type: Number, required: true },\n    initReplyMessage: { type: Object, default: null },\n    initEditMessage: { type: Object, default: null },\n    droppedFiles: { type: Array, default: null },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"edit-message\",\n    \"send-message\",\n    \"update-edited-message-id\",\n    \"textarea-action-handler\",\n    \"typing-message\"\n  ],\n  data() {\n    return {\n      message: \"\",\n      editedMessage: {},\n      messageReply: null,\n      cursorRangePosition: null,\n      files: [],\n      fileDialog: false,\n      selectUsersTagItem: null,\n      selectEmojiItem: null,\n      selectTemplatesTextItem: null,\n      format: \"mp3\",\n      activeUpOrDownEmojis: null,\n      activeUpOrDownUsersTag: null,\n      activeUpOrDownTemplatesText: null,\n      emojisDB: new Database({ dataSource: this.emojiDataSource }),\n      emojiOpened: false,\n      keepKeyboardOpen: false,\n      filteredEmojis: [],\n      filteredUsersTag: [],\n      selectedUsersTag: [],\n      filteredTemplatesText: [],\n      recorder: this.initRecorder(),\n      isRecording: false\n    };\n  },\n  computed: {\n    isMessageEmpty() {\n      return !this.files.length && !this.message.trim();\n    },\n    isFileLoading() {\n      return this.files.some((e) => e.loading);\n    },\n    recordedTime() {\n      return new Date(this.recorder.duration * 1e3).toISOString().substr(14, 5);\n    },\n    shadowFooter() {\n      return !!this.filteredEmojis.length || !!this.filteredUsersTag.length || !!this.filteredTemplatesText.length || !!this.files.length || !!this.messageReply;\n    }\n  },\n  watch: {\n    roomId() {\n      this.resetMessage(true, true);\n      if (this.roomMessage) {\n        this.message = this.roomMessage;\n        setTimeout(() => this.onChangeInput());\n      }\n    },\n    message(val) {\n      this.getTextareaRef().value = val;\n    },\n    roomMessage: {\n      immediate: true,\n      handler(val) {\n        if (val)\n          this.message = this.roomMessage;\n      }\n    },\n    editedMessage(val) {\n      this.$emit(\"update-edited-message-id\", val._id);\n    },\n    initReplyMessage(val) {\n      if (val) {\n        this.replyMessage(val);\n      }\n    },\n    initEditMessage(val) {\n      if (val) {\n        this.editMessage(val);\n      }\n    },\n    droppedFiles(val) {\n      if (val) {\n        this.onFileChange(val);\n      }\n    }\n  },\n  mounted() {\n    const isMobile = detectMobile();\n    let isComposed = true;\n    this.getTextareaRef().addEventListener(\"keyup\", (e) => {\n      if (e.key === \"Enter\" && !e.shiftKey && !this.fileDialog) {\n        if (isMobile) {\n          this.message = this.message + \"\\n\";\n          setTimeout(() => this.onChangeInput());\n        } else if (isComposed && !this.filteredEmojis.length && !this.filteredUsersTag.length && !this.filteredTemplatesText.length) {\n          this.sendMessage();\n        }\n      }\n      isComposed = !e.isComposing;\n      setTimeout(() => {\n        this.updateFooterLists();\n      }, 60);\n    });\n    this.getTextareaRef().addEventListener(\"click\", () => {\n      if (isMobile)\n        this.keepKeyboardOpen = true;\n      this.updateFooterLists();\n    });\n    this.getTextareaRef().addEventListener(\"blur\", () => {\n      setTimeout(() => {\n        this.resetFooterList();\n      }, 100);\n      if (isMobile)\n        setTimeout(() => this.keepKeyboardOpen = false);\n    });\n  },\n  beforeUnmount() {\n    this.stopRecorder();\n  },\n  methods: {\n    getTextareaRef() {\n      return this.$refs.roomTextarea;\n    },\n    focusTextarea(disableMobileFocus) {\n      if (detectMobile() && disableMobileFocus)\n        return;\n      if (!this.getTextareaRef())\n        return;\n      this.getTextareaRef().focus();\n      if (this.cursorRangePosition) {\n        setTimeout(() => {\n          const offset = detectChrome() ? 0 : 1;\n          this.getTextareaRef().setSelectionRange(\n            this.cursorRangePosition + offset,\n            this.cursorRangePosition + offset\n          );\n          this.cursorRangePosition = null;\n        });\n      }\n    },\n    onChangeInput() {\n      var _a, _b, _c;\n      if (((_a = this.getTextareaRef()) == null ? void 0 : _a.value) || ((_b = this.getTextareaRef()) == null ? void 0 : _b.value) === \"\") {\n        this.message = (_c = this.getTextareaRef()) == null ? void 0 : _c.value;\n      }\n      this.keepKeyboardOpen = true;\n      this.resizeTextarea();\n      this.$emit(\"typing-message\", this.message);\n    },\n    resizeTextarea() {\n      const el = this.getTextareaRef();\n      if (!el)\n        return;\n      const padding = window.getComputedStyle(el, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\");\n      el.style.height = 0;\n      el.style.height = el.scrollHeight - padding * 2 + \"px\";\n    },\n    escapeTextarea() {\n      if (this.filteredEmojis.length)\n        this.filteredEmojis = [];\n      else if (this.filteredUsersTag.length)\n        this.filteredUsersTag = [];\n      else if (this.filteredTemplatesText.length) {\n        this.filteredTemplatesText = [];\n      } else\n        this.resetMessage();\n    },\n    onPasteImage(pasteEvent) {\n      var _a;\n      const items = (_a = pasteEvent.clipboardData) == null ? void 0 : _a.items;\n      if (items) {\n        Array.from(items).forEach((item) => {\n          if (item.type.includes(\"image\")) {\n            const blob = item.getAsFile();\n            this.onFileChange([blob]);\n          }\n        });\n      }\n    },\n    updateActiveUpOrDown(event, direction) {\n      if (this.filteredEmojis.length) {\n        this.activeUpOrDownEmojis = direction;\n        event.preventDefault();\n      } else if (this.filteredUsersTag.length) {\n        this.activeUpOrDownUsersTag = direction;\n        event.preventDefault();\n      } else if (this.filteredTemplatesText.length) {\n        this.activeUpOrDownTemplatesText = direction;\n        event.preventDefault();\n      }\n    },\n    selectItem() {\n      if (this.filteredEmojis.length) {\n        this.selectEmojiItem = true;\n      } else if (this.filteredUsersTag.length) {\n        this.selectUsersTagItem = true;\n      } else if (this.filteredTemplatesText.length) {\n        this.selectTemplatesTextItem = true;\n      }\n    },\n    selectEmoji(emoji) {\n      this.selectEmojiItem = false;\n      if (!emoji)\n        return;\n      const { position, endPosition } = this.getCharPosition(\":\");\n      this.message = this.message.substr(0, position - 1) + emoji + this.message.substr(endPosition, this.message.length - 1);\n      this.cursorRangePosition = position;\n      this.focusTextarea();\n    },\n    selectTemplateText(template) {\n      this.selectTemplatesTextItem = false;\n      if (!template)\n        return;\n      const { position, endPosition } = this.getCharPosition(\"/\");\n      const space = this.message.substr(endPosition, endPosition).length ? \"\" : \" \";\n      this.message = this.message.substr(0, position - 1) + template.text + space + this.message.substr(endPosition, this.message.length - 1);\n      this.cursorRangePosition = position + template.text.length + space.length + 1;\n      this.focusTextarea();\n    },\n    addEmoji(emoji) {\n      this.message += emoji.unicode;\n      this.focusTextarea(true);\n    },\n    launchFilePicker() {\n      this.$refs.file.value = \"\";\n      this.$refs.file.click();\n    },\n    async onFileChange(files) {\n      this.fileDialog = true;\n      this.focusTextarea();\n      Array.from(files).forEach(async (file) => {\n        const fileURL = URL.createObjectURL(file);\n        const typeIndex = file.name.lastIndexOf(\".\");\n        this.files.push({\n          loading: true,\n          name: file.name.substring(0, typeIndex),\n          size: file.size,\n          type: file.type,\n          extension: file.name.substring(typeIndex + 1),\n          localUrl: fileURL\n        });\n        const blobFile = await fetch(fileURL).then((res) => res.blob());\n        let loadedFile = this.files.find((file2) => file2.localUrl === fileURL);\n        if (loadedFile) {\n          loadedFile.blob = blobFile;\n          loadedFile.loading = false;\n          delete loadedFile.loading;\n        }\n      });\n      setTimeout(() => this.fileDialog = false, 500);\n    },\n    removeFile(index) {\n      this.files.splice(index, 1);\n      this.focusTextarea();\n    },\n    toggleRecorder(recording) {\n      this.isRecording = recording;\n      if (!this.recorder.isRecording) {\n        setTimeout(() => this.recorder.start(), 200);\n      } else {\n        try {\n          this.recorder.stop();\n          const record = this.recorder.records[0];\n          this.files.push({\n            blob: record.blob,\n            name: `audio.${this.format}`,\n            size: record.blob.size,\n            duration: record.duration,\n            type: record.blob.type,\n            audio: true,\n            localUrl: URL.createObjectURL(record.blob)\n          });\n          this.recorder = this.initRecorder();\n          this.sendMessage();\n        } catch {\n          setTimeout(() => this.stopRecorder(), 100);\n        }\n      }\n    },\n    stopRecorder() {\n      if (this.recorder.isRecording) {\n        try {\n          this.recorder.stop();\n          this.recorder = this.initRecorder();\n        } catch {\n          setTimeout(() => this.stopRecorder(), 100);\n        }\n      }\n    },\n    textareaActionHandler() {\n      this.$emit(\"textarea-action-handler\", this.message);\n    },\n    sendMessage() {\n      var _a;\n      let message = this.message.trim();\n      if (!this.files.length && !message)\n        return;\n      if (this.isFileLoading)\n        return;\n      this.selectedUsersTag.forEach((user) => {\n        message = message.replace(\n          `@${user.username}`,\n          `<usertag>${user._id}</usertag>`\n        );\n      });\n      const files = this.files.length ? this.files : null;\n      if (this.editedMessage._id) {\n        if (this.editedMessage.content !== message || ((_a = this.editedMessage.files) == null ? void 0 : _a.length) || this.files.length) {\n          this.$emit(\"edit-message\", {\n            messageId: this.editedMessage._id,\n            newContent: message,\n            files,\n            replyMessage: this.messageReply,\n            usersTag: this.selectedUsersTag\n          });\n        }\n      } else {\n        this.$emit(\"send-message\", {\n          content: message,\n          files,\n          replyMessage: this.messageReply,\n          usersTag: this.selectedUsersTag\n        });\n      }\n      this.resetMessage(true);\n    },\n    editMessage(message) {\n      this.resetMessage();\n      this.editedMessage = { ...message };\n      let messageContent = message.content;\n      const initialContent = messageContent;\n      const firstTag = \"<usertag>\";\n      const secondTag = \"</usertag>\";\n      const usertags = [\n        ...messageContent.matchAll(new RegExp(firstTag, \"gi\"))\n      ].map((a) => a.index);\n      usertags.forEach((index) => {\n        const userId = initialContent.substring(\n          index + firstTag.length,\n          initialContent.indexOf(secondTag, index)\n        );\n        const user = this.room.users.find((user2) => user2._id === userId);\n        messageContent = messageContent.replace(\n          `${firstTag}${userId}${secondTag}`,\n          `@${(user == null ? void 0 : user.username) || \"unknown\"}`\n        );\n        this.selectUserTag(user, true);\n      });\n      this.message = messageContent;\n      if (message.files) {\n        this.files = [...message.files];\n      }\n      setTimeout(() => this.resizeTextarea());\n    },\n    replyMessage(message) {\n      this.editedMessage = {};\n      this.messageReply = message;\n      this.focusTextarea();\n    },\n    updateFooterLists() {\n      this.updateFooterList(\"@\");\n      this.updateFooterList(\":\");\n      this.updateFooterList(\"/\");\n    },\n    updateFooterList(tagChar) {\n      if (!this.getTextareaRef())\n        return;\n      if (tagChar === \":\" && !this.emojisSuggestionEnabled) {\n        return;\n      }\n      if (tagChar === \"@\" && (!this.userTagsEnabled || !this.room.users)) {\n        return;\n      }\n      if (tagChar === \"/\" && !this.templatesText) {\n        return;\n      }\n      const textareaCursorPosition = this.getTextareaRef().selectionStart;\n      let position = textareaCursorPosition;\n      while (position > 0 && this.message.charAt(position - 1) !== tagChar && (this.message.charAt(position - 1) !== \" \" || tagChar !== \":\")) {\n        position--;\n      }\n      const beforeTag = this.message.charAt(position - 2);\n      const notLetterNumber = !beforeTag.match(/^[0-9a-zA-Z]+$/);\n      if (this.message.charAt(position - 1) === tagChar && (!beforeTag || beforeTag === \" \" || notLetterNumber)) {\n        const query = this.message.substring(position, textareaCursorPosition);\n        if (tagChar === \":\") {\n          this.updateEmojis(query);\n        } else if (tagChar === \"@\") {\n          this.updateShowUsersTag(query);\n        } else if (tagChar === \"/\") {\n          this.updateShowTemplatesText(query);\n        }\n      } else {\n        this.resetFooterList(tagChar);\n      }\n    },\n    updateShowUsersTag(query) {\n      this.filteredUsersTag = filteredItems(\n        this.room.users,\n        \"username\",\n        query,\n        true\n      ).filter((user) => user._id !== this.currentUserId);\n    },\n    selectUserTag(user, editMode = false) {\n      this.selectUsersTagItem = false;\n      if (!user)\n        return;\n      const { position, endPosition } = this.getCharPosition(\"@\");\n      const space = this.message.substr(endPosition, endPosition).length ? \"\" : \" \";\n      this.message = this.message.substr(0, position) + user.username + space + this.message.substr(endPosition, this.message.length - 1);\n      this.selectedUsersTag = [...this.selectedUsersTag, { ...user }];\n      if (!editMode) {\n        this.cursorRangePosition = position + user.username.length + space.length + 1;\n      }\n      this.focusTextarea();\n    },\n    updateShowTemplatesText(query) {\n      this.filteredTemplatesText = filteredItems(\n        this.templatesText,\n        \"tag\",\n        query,\n        true\n      );\n    },\n    getCharPosition(tagChar) {\n      const cursorPosition = this.getTextareaRef().selectionStart;\n      let position = cursorPosition;\n      while (position > 0 && this.message.charAt(position - 1) !== tagChar) {\n        position--;\n      }\n      const endPosition = this.getTextareaRef().selectionEnd;\n      return { position, endPosition };\n    },\n    async updateEmojis(query) {\n      if (!query)\n        return;\n      const emojis = await this.emojisDB.getEmojiBySearchQuery(query);\n      this.filteredEmojis = emojis.map((emoji) => emoji.unicode);\n    },\n    resetFooterList(tagChar = null) {\n      if (tagChar === \":\") {\n        this.filteredEmojis = [];\n      } else if (tagChar === \"@\") {\n        this.filteredUsersTag = [];\n      } else if (tagChar === \"/\") {\n        this.filteredTemplatesText = [];\n      } else {\n        this.filteredEmojis = [];\n        this.filteredUsersTag = [];\n        this.filteredTemplatesText = [];\n      }\n    },\n    resetMessage(disableMobileFocus = false, initRoom = false) {\n      if (!initRoom) {\n        this.$emit(\"typing-message\", null);\n      }\n      this.selectedUsersTag = [];\n      this.resetFooterList();\n      this.resetTextareaSize();\n      this.message = \"\";\n      this.editedMessage = {};\n      this.messageReply = null;\n      this.files = [];\n      this.emojiOpened = false;\n      this.preventKeyboardFromClosing();\n      if (this.textareaAutoFocus || !initRoom) {\n        setTimeout(() => this.focusTextarea(disableMobileFocus));\n      }\n    },\n    resetTextareaSize() {\n      if (this.getTextareaRef()) {\n        this.getTextareaRef().style.height = \"20px\";\n      }\n    },\n    preventKeyboardFromClosing() {\n      if (this.keepKeyboardOpen)\n        this.getTextareaRef().focus();\n    },\n    initRecorder() {\n      this.isRecording = false;\n      return new Recorder({\n        bitRate: Number(this.audioBitRate),\n        sampleRate: Number(this.audioSampleRate),\n        beforeRecording: null,\n        afterRecording: null,\n        pauseRecording: null,\n        micFailed: this.micFailed\n      });\n    },\n    micFailed() {\n      this.isRecording = false;\n      this.recorder = this.initRecorder();\n    }\n  }\n};\nconst _hoisted_1$a = {\n  key: 0,\n  class: \"vac-icon-textarea-left\"\n};\nconst _hoisted_2$8 = /* @__PURE__ */ createBaseVNode(\"div\", { class: \"vac-dot-audio-record\" }, null, -1);\nconst _hoisted_3$8 = { class: \"vac-dot-audio-record-time\" };\nconst _hoisted_4$8 = [\"placeholder\"];\nconst _hoisted_5$6 = { class: \"vac-icon-textarea\" };\nconst _hoisted_6$3 = { key: 1 };\nconst _hoisted_7$3 = [\"multiple\", \"accept\", \"capture\"];\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_room_emojis = resolveComponent(\"room-emojis\");\n  const _component_room_users_tag = resolveComponent(\"room-users-tag\");\n  const _component_room_templates_text = resolveComponent(\"room-templates-text\");\n  const _component_room_message_reply = resolveComponent(\"room-message-reply\");\n  const _component_room_files = resolveComponent(\"room-files\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_emoji_picker_container = resolveComponent(\"emoji-picker-container\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return withDirectives((openBlock(), createElementBlock(\"div\", {\n    id: \"room-footer\",\n    class: normalizeClass([\"vac-room-footer\", {\n      \"vac-app-box-shadow\": $options.shadowFooter\n    }])\n  }, [\n    createVNode(_component_room_emojis, {\n      \"filtered-emojis\": $data.filteredEmojis,\n      \"select-item\": $data.selectEmojiItem,\n      \"active-up-or-down\": $data.activeUpOrDownEmojis,\n      onSelectEmoji: _cache[0] || (_cache[0] = ($event) => $options.selectEmoji($event)),\n      onActivateItem: _cache[1] || (_cache[1] = ($event) => $data.activeUpOrDownEmojis = 0)\n    }, null, 8, [\"filtered-emojis\", \"select-item\", \"active-up-or-down\"]),\n    createVNode(_component_room_users_tag, {\n      \"filtered-users-tag\": $data.filteredUsersTag,\n      \"select-item\": $data.selectUsersTagItem,\n      \"active-up-or-down\": $data.activeUpOrDownUsersTag,\n      onSelectUserTag: _cache[2] || (_cache[2] = ($event) => $options.selectUserTag($event)),\n      onActivateItem: _cache[3] || (_cache[3] = ($event) => $data.activeUpOrDownUsersTag = 0)\n    }, null, 8, [\"filtered-users-tag\", \"select-item\", \"active-up-or-down\"]),\n    createVNode(_component_room_templates_text, {\n      \"filtered-templates-text\": $data.filteredTemplatesText,\n      \"select-item\": $data.selectTemplatesTextItem,\n      \"active-up-or-down\": $data.activeUpOrDownTemplatesText,\n      onSelectTemplateText: _cache[4] || (_cache[4] = ($event) => $options.selectTemplateText($event)),\n      onActivateItem: _cache[5] || (_cache[5] = ($event) => $data.activeUpOrDownTemplatesText = 0)\n    }, null, 8, [\"filtered-templates-text\", \"select-item\", \"active-up-or-down\"]),\n    createVNode(_component_room_message_reply, {\n      room: $props.room,\n      \"message-reply\": $data.messageReply,\n      \"text-formatting\": $props.textFormatting,\n      \"link-options\": $props.linkOptions,\n      onResetMessage: $options.resetMessage\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (i, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"room\", \"message-reply\", \"text-formatting\", \"link-options\", \"onResetMessage\"]),\n    createVNode(_component_room_files, {\n      files: $data.files,\n      onRemoveFile: $options.removeFile,\n      onResetMessage: $options.resetMessage\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (i, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"files\", \"onRemoveFile\", \"onResetMessage\"]),\n    createBaseVNode(\"div\", {\n      class: normalizeClass([\"vac-box-footer\", { \"vac-box-footer-border\": !$data.files.length }])\n    }, [\n      $props.showAudio && !$data.files.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$a, [\n        $data.isRecording ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button vac-icon-audio-stop\",\n            onClick: _cache[6] || (_cache[6] = (...args) => $options.stopRecorder && $options.stopRecorder(...args))\n          }, [\n            renderSlot(_ctx.$slots, \"audio-stop-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"close-outline\" })\n            ])\n          ]),\n          _hoisted_2$8,\n          createBaseVNode(\"div\", _hoisted_3$8, toDisplayString($options.recordedTime), 1),\n          createBaseVNode(\"div\", {\n            class: \"vac-svg-button vac-icon-audio-confirm\",\n            onClick: _cache[7] || (_cache[7] = ($event) => $options.toggleRecorder(false))\n          }, [\n            renderSlot(_ctx.$slots, \"audio-check-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"checkmark\" })\n            ])\n          ])\n        ], 64)) : (openBlock(), createElementBlock(\"div\", {\n          key: 1,\n          class: \"vac-svg-button\",\n          onClick: _cache[8] || (_cache[8] = ($event) => $options.toggleRecorder(true))\n        }, [\n          renderSlot(_ctx.$slots, \"microphone-icon\", {}, () => [\n            createVNode(_component_svg_icon, {\n              name: \"microphone\",\n              class: \"vac-icon-microphone\"\n            })\n          ])\n        ]))\n      ])) : createCommentVNode(\"\", true),\n      createBaseVNode(\"textarea\", {\n        id: \"roomTextarea\",\n        ref: \"roomTextarea\",\n        placeholder: $props.textMessages.TYPE_MESSAGE,\n        class: normalizeClass([\"vac-textarea\", {\n          \"vac-textarea-outline\": $data.editedMessage._id\n        }]),\n        style: {\n          \"min-height\": `20px`,\n          \"padding-left\": `12px`\n        },\n        onInput: _cache[9] || (_cache[9] = (...args) => $options.onChangeInput && $options.onChangeInput(...args)),\n        onKeydown: [\n          _cache[10] || (_cache[10] = withKeys((...args) => $options.escapeTextarea && $options.escapeTextarea(...args), [\"esc\"])),\n          _cache[11] || (_cache[11] = withKeys(withModifiers((...args) => $options.selectItem && $options.selectItem(...args), [\"exact\", \"prevent\"]), [\"enter\"])),\n          _cache[13] || (_cache[13] = withKeys(withModifiers(() => {\n          }, [\"exact\", \"prevent\"]), [\"tab\"])),\n          _cache[14] || (_cache[14] = withKeys((...args) => $options.selectItem && $options.selectItem(...args), [\"tab\"])),\n          _cache[15] || (_cache[15] = withKeys(($event) => $options.updateActiveUpOrDown($event, -1), [\"up\"])),\n          _cache[16] || (_cache[16] = withKeys(($event) => $options.updateActiveUpOrDown($event, 1), [\"down\"]))\n        ],\n        onPaste: _cache[12] || (_cache[12] = (...args) => $options.onPasteImage && $options.onPasteImage(...args))\n      }, null, 42, _hoisted_4$8),\n      createBaseVNode(\"div\", _hoisted_5$6, [\n        $data.editedMessage._id ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: \"vac-svg-button\",\n          onClick: _cache[17] || (_cache[17] = (...args) => $options.resetMessage && $options.resetMessage(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"edit-close-icon\", {}, () => [\n            createVNode(_component_svg_icon, { name: \"close-outline\" })\n          ])\n        ])) : createCommentVNode(\"\", true),\n        $props.showEmojis ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_6$3, [\n          renderSlot(_ctx.$slots, \"emoji-picker\", mergeProps({ emojiOpened: $data.emojiOpened }, { addEmoji: $options.addEmoji }), () => [\n            createVNode(_component_emoji_picker_container, {\n              \"emoji-opened\": $data.emojiOpened,\n              \"position-top\": true,\n              \"emoji-data-source\": $props.emojiDataSource,\n              onAddEmoji: $options.addEmoji,\n              onOpenEmoji: _cache[18] || (_cache[18] = ($event) => $data.emojiOpened = $event)\n            }, {\n              \"emoji-picker-icon\": withCtx(() => [\n                renderSlot(_ctx.$slots, \"emoji-picker-icon\")\n              ]),\n              _: 3\n            }, 8, [\"emoji-opened\", \"emoji-data-source\", \"onAddEmoji\"])\n          ])\n        ])), [\n          [_directive_click_outside, () => $data.emojiOpened = false]\n        ]) : createCommentVNode(\"\", true),\n        $props.showFiles ? (openBlock(), createElementBlock(\"div\", {\n          key: 2,\n          class: \"vac-svg-button\",\n          onClick: _cache[19] || (_cache[19] = (...args) => $options.launchFilePicker && $options.launchFilePicker(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"paperclip-icon\", {}, () => [\n            createVNode(_component_svg_icon, { name: \"paperclip\" })\n          ])\n        ])) : createCommentVNode(\"\", true),\n        $props.textareaActionEnabled ? (openBlock(), createElementBlock(\"div\", {\n          key: 3,\n          class: \"vac-svg-button\",\n          onClick: _cache[20] || (_cache[20] = (...args) => $options.textareaActionHandler && $options.textareaActionHandler(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"custom-action-icon\", {}, () => [\n            createVNode(_component_svg_icon, { name: \"deleted\" })\n          ])\n        ])) : createCommentVNode(\"\", true),\n        $props.showFiles ? (openBlock(), createElementBlock(\"input\", {\n          key: 4,\n          ref: \"file\",\n          type: \"file\",\n          multiple: $props.multipleFiles ? true : null,\n          accept: $props.acceptedFiles,\n          capture: $props.captureFiles,\n          style: { \"display\": \"none\" },\n          onChange: _cache[21] || (_cache[21] = ($event) => $options.onFileChange($event.target.files))\n        }, null, 40, _hoisted_7$3)) : createCommentVNode(\"\", true),\n        $props.showSendIcon ? (openBlock(), createElementBlock(\"div\", {\n          key: 5,\n          class: normalizeClass([\"vac-svg-button\", { \"vac-send-disabled\": $options.isMessageEmpty }]),\n          onClick: _cache[22] || (_cache[22] = (...args) => $options.sendMessage && $options.sendMessage(...args))\n        }, [\n          renderSlot(_ctx.$slots, \"send-icon\", {}, () => [\n            createVNode(_component_svg_icon, {\n              name: \"send\",\n              param: $options.isMessageEmpty || $options.isFileLoading ? \"disabled\" : \"\"\n            }, null, 8, [\"param\"])\n          ])\n        ], 2)) : createCommentVNode(\"\", true)\n      ])\n    ], 2)\n  ], 2)), [\n    [vShow, Object.keys($props.room).length && $props.showFooter]\n  ]);\n}\nvar RoomFooter = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$a]]);\nconst _sfc_main$9 = {\n  name: \"MessageReply\",\n  components: { AudioPlayer, SvgIcon, FormatMessage },\n  props: {\n    message: { type: Object, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    roomUsers: { type: Array, required: true }\n  },\n  computed: {\n    replyUsername() {\n      const { senderId } = this.message.replyMessage;\n      const replyUser = this.roomUsers.find((user) => user._id === senderId);\n      return replyUser ? replyUser.username : \"\";\n    },\n    firstFile() {\n      var _a, _b;\n      return ((_b = (_a = this.message.replyMessage) == null ? void 0 : _a.files) == null ? void 0 : _b.length) ? this.message.replyMessage.files[0] : {};\n    },\n    isAudio() {\n      return isAudioFile(this.firstFile);\n    },\n    isImage() {\n      return isImageFile(this.firstFile);\n    },\n    isVideo() {\n      return isVideoFile(this.firstFile);\n    },\n    isOtherFile() {\n      var _a;\n      return ((_a = this.message.replyMessage.files) == null ? void 0 : _a.length) && !this.isAudio && !this.isVideo && !this.isImage;\n    }\n  }\n};\nconst _hoisted_1$9 = { class: \"vac-reply-message\" };\nconst _hoisted_2$7 = { class: \"vac-reply-username\" };\nconst _hoisted_3$7 = {\n  key: 0,\n  class: \"vac-image-reply-container\"\n};\nconst _hoisted_4$7 = {\n  key: 1,\n  class: \"vac-video-reply-container\"\n};\nconst _hoisted_5$5 = { controls: \"\" };\nconst _hoisted_6$2 = [\"src\"];\nconst _hoisted_7$2 = {\n  key: 3,\n  class: \"vac-file-container\"\n};\nconst _hoisted_8$1 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_9$1 = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nconst _hoisted_10$1 = { class: \"vac-reply-content\" };\nfunction _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_audio_player = resolveComponent(\"audio-player\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_format_message = resolveComponent(\"format-message\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$9, [\n    createBaseVNode(\"div\", _hoisted_2$7, toDisplayString($options.replyUsername), 1),\n    $options.isImage ? (openBlock(), createElementBlock(\"div\", _hoisted_3$7, [\n      createBaseVNode(\"div\", {\n        class: \"vac-message-image vac-message-image-reply\",\n        style: normalizeStyle({\n          \"background-image\": `url('${$options.firstFile.url}')`\n        })\n      }, null, 4)\n    ])) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", _hoisted_4$7, [\n      createBaseVNode(\"video\", _hoisted_5$5, [\n        createBaseVNode(\"source\", {\n          src: $options.firstFile.url\n        }, null, 8, _hoisted_6$2)\n      ])\n    ])) : $options.isAudio ? (openBlock(), createBlock(_component_audio_player, {\n      key: 2,\n      src: $options.firstFile.url,\n      \"message-selection-enabled\": false,\n      onUpdateProgressTime: _cache[0] || (_cache[0] = ($event) => _ctx.progressTime = $event),\n      onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => _ctx.hoverAudioProgress = $event)\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"src\"])) : $options.isOtherFile ? (openBlock(), createElementBlock(\"div\", _hoisted_7$2, [\n      createBaseVNode(\"div\", null, [\n        renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n          createVNode(_component_svg_icon, { name: \"file\" })\n        ])\n      ]),\n      createBaseVNode(\"div\", _hoisted_8$1, toDisplayString($options.firstFile.name), 1),\n      $options.firstFile.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_9$1, toDisplayString($options.firstFile.extension), 1)) : createCommentVNode(\"\", true)\n    ])) : createCommentVNode(\"\", true),\n    createBaseVNode(\"div\", _hoisted_10$1, [\n      createVNode(_component_format_message, {\n        \"message-id\": $props.message.replyMessage._id,\n        content: $props.message.replyMessage.content,\n        users: $props.roomUsers,\n        \"text-formatting\": $props.textFormatting,\n        \"link-options\": $props.linkOptions,\n        reply: true\n      }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n    ])\n  ]);\n}\nvar MessageReply = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$8 = {\n  name: \"ProgressBar\",\n  props: {\n    progress: { type: Number, default: 0 }\n  },\n  data() {\n    const radius = 35;\n    const stroke = 4;\n    const normalizedRadius = radius - stroke * 2;\n    const circumference = normalizedRadius * 2 * Math.PI;\n    return {\n      radius,\n      stroke,\n      normalizedRadius,\n      circumference\n    };\n  },\n  computed: {\n    strokeDashoffset() {\n      return this.circumference - this.progress / 100 * this.circumference;\n    }\n  }\n};\nconst _hoisted_1$8 = {\n  ref: \"progress\",\n  class: \"vac-progress-wrapper\"\n};\nconst _hoisted_2$6 = [\"height\", \"width\"];\nconst _hoisted_3$6 = [\"stroke-dasharray\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4$6 = { class: \"vac-progress-text\" };\nconst _hoisted_5$4 = /* @__PURE__ */ createBaseVNode(\"span\", { class: \"vac-progress-pourcent\" }, \"%\", -1);\nfunction _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(Transition, {\n    name: \"vac-fade-spinner\",\n    appear: \"\"\n  }, {\n    default: withCtx(() => [\n      createBaseVNode(\"div\", _hoisted_1$8, [\n        (openBlock(), createElementBlock(\"svg\", {\n          height: $data.radius * 2,\n          width: $data.radius * 2\n        }, [\n          createBaseVNode(\"circle\", {\n            stroke: \"rgba(255, 255, 255, 0.7)\",\n            \"stroke-dasharray\": $data.circumference + \" \" + $data.circumference,\n            style: normalizeStyle({\n              strokeDashoffset: $options.strokeDashoffset,\n              strokeLinecap: \"round\"\n            }),\n            \"stroke-width\": $data.stroke,\n            fill: \"transparent\",\n            r: $data.normalizedRadius,\n            cx: $data.radius,\n            cy: $data.radius\n          }, null, 12, _hoisted_3$6)\n        ], 8, _hoisted_2$6)),\n        createBaseVNode(\"div\", {\n          class: \"vac-progress-content\",\n          style: normalizeStyle({\n            height: $data.radius * 2 - 19 + \"px\",\n            width: $data.radius * 2 - 19 + \"px\"\n          })\n        }, [\n          createBaseVNode(\"div\", _hoisted_4$6, [\n            createTextVNode(toDisplayString($props.progress), 1),\n            _hoisted_5$4\n          ])\n        ], 4)\n      ], 512)\n    ]),\n    _: 1\n  });\n}\nvar ProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$7 = {\n  name: \"MessageFile\",\n  components: { SvgIcon, Loader, ProgressBar },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true },\n    file: { type: Object, required: true },\n    index: { type: Number, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"open-file\"],\n  data() {\n    return {\n      imageResponsive: \"\",\n      imageLoading: false,\n      imageHover: false\n    };\n  },\n  computed: {\n    isImageLoading() {\n      return this.file.url.indexOf(\"blob:http\") !== -1 || this.imageLoading;\n    },\n    isImage() {\n      return isImageFile(this.file);\n    },\n    isVideo() {\n      return isVideoFile(this.file);\n    }\n  },\n  watch: {\n    file: {\n      immediate: true,\n      handler() {\n        this.checkImgLoad();\n      }\n    }\n  },\n  mounted() {\n    const ref = this.$refs[\"imageRef\" + this.index];\n    if (ref) {\n      this.imageResponsive = {\n        maxHeight: ref.clientWidth - 18,\n        loaderTop: ref.clientHeight / 2 - 9\n      };\n    }\n  },\n  methods: {\n    checkImgLoad() {\n      if (!isImageFile(this.file))\n        return;\n      this.imageLoading = true;\n      const image = new Image();\n      image.src = this.file.url;\n      image.addEventListener(\"load\", () => this.imageLoading = false);\n    },\n    openFile(event, action) {\n      if (!this.messageSelectionEnabled) {\n        event.stopPropagation();\n        this.$emit(\"open-file\", { file: this.file, action });\n      }\n    }\n  }\n};\nconst _hoisted_1$7 = { class: \"vac-message-file-container\" };\nconst _hoisted_2$5 = {\n  key: 0,\n  class: \"vac-image-buttons\"\n};\nconst _hoisted_3$5 = { controls: \"\" };\nconst _hoisted_4$5 = [\"src\"];\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_progress_bar = resolveComponent(\"progress-bar\");\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$7, [\n    $options.isImage ? (openBlock(), createElementBlock(\"div\", {\n      key: 0,\n      ref: \"imageRef\" + $props.index,\n      class: \"vac-message-image-container\",\n      onMouseover: _cache[2] || (_cache[2] = ($event) => $data.imageHover = true),\n      onMouseleave: _cache[3] || (_cache[3] = ($event) => $data.imageHover = false),\n      onClick: _cache[4] || (_cache[4] = ($event) => $options.openFile($event, \"preview\"))\n    }, [\n      $props.file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n        key: 0,\n        progress: $props.file.progress,\n        style: normalizeStyle({ top: `${$data.imageResponsive.loaderTop}px` })\n      }, null, 8, [\"progress\", \"style\"])) : (openBlock(), createBlock(_component_loader, {\n        key: 1,\n        show: $options.isImageLoading,\n        type: \"message-file\",\n        \"message-id\": $props.message._id,\n        style: normalizeStyle({ top: `${$data.imageResponsive.loaderTop}px` })\n      }, createSlots({ _: 2 }, [\n        renderList(_ctx.$slots, (idx, name) => {\n          return {\n            name,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"show\", \"message-id\", \"style\"])),\n      createBaseVNode(\"div\", {\n        class: normalizeClass([\"vac-message-image\", {\n          \"vac-blur-loading\": $options.isImageLoading && $props.message.senderId === $props.currentUserId\n        }]),\n        style: normalizeStyle({\n          \"background-image\": `url('${$options.isImageLoading ? $props.file.preview || $props.file.url : $props.file.url}')`,\n          \"max-height\": `${$data.imageResponsive.maxHeight}px`\n        })\n      }, [\n        createVNode(Transition, { name: \"vac-fade-image\" }, {\n          default: withCtx(() => [\n            !$props.messageSelectionEnabled && $data.imageHover && !$options.isImageLoading ? (openBlock(), createElementBlock(\"div\", _hoisted_2$5, [\n              createBaseVNode(\"div\", {\n                class: \"vac-svg-button vac-button-view\",\n                onClick: _cache[0] || (_cache[0] = ($event) => $options.openFile($event, \"preview\"))\n              }, [\n                renderSlot(_ctx.$slots, \"eye-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, { name: \"eye\" })\n                ])\n              ]),\n              createBaseVNode(\"div\", {\n                class: \"vac-svg-button vac-button-download\",\n                onClick: _cache[1] || (_cache[1] = ($event) => $options.openFile($event, \"download\"))\n              }, [\n                renderSlot(_ctx.$slots, \"document-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, { name: \"document\" })\n                ])\n              ])\n            ])) : createCommentVNode(\"\", true)\n          ]),\n          _: 3\n        })\n      ], 6)\n    ], 544)) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", {\n      key: 1,\n      class: \"vac-video-container\",\n      onClick: _cache[5] || (_cache[5] = withModifiers(($event) => $options.openFile($event, \"preview\"), [\"prevent\"]))\n    }, [\n      $props.file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n        key: 0,\n        progress: $props.file.progress\n      }, null, 8, [\"progress\"])) : createCommentVNode(\"\", true),\n      createBaseVNode(\"video\", _hoisted_3$5, [\n        createBaseVNode(\"source\", {\n          src: $props.file.url\n        }, null, 8, _hoisted_4$5)\n      ])\n    ])) : createCommentVNode(\"\", true)\n  ]);\n}\nvar MessageFile = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$6 = {\n  name: \"MessageFiles\",\n  components: { SvgIcon, FormatMessage, ProgressBar, MessageFile },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true },\n    roomUsers: { type: Array, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true }\n  },\n  emits: [\"open-file\", \"open-user-tag\"],\n  computed: {\n    imageVideoFiles() {\n      return this.message.files.filter((file) => isImageVideoFile(file));\n    },\n    otherFiles() {\n      return this.message.files.filter((file) => !isImageVideoFile(file));\n    }\n  },\n  methods: {\n    openFile(event, file, action) {\n      if (!this.messageSelectionEnabled) {\n        event.stopPropagation();\n        this.$emit(\"open-file\", { file, action });\n      }\n    }\n  }\n};\nconst _hoisted_1$6 = { class: \"vac-message-files-container\" };\nconst _hoisted_2$4 = [\"onClick\"];\nconst _hoisted_3$4 = { class: \"vac-svg-button\" };\nconst _hoisted_4$4 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_5$3 = {\n  key: 0,\n  class: \"vac-text-ellipsis vac-text-extension\"\n};\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_message_file = resolveComponent(\"message-file\");\n  const _component_progress_bar = resolveComponent(\"progress-bar\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_format_message = resolveComponent(\"format-message\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$6, [\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.imageVideoFiles, (file, i) => {\n      return openBlock(), createElementBlock(\"div\", {\n        key: i + \"iv\"\n      }, [\n        createVNode(_component_message_file, {\n          file,\n          \"current-user-id\": $props.currentUserId,\n          message: $props.message,\n          index: i,\n          \"message-selection-enabled\": $props.messageSelectionEnabled,\n          onOpenFile: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"open-file\", $event))\n        }, createSlots({ _: 2 }, [\n          renderList(_ctx.$slots, (idx, name) => {\n            return {\n              name,\n              fn: withCtx((data) => [\n                renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n              ])\n            };\n          })\n        ]), 1032, [\"file\", \"current-user-id\", \"message\", \"index\", \"message-selection-enabled\"])\n      ]);\n    }), 128)),\n    (openBlock(true), createElementBlock(Fragment, null, renderList($options.otherFiles, (file, i) => {\n      return openBlock(), createElementBlock(\"div\", {\n        key: i + \"a\",\n        class: \"vac-file-wrapper\"\n      }, [\n        file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n          key: 0,\n          progress: file.progress,\n          style: { top: \"44px\" }\n        }, null, 8, [\"progress\"])) : createCommentVNode(\"\", true),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-file-container\", { \"vac-file-container-progress\": file.progress >= 0 }]),\n          onClick: ($event) => $options.openFile($event, file, \"download\")\n        }, [\n          createBaseVNode(\"div\", _hoisted_3$4, [\n            renderSlot(_ctx.$slots, \"document-icon\", {}, () => [\n              createVNode(_component_svg_icon, { name: \"document\" })\n            ])\n          ]),\n          createBaseVNode(\"div\", _hoisted_4$4, toDisplayString(file.name), 1),\n          file.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_5$3, toDisplayString(file.extension), 1)) : createCommentVNode(\"\", true)\n        ], 10, _hoisted_2$4)\n      ]);\n    }), 128)),\n    createVNode(_component_format_message, {\n      \"message-id\": $props.message._id,\n      content: $props.message.content,\n      users: $props.roomUsers,\n      \"text-formatting\": $props.textFormatting,\n      \"link-options\": $props.linkOptions,\n      onOpenUserTag: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"open-user-tag\", $event))\n    }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n  ]);\n}\nvar MessageFiles = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$5 = {\n  name: \"MessageActions\",\n  components: { SvgIcon, EmojiPickerContainer },\n  directives: {\n    clickOutside: vClickOutside\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true },\n    messageActions: { type: Array, required: true },\n    showReactionEmojis: { type: Boolean, required: true },\n    messageHover: { type: Boolean, required: true },\n    hoverMessageId: { type: [String, Number], default: null },\n    hoverAudioProgress: { type: Boolean, required: true },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"update-emoji-opened\",\n    \"update-options-opened\",\n    \"update-message-hover\",\n    \"message-action-handler\",\n    \"send-message-reaction\"\n  ],\n  data() {\n    return {\n      menuOptionsTop: 0,\n      optionsOpened: false,\n      optionsClosing: false,\n      emojiOpened: false\n    };\n  },\n  computed: {\n    isMessageActions() {\n      return this.filteredMessageActions.length && this.messageHover && !this.message.deleted && !this.message.disableActions && !this.hoverAudioProgress;\n    },\n    isMessageReactions() {\n      return this.showReactionEmojis && this.messageHover && !this.message.deleted && !this.message.disableReactions && !this.hoverAudioProgress;\n    },\n    filteredMessageActions() {\n      return this.message.senderId === this.currentUserId ? this.messageActions : this.messageActions.filter((message) => !message.onlyMe);\n    }\n  },\n  watch: {\n    emojiOpened(val) {\n      this.$emit(\"update-emoji-opened\", val);\n      if (val)\n        this.optionsOpened = false;\n    },\n    optionsOpened(val) {\n      this.$emit(\"update-options-opened\", val);\n    }\n  },\n  methods: {\n    openOptions() {\n      if (this.optionsClosing)\n        return;\n      this.optionsOpened = !this.optionsOpened;\n      if (!this.optionsOpened)\n        return;\n      setTimeout(() => {\n        const roomFooterRef = findParentBySelector(this.$el, \"#room-footer\");\n        if (!roomFooterRef || !this.$refs.menuOptions || !this.$refs.actionIcon) {\n          return;\n        }\n        const menuOptionsTop = this.$refs.menuOptions.getBoundingClientRect().height;\n        const actionIconTop = this.$refs.actionIcon.getBoundingClientRect().top;\n        const roomFooterTop = roomFooterRef.getBoundingClientRect().top;\n        const optionsTopPosition = roomFooterTop - actionIconTop > menuOptionsTop + 50;\n        if (optionsTopPosition)\n          this.menuOptionsTop = 30;\n        else\n          this.menuOptionsTop = -menuOptionsTop;\n      });\n    },\n    closeOptions() {\n      this.optionsOpened = false;\n      this.optionsClosing = true;\n      this.updateMessageHover();\n      setTimeout(() => this.optionsClosing = false, 100);\n    },\n    openEmoji() {\n      this.emojiOpened = !this.emojiOpened;\n    },\n    closeEmoji() {\n      this.emojiOpened = false;\n      this.updateMessageHover();\n    },\n    updateMessageHover() {\n      if (this.hoverMessageId !== this.message._id) {\n        this.$emit(\"update-message-hover\", false);\n      }\n    },\n    messageActionHandler(action) {\n      this.closeOptions();\n      this.$emit(\"message-action-handler\", action);\n    },\n    sendMessageReaction(emoji, reaction) {\n      this.$emit(\"send-message-reaction\", { emoji, reaction });\n      this.closeEmoji();\n    }\n  }\n};\nconst _hoisted_1$5 = { class: \"vac-message-actions-wrapper\" };\nconst _hoisted_2$3 = { key: \"3\" };\nconst _hoisted_3$3 = { class: \"vac-menu-list\" };\nconst _hoisted_4$3 = [\"onClick\"];\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_emoji_picker_container = resolveComponent(\"emoji-picker-container\");\n  const _directive_click_outside = resolveDirective(\"click-outside\");\n  return openBlock(), createElementBlock(\"div\", _hoisted_1$5, [\n    createBaseVNode(\"div\", {\n      class: \"vac-options-container\",\n      style: normalizeStyle({\n        display: $props.hoverAudioProgress ? \"none\" : \"initial\",\n        width: $options.filteredMessageActions.length && $props.showReactionEmojis ? \"70px\" : \"45px\"\n      })\n    }, [\n      createVNode(TransitionGroup, {\n        name: \"vac-slide-left\",\n        tag: \"span\"\n      }, {\n        default: withCtx(() => [\n          $options.isMessageActions || $options.isMessageReactions ? (openBlock(), createElementBlock(\"div\", {\n            key: \"1\",\n            class: normalizeClass([\"vac-blur-container\", {\n              \"vac-options-me\": $props.message.senderId === $props.currentUserId\n            }])\n          }, null, 2)) : createCommentVNode(\"\", true),\n          $options.isMessageActions ? (openBlock(), createElementBlock(\"div\", {\n            ref: \"actionIcon\",\n            key: \"2\",\n            class: \"vac-svg-button vac-message-options\",\n            onClick: _cache[0] || (_cache[0] = (...args) => $options.openOptions && $options.openOptions(...args))\n          }, [\n            renderSlot(_ctx.$slots, \"dropdown-icon_\" + $props.message._id, {}, () => [\n              createVNode(_component_svg_icon, {\n                name: \"dropdown\",\n                param: \"message\"\n              })\n            ])\n          ], 512)) : createCommentVNode(\"\", true),\n          $options.isMessageReactions ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_2$3, [\n            renderSlot(_ctx.$slots, \"emoji-picker\", mergeProps({ emojiOpened: $data.emojiOpened }, { addEmoji: $options.sendMessageReaction }), () => [\n              createVNode(_component_emoji_picker_container, {\n                class: \"vac-message-emojis\",\n                style: normalizeStyle({ right: $options.isMessageActions ? \"30px\" : \"5px\" }),\n                \"emoji-opened\": $data.emojiOpened,\n                \"emoji-reaction\": true,\n                \"position-right\": $props.message.senderId === $props.currentUserId,\n                \"message-id\": $props.message._id,\n                \"emoji-data-source\": $props.emojiDataSource,\n                onAddEmoji: $options.sendMessageReaction,\n                onOpenEmoji: $options.openEmoji\n              }, createSlots({ _: 2 }, [\n                renderList(_ctx.$slots, (idx, name) => {\n                  return {\n                    name,\n                    fn: withCtx((data) => [\n                      renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                    ])\n                  };\n                })\n              ]), 1032, [\"style\", \"emoji-opened\", \"position-right\", \"message-id\", \"emoji-data-source\", \"onAddEmoji\", \"onOpenEmoji\"])\n            ])\n          ])), [\n            [_directive_click_outside, $options.closeEmoji]\n          ]) : createCommentVNode(\"\", true)\n        ]),\n        _: 3\n      })\n    ], 4),\n    $options.filteredMessageActions.length ? (openBlock(), createBlock(Transition, {\n      key: 0,\n      name: $props.message.senderId === $props.currentUserId ? \"vac-slide-left\" : \"vac-slide-right\"\n    }, {\n      default: withCtx(() => [\n        $data.optionsOpened ? withDirectives((openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          ref: \"menuOptions\",\n          class: normalizeClass([\"vac-menu-options\", {\n            \"vac-menu-left\": $props.message.senderId !== $props.currentUserId\n          }]),\n          style: normalizeStyle({ top: `${$data.menuOptionsTop}px` })\n        }, [\n          createBaseVNode(\"div\", _hoisted_3$3, [\n            (openBlock(true), createElementBlock(Fragment, null, renderList($options.filteredMessageActions, (action) => {\n              return openBlock(), createElementBlock(\"div\", {\n                key: action.name\n              }, [\n                createBaseVNode(\"div\", {\n                  class: \"vac-menu-item\",\n                  onClick: ($event) => $options.messageActionHandler(action)\n                }, toDisplayString(action.title), 9, _hoisted_4$3)\n              ]);\n            }), 128))\n          ])\n        ], 6)), [\n          [_directive_click_outside, $options.closeOptions]\n        ]) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    }, 8, [\"name\"])) : createCommentVNode(\"\", true)\n  ]);\n}\nvar MessageActions = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$4 = {\n  name: \"MessageReactions\",\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    message: { type: Object, required: true }\n  },\n  emits: [\"send-message-reaction\"],\n  methods: {\n    sendMessageReaction(emoji, reaction) {\n      this.$emit(\"send-message-reaction\", { emoji, reaction });\n    }\n  }\n};\nconst _hoisted_1$4 = [\"onClick\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n  return !$props.message.deleted ? (openBlock(), createBlock(TransitionGroup, {\n    key: 0,\n    name: \"vac-slide-left\",\n    tag: \"span\"\n  }, {\n    default: withCtx(() => [\n      (openBlock(true), createElementBlock(Fragment, null, renderList($props.message.reactions, (reaction, key) => {\n        return withDirectives((openBlock(), createElementBlock(\"button\", {\n          key: key + 0,\n          class: normalizeClass([\"vac-button-reaction\", {\n            \"vac-reaction-me\": reaction.indexOf($props.currentUserId) !== -1\n          }]),\n          style: normalizeStyle({\n            float: $props.message.senderId === $props.currentUserId ? \"right\" : \"left\"\n          }),\n          onClick: ($event) => $options.sendMessageReaction({ unicode: key }, reaction)\n        }, [\n          createTextVNode(toDisplayString(key), 1),\n          createBaseVNode(\"span\", null, toDisplayString(reaction.length), 1)\n        ], 14, _hoisted_1$4)), [\n          [vShow, reaction.length]\n        ]);\n      }), 128))\n    ]),\n    _: 1\n  })) : createCommentVNode(\"\", true);\n}\nvar MessageReactions = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4]]);\nfunction roomsValidation(obj) {\n  const roomsValidate = [\n    { key: \"roomId\", type: [\"string\", \"number\"] },\n    { key: \"roomName\", type: [\"string\"] },\n    { key: \"users\", type: [\"array\"] }\n  ];\n  const validate = (obj2, props) => {\n    return props.every((prop) => {\n      let validType = false;\n      if (prop.type[0] === \"array\" && Array.isArray(obj2[prop.key])) {\n        validType = true;\n      } else if (prop.type.find((t) => t === typeof obj2[prop.key])) {\n        validType = true;\n      }\n      return validType && checkObjectValid(obj2, prop.key);\n    });\n  };\n  if (!validate(obj, roomsValidate)) {\n    throw new Error(\n      \"Rooms object is not valid! Must contain at least roomId[String, Number], roomName[String] and users[Array]\"\n    );\n  }\n}\nfunction partcipantsValidation(obj) {\n  const participantsValidate = [\n    { key: \"_id\", type: [\"string\", \"number\"] },\n    { key: \"username\", type: [\"string\"] }\n  ];\n  const validate = (obj2, props) => {\n    return props.every((prop) => {\n      const validType = prop.type.find((t) => t === typeof obj2[prop.key]);\n      return validType && checkObjectValid(obj2, prop.key);\n    });\n  };\n  if (!validate(obj, participantsValidate)) {\n    throw new Error(\n      \"Participants object is not valid! Must contain at least _id[String, Number] and username[String]\"\n    );\n  }\n}\nfunction messagesValidation(obj) {\n  const messagesValidate = [\n    { key: \"_id\", type: [\"string\", \"number\"] },\n    { key: \"senderId\", type: [\"string\", \"number\"] }\n  ];\n  const validate = (obj2, props) => {\n    return props.every((prop) => {\n      const validType = prop.type.find((t) => t === typeof obj2[prop.key]);\n      return validType && checkObjectValid(obj2, prop.key);\n    });\n  };\n  if (!validate(obj, messagesValidate)) {\n    throw new Error(\n      \"Messages object is not valid! Must contain at least _id[String, Number] and senderId[String, Number]\"\n    );\n  }\n}\nfunction checkObjectValid(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== null && obj[key] !== void 0;\n}\nconst _sfc_main$3 = {\n  name: \"RoomMessage\",\n  components: {\n    SvgIcon,\n    FormatMessage,\n    AudioPlayer,\n    MessageReply,\n    MessageFiles,\n    MessageActions,\n    MessageReactions\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    index: { type: Number, required: true },\n    message: { type: Object, required: true },\n    messages: { type: Array, required: true },\n    editedMessageId: { type: [String, Number], default: null },\n    roomUsers: { type: Array, default: () => [] },\n    messageActions: { type: Array, required: true },\n    newMessages: { type: Array, default: () => [] },\n    showReactionEmojis: { type: Boolean, required: true },\n    showNewMessagesDivider: { type: Boolean, required: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    usernameOptions: { type: Object, required: true },\n    messageSelectionEnabled: { type: Boolean, required: true },\n    selectedMessages: { type: Array, default: () => [] },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"message-added\",\n    \"open-file\",\n    \"open-user-tag\",\n    \"open-failed-message\",\n    \"message-action-handler\",\n    \"send-message-reaction\",\n    \"select-message\",\n    \"unselect-message\"\n  ],\n  data() {\n    return {\n      hoverMessageId: null,\n      messageHover: false,\n      optionsOpened: false,\n      emojiOpened: false,\n      newMessage: {},\n      progressTime: \"- : -\",\n      hoverAudioProgress: false\n    };\n  },\n  computed: {\n    showUsername() {\n      if (!this.usernameOptions.currentUser && this.message.senderId === this.currentUserId) {\n        return false;\n      } else {\n        return this.roomUsers.length >= this.usernameOptions.minUsers;\n      }\n    },\n    showDate() {\n      return this.index > 0 && this.message.date !== this.messages[this.index - 1].date;\n    },\n    messageOffset() {\n      return this.index > 0 && this.message.senderId !== this.messages[this.index - 1].senderId;\n    },\n    isMessageHover() {\n      return this.editedMessageId === this.message._id || this.hoverMessageId === this.message._id;\n    },\n    isAudio() {\n      var _a;\n      return (_a = this.message.files) == null ? void 0 : _a.some((file) => isAudioFile(file));\n    },\n    isCheckmarkVisible() {\n      return this.message.senderId === this.currentUserId && !this.message.deleted && (this.message.saved || this.message.distributed || this.message.seen);\n    },\n    hasCurrentUserAvatar() {\n      return this.messages.some(\n        (message) => message.senderId === this.currentUserId && message.avatar\n      );\n    },\n    hasSenderUserAvatar() {\n      return this.messages.some(\n        (message) => message.senderId !== this.currentUserId && message.avatar\n      );\n    },\n    isMessageSelected() {\n      return this.messageSelectionEnabled && !!this.selectedMessages.find(\n        (message) => message._id === this.message._id\n      );\n    }\n  },\n  watch: {\n    newMessages: {\n      immediate: true,\n      deep: true,\n      handler(val) {\n        if (!val.length || !this.showNewMessagesDivider) {\n          this.newMessage = {};\n          return;\n        }\n        this.newMessage = val.reduce(\n          (res, obj) => obj.index < res.index ? obj : res\n        );\n      }\n    },\n    messageSelectionEnabled() {\n      this.resetMessageHover();\n    }\n  },\n  mounted() {\n    messagesValidation(this.message);\n    this.$emit(\"message-added\", {\n      message: this.message,\n      index: this.index,\n      ref: this.$refs.message\n    });\n  },\n  methods: {\n    onHoverMessage() {\n      if (!this.messageSelectionEnabled) {\n        this.messageHover = true;\n        if (this.canEditMessage())\n          this.hoverMessageId = this.message._id;\n      }\n    },\n    canEditMessage() {\n      return !this.message.deleted;\n    },\n    onLeaveMessage() {\n      if (!this.messageSelectionEnabled) {\n        if (!this.optionsOpened && !this.emojiOpened)\n          this.messageHover = false;\n        this.hoverMessageId = null;\n      }\n    },\n    resetMessageHover() {\n      this.messageHover = false;\n      this.hoverMessageId = null;\n    },\n    openFile(file) {\n      this.$emit(\"open-file\", { message: this.message, file });\n    },\n    openUserTag(user) {\n      this.$emit(\"open-user-tag\", { user });\n    },\n    messageActionHandler(action) {\n      this.resetMessageHover();\n      setTimeout(() => {\n        this.$emit(\"message-action-handler\", { action, message: this.message });\n      }, 300);\n    },\n    sendMessageReaction({ emoji, reaction }) {\n      this.$emit(\"send-message-reaction\", {\n        messageId: this.message._id,\n        reaction: emoji,\n        remove: reaction && reaction.indexOf(this.currentUserId) !== -1\n      });\n      this.messageHover = false;\n    },\n    selectMessage() {\n      if (this.messageSelectionEnabled) {\n        if (this.isMessageSelected) {\n          this.$emit(\"unselect-message\", this.message._id);\n        } else {\n          this.$emit(\"select-message\", this.message);\n        }\n      }\n    }\n  }\n};\nconst _hoisted_1$3 = [\"id\"];\nconst _hoisted_2$2 = {\n  key: 0,\n  class: \"vac-card-info vac-card-date\"\n};\nconst _hoisted_3$2 = {\n  key: 1,\n  class: \"vac-line-new\"\n};\nconst _hoisted_4$2 = {\n  key: 2,\n  class: \"vac-card-info vac-card-system\"\n};\nconst _hoisted_5$2 = {\n  key: 1,\n  class: \"vac-avatar-offset\"\n};\nconst _hoisted_6$1 = {\n  key: 0,\n  class: \"vac-progress-time\"\n};\nconst _hoisted_7$1 = { class: \"vac-text-timestamp\" };\nconst _hoisted_8 = {\n  key: 0,\n  class: \"vac-icon-edited\"\n};\nconst _hoisted_9 = { key: 1 };\nconst _hoisted_10 = /* @__PURE__ */ createBaseVNode(\"div\", { class: \"vac-failure-text\" }, \"!\", -1);\nconst _hoisted_11 = [\n  _hoisted_10\n];\nconst _hoisted_12 = {\n  key: 3,\n  class: \"vac-avatar-current-offset\"\n};\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_format_message = resolveComponent(\"format-message\");\n  const _component_message_reply = resolveComponent(\"message-reply\");\n  const _component_message_files = resolveComponent(\"message-files\");\n  const _component_audio_player = resolveComponent(\"audio-player\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_message_actions = resolveComponent(\"message-actions\");\n  const _component_message_reactions = resolveComponent(\"message-reactions\");\n  return openBlock(), createElementBlock(\"div\", {\n    id: $props.message._id,\n    ref: \"message\",\n    class: \"vac-message-wrapper\"\n  }, [\n    $options.showDate ? (openBlock(), createElementBlock(\"div\", _hoisted_2$2, toDisplayString($props.message.date), 1)) : createCommentVNode(\"\", true),\n    $data.newMessage._id === $props.message._id ? (openBlock(), createElementBlock(\"div\", _hoisted_3$2, toDisplayString($props.textMessages.NEW_MESSAGES), 1)) : createCommentVNode(\"\", true),\n    $props.message.system ? (openBlock(), createElementBlock(\"div\", _hoisted_4$2, [\n      renderSlot(_ctx.$slots, \"message_\" + $props.message._id, {}, () => [\n        createVNode(_component_format_message, {\n          \"message-id\": $props.message._id,\n          content: $props.message.content,\n          deleted: !!$props.message.deleted,\n          users: $props.roomUsers,\n          \"text-messages\": $props.textMessages,\n          \"text-formatting\": $props.textFormatting,\n          \"link-options\": $props.linkOptions,\n          onOpenUserTag: $options.openUserTag\n        }, createSlots({ _: 2 }, [\n          renderList(_ctx.$slots, (idx, name) => {\n            return {\n              name,\n              fn: withCtx((data) => [\n                renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n              ])\n            };\n          })\n        ]), 1032, [\"message-id\", \"content\", \"deleted\", \"users\", \"text-messages\", \"text-formatting\", \"link-options\", \"onOpenUserTag\"])\n      ])\n    ])) : (openBlock(), createElementBlock(\"div\", {\n      key: 3,\n      class: normalizeClass([\"vac-message-box\", { \"vac-offset-current\": $props.message.senderId === $props.currentUserId }]),\n      onClick: _cache[8] || (_cache[8] = (...args) => $options.selectMessage && $options.selectMessage(...args))\n    }, [\n      renderSlot(_ctx.$slots, \"message_\" + $props.message._id, {}, () => [\n        $props.message.senderId !== $props.currentUserId ? renderSlot(_ctx.$slots, \"message-avatar_\" + $props.message._id, { key: 0 }, () => [\n          $props.message.avatar ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: \"vac-avatar\",\n            style: normalizeStyle({ \"background-image\": `url('${$props.message.avatar}')` })\n          }, null, 4)) : createCommentVNode(\"\", true)\n        ]) : createCommentVNode(\"\", true),\n        $options.hasSenderUserAvatar && !$props.message.avatar ? (openBlock(), createElementBlock(\"div\", _hoisted_5$2)) : createCommentVNode(\"\", true),\n        createBaseVNode(\"div\", {\n          class: normalizeClass([\"vac-message-container\", {\n            \"vac-message-container-offset\": $options.messageOffset\n          }])\n        }, [\n          createBaseVNode(\"div\", {\n            class: normalizeClass([\"vac-message-card\", {\n              \"vac-message-highlight\": $options.isMessageHover,\n              \"vac-message-current\": $props.message.senderId === $props.currentUserId,\n              \"vac-message-deleted\": $props.message.deleted,\n              \"vac-item-clickable\": $props.messageSelectionEnabled,\n              \"vac-message-selected\": $options.isMessageSelected\n            }]),\n            onMouseover: _cache[5] || (_cache[5] = (...args) => $options.onHoverMessage && $options.onHoverMessage(...args)),\n            onMouseleave: _cache[6] || (_cache[6] = (...args) => $options.onLeaveMessage && $options.onLeaveMessage(...args))\n          }, [\n            $options.showUsername ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: normalizeClass([\"vac-text-username\", {\n                \"vac-username-reply\": !$props.message.deleted && $props.message.replyMessage\n              }])\n            }, [\n              createBaseVNode(\"span\", null, toDisplayString($props.message.username), 1)\n            ], 2)) : createCommentVNode(\"\", true),\n            !$props.message.deleted && $props.message.replyMessage ? (openBlock(), createBlock(_component_message_reply, {\n              key: 1,\n              message: $props.message,\n              \"room-users\": $props.roomUsers,\n              \"text-formatting\": $props.textFormatting,\n              \"link-options\": $props.linkOptions\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (i, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"message\", \"room-users\", \"text-formatting\", \"link-options\"])) : createCommentVNode(\"\", true),\n            !!$props.message.deleted || !$props.message.files || !$props.message.files.length ? (openBlock(), createBlock(_component_format_message, {\n              key: 2,\n              \"message-id\": $props.message._id,\n              content: $props.message.content,\n              deleted: !!$props.message.deleted,\n              users: $props.roomUsers,\n              \"text-formatting\": $props.textFormatting,\n              \"text-messages\": $props.textMessages,\n              \"link-options\": $props.linkOptions,\n              onOpenUserTag: $options.openUserTag\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (idx, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"message-id\", \"content\", \"deleted\", \"users\", \"text-formatting\", \"text-messages\", \"link-options\", \"onOpenUserTag\"])) : !$options.isAudio || $props.message.files.length > 1 ? (openBlock(), createBlock(_component_message_files, {\n              key: 3,\n              \"current-user-id\": $props.currentUserId,\n              message: $props.message,\n              \"room-users\": $props.roomUsers,\n              \"text-formatting\": $props.textFormatting,\n              \"link-options\": $props.linkOptions,\n              \"message-selection-enabled\": $props.messageSelectionEnabled,\n              onOpenFile: $options.openFile,\n              onOpenUserTag: $options.openUserTag\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (i, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"current-user-id\", \"message\", \"room-users\", \"text-formatting\", \"link-options\", \"message-selection-enabled\", \"onOpenFile\", \"onOpenUserTag\"])) : (openBlock(), createElementBlock(Fragment, { key: 4 }, [\n              createVNode(_component_audio_player, {\n                \"message-id\": $props.message._id,\n                src: $props.message.files[0].url,\n                \"message-selection-enabled\": $props.messageSelectionEnabled,\n                onUpdateProgressTime: _cache[0] || (_cache[0] = ($event) => $data.progressTime = $event),\n                onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => $data.hoverAudioProgress = $event)\n              }, createSlots({ _: 2 }, [\n                renderList(_ctx.$slots, (i, name) => {\n                  return {\n                    name,\n                    fn: withCtx((data) => [\n                      renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                    ])\n                  };\n                })\n              ]), 1032, [\"message-id\", \"src\", \"message-selection-enabled\"]),\n              !$props.message.deleted ? (openBlock(), createElementBlock(\"div\", _hoisted_6$1, toDisplayString($data.progressTime), 1)) : createCommentVNode(\"\", true)\n            ], 64)),\n            createBaseVNode(\"div\", _hoisted_7$1, [\n              $props.message.edited && !$props.message.deleted ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n                renderSlot(_ctx.$slots, \"pencil-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, { name: \"pencil\" })\n                ])\n              ])) : createCommentVNode(\"\", true),\n              createBaseVNode(\"span\", null, toDisplayString($props.message.timestamp), 1),\n              $options.isCheckmarkVisible ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n                renderSlot(_ctx.$slots, \"checkmark-icon_\" + $props.message._id, {}, () => [\n                  createVNode(_component_svg_icon, {\n                    name: $props.message.distributed ? \"double-checkmark\" : \"checkmark\",\n                    param: $props.message.seen ? \"seen\" : \"\",\n                    class: \"vac-icon-check\"\n                  }, null, 8, [\"name\", \"param\"])\n                ])\n              ])) : createCommentVNode(\"\", true)\n            ]),\n            createVNode(_component_message_actions, {\n              \"current-user-id\": $props.currentUserId,\n              message: $props.message,\n              \"message-actions\": $props.messageActions,\n              \"show-reaction-emojis\": $props.showReactionEmojis,\n              \"message-hover\": $data.messageHover,\n              \"hover-message-id\": $data.hoverMessageId,\n              \"hover-audio-progress\": $data.hoverAudioProgress,\n              \"emoji-data-source\": $props.emojiDataSource,\n              onUpdateMessageHover: _cache[2] || (_cache[2] = ($event) => $data.messageHover = $event),\n              onUpdateOptionsOpened: _cache[3] || (_cache[3] = ($event) => $data.optionsOpened = $event),\n              onUpdateEmojiOpened: _cache[4] || (_cache[4] = ($event) => $data.emojiOpened = $event),\n              onMessageActionHandler: $options.messageActionHandler,\n              onSendMessageReaction: $options.sendMessageReaction\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (i, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1032, [\"current-user-id\", \"message\", \"message-actions\", \"show-reaction-emojis\", \"message-hover\", \"hover-message-id\", \"hover-audio-progress\", \"emoji-data-source\", \"onMessageActionHandler\", \"onSendMessageReaction\"])\n          ], 34),\n          createVNode(_component_message_reactions, {\n            \"current-user-id\": $props.currentUserId,\n            message: $props.message,\n            onSendMessageReaction: $options.sendMessageReaction\n          }, null, 8, [\"current-user-id\", \"message\", \"onSendMessageReaction\"])\n        ], 2),\n        renderSlot(_ctx.$slots, \"message-failure_\" + $props.message._id, {}, () => [\n          $props.message.failure && $props.message.senderId === $props.currentUserId ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"vac-failure-container vac-svg-button\", {\n              \"vac-failure-container-avatar\": $props.message.avatar && $props.message.senderId === $props.currentUserId\n            }]),\n            onClick: _cache[7] || (_cache[7] = ($event) => _ctx.$emit(\"open-failed-message\", { message: $props.message }))\n          }, _hoisted_11, 2)) : createCommentVNode(\"\", true)\n        ]),\n        $props.message.senderId === $props.currentUserId ? renderSlot(_ctx.$slots, \"message-avatar_\" + $props.message._id, { key: 2 }, () => [\n          $props.message.avatar ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: \"vac-avatar vac-avatar-current\",\n            style: normalizeStyle({ \"background-image\": `url('${$props.message.avatar}')` })\n          }, null, 4)) : createCommentVNode(\"\", true)\n        ]) : createCommentVNode(\"\", true),\n        $options.hasCurrentUserAvatar && !$props.message.avatar ? (openBlock(), createElementBlock(\"div\", _hoisted_12)) : createCommentVNode(\"\", true)\n      ])\n    ], 2))\n  ], 8, _hoisted_1$3);\n}\nvar RoomMessage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n  name: \"ChatRoom\",\n  components: {\n    Loader,\n    SvgIcon,\n    RoomHeader,\n    RoomFooter,\n    RoomMessage\n  },\n  props: {\n    currentUserId: { type: [String, Number], required: true },\n    textMessages: { type: Object, required: true },\n    singleRoom: { type: Boolean, required: true },\n    showRoomsList: { type: Boolean, required: true },\n    isMobile: { type: Boolean, required: true },\n    rooms: { type: Array, required: true },\n    roomId: { type: [String, Number], required: true },\n    loadFirstRoom: { type: Boolean, required: true },\n    messages: { type: Array, required: true },\n    roomMessage: { type: String, default: null },\n    messagesLoaded: { type: Boolean, required: true },\n    menuActions: { type: Array, required: true },\n    messageActions: { type: Array, required: true },\n    messageSelectionActions: { type: Array, required: true },\n    autoScroll: { type: Object, required: true },\n    showSendIcon: { type: Boolean, required: true },\n    showFiles: { type: Boolean, required: true },\n    showAudio: { type: Boolean, required: true },\n    audioBitRate: { type: Number, required: true },\n    audioSampleRate: { type: Number, required: true },\n    showEmojis: { type: Boolean, required: true },\n    showReactionEmojis: { type: Boolean, required: true },\n    showNewMessagesDivider: { type: Boolean, required: true },\n    showFooter: { type: Boolean, required: true },\n    acceptedFiles: { type: String, required: true },\n    captureFiles: { type: String, required: true },\n    multipleFiles: { type: Boolean, default: true },\n    textFormatting: { type: Object, required: true },\n    linkOptions: { type: Object, required: true },\n    loadingRooms: { type: Boolean, required: true },\n    roomInfoEnabled: { type: Boolean, required: true },\n    textareaActionEnabled: { type: Boolean, required: true },\n    textareaAutoFocus: { type: Boolean, required: true },\n    userTagsEnabled: { type: Boolean, required: true },\n    emojisSuggestionEnabled: { type: Boolean, required: true },\n    scrollDistance: { type: Number, required: true },\n    templatesText: { type: Array, default: null },\n    usernameOptions: { type: Object, required: true },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"toggle-rooms-list\",\n    \"room-info\",\n    \"menu-action-handler\",\n    \"message-selection-action-handler\",\n    \"edit-message\",\n    \"send-message\",\n    \"delete-message\",\n    \"message-action-handler\",\n    \"fetch-messages\",\n    \"send-message-reaction\",\n    \"typing-message\",\n    \"open-file\",\n    \"open-user-tag\",\n    \"open-failed-message\",\n    \"textarea-action-handler\"\n  ],\n  data() {\n    return {\n      editedMessageId: null,\n      initReplyMessage: null,\n      initEditMessage: null,\n      loadingMessages: false,\n      observer: null,\n      showLoader: true,\n      loadingMoreMessages: false,\n      scrollIcon: false,\n      scrollMessagesCount: 0,\n      newMessages: [],\n      messageSelectionEnabled: false,\n      selectedMessages: [],\n      droppedFiles: []\n    };\n  },\n  computed: {\n    room() {\n      return this.rooms.find((room) => room.roomId === this.roomId) || {};\n    },\n    showNoMessages() {\n      return this.roomId && !this.messages.length && !this.loadingMessages && !this.loadingRooms;\n    },\n    showNoRoom() {\n      const noRoomSelected = !this.rooms.length && !this.loadingRooms || !this.roomId && !this.loadFirstRoom;\n      if (noRoomSelected) {\n        this.updateLoadingMessages(false);\n      }\n      return noRoomSelected;\n    },\n    showMessagesStarted() {\n      return this.messages.length && this.messagesLoaded;\n    }\n  },\n  watch: {\n    roomId: {\n      immediate: true,\n      handler() {\n        this.onRoomChanged();\n      }\n    },\n    messages: {\n      deep: true,\n      handler(newVal, oldVal) {\n        newVal.forEach((message, i) => {\n          if (this.showNewMessagesDivider && !message.seen && message.senderId !== this.currentUserId) {\n            this.newMessages.push({\n              _id: message._id,\n              index: i\n            });\n          }\n        });\n        if ((oldVal == null ? void 0 : oldVal.length) === (newVal == null ? void 0 : newVal.length) - 1) {\n          this.newMessages = [];\n        }\n        setTimeout(() => this.loadingMoreMessages = false);\n      }\n    },\n    messagesLoaded(val) {\n      if (val)\n        this.updateLoadingMessages(false);\n    }\n  },\n  mounted() {\n    this.newMessages = [];\n  },\n  methods: {\n    updateLoadingMessages(val) {\n      this.loadingMessages = val;\n      if (!val) {\n        setTimeout(() => this.initIntersectionObserver());\n      }\n    },\n    initIntersectionObserver() {\n      if (this.observer) {\n        this.showLoader = true;\n        this.observer.disconnect();\n      }\n      const loader = this.$el.querySelector(\"#infinite-loader-messages\");\n      if (loader) {\n        const options = {\n          root: this.$el.querySelector(\"#messages-list\"),\n          rootMargin: `${this.scrollDistance}px`,\n          threshold: 0\n        };\n        this.observer = new IntersectionObserver((entries) => {\n          if (entries[0].isIntersecting) {\n            this.loadMoreMessages();\n          }\n        }, options);\n        this.observer.observe(loader);\n      }\n    },\n    preventTopScroll() {\n      const container = this.$refs.scrollContainer;\n      const prevScrollHeight = container.scrollHeight;\n      const observer = new ResizeObserver((_) => {\n        if (container.scrollHeight !== prevScrollHeight) {\n          if (this.$refs.scrollContainer) {\n            this.$refs.scrollContainer.scrollTo({\n              top: container.scrollHeight - prevScrollHeight\n            });\n            observer.disconnect();\n          }\n        }\n      });\n      for (var i = 0; i < container.children.length; i++) {\n        observer.observe(container.children[i]);\n      }\n    },\n    touchStart(touchEvent) {\n      if (this.singleRoom)\n        return;\n      if (touchEvent.changedTouches.length === 1) {\n        const posXStart = touchEvent.changedTouches[0].clientX;\n        const posYStart = touchEvent.changedTouches[0].clientY;\n        addEventListener(\n          \"touchend\",\n          (touchEvent2) => this.touchEnd(touchEvent2, posXStart, posYStart),\n          { once: true }\n        );\n      }\n    },\n    touchEnd(touchEvent, posXStart, posYStart) {\n      if (touchEvent.changedTouches.length === 1) {\n        const posXEnd = touchEvent.changedTouches[0].clientX;\n        const posYEnd = touchEvent.changedTouches[0].clientY;\n        const swippedRight = posXEnd - posXStart > 100;\n        const swippedVertically = Math.abs(posYEnd - posYStart) > 50;\n        if (swippedRight && !swippedVertically) {\n          this.$emit(\"toggle-rooms-list\");\n        }\n      }\n    },\n    onRoomChanged() {\n      this.updateLoadingMessages(true);\n      this.scrollIcon = false;\n      this.scrollMessagesCount = 0;\n      this.resetMessageSelection();\n      const unwatch = this.$watch(\n        () => this.messages,\n        (val) => {\n          if (!val || !val.length)\n            return;\n          const element2 = this.$refs.scrollContainer;\n          if (!element2)\n            return;\n          unwatch();\n          setTimeout(() => {\n            element2.scrollTo({ top: element2.scrollHeight });\n            this.updateLoadingMessages(false);\n          });\n        }\n      );\n    },\n    resetMessageSelection() {\n      this.messageSelectionEnabled = false;\n      this.selectedMessages = [];\n    },\n    selectMessage(message) {\n      this.selectedMessages.push(message);\n    },\n    unselectMessage(messageId) {\n      this.selectedMessages = this.selectedMessages.filter(\n        (message) => message._id !== messageId\n      );\n    },\n    onMessageAdded({ message, index, ref }) {\n      if (index !== this.messages.length - 1)\n        return;\n      const autoScrollOffset = ref.offsetHeight + 60;\n      setTimeout(() => {\n        const scrollContainer = this.$refs.scrollContainer;\n        let scrolledUp = false;\n        if (scrollContainer) {\n          scrolledUp = this.getBottomScroll(scrollContainer) > autoScrollOffset;\n        }\n        if (message.senderId === this.currentUserId) {\n          if (scrolledUp) {\n            if (this.autoScroll.send.newAfterScrollUp) {\n              this.scrollToBottom();\n            }\n          } else {\n            if (this.autoScroll.send.new) {\n              this.scrollToBottom();\n            }\n          }\n        } else {\n          if (scrolledUp) {\n            if (this.autoScroll.receive.newAfterScrollUp) {\n              this.scrollToBottom();\n            } else {\n              this.scrollIcon = true;\n              this.scrollMessagesCount++;\n            }\n          } else {\n            if (this.autoScroll.receive.new) {\n              this.scrollToBottom();\n            } else {\n              this.scrollIcon = true;\n              this.scrollMessagesCount++;\n            }\n          }\n        }\n      });\n    },\n    onContainerScroll(e) {\n      if (!e.target)\n        return;\n      const bottomScroll = this.getBottomScroll(e.target);\n      if (bottomScroll < 60)\n        this.scrollMessagesCount = 0;\n      this.scrollIcon = bottomScroll > 500 || this.scrollMessagesCount;\n    },\n    loadMoreMessages() {\n      if (this.loadingMessages)\n        return;\n      setTimeout(\n        () => {\n          if (this.loadingMoreMessages)\n            return;\n          if (this.messagesLoaded || !this.roomId) {\n            this.loadingMoreMessages = false;\n            this.showLoader = false;\n            return;\n          }\n          this.preventTopScroll();\n          this.$emit(\"fetch-messages\");\n          this.loadingMoreMessages = true;\n        },\n        500\n      );\n    },\n    messageActionHandler({ action, message }) {\n      switch (action.name) {\n        case \"replyMessage\":\n          this.initReplyMessage = message;\n          setTimeout(() => {\n            this.initReplyMessage = null;\n          });\n          return;\n        case \"editMessage\":\n          this.initEditMessage = message;\n          setTimeout(() => {\n            this.initEditMessage = null;\n          });\n          return;\n        case \"deleteMessage\":\n          return this.$emit(\"delete-message\", message);\n        case \"selectMessages\":\n          this.selectedMessages = [message];\n          this.messageSelectionEnabled = true;\n          return;\n        default:\n          return this.$emit(\"message-action-handler\", { action, message });\n      }\n    },\n    messageSelectionActionHandler(action) {\n      this.$emit(\"message-selection-action-handler\", {\n        action,\n        messages: this.selectedMessages\n      });\n      this.resetMessageSelection();\n    },\n    sendMessageReaction(messageReaction) {\n      this.$emit(\"send-message-reaction\", messageReaction);\n    },\n    getBottomScroll(element2) {\n      const { scrollHeight, clientHeight, scrollTop } = element2;\n      return scrollHeight - clientHeight - scrollTop;\n    },\n    scrollToBottom() {\n      setTimeout(() => {\n        const element2 = this.$refs.scrollContainer;\n        if (element2) {\n          element2.classList.add(\"vac-scroll-smooth\");\n          element2.scrollTo({ top: element2.scrollHeight, behavior: \"smooth\" });\n          setTimeout(() => element2.classList.remove(\"vac-scroll-smooth\"));\n        }\n      }, 50);\n    },\n    openFile({ message, file }) {\n      this.$emit(\"open-file\", { message, file });\n    },\n    openUserTag(user) {\n      this.$emit(\"open-user-tag\", user);\n    },\n    onDropFiles(event) {\n      if (this.showFiles) {\n        this.droppedFiles = event.dataTransfer.files;\n      }\n    }\n  }\n};\nconst _hoisted_1$2 = { class: \"vac-container-center vac-room-empty\" };\nconst _hoisted_2$1 = { class: \"vac-messages-container\" };\nconst _hoisted_3$1 = {\n  key: 0,\n  class: \"vac-text-started\"\n};\nconst _hoisted_4$1 = {\n  key: 1,\n  class: \"vac-text-started\"\n};\nconst _hoisted_5$1 = {\n  key: 0,\n  id: \"infinite-loader-messages\"\n};\nconst _hoisted_6 = { key: 2 };\nconst _hoisted_7 = {\n  key: 0,\n  class: \"vac-badge-counter vac-messages-count\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_room_header = resolveComponent(\"room-header\");\n  const _component_loader = resolveComponent(\"loader\");\n  const _component_room_message = resolveComponent(\"room-message\");\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  const _component_room_footer = resolveComponent(\"room-footer\");\n  return withDirectives((openBlock(), createElementBlock(\"div\", {\n    class: \"vac-col-messages\",\n    onDrop: _cache[12] || (_cache[12] = withModifiers((...args) => $options.onDropFiles && $options.onDropFiles(...args), [\"prevent\"])),\n    onDragenter: _cache[13] || (_cache[13] = withModifiers(() => {\n    }, [\"prevent\"])),\n    onDragover: _cache[14] || (_cache[14] = withModifiers(() => {\n    }, [\"prevent\"])),\n    onDragleave: _cache[15] || (_cache[15] = withModifiers(() => {\n    }, [\"prevent\"])),\n    onTouchstart: _cache[16] || (_cache[16] = (...args) => $options.touchStart && $options.touchStart(...args))\n  }, [\n    $options.showNoRoom ? renderSlot(_ctx.$slots, \"no-room-selected\", { key: 0 }, () => [\n      createBaseVNode(\"div\", _hoisted_1$2, [\n        createBaseVNode(\"div\", null, toDisplayString($props.textMessages.ROOM_EMPTY), 1)\n      ])\n    ]) : (openBlock(), createBlock(_component_room_header, {\n      key: 1,\n      \"current-user-id\": $props.currentUserId,\n      \"text-messages\": $props.textMessages,\n      \"single-room\": $props.singleRoom,\n      \"show-rooms-list\": $props.showRoomsList,\n      \"is-mobile\": $props.isMobile,\n      \"room-info-enabled\": $props.roomInfoEnabled,\n      \"menu-actions\": $props.menuActions,\n      room: $options.room,\n      \"message-selection-enabled\": $data.messageSelectionEnabled,\n      \"message-selection-actions\": $props.messageSelectionActions,\n      \"selected-messages-total\": $data.selectedMessages.length,\n      onToggleRoomsList: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"toggle-rooms-list\")),\n      onRoomInfo: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"room-info\")),\n      onMenuActionHandler: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"menu-action-handler\", $event)),\n      onMessageSelectionActionHandler: $options.messageSelectionActionHandler,\n      onCancelMessageSelection: _cache[3] || (_cache[3] = ($event) => $data.messageSelectionEnabled = false)\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (i, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"current-user-id\", \"text-messages\", \"single-room\", \"show-rooms-list\", \"is-mobile\", \"room-info-enabled\", \"menu-actions\", \"room\", \"message-selection-enabled\", \"message-selection-actions\", \"selected-messages-total\", \"onMessageSelectionActionHandler\"])),\n    createBaseVNode(\"div\", {\n      id: \"messages-list\",\n      ref: \"scrollContainer\",\n      class: \"vac-container-scroll\",\n      onScroll: _cache[5] || (_cache[5] = (...args) => $options.onContainerScroll && $options.onContainerScroll(...args))\n    }, [\n      createVNode(_component_loader, {\n        show: $data.loadingMessages,\n        type: \"messages\"\n      }, createSlots({ _: 2 }, [\n        renderList(_ctx.$slots, (idx, name) => {\n          return {\n            name,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"show\"]),\n      createBaseVNode(\"div\", _hoisted_2$1, [\n        createBaseVNode(\"div\", {\n          class: normalizeClass({ \"vac-messages-hidden\": $data.loadingMessages })\n        }, [\n          createVNode(Transition, { name: \"vac-fade-message\" }, {\n            default: withCtx(() => [\n              createBaseVNode(\"div\", null, [\n                $options.showNoMessages ? (openBlock(), createElementBlock(\"div\", _hoisted_3$1, [\n                  renderSlot(_ctx.$slots, \"messages-empty\", {}, () => [\n                    createTextVNode(toDisplayString($props.textMessages.MESSAGES_EMPTY), 1)\n                  ])\n                ])) : createCommentVNode(\"\", true),\n                $options.showMessagesStarted ? (openBlock(), createElementBlock(\"div\", _hoisted_4$1, toDisplayString($props.textMessages.CONVERSATION_STARTED) + \" \" + toDisplayString($props.messages[0].date), 1)) : createCommentVNode(\"\", true)\n              ])\n            ]),\n            _: 3\n          }),\n          $props.messages.length && !$props.messagesLoaded ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, [\n            createVNode(_component_loader, {\n              show: true,\n              infinite: true,\n              type: \"infinite-messages\"\n            }, createSlots({ _: 2 }, [\n              renderList(_ctx.$slots, (idx, name) => {\n                return {\n                  name,\n                  fn: withCtx((data) => [\n                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                  ])\n                };\n              })\n            ]), 1024)\n          ])) : createCommentVNode(\"\", true),\n          (openBlock(), createBlock(TransitionGroup, {\n            key: $props.roomId,\n            name: \"vac-fade-message\",\n            tag: \"span\"\n          }, {\n            default: withCtx(() => [\n              (openBlock(true), createElementBlock(Fragment, null, renderList($props.messages, (m, i) => {\n                return openBlock(), createElementBlock(\"div\", {\n                  key: m.indexId || m._id\n                }, [\n                  createVNode(_component_room_message, {\n                    \"current-user-id\": $props.currentUserId,\n                    message: m,\n                    index: i,\n                    messages: $props.messages,\n                    \"edited-message-id\": $data.editedMessageId,\n                    \"message-actions\": $props.messageActions,\n                    \"room-users\": $options.room.users,\n                    \"text-messages\": $props.textMessages,\n                    \"new-messages\": $data.newMessages,\n                    \"show-reaction-emojis\": $props.showReactionEmojis,\n                    \"show-new-messages-divider\": $props.showNewMessagesDivider,\n                    \"text-formatting\": $props.textFormatting,\n                    \"link-options\": $props.linkOptions,\n                    \"username-options\": $props.usernameOptions,\n                    \"message-selection-enabled\": $data.messageSelectionEnabled,\n                    \"selected-messages\": $data.selectedMessages,\n                    \"emoji-data-source\": $props.emojiDataSource,\n                    onMessageAdded: $options.onMessageAdded,\n                    onMessageActionHandler: $options.messageActionHandler,\n                    onOpenFile: $options.openFile,\n                    onOpenUserTag: $options.openUserTag,\n                    onOpenFailedMessage: _cache[4] || (_cache[4] = ($event) => _ctx.$emit(\"open-failed-message\", $event)),\n                    onSendMessageReaction: $options.sendMessageReaction,\n                    onSelectMessage: $options.selectMessage,\n                    onUnselectMessage: $options.unselectMessage\n                  }, createSlots({ _: 2 }, [\n                    renderList(_ctx.$slots, (idx, name) => {\n                      return {\n                        name,\n                        fn: withCtx((data) => [\n                          renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n                        ])\n                      };\n                    })\n                  ]), 1032, [\"current-user-id\", \"message\", \"index\", \"messages\", \"edited-message-id\", \"message-actions\", \"room-users\", \"text-messages\", \"new-messages\", \"show-reaction-emojis\", \"show-new-messages-divider\", \"text-formatting\", \"link-options\", \"username-options\", \"message-selection-enabled\", \"selected-messages\", \"emoji-data-source\", \"onMessageAdded\", \"onMessageActionHandler\", \"onOpenFile\", \"onOpenUserTag\", \"onSendMessageReaction\", \"onSelectMessage\", \"onUnselectMessage\"])\n                ]);\n              }), 128))\n            ]),\n            _: 3\n          }))\n        ], 2)\n      ])\n    ], 544),\n    !$data.loadingMessages ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n      createVNode(Transition, { name: \"vac-bounce\" }, {\n        default: withCtx(() => [\n          $data.scrollIcon ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: \"vac-icon-scroll\",\n            onClick: _cache[6] || (_cache[6] = (...args) => $options.scrollToBottom && $options.scrollToBottom(...args))\n          }, [\n            createVNode(Transition, { name: \"vac-bounce\" }, {\n              default: withCtx(() => [\n                $data.scrollMessagesCount ? (openBlock(), createElementBlock(\"div\", _hoisted_7, toDisplayString($data.scrollMessagesCount), 1)) : createCommentVNode(\"\", true)\n              ]),\n              _: 1\n            }),\n            renderSlot(_ctx.$slots, \"scroll-icon\", {}, () => [\n              createVNode(_component_svg_icon, {\n                name: \"dropdown\",\n                param: \"scroll\"\n              })\n            ])\n          ])) : createCommentVNode(\"\", true)\n        ]),\n        _: 3\n      })\n    ])) : createCommentVNode(\"\", true),\n    createVNode(_component_room_footer, {\n      room: $options.room,\n      \"room-id\": $props.roomId,\n      \"room-message\": $props.roomMessage,\n      \"text-messages\": $props.textMessages,\n      \"show-send-icon\": $props.showSendIcon,\n      \"show-files\": $props.showFiles,\n      \"show-audio\": $props.showAudio,\n      \"show-emojis\": $props.showEmojis,\n      \"show-footer\": $props.showFooter,\n      \"accepted-files\": $props.acceptedFiles,\n      \"capture-files\": $props.captureFiles,\n      \"multiple-files\": $props.multipleFiles,\n      \"textarea-action-enabled\": $props.textareaActionEnabled,\n      \"textarea-auto-focus\": $props.textareaAutoFocus,\n      \"user-tags-enabled\": $props.userTagsEnabled,\n      \"emojis-suggestion-enabled\": $props.emojisSuggestionEnabled,\n      \"templates-text\": $props.templatesText,\n      \"text-formatting\": $props.textFormatting,\n      \"link-options\": $props.linkOptions,\n      \"audio-bit-rate\": $props.audioBitRate,\n      \"audio-sample-rate\": $props.audioSampleRate,\n      \"init-reply-message\": $data.initReplyMessage,\n      \"init-edit-message\": $data.initEditMessage,\n      \"dropped-files\": $data.droppedFiles,\n      \"emoji-data-source\": $props.emojiDataSource,\n      onUpdateEditedMessageId: _cache[7] || (_cache[7] = ($event) => $data.editedMessageId = $event),\n      onEditMessage: _cache[8] || (_cache[8] = ($event) => _ctx.$emit(\"edit-message\", $event)),\n      onSendMessage: _cache[9] || (_cache[9] = ($event) => _ctx.$emit(\"send-message\", $event)),\n      onTypingMessage: _cache[10] || (_cache[10] = ($event) => _ctx.$emit(\"typing-message\", $event)),\n      onTextareaActionHandler: _cache[11] || (_cache[11] = ($event) => _ctx.$emit(\"textarea-action-handler\", $event))\n    }, createSlots({ _: 2 }, [\n      renderList(_ctx.$slots, (idx, name) => {\n        return {\n          name,\n          fn: withCtx((data) => [\n            renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n          ])\n        };\n      })\n    ]), 1032, [\"room\", \"room-id\", \"room-message\", \"text-messages\", \"show-send-icon\", \"show-files\", \"show-audio\", \"show-emojis\", \"show-footer\", \"accepted-files\", \"capture-files\", \"multiple-files\", \"textarea-action-enabled\", \"textarea-auto-focus\", \"user-tags-enabled\", \"emojis-suggestion-enabled\", \"templates-text\", \"text-formatting\", \"link-options\", \"audio-bit-rate\", \"audio-sample-rate\", \"init-reply-message\", \"init-edit-message\", \"dropped-files\", \"emoji-data-source\"])\n  ], 544)), [\n    [vShow, $props.isMobile && !$props.showRoomsList || !$props.isMobile || $props.singleRoom]\n  ]);\n}\nvar Room = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$1 = {\n  name: \"MediaPreview\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    file: { type: Object, required: true }\n  },\n  emits: [\"close-media-preview\"],\n  computed: {\n    isImage() {\n      return isImageFile(this.file);\n    },\n    isVideo() {\n      return isVideoFile(this.file);\n    }\n  },\n  mounted() {\n    this.$refs.modal.focus();\n  },\n  methods: {\n    closeModal() {\n      this.$emit(\"close-media-preview\");\n    }\n  }\n};\nconst _hoisted_1$1 = {\n  key: 0,\n  class: \"vac-media-preview-container\"\n};\nconst _hoisted_2 = {\n  key: 1,\n  class: \"vac-media-preview-container\"\n};\nconst _hoisted_3 = {\n  controls: \"\",\n  autoplay: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = { class: \"vac-svg-button\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_svg_icon = resolveComponent(\"svg-icon\");\n  return openBlock(), createElementBlock(\"div\", {\n    ref: \"modal\",\n    tabindex: \"0\",\n    class: \"vac-media-preview\",\n    onClick: _cache[0] || (_cache[0] = withModifiers((...args) => $options.closeModal && $options.closeModal(...args), [\"stop\"])),\n    onKeydown: _cache[1] || (_cache[1] = withKeys((...args) => $options.closeModal && $options.closeModal(...args), [\"esc\"]))\n  }, [\n    createVNode(Transition, {\n      name: \"vac-bounce-preview\",\n      appear: \"\"\n    }, {\n      default: withCtx(() => [\n        $options.isImage ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n          createBaseVNode(\"div\", {\n            class: \"vac-image-preview\",\n            style: normalizeStyle({\n              \"background-image\": `url('${$props.file.url}')`\n            })\n          }, null, 4)\n        ])) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n          createBaseVNode(\"video\", _hoisted_3, [\n            createBaseVNode(\"source\", {\n              src: $props.file.url\n            }, null, 8, _hoisted_4)\n          ])\n        ])) : createCommentVNode(\"\", true)\n      ]),\n      _: 1\n    }),\n    createBaseVNode(\"div\", _hoisted_5, [\n      renderSlot(_ctx.$slots, \"preview-close-icon\", {}, () => [\n        createVNode(_component_svg_icon, {\n          name: \"close-outline\",\n          param: \"preview\"\n        })\n      ])\n    ])\n  ], 544);\n}\nvar MediaPreview = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nvar locales = {\n  ROOMS_EMPTY: \"No rooms\",\n  ROOM_EMPTY: \"No room selected\",\n  NEW_MESSAGES: \"New Messages\",\n  MESSAGE_DELETED: \"This message was deleted\",\n  MESSAGES_EMPTY: \"No messages\",\n  CONVERSATION_STARTED: \"Conversation started on:\",\n  TYPE_MESSAGE: \"Type message\",\n  SEARCH: \"Search\",\n  IS_ONLINE: \"is online\",\n  LAST_SEEN: \"last seen \",\n  IS_TYPING: \"is writing...\",\n  CANCEL_SELECT_MESSAGE: \"Cancel\"\n};\nconst defaultThemeStyles = {\n  light: {\n    general: {\n      color: \"#0a0a0a\",\n      colorButtonClear: \"#1976d2\",\n      colorButton: \"#fff\",\n      backgroundColorButton: \"#1976d2\",\n      backgroundInput: \"#fff\",\n      colorPlaceholder: \"#9ca6af\",\n      colorCaret: \"#1976d2\",\n      colorSpinner: \"#333\",\n      borderStyle: \"1px solid #e1e4e8\",\n      backgroundScrollIcon: \"#fff\"\n    },\n    container: {\n      border: \"none\",\n      borderRadius: \"4px\",\n      boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)\"\n    },\n    header: {\n      background: \"#fff\",\n      colorRoomName: \"#0a0a0a\",\n      colorRoomInfo: \"#9ca6af\"\n    },\n    footer: {\n      background: \"#f8f9fa\",\n      borderStyleInput: \"1px solid #e1e4e8\",\n      borderInputSelected: \"#1976d2\",\n      backgroundReply: \"#e5e5e6\",\n      backgroundTagActive: \"#e5e5e6\",\n      backgroundTag: \"#f8f9fa\"\n    },\n    content: {\n      background: \"#f8f9fa\"\n    },\n    sidemenu: {\n      background: \"#fff\",\n      backgroundHover: \"#f6f6f6\",\n      backgroundActive: \"#e5effa\",\n      colorActive: \"#1976d2\",\n      borderColorSearch: \"#e1e5e8\"\n    },\n    dropdown: {\n      background: \"#fff\",\n      backgroundHover: \"#f6f6f6\"\n    },\n    message: {\n      background: \"#fff\",\n      backgroundMe: \"#ccf2cf\",\n      color: \"#0a0a0a\",\n      colorStarted: \"#9ca6af\",\n      backgroundDeleted: \"#dadfe2\",\n      backgroundSelected: \"#c2dcf2\",\n      colorDeleted: \"#757e85\",\n      colorUsername: \"#9ca6af\",\n      colorTimestamp: \"#828c94\",\n      backgroundDate: \"#e5effa\",\n      colorDate: \"#505a62\",\n      backgroundSystem: \"#e5effa\",\n      colorSystem: \"#505a62\",\n      backgroundMedia: \"rgba(0, 0, 0, 0.15)\",\n      backgroundReply: \"rgba(0, 0, 0, 0.08)\",\n      colorReplyUsername: \"#0a0a0a\",\n      colorReply: \"#6e6e6e\",\n      colorTag: \"#0d579c\",\n      backgroundImage: \"#ddd\",\n      colorNewMessages: \"#1976d2\",\n      backgroundScrollCounter: \"#0696c7\",\n      colorScrollCounter: \"#fff\",\n      backgroundReaction: \"#eee\",\n      borderStyleReaction: \"1px solid #eee\",\n      backgroundReactionHover: \"#fff\",\n      borderStyleReactionHover: \"1px solid #ddd\",\n      colorReactionCounter: \"#0a0a0a\",\n      backgroundReactionMe: \"#cfecf5\",\n      borderStyleReactionMe: \"1px solid #3b98b8\",\n      backgroundReactionHoverMe: \"#cfecf5\",\n      borderStyleReactionHoverMe: \"1px solid #3b98b8\",\n      colorReactionCounterMe: \"#0b59b3\",\n      backgroundAudioRecord: \"#eb4034\",\n      backgroundAudioLine: \"rgba(0, 0, 0, 0.15)\",\n      backgroundAudioProgress: \"#455247\",\n      backgroundAudioProgressSelector: \"#455247\",\n      colorFileExtension: \"#757e85\"\n    },\n    markdown: {\n      background: \"rgba(239, 239, 239, 0.7)\",\n      border: \"rgba(212, 212, 212, 0.9)\",\n      color: \"#e01e5a\",\n      colorMulti: \"#0a0a0a\"\n    },\n    room: {\n      colorUsername: \"#0a0a0a\",\n      colorMessage: \"#67717a\",\n      colorTimestamp: \"#a2aeb8\",\n      colorStateOnline: \"#4caf50\",\n      colorStateOffline: \"#9ca6af\",\n      backgroundCounterBadge: \"#0696c7\",\n      colorCounterBadge: \"#fff\"\n    },\n    emoji: {\n      background: \"#fff\"\n    },\n    icons: {\n      search: \"#9ca6af\",\n      add: \"#1976d2\",\n      toggle: \"#0a0a0a\",\n      menu: \"#0a0a0a\",\n      close: \"#9ca6af\",\n      closeImage: \"#fff\",\n      file: \"#1976d2\",\n      paperclip: \"#1976d2\",\n      closeOutline: \"#000\",\n      closePreview: \"#fff\",\n      send: \"#1976d2\",\n      sendDisabled: \"#9ca6af\",\n      emoji: \"#1976d2\",\n      emojiReaction: \"rgba(0, 0, 0, 0.3)\",\n      document: \"#1976d2\",\n      pencil: \"#9e9e9e\",\n      checkmark: \"#9e9e9e\",\n      checkmarkSeen: \"#0696c7\",\n      eye: \"#fff\",\n      dropdownMessage: \"#fff\",\n      dropdownMessageBackground: \"rgba(0, 0, 0, 0.25)\",\n      dropdownRoom: \"#9e9e9e\",\n      dropdownScroll: \"#0a0a0a\",\n      microphone: \"#1976d2\",\n      audioPlay: \"#455247\",\n      audioPause: \"#455247\",\n      audioCancel: \"#eb4034\",\n      audioConfirm: \"#1ba65b\"\n    }\n  },\n  dark: {\n    general: {\n      color: \"#fff\",\n      colorButtonClear: \"#fff\",\n      colorButton: \"#fff\",\n      backgroundColorButton: \"#1976d2\",\n      backgroundInput: \"#202223\",\n      colorPlaceholder: \"#596269\",\n      colorCaret: \"#fff\",\n      colorSpinner: \"#fff\",\n      borderStyle: \"none\",\n      backgroundScrollIcon: \"#fff\"\n    },\n    container: {\n      border: \"none\",\n      borderRadius: \"4px\",\n      boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)\"\n    },\n    header: {\n      background: \"#181a1b\",\n      colorRoomName: \"#fff\",\n      colorRoomInfo: \"#9ca6af\"\n    },\n    footer: {\n      background: \"#131415\",\n      borderStyleInput: \"none\",\n      borderInputSelected: \"#1976d2\",\n      backgroundReply: \"#1b1c1c\",\n      backgroundTagActive: \"#1b1c1c\",\n      backgroundTag: \"#131415\"\n    },\n    content: {\n      background: \"#131415\"\n    },\n    sidemenu: {\n      background: \"#181a1b\",\n      backgroundHover: \"#202224\",\n      backgroundActive: \"#151617\",\n      colorActive: \"#fff\",\n      borderColorSearch: \"#181a1b\"\n    },\n    dropdown: {\n      background: \"#2a2c33\",\n      backgroundHover: \"#26282e\"\n    },\n    message: {\n      background: \"#22242a\",\n      backgroundMe: \"#1f7e80\",\n      color: \"#fff\",\n      colorStarted: \"#9ca6af\",\n      backgroundDeleted: \"#1b1c21\",\n      backgroundSelected: \"#c2dcf2\",\n      colorDeleted: \"#a2a5a8\",\n      colorUsername: \"#b3bac9\",\n      colorTimestamp: \"#ebedf2\",\n      backgroundDate: \"rgba(0, 0, 0, 0.3)\",\n      colorDate: \"#bec5cc\",\n      backgroundSystem: \"rgba(0, 0, 0, 0.3)\",\n      colorSystem: \"#bec5cc\",\n      backgroundMedia: \"rgba(0, 0, 0, 0.18)\",\n      backgroundReply: \"rgba(0, 0, 0, 0.18)\",\n      colorReplyUsername: \"#fff\",\n      colorReply: \"#d6d6d6\",\n      colorTag: \"#f0c60a\",\n      backgroundImage: \"#ddd\",\n      colorNewMessages: \"#fff\",\n      backgroundScrollCounter: \"#1976d2\",\n      colorScrollCounter: \"#fff\",\n      backgroundReaction: \"none\",\n      borderStyleReaction: \"none\",\n      backgroundReactionHover: \"#202223\",\n      borderStyleReactionHover: \"none\",\n      colorReactionCounter: \"#fff\",\n      backgroundReactionMe: \"#4e9ad1\",\n      borderStyleReactionMe: \"none\",\n      backgroundReactionHoverMe: \"#4e9ad1\",\n      borderStyleReactionHoverMe: \"none\",\n      colorReactionCounterMe: \"#fff\",\n      backgroundAudioRecord: \"#eb4034\",\n      backgroundAudioLine: \"rgba(255, 255, 255, 0.15)\",\n      backgroundAudioProgress: \"#b7d4d3\",\n      backgroundAudioProgressSelector: \"#b7d4d3\",\n      colorFileExtension: \"#a2a5a8\"\n    },\n    markdown: {\n      background: \"rgba(239, 239, 239, 0.7)\",\n      border: \"rgba(212, 212, 212, 0.9)\",\n      color: \"#e01e5a\",\n      colorMulti: \"#0a0a0a\"\n    },\n    room: {\n      colorUsername: \"#fff\",\n      colorMessage: \"#6c7278\",\n      colorTimestamp: \"#6c7278\",\n      colorStateOnline: \"#4caf50\",\n      colorStateOffline: \"#596269\",\n      backgroundCounterBadge: \"#1976d2\",\n      colorCounterBadge: \"#fff\"\n    },\n    emoji: {\n      background: \"#343740\"\n    },\n    icons: {\n      search: \"#596269\",\n      add: \"#fff\",\n      toggle: \"#fff\",\n      menu: \"#fff\",\n      close: \"#9ca6af\",\n      closeImage: \"#fff\",\n      file: \"#1976d2\",\n      paperclip: \"#fff\",\n      closeOutline: \"#fff\",\n      closePreview: \"#fff\",\n      send: \"#fff\",\n      sendDisabled: \"#646a70\",\n      emoji: \"#fff\",\n      emojiReaction: \"#fff\",\n      document: \"#1976d2\",\n      pencil: \"#ebedf2\",\n      checkmark: \"#ebedf2\",\n      checkmarkSeen: \"#f0d90a\",\n      eye: \"#fff\",\n      dropdownMessage: \"#fff\",\n      dropdownMessageBackground: \"rgba(0, 0, 0, 0.25)\",\n      dropdownRoom: \"#fff\",\n      dropdownScroll: \"#0a0a0a\",\n      microphone: \"#fff\",\n      audioPlay: \"#b7d4d3\",\n      audioPause: \"#b7d4d3\",\n      audioCancel: \"#eb4034\",\n      audioConfirm: \"#1ba65b\"\n    }\n  }\n};\nconst cssThemeVars = ({\n  general,\n  container,\n  header,\n  footer,\n  sidemenu,\n  content: content2,\n  dropdown,\n  message,\n  markdown: markdown2,\n  room,\n  emoji,\n  icons\n}) => {\n  return {\n    \"--chat-color\": general.color,\n    \"--chat-color-button-clear\": general.colorButtonClear,\n    \"--chat-color-button\": general.colorButton,\n    \"--chat-bg-color-button\": general.backgroundColorButton,\n    \"--chat-bg-color-input\": general.backgroundInput,\n    \"--chat-color-spinner\": general.colorSpinner,\n    \"--chat-color-placeholder\": general.colorPlaceholder,\n    \"--chat-color-caret\": general.colorCaret,\n    \"--chat-border-style\": general.borderStyle,\n    \"--chat-bg-scroll-icon\": general.backgroundScrollIcon,\n    \"--chat-container-border\": container.border,\n    \"--chat-container-border-radius\": container.borderRadius,\n    \"--chat-container-box-shadow\": container.boxShadow,\n    \"--chat-header-bg-color\": header.background,\n    \"--chat-header-color-name\": header.colorRoomName,\n    \"--chat-header-color-info\": header.colorRoomInfo,\n    \"--chat-footer-bg-color\": footer.background,\n    \"--chat-border-style-input\": footer.borderStyleInput,\n    \"--chat-border-color-input-selected\": footer.borderInputSelected,\n    \"--chat-footer-bg-color-reply\": footer.backgroundReply,\n    \"--chat-footer-bg-color-tag-active\": footer.backgroundTagActive,\n    \"--chat-footer-bg-color-tag\": footer.backgroundTag,\n    \"--chat-content-bg-color\": content2.background,\n    \"--chat-sidemenu-bg-color\": sidemenu.background,\n    \"--chat-sidemenu-bg-color-hover\": sidemenu.backgroundHover,\n    \"--chat-sidemenu-bg-color-active\": sidemenu.backgroundActive,\n    \"--chat-sidemenu-color-active\": sidemenu.colorActive,\n    \"--chat-sidemenu-border-color-search\": sidemenu.borderColorSearch,\n    \"--chat-dropdown-bg-color\": dropdown.background,\n    \"--chat-dropdown-bg-color-hover\": dropdown.backgroundHover,\n    \"--chat-message-bg-color\": message.background,\n    \"--chat-message-bg-color-me\": message.backgroundMe,\n    \"--chat-message-color-started\": message.colorStarted,\n    \"--chat-message-bg-color-deleted\": message.backgroundDeleted,\n    \"--chat-message-bg-color-selected\": message.backgroundSelected,\n    \"--chat-message-color-deleted\": message.colorDeleted,\n    \"--chat-message-color-username\": message.colorUsername,\n    \"--chat-message-color-timestamp\": message.colorTimestamp,\n    \"--chat-message-bg-color-date\": message.backgroundDate,\n    \"--chat-message-color-date\": message.colorDate,\n    \"--chat-message-bg-color-system\": message.backgroundSystem,\n    \"--chat-message-color-system\": message.colorSystem,\n    \"--chat-message-color\": message.color,\n    \"--chat-message-bg-color-media\": message.backgroundMedia,\n    \"--chat-message-bg-color-reply\": message.backgroundReply,\n    \"--chat-message-color-reply-username\": message.colorReplyUsername,\n    \"--chat-message-color-reply-content\": message.colorReply,\n    \"--chat-message-color-tag\": message.colorTag,\n    \"--chat-message-bg-color-image\": message.backgroundImage,\n    \"--chat-message-color-new-messages\": message.colorNewMessages,\n    \"--chat-message-bg-color-scroll-counter\": message.backgroundScrollCounter,\n    \"--chat-message-color-scroll-counter\": message.colorScrollCounter,\n    \"--chat-message-bg-color-reaction\": message.backgroundReaction,\n    \"--chat-message-border-style-reaction\": message.borderStyleReaction,\n    \"--chat-message-bg-color-reaction-hover\": message.backgroundReactionHover,\n    \"--chat-message-border-style-reaction-hover\": message.borderStyleReactionHover,\n    \"--chat-message-color-reaction-counter\": message.colorReactionCounter,\n    \"--chat-message-bg-color-reaction-me\": message.backgroundReactionMe,\n    \"--chat-message-border-style-reaction-me\": message.borderStyleReactionMe,\n    \"--chat-message-bg-color-reaction-hover-me\": message.backgroundReactionHoverMe,\n    \"--chat-message-border-style-reaction-hover-me\": message.borderStyleReactionHoverMe,\n    \"--chat-message-color-reaction-counter-me\": message.colorReactionCounterMe,\n    \"--chat-message-bg-color-audio-record\": message.backgroundAudioRecord,\n    \"--chat-message-bg-color-audio-line\": message.backgroundAudioLine,\n    \"--chat-message-bg-color-audio-progress\": message.backgroundAudioProgress,\n    \"--chat-message-bg-color-audio-progress-selector\": message.backgroundAudioProgressSelector,\n    \"--chat-message-color-file-extension\": message.colorFileExtension,\n    \"--chat-markdown-bg\": markdown2.background,\n    \"--chat-markdown-border\": markdown2.border,\n    \"--chat-markdown-color\": markdown2.color,\n    \"--chat-markdown-color-multi\": markdown2.colorMulti,\n    \"--chat-room-color-username\": room.colorUsername,\n    \"--chat-room-color-message\": room.colorMessage,\n    \"--chat-room-color-timestamp\": room.colorTimestamp,\n    \"--chat-room-color-online\": room.colorStateOnline,\n    \"--chat-room-color-offline\": room.colorStateOffline,\n    \"--chat-room-bg-color-badge\": room.backgroundCounterBadge,\n    \"--chat-room-color-badge\": room.colorCounterBadge,\n    \"--chat-emoji-bg-color\": emoji.background,\n    \"--chat-icon-color-search\": icons.search,\n    \"--chat-icon-color-add\": icons.add,\n    \"--chat-icon-color-toggle\": icons.toggle,\n    \"--chat-icon-color-menu\": icons.menu,\n    \"--chat-icon-color-close\": icons.close,\n    \"--chat-icon-color-close-image\": icons.closeImage,\n    \"--chat-icon-color-file\": icons.file,\n    \"--chat-icon-color-paperclip\": icons.paperclip,\n    \"--chat-icon-color-close-outline\": icons.closeOutline,\n    \"--chat-icon-color-close-preview\": icons.closePreview,\n    \"--chat-icon-color-send\": icons.send,\n    \"--chat-icon-color-send-disabled\": icons.sendDisabled,\n    \"--chat-icon-color-emoji\": icons.emoji,\n    \"--chat-icon-color-emoji-reaction\": icons.emojiReaction,\n    \"--chat-icon-color-document\": icons.document,\n    \"--chat-icon-color-pencil\": icons.pencil,\n    \"--chat-icon-color-checkmark\": icons.checkmark,\n    \"--chat-icon-color-checkmark-seen\": icons.checkmarkSeen,\n    \"--chat-icon-color-eye\": icons.eye,\n    \"--chat-icon-color-dropdown-message\": icons.dropdownMessage,\n    \"--chat-icon-bg-dropdown-message\": icons.dropdownMessageBackground,\n    \"--chat-icon-color-dropdown-room\": icons.dropdownRoom,\n    \"--chat-icon-color-dropdown-scroll\": icons.dropdownScroll,\n    \"--chat-icon-color-microphone\": icons.microphone,\n    \"--chat-icon-color-audio-play\": icons.audioPlay,\n    \"--chat-icon-color-audio-pause\": icons.audioPause,\n    \"--chat-icon-color-audio-cancel\": icons.audioCancel,\n    \"--chat-icon-color-audio-confirm\": icons.audioConfirm\n  };\n};\nvar _style_0 = '.vac-fade-spinner-enter-from{opacity:0}.vac-fade-spinner-enter-active{transition:opacity .8s}.vac-fade-spinner-leave-active{transition:opacity .2s;opacity:0}.vac-fade-image-enter-from{opacity:0}.vac-fade-image-enter-active{transition:opacity 1s}.vac-fade-image-leave-active{transition:opacity .5s;opacity:0}.vac-fade-message-enter-from{opacity:0}.vac-fade-message-enter-active{transition:opacity .5s}.vac-fade-message-leave-active{transition:opacity .2s;opacity:0}.vac-slide-left-enter-active,.vac-slide-right-enter-active{transition:all .3s ease;transition-property:transform,opacity}.vac-slide-left-leave-active,.vac-slide-right-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)!important;transition-property:transform,opacity}.vac-slide-left-enter-from,.vac-slide-left-leave-to{transform:translate(10px);opacity:0}.vac-slide-right-enter-from,.vac-slide-right-leave-to{transform:translate(-10px);opacity:0}.vac-slide-up-enter-active{transition:all .3s ease}.vac-slide-up-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.vac-slide-up-enter-from,.vac-slide-up-leave-to{transform:translateY(10px);opacity:0}.vac-bounce-enter-active{animation:vac-bounce-in .5s}.vac-bounce-leave-active{animation:vac-bounce-in .3s reverse}@keyframes vac-bounce-in{0%{transform:scale(0)}50%{transform:scale(1.05)}to{transform:scale(1)}}.vac-fade-preview-enter{opacity:0}.vac-fade-preview-enter-active{transition:opacity .1s}.vac-fade-preview-leave-active{transition:opacity .2s;opacity:0}.vac-bounce-preview-enter-active{animation:vac-bounce-image-in .4s}.vac-bounce-preview-leave-active{animation:vac-bounce-image-in .3s reverse}@keyframes vac-bounce-image-in{0%{transform:scale(.6)}to{transform:scale(1)}}.vac-menu-list{border-radius:4px;display:block;cursor:pointer;background:var(--chat-dropdown-bg-color);padding:6px 0}.vac-menu-list :hover{background:var(--chat-dropdown-bg-color-hover);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-list :not(:hover){transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;min-height:30px;padding:5px 16px;position:relative;white-space:nowrap;line-height:30px}.vac-menu-options{position:absolute;right:10px;top:20px;z-index:9999;min-width:150px;display:inline-block;border-radius:4px;font-size:14px;color:var(--chat-color);overflow-y:auto;overflow-x:hidden;contain:content;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-app-border{border:var(--chat-border-style)}.vac-app-border-t{border-top:var(--chat-border-style)}.vac-app-border-r{border-right:var(--chat-border-style)}.vac-app-border-b{border-bottom:var(--chat-border-style)}.vac-app-box-shadow{transition:all .5s;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-item-clickable{cursor:pointer}.vac-vertical-center{display:flex;align-items:center;height:100%}.vac-vertical-center .vac-vertical-container{width:100%;text-align:center}.vac-svg-button{max-height:30px;display:flex;cursor:pointer;transition:all .2s}.vac-svg-button:hover{transform:scale(1.1);opacity:.7}.vac-avatar{background-size:cover;background-position:center center;background-repeat:no-repeat;background-color:#ddd;height:42px;width:42px;min-height:42px;min-width:42px;margin-right:15px;border-radius:50%}.vac-blur-loading{filter:blur(3px)}.vac-badge-counter{height:13px;width:auto;min-width:13px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:3px;font-size:11px;font-weight:500}.vac-text-ellipsis{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-text-tag{color:var(--chat-message-color-tag);cursor:pointer}.vac-file-container{display:flex;align-content:center;justify-content:center;flex-wrap:wrap;text-align:center;background:var(--chat-bg-color-input);border:var(--chat-border-style-input);border-radius:4px;padding:10px}.vac-file-container svg{height:28px;width:28px}.vac-file-container .vac-text-extension{font-size:12px;color:var(--chat-message-color-file-extension);margin-top:-2px}.markdown p{margin:0}.markdown ol{display:flex;flex-direction:column;list-style-position:inside}.markdown ul{display:flex;flex-direction:column}.markdown code{display:block;font-size:12px;color:var(--chat-markdown-color-multi);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:4px 0;padding:7px}.markdown p code{display:inline-block;font-size:12px;color:var(--chat-markdown-color);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:2px 0;padding:2px 3px}.vac-card-window{width:100%;display:block;max-width:100%;background:var(--chat-content-bg-color);color:var(--chat-color);overflow-wrap:break-word;white-space:normal;border:var(--chat-container-border);border-radius:var(--chat-container-border-radius);box-shadow:var(--chat-container-box-shadow);-webkit-tap-highlight-color:transparent}.vac-card-window *{font-family:inherit}.vac-card-window a{color:#0d579c;font-weight:500}.vac-card-window .vac-chat-container{height:100%;display:flex}.vac-card-window .vac-chat-container input{min-width:10px}.vac-card-window .vac-chat-container textarea,.vac-card-window .vac-chat-container input[type=text],.vac-card-window .vac-chat-container input[type=search]{-webkit-appearance:none}.vac-media-preview{position:fixed;top:0;left:0;z-index:99;width:100vw;height:100vh;display:flex;align-items:center;background-color:#000c;outline:none}.vac-media-preview .vac-media-preview-container{height:calc(100% - 140px);width:calc(100% - 80px);padding:70px 40px;margin:0 auto}.vac-media-preview .vac-image-preview{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:center}.vac-media-preview video{width:100%;height:100%}.vac-media-preview .vac-svg-button{position:absolute;top:30px;right:30px;transform:scale(1.4)}@media only screen and (max-width: 768px){.vac-media-preview .vac-svg-button{top:20px;right:20px;transform:scale(1.2)}.vac-media-preview .vac-media-preview-container{width:calc(100% - 40px);padding:70px 20px}}.vac-col-messages{position:relative;height:100%;flex:1;overflow:hidden;display:flex;flex-flow:column}.vac-col-messages .vac-container-center{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.vac-col-messages .vac-room-empty{font-size:14px;color:#9ca6af;font-style:italic;line-height:20px;white-space:pre-line}.vac-col-messages .vac-room-empty div{padding:0 10%}.vac-col-messages .vac-container-scroll{background:var(--chat-content-bg-color);flex:1;overflow-y:auto;margin-right:1px;margin-top:65px;-webkit-overflow-scrolling:touch}.vac-col-messages .vac-container-scroll.vac-scroll-smooth{scroll-behavior:smooth}.vac-col-messages .vac-messages-container{padding:0 5px 5px}.vac-col-messages .vac-text-started{font-size:14px;color:var(--chat-message-color-started);font-style:italic;text-align:center;margin-top:25px;margin-bottom:20px}.vac-col-messages .vac-icon-scroll{position:absolute;bottom:80px;right:20px;padding:8px;background:var(--chat-bg-scroll-icon);border-radius:50%;box-shadow:0 1px 1px -1px #0003,0 1px 1px #00000024,0 1px 2px #0000001f;display:flex;cursor:pointer;z-index:10}.vac-col-messages .vac-icon-scroll svg{height:25px;width:25px}.vac-col-messages .vac-messages-count{position:absolute;top:-8px;left:11px;background-color:var(--chat-message-bg-color-scroll-counter);color:var(--chat-message-color-scroll-counter)}.vac-col-messages .vac-messages-hidden{opacity:0}@media only screen and (max-width: 768px){.vac-col-messages .vac-container-scroll{margin-top:50px}.vac-col-messages .vac-text-started{margin-top:20px}.vac-col-messages .vac-icon-scroll{bottom:70px}}.vac-room-header{position:absolute;display:flex;align-items:center;height:64px;width:100%;z-index:10;margin-right:1px;background:var(--chat-header-bg-color);border-top-right-radius:var(--chat-container-border-radius)}.vac-room-header .vac-room-wrapper{display:flex;align-items:center;min-width:0;height:100%;width:100%;padding:0 16px}.vac-room-header .vac-toggle-button{margin-right:15px}.vac-room-header .vac-toggle-button svg{height:26px;width:26px}.vac-room-header .vac-rotate-icon{transform:rotate(180deg)!important}.vac-room-header .vac-rotate-icon-init{transform:rotate(360deg)}.vac-room-header .vac-info-wrapper,.vac-room-header .vac-room-selection{display:flex;align-items:center;min-width:0;width:100%;height:100%}.vac-room-header .vac-room-selection .vac-selection-button{padding:8px 16px;color:var(--chat-color-button);background-color:var(--chat-bg-color-button);border-radius:4px;margin-right:10px;cursor:pointer;transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-button:hover{opacity:.7}.vac-room-header .vac-room-selection .vac-selection-button:active{opacity:.9}.vac-room-header .vac-room-selection .vac-selection-button .vac-selection-button-count{margin-left:6px;opacity:.9}.vac-room-header .vac-room-selection .vac-selection-cancel{display:flex;align-items:center;margin-left:auto;white-space:nowrap;color:var(--chat-color-button-clear);transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-cancel:hover{opacity:.7}.vac-room-header .vac-room-name{font-size:17px;font-weight:500;line-height:22px;color:var(--chat-header-color-name)}.vac-room-header .vac-room-info{font-size:13px;line-height:18px;color:var(--chat-header-color-info)}.vac-room-header .vac-room-options{margin-left:auto}@media only screen and (max-width: 768px){.vac-room-header{height:50px}.vac-room-header .vac-room-wrapper{padding:0 10px}.vac-room-header .vac-room-name{font-size:16px;line-height:22px}.vac-room-header .vac-room-info{font-size:12px;line-height:16px}.vac-room-header .vac-avatar{height:37px;width:37px;min-height:37px;min-width:37px}}.vac-room-footer{width:100%;border-bottom-right-radius:4px;z-index:10}.vac-box-footer{display:flex;position:relative;background:var(--chat-footer-bg-color);padding:10px 8px}.vac-textarea{max-height:300px;overflow-y:auto;height:20px;width:100%;line-height:20px;outline:0;resize:none;border-radius:20px;padding:12px 16px;box-sizing:content-box;font-size:16px;background:var(--chat-bg-color-input);color:var(--chat-color);caret-color:var(--chat-color-caret);border:var(--chat-border-style-input)}.vac-textarea::placeholder{color:var(--chat-color-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-textarea-outline{border:1px solid var(--chat-border-color-input-selected);box-shadow:inset 0 0 0 1px var(--chat-border-color-input-selected)}.vac-icon-textarea,.vac-icon-textarea-left{display:flex;align-items:center}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea{margin-left:5px}.vac-icon-textarea-left{display:flex;align-items:center;margin-right:5px}.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea-left .vac-icon-microphone{fill:var(--chat-icon-color-microphone);margin:0 7px}.vac-icon-textarea-left .vac-dot-audio-record{height:15px;width:15px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-record);animation:vac-scaling .8s ease-in-out infinite alternate}@keyframes vac-scaling{0%{transform:scale(1);opacity:.4}to{transform:scale(1.1);opacity:1}}.vac-icon-textarea-left .vac-dot-audio-record-time{font-size:16px;color:var(--chat-color);margin-left:8px;width:45px}.vac-icon-textarea-left .vac-icon-audio-stop,.vac-icon-textarea-left .vac-icon-audio-confirm{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop svg,.vac-icon-textarea-left .vac-icon-audio-confirm svg{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop{margin-right:20px}.vac-icon-textarea-left .vac-icon-audio-stop #vac-icon-close-outline{fill:var(--chat-icon-color-audio-cancel)}.vac-icon-textarea-left .vac-icon-audio-confirm{margin-right:3px;margin-left:12px}.vac-icon-textarea-left .vac-icon-audio-confirm #vac-icon-checkmark{fill:var(--chat-icon-color-audio-confirm)}.vac-send-disabled,.vac-send-disabled svg{cursor:none!important;pointer-events:none!important;transform:none!important}@media only screen and (max-width: 768px){.vac-room-footer{width:100%}.vac-box-footer{padding:7px 2px 7px 7px}.vac-box-footer.vac-box-footer-border{border-top:var(--chat-border-style-input)}.vac-textarea{padding:7px;line-height:18px}.vac-textarea::placeholder{color:transparent}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 5px!important}}@media only screen and (max-height: 768px){.vac-textarea{max-height:120px}}.vac-emojis-container{width:calc(100% - 16px);padding:10px 8px;background:var(--chat-footer-bg-color);display:flex;align-items:center;overflow:auto}.vac-emojis-container .vac-emoji-element{padding:0 8px;font-size:30px;border-radius:4px;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-emojis-container .vac-emoji-element-active{background:var(--chat-footer-bg-color-tag-active)}@media only screen and (max-width: 768px){.vac-emojis-container{width:calc(100% - 10px);padding:7px 5px}.vac-emojis-container .vac-emoji-element{padding:0 7px;font-size:26px}}.vac-reply-container{display:flex;padding:10px 10px 0;background:var(--chat-footer-bg-color);align-items:center;width:calc(100% - 20px)}.vac-reply-container .vac-reply-box{width:100%;overflow:hidden;background:var(--chat-footer-bg-color-reply);border-radius:4px;padding:8px 10px}.vac-reply-container .vac-reply-info{overflow:hidden}.vac-reply-container .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-container .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content);white-space:pre-line}.vac-reply-container .vac-icon-reply{margin-left:10px}.vac-reply-container .vac-icon-reply svg{height:20px;width:20px}.vac-reply-container .vac-image-reply{max-height:100px;max-width:200px;margin:4px 10px 0 0;border-radius:4px}.vac-reply-container .vac-audio-reply{margin-right:10px}.vac-reply-container .vac-file-container{max-width:80px}@media only screen and (max-width: 768px){.vac-reply-container{padding:5px 8px;width:calc(100% - 16px)}}.vac-room-files-container{display:flex;align-items:center;padding:10px 6px 0;background:var(--chat-footer-bg-color)}.vac-room-files-container .vac-files-box{display:flex;overflow:auto;width:calc(100% - 30px)}.vac-room-files-container video{height:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-files-container .vac-icon-close{margin-left:auto}.vac-room-files-container .vac-icon-close svg{height:20px;width:20px}@media only screen and (max-width: 768px){.vac-files-container{padding:6px 4px 4px 2px}}.vac-room-file-container{display:flex;position:relative;margin:0 4px}.vac-room-file-container .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:100px;width:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-file-container .vac-file-container{height:80px;width:80px}.vac-room-file-container .vac-icon-remove{position:absolute;top:6px;left:6px;z-index:10}.vac-room-file-container .vac-icon-remove svg{height:20px;width:20px;border-radius:50%}.vac-room-file-container .vac-icon-remove:before{content:\" \";position:absolute;width:100%;height:100%;background:rgba(0,0,0,.5);border-radius:50%;z-index:-1}.vac-tags-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-tags-container .vac-tags-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-tags-container .vac-tags-box-active{background:var(--chat-footer-bg-color-tag-active)}.vac-tags-container .vac-tags-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-tags-container .vac-tags-avatar{height:34px;width:34px;min-height:34px;min-width:34px}.vac-tags-container .vac-tags-username{font-size:14px}@media only screen and (max-width: 768px){.vac-tags-container .vac-tags-box{height:50px}.vac-tags-container .vac-tags-info{padding:0 12px}}.vac-template-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-template-container .vac-template-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-template-container .vac-template-active{background:var(--chat-footer-bg-color-tag-active)}.vac-template-container .vac-template-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-template-container .vac-template-tag{font-size:14px;font-weight:700;margin-right:10px}.vac-template-container .vac-template-text{font-size:14px}@media only screen and (max-width: 768px){.vac-template-container .vac-template-box{height:50px}.vac-template-container .vac-template-info{padding:0 12px}}.vac-rooms-container{display:flex;flex-flow:column;flex:0 0 25%;min-width:260px;max-width:500px;position:relative;background:var(--chat-sidemenu-bg-color);height:100%;border-top-left-radius:var(--chat-container-border-radius);border-bottom-left-radius:var(--chat-container-border-radius)}.vac-rooms-container.vac-rooms-container-full{flex:0 0 100%;max-width:100%}.vac-rooms-container .vac-rooms-empty{font-size:14px;color:#9ca6af;font-style:italic;text-align:center;margin:40px 0;line-height:20px;white-space:pre-line}.vac-rooms-container .vac-room-list{flex:1;position:relative;max-width:100%;padding:0 10px 5px;overflow-y:auto}.vac-rooms-container .vac-room-item{border-radius:8px;align-items:center;display:flex;flex:1 1 100%;margin-bottom:5px;padding:0 14px;position:relative;min-height:71px;transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-rooms-container .vac-room-item:hover{background:var(--chat-sidemenu-bg-color-hover)}.vac-rooms-container .vac-room-item:not(.vac-room-selected){cursor:pointer}.vac-rooms-container .vac-room-selected{color:var(--chat-sidemenu-color-active)!important;background:var(--chat-sidemenu-bg-color-active)!important}.vac-rooms-container .vac-room-selected:hover{background:var(--chat-sidemenu-bg-color-active)!important}@media only screen and (max-width: 768px){.vac-rooms-container .vac-room-list{padding:0 7px 5px}.vac-rooms-container .vac-room-item{min-height:60px;padding:0 8px}}.vac-room-container{display:flex;flex:1;align-items:center;width:100%}.vac-room-container .vac-name-container{flex:1}.vac-room-container .vac-title-container{display:flex;align-items:center;line-height:25px}.vac-room-container .vac-state-circle{width:9px;height:9px;border-radius:50%;background-color:var(--chat-room-color-offline);margin-right:6px;transition:.3s}.vac-room-container .vac-state-online{background-color:var(--chat-room-color-online)}.vac-room-container .vac-room-name{flex:1;color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-text-date{margin-left:5px;font-size:11px;color:var(--chat-room-color-timestamp)}.vac-room-container .vac-text-last{display:flex;align-items:center;font-size:12px;line-height:19px;color:var(--chat-room-color-message)}.vac-room-container .vac-message-new{color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-icon-check{display:flex;vertical-align:middle;height:14px;width:14px;margin-top:-2px;margin-right:2px}.vac-room-container .vac-icon-microphone{height:15px;width:15px;vertical-align:middle;margin:-3px 1px 0 -2px;fill:var(--chat-room-color-message)}.vac-room-container .vac-room-options-container{display:flex;margin-left:auto}.vac-room-container .vac-room-badge{background-color:var(--chat-room-bg-color-badge);color:var(--chat-room-color-badge);margin-left:5px}.vac-room-container .vac-list-room-options{height:19px;width:19px;align-items:center;margin-left:5px}.vac-box-empty{margin-top:10px}@media only screen and (max-width: 768px){.vac-box-empty{margin-top:7px}}.vac-box-search{position:sticky;display:flex;align-items:center;height:64px;padding:0 15px}.vac-box-search .vac-icon-search{display:flex;position:absolute;left:30px}.vac-box-search .vac-icon-search svg{width:18px;height:18px}.vac-box-search .vac-input{height:38px;width:100%;background:var(--chat-bg-color-input);color:var(--chat-color);font-size:15px;outline:0;caret-color:var(--chat-color-caret);padding:10px 10px 10px 40px;border:1px solid var(--chat-sidemenu-border-color-search);border-radius:20px}.vac-box-search .vac-input::placeholder{color:var(--chat-color-placeholder)}.vac-box-search .vac-add-icon{margin-left:auto;padding-left:10px}@media only screen and (max-width: 768px){.vac-box-search{height:58px}}.vac-message-wrapper .vac-card-info{border-radius:4px;text-align:center;margin:10px auto;font-size:12px;padding:4px;display:block;overflow-wrap:break-word;position:relative;white-space:normal;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-card-date{max-width:150px;font-weight:500;text-transform:uppercase;color:var(--chat-message-color-date);background-color:var(--chat-message-bg-color-date)}.vac-message-wrapper .vac-card-system{max-width:250px;padding:8px 4px;color:var(--chat-message-color-system);background-color:var(--chat-message-bg-color-system)}.vac-message-wrapper .vac-line-new{color:var(--chat-message-color-new-messages);position:relative;text-align:center;font-size:13px;padding:10px 0}.vac-message-wrapper .vac-line-new:after,.vac-message-wrapper .vac-line-new:before{border-top:1px solid var(--chat-message-color-new-messages);content:\"\";left:0;position:absolute;top:50%;width:calc(50% - 60px)}.vac-message-wrapper .vac-line-new:before{left:auto;right:0}.vac-message-wrapper .vac-message-box{display:flex;flex:0 0 50%;max-width:50%;justify-content:flex-start;line-height:1.4}.vac-message-wrapper .vac-avatar{height:28px;width:28px;min-height:28px;min-width:28px;margin:0 0 2px;align-self:flex-end}.vac-message-wrapper .vac-avatar-current-offset{margin-right:28px}.vac-message-wrapper .vac-avatar-offset{margin-left:28px}.vac-message-wrapper .vac-failure-container{position:relative;align-self:flex-end;height:20px;width:20px;margin:0 0 2px -4px;border-radius:50%;background-color:#f44336}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:6px}.vac-message-wrapper .vac-failure-container .vac-failure-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:15px;font-weight:700}.vac-message-wrapper .vac-message-container{position:relative;padding:2px 10px;align-items:end;min-width:100px;box-sizing:content-box}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-offset-current{margin-left:50%;justify-content:flex-end}.vac-message-wrapper .vac-message-card{background-color:var(--chat-message-bg-color);color:var(--chat-message-color);border-radius:8px;font-size:14px;padding:6px 9px 3px;white-space:pre-line;max-width:100%;-webkit-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);will-change:box-shadow;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-message-highlight{box-shadow:0 1px 2px -1px #0000001a,0 1px 2px -1px #0000001c,0 1px 5px -1px #0000001c}.vac-message-wrapper .vac-message-current{background-color:var(--chat-message-bg-color-me)!important}.vac-message-wrapper .vac-message-deleted{color:var(--chat-message-color-deleted)!important;font-size:13px!important;font-style:italic!important;background-color:var(--chat-message-bg-color-deleted)!important}.vac-message-wrapper .vac-message-selected{background-color:var(--chat-message-bg-color-selected)!important;transition:background-color .2s}.vac-message-wrapper .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:250px;width:250px;max-width:100%;border-radius:4px;margin:4px auto 5px;transition:.4s filter linear}.vac-message-wrapper .vac-text-username{font-size:13px;color:var(--chat-message-color-username);margin-bottom:2px}.vac-message-wrapper .vac-username-reply{margin-bottom:5px}.vac-message-wrapper .vac-text-timestamp{font-size:10px;color:var(--chat-message-color-timestamp);text-align:right}.vac-message-wrapper .vac-progress-time{float:left;margin:-2px 0 0 40px;color:var(--chat-color);font-size:12px}.vac-message-wrapper .vac-icon-edited{-webkit-box-align:center;align-items:center;display:-webkit-inline-box;display:inline-flex;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;vertical-align:middle;margin:0 4px 2px}.vac-message-wrapper .vac-icon-edited svg{height:12px;width:12px}.vac-message-wrapper .vac-icon-check{height:14px;width:14px;vertical-align:middle;margin:-3px -3px 0 3px}@media only screen and (max-width: 768px){.vac-message-wrapper .vac-message-container{padding:2px 3px 1px}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-message-box{flex:0 0 80%;max-width:80%}.vac-message-wrapper .vac-avatar{height:25px;width:25px;min-height:25px;min-width:25px;margin:0 6px 1px 0}.vac-message-wrapper .vac-avatar.vac-avatar-current{margin:0 0 1px 6px}.vac-message-wrapper .vac-avatar-current-offset{margin-right:31px}.vac-message-wrapper .vac-avatar-offset{margin-left:31px}.vac-message-wrapper .vac-failure-container{margin-left:2px}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:0}.vac-message-wrapper .vac-offset-current{margin-left:20%}.vac-message-wrapper .vac-progress-time{margin-left:37px}}.vac-audio-player{display:flex;margin:8px 0 5px}.vac-audio-player .vac-svg-button{max-width:18px;margin-left:7px}@media only screen and (max-width: 768px){.vac-audio-player{margin:4px 0 0}.vac-audio-player .vac-svg-button{max-width:16px;margin-left:5px}}.vac-player-bar{display:flex;align-items:center;max-width:calc(100% - 18px);margin-right:7px;margin-left:20px}.vac-player-bar .vac-player-progress{width:190px}.vac-player-bar .vac-player-progress .vac-line-container{position:relative;height:4px;border-radius:5px;background-color:var(--chat-message-bg-color-audio-line)}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-progress{position:absolute;height:inherit;background-color:var(--chat-message-bg-color-audio-progress);border-radius:inherit}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{position:absolute;top:-5px;margin-left:-7px;height:14px;width:14px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-progress-selector);transition:transform .25s}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot__active{transform:scale(1.2)}@media only screen and (max-width: 768px){.vac-player-bar{margin-right:5px}.vac-player-bar .vac-player-progress .vac-line-container{height:3px}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{height:12px;width:12px;top:-5px;margin-left:-5px}}.vac-message-actions-wrapper .vac-options-container{position:absolute;top:2px;right:10px;height:40px;width:70px;overflow:hidden;border-top-right-radius:8px}.vac-message-actions-wrapper .vac-blur-container{position:absolute;height:100%;width:100%;left:8px;bottom:10px;background:var(--chat-message-bg-color);filter:blur(3px);border-bottom-left-radius:8px}.vac-message-actions-wrapper .vac-options-me{background:var(--chat-message-bg-color-me)}.vac-message-actions-wrapper .vac-message-options{background:var(--chat-icon-bg-dropdown-message);border-radius:50%;position:absolute;top:7px;right:7px}.vac-message-actions-wrapper .vac-message-options svg{height:17px;width:17px;padding:5px;margin:-5px}.vac-message-actions-wrapper .vac-message-emojis{position:absolute;top:6px;right:30px}.vac-message-actions-wrapper .vac-menu-options{right:15px}.vac-message-actions-wrapper .vac-menu-left{right:-118px}@media only screen and (max-width: 768px){.vac-message-actions-wrapper .vac-options-container{right:3px}.vac-message-actions-wrapper .vac-menu-left{right:-50px}}.vac-message-files-container .vac-file-wrapper{position:relative;width:fit-content}.vac-message-files-container .vac-file-wrapper .vac-file-container{height:60px;width:60px;margin:3px 0 5px;cursor:pointer;transition:all .6s}.vac-message-files-container .vac-file-wrapper .vac-file-container:hover{opacity:.85}.vac-message-files-container .vac-file-wrapper .vac-file-container svg{height:30px;width:30px}.vac-message-files-container .vac-file-wrapper .vac-file-container.vac-file-container-progress{background-color:#0000004d}.vac-message-file-container{position:relative;z-index:0}.vac-message-file-container .vac-message-image-container{cursor:pointer}.vac-message-file-container .vac-image-buttons{position:absolute;width:100%;height:100%;border-radius:4px;background:linear-gradient(to bottom,rgba(0,0,0,0) 55%,rgba(0,0,0,.02) 60%,rgba(0,0,0,.05) 65%,rgba(0,0,0,.1) 70%,rgba(0,0,0,.2) 75%,rgba(0,0,0,.3) 80%,rgba(0,0,0,.5) 85%,rgba(0,0,0,.6) 90%,rgba(0,0,0,.7) 95%,rgba(0,0,0,.8) 100%)}.vac-message-file-container .vac-image-buttons svg{height:26px;width:26px}.vac-message-file-container .vac-image-buttons .vac-button-view,.vac-message-file-container .vac-image-buttons .vac-button-download{position:absolute;bottom:6px;left:7px}.vac-message-file-container .vac-image-buttons :first-child{left:40px}.vac-message-file-container .vac-image-buttons .vac-button-view{max-width:18px;bottom:8px}.vac-message-file-container .vac-video-container{width:350px;max-width:100%;margin:4px auto 5px;cursor:pointer}.vac-message-file-container .vac-video-container video{width:100%;height:100%;border-radius:4px}.vac-button-reaction{display:inline-flex;align-items:center;border:var(--chat-message-border-style-reaction);outline:none;background:var(--chat-message-bg-color-reaction);border-radius:4px;margin:4px 2px 0;transition:.3s;padding:0 5px;font-size:18px;line-height:23px}.vac-button-reaction span{font-size:11px;font-weight:500;min-width:7px;color:var(--chat-message-color-reaction-counter)}.vac-button-reaction:hover{border:var(--chat-message-border-style-reaction-hover);background:var(--chat-message-bg-color-reaction-hover);cursor:pointer}.vac-button-reaction.vac-reaction-me{border:var(--chat-message-border-style-reaction-me);background:var(--chat-message-bg-color-reaction-me)}.vac-button-reaction.vac-reaction-me span{color:var(--chat-message-color-reaction-counter-me)}.vac-button-reaction.vac-reaction-me:hover{border:var(--chat-message-border-style-reaction-hover-me);background:var(--chat-message-bg-color-reaction-hover-me)}.vac-reply-message{background:var(--chat-message-bg-color-reply);border-radius:4px;margin:-1px -5px 8px;padding:8px 10px}.vac-reply-message .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-message .vac-image-reply-container{width:70px}.vac-reply-message .vac-image-reply-container .vac-message-image-reply{height:70px;width:70px;margin:4px auto 3px}.vac-reply-message .vac-video-reply-container{width:200px;max-width:100%}.vac-reply-message .vac-video-reply-container video{width:100%;height:100%;border-radius:4px}.vac-reply-message .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content)}.vac-reply-message .vac-file-container{height:60px;width:60px}.vac-emoji-wrapper{position:relative;display:flex}.vac-emoji-wrapper .vac-emoji-reaction svg{height:19px;width:19px}.vac-emoji-wrapper .vac-emoji-picker{position:absolute;z-index:9999;bottom:32px;right:10px;width:300px;padding-top:4px;overflow:scroll;box-sizing:border-box;border-radius:.5rem;background:var(--chat-emoji-bg-color);box-shadow:0 1px 2px -2px #0000001a,0 1px 2px -1px #0000001a,0 1px 2px 1px #0000001a;scrollbar-width:none}.vac-emoji-wrapper .vac-emoji-picker::-webkit-scrollbar{display:none}.vac-emoji-wrapper .vac-emoji-picker.vac-picker-reaction{position:fixed;top:initial;right:initial}.vac-emoji-wrapper .vac-emoji-picker emoji-picker{height:100%;width:100%;--emoji-size: 1.2rem;--background: var(--chat-emoji-bg-color);--emoji-padding: .4rem;--border-color: var(--chat-sidemenu-border-color-search);--button-hover-background: var(--chat-sidemenu-bg-color-hover);--button-active-background: var(--chat-sidemenu-bg-color-hover)}.vac-format-message-wrapper .vac-format-container{display:inline}.vac-format-message-wrapper .vac-icon-deleted{height:14px;width:14px;vertical-align:middle;margin:-2px 2px 0 0;fill:var(--chat-message-color-deleted)}.vac-format-message-wrapper .vac-icon-deleted.vac-icon-deleted-room{margin:-3px 1px 0 0;fill:var(--chat-room-color-message)}.vac-format-message-wrapper .vac-image-link-container{background-color:var(--chat-message-bg-color-media);padding:8px;margin:2px auto;border-radius:4px}.vac-format-message-wrapper .vac-image-link{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:contain;background-position:center center!important;background-repeat:no-repeat!important;height:150px;width:150px;max-width:100%;border-radius:4px;margin:0 auto}.vac-format-message-wrapper .vac-image-link-message{max-width:166px;font-size:12px}.vac-loader-wrapper.vac-container-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-loader-wrapper.vac-container-top{padding:21px}.vac-loader-wrapper.vac-container-top #vac-circle{height:20px;width:20px}.vac-loader-wrapper #vac-circle{margin:auto;height:28px;width:28px;border:3px rgba(0,0,0,.25) solid;border-top:3px var(--chat-color-spinner) solid;border-right:3px var(--chat-color-spinner) solid;border-bottom:3px var(--chat-color-spinner) solid;border-radius:50%;-webkit-animation:vac-spin 1s infinite linear;animation:vac-spin 1s infinite linear}@media only screen and (max-width: 768px){.vac-loader-wrapper #vac-circle{height:24px;width:24px}.vac-loader-wrapper.vac-container-top{padding:18px}.vac-loader-wrapper.vac-container-top #vac-circle{height:16px;width:16px}}@-webkit-keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}#vac-icon-search{fill:var(--chat-icon-color-search)}#vac-icon-add{fill:var(--chat-icon-color-add)}#vac-icon-toggle{fill:var(--chat-icon-color-toggle)}#vac-icon-menu{fill:var(--chat-icon-color-menu)}#vac-icon-close{fill:var(--chat-icon-color-close)}#vac-icon-close-image{fill:var(--chat-icon-color-close-image)}#vac-icon-file{fill:var(--chat-icon-color-file)}#vac-icon-paperclip{fill:var(--chat-icon-color-paperclip)}#vac-icon-close-outline{fill:var(--chat-icon-color-close-outline)}#vac-icon-close-outline-preview{fill:var(--chat-icon-color-close-preview)}#vac-icon-send{fill:var(--chat-icon-color-send)}#vac-icon-send-disabled{fill:var(--chat-icon-color-send-disabled)}#vac-icon-emoji{fill:var(--chat-icon-color-emoji)}#vac-icon-emoji-reaction{fill:var(--chat-icon-color-emoji-reaction)}#vac-icon-document{fill:var(--chat-icon-color-document)}#vac-icon-pencil{fill:var(--chat-icon-color-pencil)}#vac-icon-checkmark,#vac-icon-double-checkmark{fill:var(--chat-icon-color-checkmark)}#vac-icon-checkmark-seen,#vac-icon-double-checkmark-seen{fill:var(--chat-icon-color-checkmark-seen)}#vac-icon-eye{fill:var(--chat-icon-color-eye)}#vac-icon-dropdown-message{fill:var(--chat-icon-color-dropdown-message)}#vac-icon-dropdown-room{fill:var(--chat-icon-color-dropdown-room)}#vac-icon-dropdown-scroll{fill:var(--chat-icon-color-dropdown-scroll)}#vac-icon-audio-play{fill:var(--chat-icon-color-audio-play)}#vac-icon-audio-pause{fill:var(--chat-icon-color-audio-pause)}.vac-progress-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-progress-wrapper circle{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.vac-progress-wrapper .vac-progress-content{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;margin-top:-2px;background-color:#000000b3;border-radius:50%}.vac-progress-wrapper .vac-progress-content .vac-progress-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-weight:700;color:#fff}.vac-progress-wrapper .vac-progress-content .vac-progress-text .vac-progress-pourcent{font-size:9px;font-weight:400}\\n';\nconst _sfc_main = {\n  name: \"ChatContainer\",\n  components: {\n    RoomsList,\n    Room,\n    MediaPreview\n  },\n  props: {\n    height: { type: String, default: \"600px\" },\n    theme: { type: String, default: \"light\" },\n    styles: { type: [Object, String], default: () => ({}) },\n    responsiveBreakpoint: { type: Number, default: 900 },\n    singleRoom: { type: [Boolean, String], default: false },\n    roomsListOpened: { type: [Boolean, String], default: true },\n    textMessages: { type: [Object, String], default: () => ({}) },\n    currentUserId: { type: String, default: \"\" },\n    rooms: { type: [Array, String], default: () => [] },\n    roomsOrder: { type: String, default: \"desc\" },\n    loadingRooms: { type: [Boolean, String], default: false },\n    roomsLoaded: { type: [Boolean, String], default: false },\n    roomId: { type: String, default: null },\n    loadFirstRoom: { type: [Boolean, String], default: true },\n    messages: { type: [Array, String], default: () => [] },\n    messagesLoaded: { type: [Boolean, String], default: false },\n    roomActions: { type: [Array, String], default: () => [] },\n    menuActions: { type: [Array, String], default: () => [] },\n    messageActions: {\n      type: [Array, String],\n      default: () => [\n        { name: \"replyMessage\", title: \"Reply\" },\n        { name: \"editMessage\", title: \"Edit Message\", onlyMe: true },\n        { name: \"deleteMessage\", title: \"Delete Message\", onlyMe: true },\n        { name: \"selectMessages\", title: \"Select\" }\n      ]\n    },\n    messageSelectionActions: { type: [Array, String], default: () => [] },\n    autoScroll: {\n      type: [Object, String],\n      default: () => {\n        return {\n          send: {\n            new: true,\n            newAfterScrollUp: true\n          },\n          receive: {\n            new: true,\n            newAfterScrollUp: false\n          }\n        };\n      }\n    },\n    customSearchRoomEnabled: { type: [Boolean, String], default: false },\n    showSearch: { type: [Boolean, String], default: true },\n    showAddRoom: { type: [Boolean, String], default: true },\n    showSendIcon: { type: [Boolean, String], default: true },\n    showFiles: { type: [Boolean, String], default: true },\n    showAudio: { type: [Boolean, String], default: true },\n    audioBitRate: { type: Number, default: 128 },\n    audioSampleRate: { type: Number, default: 44100 },\n    showEmojis: { type: [Boolean, String], default: true },\n    showReactionEmojis: { type: [Boolean, String], default: true },\n    showNewMessagesDivider: { type: [Boolean, String], default: true },\n    showFooter: { type: [Boolean, String], default: true },\n    textFormatting: {\n      type: [Object, String],\n      default: () => ({\n        disabled: false\n      })\n    },\n    linkOptions: {\n      type: [Object, String],\n      default: () => ({ disabled: false, target: \"_blank\", rel: null })\n    },\n    roomInfoEnabled: { type: [Boolean, String], default: false },\n    textareaActionEnabled: { type: [Boolean, String], default: false },\n    textareaAutoFocus: { type: [Boolean, String], default: true },\n    userTagsEnabled: { type: [Boolean, String], default: true },\n    emojisSuggestionEnabled: { type: [Boolean, String], default: true },\n    roomMessage: { type: String, default: \"\" },\n    scrollDistance: { type: Number, default: 60 },\n    acceptedFiles: { type: String, default: \"*\" },\n    captureFiles: { type: String, default: \"\" },\n    multipleFiles: { type: [Boolean, String], default: true },\n    templatesText: { type: [Array, String], default: () => [] },\n    mediaPreviewEnabled: { type: [Boolean, String], default: true },\n    usernameOptions: {\n      type: [Object, String],\n      default: () => ({ minUsers: 3, currentUser: false })\n    },\n    emojiDataSource: { type: String, default: void 0 }\n  },\n  emits: [\n    \"toggle-rooms-list\",\n    \"room-info\",\n    \"fetch-messages\",\n    \"send-message\",\n    \"edit-message\",\n    \"delete-message\",\n    \"open-file\",\n    \"open-user-tag\",\n    \"open-failed-message\",\n    \"menu-action-handler\",\n    \"message-action-handler\",\n    \"send-message-reaction\",\n    \"typing-message\",\n    \"textarea-action-handler\",\n    \"fetch-more-rooms\",\n    \"add-room\",\n    \"search-room\",\n    \"room-action-handler\",\n    \"message-selection-action-handler\"\n  ],\n  data() {\n    return {\n      slots: [],\n      room: {},\n      loadingMoreRooms: false,\n      showRoomsList: true,\n      isMobile: false,\n      showMediaPreview: false,\n      previewFile: {}\n    };\n  },\n  computed: {\n    t() {\n      return {\n        ...locales,\n        ...this.textMessagesCasted\n      };\n    },\n    cssVars() {\n      const defaultStyles = defaultThemeStyles[this.theme];\n      const customStyles = {};\n      Object.keys(defaultStyles).map((key) => {\n        customStyles[key] = {\n          ...defaultStyles[key],\n          ...this.stylesCasted[key] || {}\n        };\n      });\n      return cssThemeVars(customStyles);\n    },\n    orderedRooms() {\n      return this.roomsCasted.slice().sort((a, b) => {\n        const aVal = a.index || 0;\n        const bVal = b.index || 0;\n        if (this.roomsOrder === \"asc\") {\n          return aVal < bVal ? -1 : bVal < aVal ? 1 : 0;\n        }\n        return aVal > bVal ? -1 : bVal > aVal ? 1 : 0;\n      });\n    },\n    singleRoomCasted() {\n      return this.castBoolean(this.singleRoom);\n    },\n    roomsListOpenedCasted() {\n      return this.castBoolean(this.roomsListOpened);\n    },\n    loadingRoomsCasted() {\n      return this.castBoolean(this.loadingRooms);\n    },\n    roomsLoadedCasted() {\n      return this.castBoolean(this.roomsLoaded);\n    },\n    loadFirstRoomCasted() {\n      return this.castBoolean(this.loadFirstRoom);\n    },\n    messagesLoadedCasted() {\n      return this.castBoolean(this.messagesLoaded);\n    },\n    multipleFilesCasted() {\n      return this.castBoolean(this.multipleFiles);\n    },\n    showSearchCasted() {\n      return this.castBoolean(this.showSearch);\n    },\n    showAddRoomCasted() {\n      return this.castBoolean(this.showAddRoom);\n    },\n    showSendIconCasted() {\n      return this.castBoolean(this.showSendIcon);\n    },\n    showFilesCasted() {\n      return this.castBoolean(this.showFiles);\n    },\n    showAudioCasted() {\n      return this.castBoolean(this.showAudio);\n    },\n    showEmojisCasted() {\n      return this.castBoolean(this.showEmojis);\n    },\n    showReactionEmojisCasted() {\n      return this.castBoolean(this.showReactionEmojis);\n    },\n    showNewMessagesDividerCasted() {\n      return this.castBoolean(this.showNewMessagesDivider);\n    },\n    showFooterCasted() {\n      return this.castBoolean(this.showFooter);\n    },\n    roomInfoEnabledCasted() {\n      return this.castBoolean(this.roomInfoEnabled);\n    },\n    textareaActionEnabledCasted() {\n      return this.castBoolean(this.textareaActionEnabled);\n    },\n    textareaAutoFocusCasted() {\n      return this.castBoolean(this.textareaAutoFocus);\n    },\n    userTagsEnabledCasted() {\n      return this.castBoolean(this.userTagsEnabled);\n    },\n    emojisSuggestionEnabledCasted() {\n      return this.castBoolean(this.emojisSuggestionEnabled);\n    },\n    mediaPreviewEnabledCasted() {\n      return this.castBoolean(this.mediaPreviewEnabled);\n    },\n    roomsCasted() {\n      return this.castArray(this.rooms);\n    },\n    messagesCasted() {\n      return this.castArray(this.messages);\n    },\n    roomActionsCasted() {\n      return this.castArray(this.roomActions);\n    },\n    menuActionsCasted() {\n      return this.castArray(this.menuActions);\n    },\n    messageActionsCasted() {\n      return this.castArray(this.messageActions);\n    },\n    messageSelectionActionsCasted() {\n      return this.castArray(this.messageSelectionActions);\n    },\n    templatesTextCasted() {\n      return this.castArray(this.templatesText);\n    },\n    stylesCasted() {\n      return this.castObject(this.styles);\n    },\n    textMessagesCasted() {\n      return this.castObject(this.textMessages);\n    },\n    autoScrollCasted() {\n      return this.castObject(this.autoScroll);\n    },\n    textFormattingCasted() {\n      return this.castObject(this.textFormatting);\n    },\n    linkOptionsCasted() {\n      return this.castObject(this.linkOptions);\n    },\n    usernameOptionsCasted() {\n      return this.castObject(this.usernameOptions);\n    }\n  },\n  watch: {\n    roomsCasted: {\n      immediate: true,\n      deep: true,\n      handler(newVal, oldVal) {\n        if (!newVal[0] || !newVal.find((room) => room.roomId === this.room.roomId)) {\n          this.showRoomsList = true;\n        }\n        if (!this.loadingMoreRooms && this.loadFirstRoomCasted && newVal[0] && (!oldVal || newVal.length !== oldVal.length)) {\n          if (this.roomId) {\n            const room = newVal.find((r) => r.roomId === this.roomId) || {};\n            this.fetchRoom({ room });\n          } else if (!this.isMobile || this.singleRoomCasted) {\n            this.fetchRoom({ room: this.orderedRooms[0] });\n          } else {\n            this.showRoomsList = true;\n          }\n        }\n      }\n    },\n    loadingRoomsCasted(val) {\n      if (val)\n        this.room = {};\n    },\n    roomId: {\n      immediate: true,\n      handler(newVal, oldVal) {\n        if (newVal && !this.loadingRoomsCasted && this.roomsCasted.length) {\n          const room = this.roomsCasted.find((r) => r.roomId === newVal);\n          this.fetchRoom({ room });\n        } else if (oldVal && !newVal) {\n          this.room = {};\n        }\n      }\n    },\n    room(val) {\n      if (!val || Object.entries(val).length === 0)\n        return;\n      roomsValidation(val);\n      val.users.forEach((user) => {\n        partcipantsValidation(user);\n      });\n    },\n    roomsListOpenedCasted: {\n      immediate: true,\n      handler(val) {\n        this.showRoomsList = val;\n      }\n    }\n  },\n  created() {\n    this.updateResponsive();\n    window.addEventListener(\"resize\", (ev) => {\n      if (ev.isTrusted)\n        this.updateResponsive();\n    });\n  },\n  updated() {\n    const slots = document.querySelectorAll(\"[slot]\");\n    if (this.slots.length !== slots.length) {\n      this.slots = slots;\n    }\n  },\n  methods: {\n    castBoolean(val) {\n      return val === \"true\" || val === true;\n    },\n    castArray(val) {\n      return !val ? [] : Array.isArray(val) ? val : JSON.parse(val);\n    },\n    castObject(val) {\n      return !val ? {} : typeof val === \"object\" ? val : JSON.parse(val);\n    },\n    updateResponsive() {\n      this.isMobile = window.innerWidth < Number(this.responsiveBreakpoint);\n    },\n    toggleRoomsList() {\n      this.showRoomsList = !this.showRoomsList;\n      if (this.isMobile)\n        this.room = {};\n      this.$emit(\"toggle-rooms-list\", { opened: this.showRoomsList });\n    },\n    fetchRoom({ room }) {\n      this.room = room;\n      this.fetchMessages({ reset: true });\n      if (this.isMobile)\n        this.showRoomsList = false;\n    },\n    fetchMoreRooms() {\n      this.$emit(\"fetch-more-rooms\");\n    },\n    roomInfo() {\n      this.$emit(\"room-info\", this.room);\n    },\n    addRoom() {\n      this.$emit(\"add-room\");\n    },\n    searchRoom(val) {\n      this.$emit(\"search-room\", { value: val, roomId: this.room.roomId });\n    },\n    fetchMessages(options) {\n      this.$emit(\"fetch-messages\", { room: this.room, options });\n    },\n    sendMessage(message) {\n      this.$emit(\"send-message\", { ...message, roomId: this.room.roomId });\n    },\n    editMessage(message) {\n      this.$emit(\"edit-message\", { ...message, roomId: this.room.roomId });\n    },\n    deleteMessage(message) {\n      this.$emit(\"delete-message\", { message, roomId: this.room.roomId });\n    },\n    openFile({ message, file }) {\n      if (this.mediaPreviewEnabledCasted && file.action === \"preview\") {\n        this.previewFile = file.file;\n        this.showMediaPreview = true;\n      } else {\n        this.$emit(\"open-file\", { message, file });\n      }\n    },\n    openUserTag({ user }) {\n      this.$emit(\"open-user-tag\", { user });\n    },\n    openFailedMessage({ message }) {\n      this.$emit(\"open-failed-message\", {\n        message,\n        roomId: this.room.roomId\n      });\n    },\n    menuActionHandler(ev) {\n      this.$emit(\"menu-action-handler\", {\n        action: ev,\n        roomId: this.room.roomId\n      });\n    },\n    roomActionHandler({ action, roomId }) {\n      this.$emit(\"room-action-handler\", {\n        action,\n        roomId\n      });\n    },\n    messageActionHandler(ev) {\n      this.$emit(\"message-action-handler\", {\n        ...ev,\n        roomId: this.room.roomId\n      });\n    },\n    messageSelectionActionHandler(ev) {\n      this.$emit(\"message-selection-action-handler\", {\n        ...ev,\n        roomId: this.room.roomId\n      });\n    },\n    sendMessageReaction(messageReaction) {\n      this.$emit(\"send-message-reaction\", {\n        ...messageReaction,\n        roomId: this.room.roomId\n      });\n    },\n    typingMessage(message) {\n      this.$emit(\"typing-message\", {\n        message,\n        roomId: this.room.roomId\n      });\n    },\n    textareaActionHandler(message) {\n      this.$emit(\"textarea-action-handler\", {\n        message,\n        roomId: this.room.roomId\n      });\n    }\n  }\n};\nconst _hoisted_1 = { class: \"vac-chat-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_rooms_list = resolveComponent(\"rooms-list\");\n  const _component_room = resolveComponent(\"room\");\n  const _component_media_preview = resolveComponent(\"media-preview\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: \"vac-card-window\",\n    style: normalizeStyle([{ height: $props.height }, $options.cssVars])\n  }, [\n    createBaseVNode(\"div\", _hoisted_1, [\n      !$options.singleRoomCasted ? (openBlock(), createBlock(_component_rooms_list, {\n        key: 0,\n        \"current-user-id\": $props.currentUserId,\n        rooms: $options.orderedRooms,\n        \"loading-rooms\": $options.loadingRoomsCasted,\n        \"rooms-loaded\": $options.roomsLoadedCasted,\n        room: $data.room,\n        \"room-actions\": $options.roomActionsCasted,\n        \"custom-search-room-enabled\": $props.customSearchRoomEnabled,\n        \"text-messages\": $options.t,\n        \"show-search\": $options.showSearchCasted,\n        \"show-add-room\": $options.showAddRoomCasted,\n        \"show-rooms-list\": $data.showRoomsList && $options.roomsListOpenedCasted,\n        \"text-formatting\": $options.textFormattingCasted,\n        \"link-options\": $options.linkOptionsCasted,\n        \"is-mobile\": $data.isMobile,\n        \"scroll-distance\": $props.scrollDistance,\n        onFetchRoom: $options.fetchRoom,\n        onFetchMoreRooms: $options.fetchMoreRooms,\n        onLoadingMoreRooms: _cache[0] || (_cache[0] = ($event) => $data.loadingMoreRooms = $event),\n        onAddRoom: $options.addRoom,\n        onSearchRoom: $options.searchRoom,\n        onRoomActionHandler: $options.roomActionHandler\n      }, createSlots({ _: 2 }, [\n        renderList($data.slots, (el) => {\n          return {\n            name: el.slot,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"current-user-id\", \"rooms\", \"loading-rooms\", \"rooms-loaded\", \"room\", \"room-actions\", \"custom-search-room-enabled\", \"text-messages\", \"show-search\", \"show-add-room\", \"show-rooms-list\", \"text-formatting\", \"link-options\", \"is-mobile\", \"scroll-distance\", \"onFetchRoom\", \"onFetchMoreRooms\", \"onAddRoom\", \"onSearchRoom\", \"onRoomActionHandler\"])) : createCommentVNode(\"\", true),\n      createVNode(_component_room, {\n        \"current-user-id\": $props.currentUserId,\n        rooms: $options.roomsCasted,\n        \"room-id\": $data.room.roomId || \"\",\n        \"load-first-room\": $options.loadFirstRoomCasted,\n        messages: $options.messagesCasted,\n        \"room-message\": $props.roomMessage,\n        \"messages-loaded\": $options.messagesLoadedCasted,\n        \"menu-actions\": $options.menuActionsCasted,\n        \"message-actions\": $options.messageActionsCasted,\n        \"message-selection-actions\": $options.messageSelectionActionsCasted,\n        \"auto-scroll\": $options.autoScrollCasted,\n        \"show-send-icon\": $options.showSendIconCasted,\n        \"show-files\": $options.showFilesCasted,\n        \"show-audio\": $options.showAudioCasted,\n        \"audio-bit-rate\": $props.audioBitRate,\n        \"audio-sample-rate\": $props.audioSampleRate,\n        \"show-emojis\": $options.showEmojisCasted,\n        \"show-reaction-emojis\": $options.showReactionEmojisCasted,\n        \"show-new-messages-divider\": $options.showNewMessagesDividerCasted,\n        \"show-footer\": $options.showFooterCasted,\n        \"text-messages\": $options.t,\n        \"single-room\": $options.singleRoomCasted,\n        \"show-rooms-list\": $data.showRoomsList && $options.roomsListOpenedCasted,\n        \"text-formatting\": $options.textFormattingCasted,\n        \"link-options\": $options.linkOptionsCasted,\n        \"is-mobile\": $data.isMobile,\n        \"loading-rooms\": $options.loadingRoomsCasted,\n        \"room-info-enabled\": $options.roomInfoEnabledCasted,\n        \"textarea-action-enabled\": $options.textareaActionEnabledCasted,\n        \"textarea-auto-focus\": $options.textareaAutoFocusCasted,\n        \"user-tags-enabled\": $options.userTagsEnabledCasted,\n        \"emojis-suggestion-enabled\": $options.emojisSuggestionEnabledCasted,\n        \"scroll-distance\": $props.scrollDistance,\n        \"accepted-files\": $props.acceptedFiles,\n        \"capture-files\": $props.captureFiles,\n        \"multiple-files\": $options.multipleFilesCasted,\n        \"templates-text\": $options.templatesTextCasted,\n        \"username-options\": $options.usernameOptionsCasted,\n        \"emoji-data-source\": $props.emojiDataSource,\n        onToggleRoomsList: $options.toggleRoomsList,\n        onRoomInfo: $options.roomInfo,\n        onFetchMessages: $options.fetchMessages,\n        onSendMessage: $options.sendMessage,\n        onEditMessage: $options.editMessage,\n        onDeleteMessage: $options.deleteMessage,\n        onOpenFile: $options.openFile,\n        onOpenUserTag: $options.openUserTag,\n        onOpenFailedMessage: $options.openFailedMessage,\n        onMenuActionHandler: $options.menuActionHandler,\n        onMessageActionHandler: $options.messageActionHandler,\n        onMessageSelectionActionHandler: $options.messageSelectionActionHandler,\n        onSendMessageReaction: $options.sendMessageReaction,\n        onTypingMessage: $options.typingMessage,\n        onTextareaActionHandler: $options.textareaActionHandler\n      }, createSlots({ _: 2 }, [\n        renderList($data.slots, (el) => {\n          return {\n            name: el.slot,\n            fn: withCtx((data) => [\n              renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n            ])\n          };\n        })\n      ]), 1032, [\"current-user-id\", \"rooms\", \"room-id\", \"load-first-room\", \"messages\", \"room-message\", \"messages-loaded\", \"menu-actions\", \"message-actions\", \"message-selection-actions\", \"auto-scroll\", \"show-send-icon\", \"show-files\", \"show-audio\", \"audio-bit-rate\", \"audio-sample-rate\", \"show-emojis\", \"show-reaction-emojis\", \"show-new-messages-divider\", \"show-footer\", \"text-messages\", \"single-room\", \"show-rooms-list\", \"text-formatting\", \"link-options\", \"is-mobile\", \"loading-rooms\", \"room-info-enabled\", \"textarea-action-enabled\", \"textarea-auto-focus\", \"user-tags-enabled\", \"emojis-suggestion-enabled\", \"scroll-distance\", \"accepted-files\", \"capture-files\", \"multiple-files\", \"templates-text\", \"username-options\", \"emoji-data-source\", \"onToggleRoomsList\", \"onRoomInfo\", \"onFetchMessages\", \"onSendMessage\", \"onEditMessage\", \"onDeleteMessage\", \"onOpenFile\", \"onOpenUserTag\", \"onOpenFailedMessage\", \"onMenuActionHandler\", \"onMessageActionHandler\", \"onMessageSelectionActionHandler\", \"onSendMessageReaction\", \"onTypingMessage\", \"onTextareaActionHandler\"])\n    ]),\n    createVNode(Transition, {\n      name: \"vac-fade-preview\",\n      appear: \"\"\n    }, {\n      default: withCtx(() => [\n        $data.showMediaPreview ? (openBlock(), createBlock(_component_media_preview, {\n          key: 0,\n          file: $data.previewFile,\n          onCloseMediaPreview: _cache[1] || (_cache[1] = ($event) => $data.showMediaPreview = false)\n        }, createSlots({ _: 2 }, [\n          renderList($data.slots, (el) => {\n            return {\n              name: el.slot,\n              fn: withCtx((data) => [\n                renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n              ])\n            };\n          })\n        ]), 1032, [\"file\"])) : createCommentVNode(\"\", true)\n      ]),\n      _: 3\n    })\n  ], 4);\n}\nvar ChatWindow = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"styles\", [_style_0]]]);\nconst VueAdvancedChat = defineCustomElement(ChatWindow);\nconst PACKAGE_NAME = \"vue-advanced-chat\";\nfunction register() {\n  if (!customElements.get(PACKAGE_NAME)) {\n    customElements.define(PACKAGE_NAME, VueAdvancedChat);\n  }\n}\nexport { VueAdvancedChat, register };\n","import { render } from \"./ChatComponent.vue?vue&type=template&id=61a89d0e&ts=true\"\nimport script from \"./ChatComponent.vue?vue&type=script&lang=ts\"\nexport * from \"./ChatComponent.vue?vue&type=script&lang=ts\"\n\nimport \"./ChatComponent.vue?vue&type=style&index=0&id=61a89d0e&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4610efbd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"bell\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", {\n  src: \"/static/teleforma/images/bell.svg\",\n  alt: \"Notifications\",\n  title: \"Notifications\",\n  class: \"bell-image\"\n}, null, -1))\nconst _hoisted_3 = {\n  key: 0,\n  class: \"bell-count\"\n}\nconst _hoisted_4 = {\n  key: 0,\n  class: \"notifications-list\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  const _component_notification_message = _resolveComponent(\"notification-message\")!\n\n  return (_openBlock(), _createElementBlock(\"div\", {\n    id: \"notifications\",\n    onFocus: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.open && _ctx.open(...args))),\n    onFocusout: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.close && _ctx.close(...args))),\n    tabindex: \"0\"\n  }, [\n    _createElementVNode(\"div\", _hoisted_1, [\n      _hoisted_2,\n      (_ctx.numberOfUnread > 0)\n        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.numberOfUnread), 1))\n        : _createCommentVNode(\"\", true)\n    ]),\n    (_ctx.opened)\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n          _createElementVNode(\"ul\", null, [\n            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.messages, (message) => {\n              return (_openBlock(), _createBlock(_component_notification_message, {\n                key: message._id,\n                id: message._id,\n                content: message.content,\n                url: message.url,\n                viewed: message.viewed,\n                \"creation-date\": message.created\n              }, null, 8, [\"id\", \"content\", \"url\", \"viewed\", \"creation-date\"]))\n            }), 128))\n          ])\n        ]))\n      : _createCommentVNode(\"\", true)\n  ], 32))\n}","<template>\n  <div id=\"notifications\" @focus=\"open\" @focusout=\"close\" tabindex=\"0\">\n    <div class=\"bell\">\n      <img src=\"/static/teleforma/images/bell.svg\" alt=\"Notifications\" title=\"Notifications\" class=\"bell-image\" />\n      <span v-if=\"numberOfUnread > 0\" class=\"bell-count\">{{ numberOfUnread }}</span>\n    </div>\n    <div v-if=\"opened\" class=\"notifications-list\">\n      <!-- <h1 v-if=\"currentUserId\">{{ currentUserId }}</h1>\n      <h1 v-else>Pas d'utilisateur</h1> -->\n      <ul>\n        <notification-message\n          v-for=\"message in messages\"\n          :key=\"message._id\"\n          :id=\"message._id\"\n          :content=\"message.content\"\n          :url=\"message.url\"\n          :viewed=\"message.viewed\"\n          :creation-date=\"message.created\"\n        ></notification-message>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport NotificationMessage from \"./sub/NotificationMessage.vue\"\n\ninterface BaseComponentData {\n  socket: WebSocket | null\n  messagesLoaded: boolean\n  messages: any[]\n  currentUserId: number | null\n  opened: boolean\n}\n\nexport default defineComponent({\n  \n  data(): BaseComponentData {\n    return {\n      socket: null,\n      messagesLoaded: false,\n      messages: [],\n      currentUserId: null,\n      opened: false\n    }\n  },\n  components: {\n    NotificationMessage\n  },\n  created() {\n    // get room info\n    const userId = document.getElementById(\"user_id\")\n    if (!userId) return\n    // this.connect(`notifications_${userId}`)\n    this.currentUserId = parseInt(userId.getAttribute(\"value\")!, 10)\n    this.connect()\n  },\n\n  methods: {\n    connect() {\n      // connect to socket\n      let protocol = \"wss\"\n      if (window.location.protocol != \"https:\") protocol = \"ws\"\n      this.socket = new WebSocket(\n        protocol + \"://\" + window.location.host + \"/ws/notification/\" + this.currentUserId + \"/\"\n      )\n      this.fetchMessages()\n\n      this.socket.onclose = () => {\n        console.log(\"Chat socket closed\")\n      }\n    },\n\n    async fetchMessages() {\n      this.socket!.onmessage = (e) => {\n        const data = JSON.parse(e.data)\n        const type = data.type\n        // debugger;\n        // do not load messages in case of socket reconnect\n        if (type === \"initial\" && this.messagesLoaded) return\n\n        const newMessages = data.messages\n\n        // check if a message with the same id already exists\n        // it means the message have been updated (probably the \"viewed\" state)\n        let existing = null\n        if (type === \"new\" && newMessages.length === 1) {\n          existing = this.messages.findIndex((message) => message._id === newMessages[0]._id)\n        }\n\n        // if it exists, then we update it instead of appending a new one\n        if (existing !== null && existing !== -1) {\n          this.messages = [...this.messages.slice(0, existing), newMessages[0], ...this.messages.slice(existing + 1)]\n        } else this.messages = [...newMessages, ...this.messages]\n        if (type === \"initial\") this.messagesLoaded = true\n      }\n    },\n\n    open() {\n      this.opened = true\n    },\n    close() {\n      this.opened = false\n    }\n  },\n\n  computed: {\n    numberOfUnread(): any {\n      return this.messages.filter((message) => !message.viewed).length\n    }\n  }\n})\n</script>\n\n<style scoped>\n#notifications {\n  position: absolute;\n  top: 0px;\n  right: 5px;\n  text-align: left;\n}\n.bell {\n  width: 40px;\n  height: 40px;\n  position: relative;\n  cursor: pointer;\n}\n.bell-count {\n  position: absolute;\n  width: 20px;\n  height: 20px;\n  top: 5px;\n  right: 0px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  color: white;\n  border-radius: 10px;\n  background-color: red;\n}\n\n.notifications-list {\n  position: absolute;\n  background-color: white;\n  z-index: 100;\n  right: 10px;\n  width: 400px;\n  max-height: calc(100vh - 300px);\n  max-width: calc(100vw - 50px);\n  border: 1px solid lightblue;\n  border-radius: 3px;\n  overflow-y: scroll;\n}\n\nul {\n  margin: 0;\n  padding: 0;\n  box-shadow: 5px 5px 5px grey;\n}\n</style>\n","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fa1f8db4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"date\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(\"li\", {\n    onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onClick())),\n    onMouseup: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.onMiddleClick()), [\"middle\"]))\n  }, [\n    _createElementVNode(\"span\", {\n      class: _normalizeClass({ unviewed: !_ctx.viewed, text: true })\n    }, _toDisplayString(_ctx.content), 3),\n    _createElementVNode(\"span\", _hoisted_1, _toDisplayString(_ctx.relativeCreationDate), 1)\n  ], 32))\n}","<template>\n  <li @click=\"onClick()\" @click.middle=\"onMiddleClick()\">\n    <span :class=\"{ unviewed: !viewed, text: true }\">{{ content }}</span>\n    <span class=\"date\">{{ relativeCreationDate }} </span>\n  </li>\n</template>\n\n<script lang=\"ts\">\n\nimport { defineComponent } from 'vue'\nimport { formatRelative } from \"date-fns\"\nimport { fr } from \"date-fns/locale\"\nimport axios from \"axios\"\n\n\nexport default defineComponent({\n  props: {\n    id: Number,\n    content: String,\n    url: String,\n    viewed: Boolean,\n    creationDate: String\n  },\n\n  methods: {\n    async setAsViewed() {\n      if (this.viewed === false) {\n        await axios.post(\"/notification\", { id: this.id, viewed: true })\n      }\n    },\n\n    async onClick() {\n      await this.setAsViewed()\n      if (this.url) window.location.href = this.url\n    },\n\n    async onMiddleClick() {\n      await this.setAsViewed()\n      if (this.url) window.open(this.url, \"_blank\")\n    }\n  },\n  computed: {\n    relativeCreationDate():string {\n      return formatRelative(new Date(this.creationDate as string), new Date(), { locale: fr })\n    }\n  }\n})\n</script>\n\n<style scoped>\nli {\n  list-style: none;\n  display: block;\n  align-items: center;\n  margin: 0;\n  border-radius: 0;\n  padding: 10px;\n  cursor: pointer;\n  overflow: hidden;\n}\nli:hover {\n  background-color: #ccf2cf;\n}\nli:not(:last-child) {\n  border-bottom: 1px solid lightblue;\n}\n\n.unviewed {\n  font-weight: bold;\n}\n.date {\n  float: right;\n  color: lightslategrey;\n  font-size: 0.9em;\n  font-style: italic;\n}\n</style>\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var startOfDayLeft = startOfDay(dirtyDateLeft);\n  var startOfDayRight = startOfDay(dirtyDateRight);\n  var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a day is not constant\n  // (e.g. it's different in the day of the daylight saving time clock shift)\n\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nvar formatDistance = function (token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function (date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function (date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function (date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function (date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function (date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function (date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function (date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function (date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function (date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function (date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function (date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function (date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport format from \"../format/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result                    |\n * |---------------------------|---------------------------|\n * | Previous 6 days           | last Sunday at 04:30 AM   |\n * | Last day                  | yesterday at 04:30 AM     |\n * | Same day                  | today at 04:30 AM         |\n * | Next day                  | tomorrow at 04:30 AM      |\n * | Next 6 days               | Sunday at 04:30 AM        |\n * | Other                     | 12/31/2017                |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(addDays(new Date(), -6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var baseDate = toDate(dirtyBaseDate);\n\n  var _ref = dirtyOptions || {},\n      _ref$locale = _ref.locale,\n      locale = _ref$locale === void 0 ? defaultLocale : _ref$locale,\n      _ref$weekStartsOn = _ref.weekStartsOn,\n      weekStartsOn = _ref$weekStartsOn === void 0 ? 0 : _ref$weekStartsOn;\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  if (!locale.formatRelative) {\n    throw new RangeError('locale must contain formatRelative property');\n  }\n\n  var diff = differenceInCalendarDays(date, baseDate);\n\n  if (isNaN(diff)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  var token;\n\n  if (diff < -6) {\n    token = 'other';\n  } else if (diff < -1) {\n    token = 'lastWeek';\n  } else if (diff < 0) {\n    token = 'yesterday';\n  } else if (diff < 1) {\n    token = 'today';\n  } else if (diff < 2) {\n    token = 'tomorrow';\n  } else if (diff < 7) {\n    token = 'nextWeek';\n  } else {\n    token = 'other';\n  }\n\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n  var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, {\n    locale: locale,\n    weekStartsOn: weekStartsOn\n  });\n  return format(date, formatStr, {\n    locale: locale,\n    weekStartsOn: weekStartsOn\n  });\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'moins d’une seconde',\n    other: 'moins de {{count}} secondes'\n  },\n  xSeconds: {\n    one: '1 seconde',\n    other: '{{count}} secondes'\n  },\n  halfAMinute: '30 secondes',\n  lessThanXMinutes: {\n    one: 'moins d’une minute',\n    other: 'moins de {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'environ 1 heure',\n    other: 'environ {{count}} heures'\n  },\n  xHours: {\n    one: '1 heure',\n    other: '{{count}} heures'\n  },\n  xDays: {\n    one: '1 jour',\n    other: '{{count}} jours'\n  },\n  aboutXWeeks: {\n    one: 'environ 1 semaine',\n    other: 'environ {{count}} semaines'\n  },\n  xWeeks: {\n    one: '1 semaine',\n    other: '{{count}} semaines'\n  },\n  aboutXMonths: {\n    one: 'environ 1 mois',\n    other: 'environ {{count}} mois'\n  },\n  xMonths: {\n    one: '1 mois',\n    other: '{{count}} mois'\n  },\n  aboutXYears: {\n    one: 'environ 1 an',\n    other: 'environ {{count}} ans'\n  },\n  xYears: {\n    one: '1 an',\n    other: '{{count}} ans'\n  },\n  overXYears: {\n    one: 'plus d’un an',\n    other: 'plus de {{count}} ans'\n  },\n  almostXYears: {\n    one: 'presqu’un an',\n    other: 'presque {{count}} ans'\n  }\n};\n\nvar formatDistance = function (token, count, options) {\n  var result;\n  var form = formatDistanceLocale[token];\n\n  if (typeof form === 'string') {\n    result = form;\n  } else if (count === 1) {\n    result = form.one;\n  } else {\n    result = form.other.replace('{{count}}', String(count));\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'dans ' + result;\n    } else {\n      return 'il y a ' + result;\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE d MMMM y',\n  long: 'd MMMM y',\n  medium: 'd MMM y',\n  short: 'dd/MM/y'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'à' {{time}}\",\n  long: \"{{date}} 'à' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"eeee 'dernier à' p\",\n  yesterday: \"'hier à' p\",\n  today: \"'aujourd’hui à' p\",\n  tomorrow: \"'demain à' p'\",\n  nextWeek: \"eeee 'prochain à' p\",\n  other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['av. J.-C', 'ap. J.-C'],\n  abbreviated: ['av. J.-C', 'ap. J.-C'],\n  wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n  narrow: ['T1', 'T2', 'T3', 'T4'],\n  abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n  wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n  wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n  narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n  short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n  abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n  wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'mat.',\n    afternoon: 'ap.m.',\n    evening: 'soir',\n    night: 'mat.'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'matin',\n    afternoon: 'après-midi',\n    evening: 'soir',\n    night: 'matin'\n  },\n  wide: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'minuit',\n    noon: 'midi',\n    morning: 'du matin',\n    afternoon: 'de l’après-midi',\n    evening: 'du soir',\n    night: 'du matin'\n  }\n};\n\nvar ordinalNumber = function (dirtyNumber, options) {\n  var number = Number(dirtyNumber);\n  var unit = options === null || options === void 0 ? void 0 : options.unit;\n  if (number === 0) return '0';\n  var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n  var suffix;\n\n  if (number === 1) {\n    suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n  } else {\n    suffix = 'ème';\n  }\n\n  return number + suffix;\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n  abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n  wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n  any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^T?[1234]/i,\n  abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n  wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n  wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[lmjvsd]/i,\n  short: /^(di|lu|ma|me|je|ve|sa)/i,\n  abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n  wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n  any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n  any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^min/i,\n    noon: /^mid/i,\n    morning: /mat/i,\n    afternoon: /ap/i,\n    evening: /soir/i,\n    night: /nuit/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\n\nvar locale = {\n  code: 'fr',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1\n    /* Monday */\n    ,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","import { render } from \"./NotificationMessage.vue?vue&type=template&id=fa1f8db4&scoped=true&ts=true\"\nimport script from \"./NotificationMessage.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationMessage.vue?vue&type=script&lang=ts\"\n\nimport \"./NotificationMessage.vue?vue&type=style&index=0&id=fa1f8db4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fa1f8db4\"]])\n\nexport default __exports__","import { render } from \"./NotificationsBell.vue?vue&type=template&id=4610efbd&scoped=true&ts=true\"\nimport script from \"./NotificationsBell.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationsBell.vue?vue&type=script&lang=ts\"\n\nimport \"./NotificationsBell.vue?vue&type=style&index=0&id=4610efbd&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4610efbd\"]])\n\nexport default __exports__","export enum PlayerState {\n    UNSTARTED = 'UNSTARTED',\n    ENDED = 'ENDED',\n    PLAYING = 'PLAYING',\n    PAUSE = 'PAUSE',\n    BUFFERING = 'BUFFERING',\n    READY = 'READY', // ready to be played after buffering\n    LOADING = 'LOADING',\n    LOADED = 'LOADED',\n  }","export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : String(i);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","const ENABLE_DEBUG = true;\nexport const Logger = {\n  debug: (...args: unknown[]) => {\n    if (!ENABLE_DEBUG) return;\n    console.debug(...args);\n  },\n  error: (...args: unknown[]) => {\n    console.error(...args);\n  }\n};","import { PlayerState } from './constants';\nimport { MultiVideoPlayer, VideoPlayerOptions } from './main';\nimport { Logger } from \"./utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => { };\nclass VideoPlayer {\n  public videoId: string;\n  public videoPlayerConfig: VideoPlayerOptions;\n  // video js player\n  public videojs: any;\n  private player: MultiVideoPlayer;\n  public controls: boolean;\n  public main: boolean;\n  public sound: boolean;\n  public playBackRate: boolean;\n  public canWait: boolean;\n  public videoPlayerArea: Element | null;\n  // public videoElement: HTMLVideoElement | null;\n  public videoState: PlayerState;\n  private readonly _startSeconds: number;\n  private readonly loop: boolean;\n  public isPlaying: boolean;\n  constructor(player: MultiVideoPlayer, videoPlayerConfig: VideoPlayerOptions) {\n    this.videoId = Math.random().toString(36).substring(2, 15);\n    this.player = player;\n    this.videoPlayerConfig = videoPlayerConfig;\n    this.main = this.videoPlayerConfig.main ?? false;\n    this.sound = this.videoPlayerConfig.sound ?? false;\n    this.playBackRate = this.videoPlayerConfig.playBackRate ?? false;\n    this.canWait = true;\n    this.controls = this.videoPlayerConfig.controls ?? player.options.controls ?? true;\n    this.loop = player.options.loop ?? false;\n\n    this._startSeconds = parseFloat(String(this.videoPlayerConfig.startSeconds ?? 0));\n\n    this.videoPlayerArea = null;\n    // this.videoElement = null;\n    this.videoState = PlayerState.LOADING;\n    this.isPlaying = false;\n\n    this.mount();\n  }\n\n  private mount() {\n    this.render();\n    // this.videoElementId = document.querySelector(`#video_player_${this.videoId} video`);\n    // console.log(this.videoElement)\n\n    if (!this.videoElement) {\n      return Logger.debug('video element not found');\n    }\n\n    // if we do not setTimeout here, controls act weirdly (no explanation...)\n    setTimeout(() => {\n      this.setupVideoElement({ controls: this.controls, main: this.main });\n    }, 1);\n\n    // this.videojs.on('volumechange', (e: any) => {\n    //   console.log(e)\n    //   // find the videos with the sound on\n    //   const videos = this.player.videoPlayers.filter(v => v.sound)\n\n    //   console.log(\"volume change\", this.player.videoPlayers[0].videojs!.volume())\n    //   console.log(this.player.videoPlayers[0])\n    //   // console.log(\"change volume of \", videos)\n    //   // this.player.videoPlayers[0].videojs!.volume(0)\n    //   for (const video of videos) {\n    //     video.videojs!.volume(this.player.videoPlayers[0].videojs!.volume())\n    //     // this.videojs.volume(this.player.videoPlayers[0].videojs!.volume())\n    //   }\n    //   e.preventDefault()\n    //   e.stopPropagation()\n\n    // })\n    window.addEventListener(\"unhandledrejection\", (event) => {\n      if (event.reason?.name === \"AbortError\" || event.reason?.message.includes(\"The play() request was interrupted\")) {\n        console.warn(\"❌❌❌❌❌❌❌❌The play() request was interrupted❌❌❌❌❌❌❌❌❌❌\");\n\n        event.preventDefault();\n        event.stopPropagation();\n      }\n    });\n\n    // window.addEventListener(\"resize\", () => {\n    //   const videoElement = document.querySelector('video');\n\n    //     if (document.fullscreenElement) {\n    //       if (videoElement) {\n    //         videoElement.style.height = '100vh';\n    //         videoElement.style.width = '100%';\n    //       }\n    //     } else {\n    //       if (videoElement) {\n    //         videoElement.style.height = \"100%\";\n    //         videoElement.style.width = \"100%\";\n    //       }\n    //     }\n    // });\n  \n\n    let lastScrollY = 0;\n\n    document.addEventListener(\"fullscreenchange\", () => {\n        const videoElement = document.querySelector('video');\n\n        if (document.fullscreenElement) {\n            lastScrollY = window.scrollY;\n        } else {\n            if (videoElement) {\n                videoElement.style.height = \"100%\";\n                videoElement.style.width = \"100%\";\n            }\n\n            setTimeout(() => {\n                window.scrollTo({\n                    top: lastScrollY,\n                    behavior: \"smooth\",\n                });\n            }, 200);\n        }\n    });\n\n    this.videojs.on('ratechange', () => {\n      const newRate = this.videojs.playbackRate();\n      console.log(`Playback rate changed to: ${newRate}`);\n    \n      this.player.videoPlayers.forEach(video => {\n        if (video.videojs && video.videojs.playbackRate() !== newRate) {\n          video.videojs.playbackRate(newRate);\n          console.log(`Updated video ${video.videoId} to speed ${newRate}`);\n        }\n      });\n    });\n    \n\n    this.videojs.on('loadeddata', this.onReady.bind(this))\n    this.videojs.on('timeupdate', this.onTimeUpdate.bind(this))\n    this.videojs.on('seeking', this.onSeeking.bind(this))\n    this.videojs.on('ended', this.onStateChange.bind(this, PlayerState.ENDED))\n\n    this.videojs.on('play', () => {\n      this.syncTime();\n      if (!this.isPlaying && this.player.state !== PlayerState.BUFFERING) {\n        this.onStateChange(PlayerState.PLAYING);\n      }\n    });\n\n    this.videojs.on('pause', () => {\n\n      if (this.isPlaying) {\n        this.onStateChange(PlayerState.PAUSE);\n      }\n    });\n    // this.videojs.on('waiting', () => {\n    //   // console.log(\"WAITING FOR BUFFERING\", this.videoState, e)\n    //   // if(this.isPlaying)\n\n    //     this.onStateChange(PlayerState.BUFFERING)\n    // })\n    this.videojs.on('canplay', () => {\n      this.syncTime();\n      if (this.player.state === PlayerState.PAUSE) return;\n\n\n      // debugger;\n      if (![PlayerState.LOADING, PlayerState.LOADED].includes(this.player.state as PlayerState)) {\n        this.onStateChange(PlayerState.READY)\n      }\n      this.canWait = false\n      setTimeout(() => {\n        this.canWait = true\n\n      }, 1000)\n    })\n\n    this.videojs.on('waiting', () => {\n      if (!this.canWait)\n        return\n      if (this.videoElement!.readyState === 4)\n        return\n      console.log(\"BUFFERING...\", this.videoElement!.readyState)\n      if (![PlayerState.LOADING, PlayerState.LOADED].includes(this.player.state as PlayerState)) {\n        if (!this.isPlaying) {\n          this.onStateChange(PlayerState.BUFFERING)\n        }\n      }\n    })\n\n    // this.videojs.on('progress', (e:any) => {\n    //   console.log('progress')\n    //   console.log(e)\n    //   this.onStateChange.bind(this, PlayerState.PLAYING)\n    // })\n\n\n    // this.videoElement.addEventListener('play', this.onStateChange.bind(this, PlayerState.PLAYING), false);\n    // this.videoElement.addEventListener('pause', this.onStateChange.bind(this, PlayerState.PAUSE), false);\n    // this.videoElement.addEventListener('seeking', this.onSeeking.bind(this), false);\n    // this.videoElement.addEventListener('timeupdate', this.onTimeUpdate.bind(this), false);\n    // this.videoElement.addEventListener('loadeddata', this.onReady.bind(this), false);\n    // this.videoElement.addEventListener('canplaythrough', this.onStateChange.bind(this, PlayerState.UNSTARTED), false);\n\n    // this.videoElement.addEventListener('ended', this.onStateChange.bind(this, PlayerState.ENDED), false);\n    // this.videoElement.addEventListener('waiting', this.onStateChange.bind(this, PlayerState.BUFFERING), false);\n  }\n\n  public syncTime() {\n    const mainVideo = this.player.videoPlayers.find(v => v.main);\n    const newRate = this.videojs.playbackRate();\n    const syncThreshold = newRate === 2 ? 0.25 : newRate === 1.5 ? 0.2 : 0.1;\n    const syncLoop = () => {\n      if (this.main) {\n        // Sync all other videos with the main one\n        this.player.videoPlayers.forEach(video => {\n          if (!video.main && video.videojs) {\n            const videoCurrentTime = video.videojs.currentTime();\n            const mainCurrentTime = this.videojs.currentTime();\n            if (Math.abs(mainCurrentTime - videoCurrentTime) > syncThreshold) {\n              video.videojs.currentTime(mainCurrentTime);\n              console.log(`🔄 Synced video ${video.videoId} to ${mainCurrentTime}s (Threshold: ${syncThreshold})`);\n            }\n          }\n        });\n      } else if (mainVideo && mainVideo.videojs) {\n        const mainCurrentTime = mainVideo.videojs.currentTime();\n        const thisCurrentTime = this.videojs.currentTime();\n  \n        if (Math.abs(mainCurrentTime - thisCurrentTime) > syncThreshold) {\n          this.videojs.currentTime(mainCurrentTime);\n          console.log(`🔄 Synced video ${this.videoId} to ${mainCurrentTime}s (Threshold: ${syncThreshold})`);\n        }\n      }\n    };\n  \n    requestAnimationFrame(syncLoop);\n  }\n  \n\n  get videoElement(): HTMLVideoElement | null {\n    return document.querySelector(`#video_player_${this.videoId} video`) as HTMLVideoElement\n  }\n\n  private onReady() {\n    Logger.debug(this.videoId, '::[onReady]');\n    this.timeTo(0);\n    this.player.onReady();\n  }\n\n  private onSeeking() {\n    Logger.debug(this.videoId, '::[onSeeking]');\n    if (!this.main) {\n      return;\n    }\n    // this.player.onTimeUpdate(this, this.getPlayedTime());\n    requestAnimationFrame(() => {\n      this.syncTime();\n    });\n  }\n\n  private onTimeUpdate() {\n    if (!this.main) {\n      return;\n    }\n    requestAnimationFrame(() => {\n      this.syncTime();\n    });\n  }\n\n  private onStateChange(state: PlayerState) {\n    Logger.debug(this.videoId, '::[onStateChange]', state);\n    this.videoState = state;\n\n    const statesToPropagate = [\n      PlayerState.BUFFERING,\n      PlayerState.READY,\n      PlayerState.PLAYING,\n      PlayerState.PAUSE,\n      PlayerState.ENDED,\n      PlayerState.UNSTARTED,\n    ];\n    if (state === PlayerState.PLAYING) {\n      this.isPlaying = true;\n\n      if (!this.main) {\n        return;\n      }\n    }\n\n    if (state === PlayerState.PAUSE) {\n      this.isPlaying = false;\n      if (!this.main) {\n        return;\n      }\n    }\n\n    if (state === PlayerState.BUFFERING) {\n      this.isPlaying = false;\n    }\n\n    if (statesToPropagate.includes(state)) {\n      this.player.changeState(state, this);\n    }\n  }\n\n  private render() {\n    // if video area is defined, add video to area\n    this.videoPlayerArea = document.querySelector(this.videoPlayerConfig.id);\n    if (!this.videoPlayerArea) {\n      return Logger.debug('id not found: ', this.videoPlayerConfig.id);\n    }\n    this.videoPlayerArea.innerHTML = `\n        <video \n            id=\"video_player_${this.videoId}\"\n            class=\"video-js vjs-theme-fantasy\"\n            controls\n            preload=\"auto\"\n            data-setup='{\"playbackRates\": [1, 1.25, 1.5, 2]}'\n            style=\"width:100%;height:100%;\"\n        >\n          <source src=\"${this.videoPlayerConfig.initialSrc}\" type=\"video/mp4\" />\n          <p class=\"vjs-no-js\">\n            To view this video please enable JavaScript, and consider upgrading to a\n            web browser that\n            <a href=\"https://videojs.com/html5-video-support/\" target=\"_blank\"\n              >supports HTML5 video</a\n            >\n          </p>\n        </video>\n    `;\n    // console.log(\"test\")\n    this.videojs = window.videojs(`video_player_${this.videoId}`, {\n      userActions: {\n        doubleClick: false\n      },\n      controlBar: {\n        // 'pictureInPictureToggle': false,\n        volumePanel: this.sound,\n        fullscreenToggle: false,\n        playbackRateMenuButton: this.playBackRate,\n\n      }\n    });\n    this.videojs.controls(true)\n    this.videojs.muted(!this.sound)\n    this._createFullscreenButton()\n    // console.log(player);\n  }\n\n  private setupVideoElement(options: { controls?: boolean, main: boolean }) {\n    if (options.controls !== undefined)\n      this.setControls(options.controls);\n    this.setMain(options.main);\n  }\n\n  public _swap(videoPlayer: VideoPlayer) {\n    if (!this.videoElement || !videoPlayer.videoElement) return;\n\n    const animateSwap = () => {\n      if (window.document.fullscreenElement && window.innerHeight > window.innerWidth) {\n        // Portrait mode\n        this.videoElement!.style.height = \"100%\";\n        videoPlayer.videoElement!.style.height = \"100vh\";\n      } else {\n        if (window.document.fullscreenElement) {\n          this.videoElement!.style.height = \"100%\";\n          videoPlayer.videoElement!.style.height = \"100vh\";\n        } else {\n          this.videoElement!.style.height = \"100%\";\n          videoPlayer.videoElement!.style.height = \"100%\";\n        }\n      }\n    };\n\n    requestAnimationFrame(animateSwap);\n\n    const nodeA = this.videoElement.parentElement;\n    const nodeB = videoPlayer.videoElement.parentElement;\n    // console.log(this.videoElement.attr('id'))\n    // const nodeA = document.getElementById(this.videoElement.id)?.parentElement\n    // const nodeB = document.getElementById(videoPlayer.videoElement.id)?.parentElement\n    // console.log(videoInDom)\n    // debugger\n    const parentA = nodeA!.parentNode;\n    const parentB = nodeB!.parentNode;\n\n\n    // const newvideojs = videoPlayer.videojs;\n    // videoPlayer.videojs = this.videojs;\n    // this.videojs = newvideojs;\n\n    if (!parentA || !parentB) throw new Error('Parent node not found');\n\n    const siblingA = nodeA!.nextSibling === nodeB ? nodeA : nodeA!.nextSibling;\n    parentB.insertBefore(nodeA!, nodeB!);\n    parentA.insertBefore(nodeB!, siblingA!);\n\n    const thisControls = this.controls;\n    const thisMain = this.main;\n\n\n    this.setupVideoElement({ controls: videoPlayer.controls, main: videoPlayer.main });\n    videoPlayer.setupVideoElement({ controls: thisControls, main: thisMain });\n\n\n    // this.videojs.dispose();\n    // videoPlayer.videojs.dispose();\n    // this.videojs = videojs(`video_player_${this.videoId}`);\n    // videoPlayer.videojs = videojs(`video_player_${videoPlayer.videoId}`);\n  }\n\n  /**\n   * -------------------------------\n   * PUBLIC METHODS FOR VIDEO PLAYER\n   * -------------------------------\n   */\n\n  public async play() {\n    if (!this.videoElement) return;\n    if (this.videoState === PlayerState.PLAYING || this.videoState === PlayerState.BUFFERING) return;\n    const isPlaying = this.videoElement.currentTime > 0 && !this.videoElement.paused && !this.videoElement.ended && this.videoElement.readyState > this.videoElement.HAVE_CURRENT_DATA;\n    if (isPlaying) {\n      console.log(\"already playing\")\n      return\n    }\n\n    // debugger;\n    // const video = document.getElementById(this.videoElement.id)\n    // await video!.play()\n    await this.videoElement.play().then(() => {\n      console.log(\"Playback started!\");\n    })\n      .catch(error => {\n        console.warn(\"Playback failed:\", error);\n      });;\n\n\n  }\n\n  public pause() {\n    if (!this.videoElement) return;\n    if (this.videoState === PlayerState.PAUSE) return;\n    if (!this.isPlaying) return;\n    try {\n      this.videoElement.pause();\n    }\n    catch (error) {\n      console.log(error)\n    }\n  }\n\n  public stop() {\n    if (!this.videoElement) return;\n    try {\n      this.videoElement.pause();\n      this.timeTo(this.getDuration() - 0.5);\n    }\n    catch (error) {\n      console.log(error)\n    }\n  }\n\n  public setControls(controls: boolean) {\n    if (!this.videoElement) return;\n    this.videojs.controls(controls)\n    // this.videojs.player.userActive(false)\n    // this.videoElement.controls = controls;\n    this.controls = controls;\n  }\n\n  public setMain(main: boolean) {\n    this.main = main;\n  }\n\n  public timeTo(time: number) {\n    if (!this.videoElement) return;\n    time = parseFloat(time.toString());\n    time = (time + this._startSeconds);\n\n    if (time >= this.getDuration()) {\n      this.videoElement.currentTime = this.getDuration() - 0.05;\n      Logger.debug('timeTo: time is greater than duration');\n      this.pause();\n      return;\n    }\n\n    Logger.debug('set time to: ', time);\n    this.videoElement.currentTime = time;\n  }\n\n  public getDuration() {\n    return (this.videoElement?.duration || 0);\n  }\n\n  public getPlayLength() {\n    return this.getDuration() - this._startSeconds;\n  }\n\n  public getCurrentTime() {\n    return (this.videoElement?.currentTime || 0);\n  }\n\n  public getPlayedTime() {\n    const time = this.getCurrentTime() - this._startSeconds;\n    return Math.max(time, 0);\n  }\n\n  public isEnded() {\n    const diff = Math.abs(this.getCurrentTime() - this.getDuration());\n    return diff < 0.1;\n\n  }\n\n  private _createFullscreenButton() {\n    const fullscreenButton = this.videojs?.controlBar.addChild('button', {\n      clickHandler: function () {\n        const doc = window.document;\n        const videoElement = document.querySelector('video');\n        const videoContainer = document.getElementById(\"fullscreen-part\");\n\n        if (videoElement && videoContainer) {\n          if (!doc.fullscreenElement) {\n            // Enter fullscreen\n            videoContainer.requestFullscreen().then(() => {\n              videoElement.style.height = '100vh';\n              videoElement.style.width = '100%';\n            });\n\n          } else {\n            // Exit fullscreen\n            document.exitFullscreen().then(() => {\n              videoElement.style.height = '100%';\n              videoElement.style.width = '100%';\n            });\n          }\n        }\n      }\n    });\n\n    fullscreenButton.controlText('Fullscreen');\n\n    this.videojs?.controlBar.el().appendChild(fullscreenButton.el());\n    const buttonDom = fullscreenButton.el();\n    buttonDom.innerHTML = `<span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span><span class=\"vjs-control-text\" aria-live=\"polite\">Fullscreen</span>`;\n    buttonDom.classList.add('vjs-fullscreen-control');\n  }\n\n\n\n\n}\n\nexport default VideoPlayer;","import { fi } from 'date-fns/locale';\nimport { PlayerState } from './constants';\nimport { MultiVideoPlayerOptions, VideoPlayerOptions } from './main';\nimport { Logger } from \"./utils\";\nimport VideoPlayer from './VideoPlayer';\n\nconst validStates = {\n  [PlayerState.LOADING]: [PlayerState.LOADED],\n  [PlayerState.LOADED]: [PlayerState.PLAYING],\n  [PlayerState.PLAYING]: [PlayerState.PAUSE, PlayerState.ENDED, PlayerState.BUFFERING],\n  [PlayerState.PAUSE]: [PlayerState.PLAYING, PlayerState.ENDED],\n  [PlayerState.ENDED]: [PlayerState.PLAYING],\n\n  [PlayerState.BUFFERING]: [PlayerState.READY, PlayerState.PAUSE, PlayerState.PLAYING],\n  [PlayerState.READY]: [PlayerState.PLAYING],\n  [PlayerState.UNSTARTED]: [],\n};\n\nconst isValidState = (currentState: PlayerState, nextState: PlayerState) => {\n  const stateOuts: PlayerState[] = validStates[currentState];\n  if (!stateOuts) {\n    return false;\n  }\n\n  return stateOuts.includes(nextState);\n};\n\n\nclass SyncVideoPlayer {\n  public options: MultiVideoPlayerOptions;\n  public $container: Element | null;\n  public videoPlayers: VideoPlayer[] = [];\n  public state: PlayerState;\n  private readyCount: number;\n  private currentTime: number;\n\n  constructor(options: MultiVideoPlayerOptions) {\n    this.options = {\n      controls: options.controls ?? true,\n      loop: options.loop ?? false,\n      area: options.area || '',\n      videoPlayers: options.videoPlayers || [],\n      template: '<div id=\"sync_video_player_container\"></div>'\n    };\n\n    this.state = PlayerState.LOADING;\n    this.readyCount = 0;\n\n    this.$container = null;\n\n    this.videoPlayers = [];\n    this.currentTime = 0;\n  }\n\n  public getDebugInfo() {\n    return {\n      state: this.state,\n      currentTime: this.currentTime,\n      videoPlayers: this.videoPlayers.map(vp => {\n        return {\n          id: vp.videoId,\n          state: vp.videoState,\n          currentTime: vp.getCurrentTime(),\n          duration: vp.getDuration,\n          isMain: vp.main,\n          isPlaying: vp.isPlaying,\n        };\n      }),\n    };\n  }\n\n  public mount() {\n    this.render();\n    this.addVideoPlayers(this.options.videoPlayers);\n  }\n\n  private render() {\n    const { template, area } = this.options;\n    if (!area) {\n      return;\n    }\n    const areaEl = document.querySelector(area);\n    if (!areaEl) {\n      return Logger.error('area not found: ', area);\n    }\n\n    areaEl.innerHTML = template || '';\n    this.$container = document.querySelector('#sync_video_player_container');\n  }\n\n  public async changeState(state: PlayerState, videoPlayer: VideoPlayer) {\n    const mainVideoPlayer = this.videoPlayers.find((vp) => vp.main);\n\n    if (state === PlayerState.BUFFERING) {\n        if (mainVideoPlayer && mainVideoPlayer === videoPlayer) {\n            return this.pause();\n        }\n        return;\n    }\n\n    if (state === PlayerState.PLAYING) {\n       \n        if (this.state !== PlayerState.BUFFERING) {\n          return await this.play();\n        }\n        return;\n    }\n\n    if (state === PlayerState.PAUSE) {\n        if (videoPlayer.isEnded()) {\n            return;\n        }\n        return this.pause(true);\n    }\n\n    if (state === PlayerState.ENDED) {\n        if (mainVideoPlayer && mainVideoPlayer !== videoPlayer) {\n            return;\n        }\n        await this.moveStateTo(PlayerState.ENDED, () => {\n            if (this.options.loop) {\n                return this.timeTo(0);\n            }\n        });\n    }\n\n    if (state === PlayerState.READY) {\n        const allReady = this.videoPlayers.every((vp) =>\n            [PlayerState.READY, PlayerState.PLAYING, PlayerState.PAUSE].includes(vp.videoState)\n        );\n\n        if (allReady) {\n            return await this.play();\n        }\n    }\n\n    if (state === PlayerState.UNSTARTED) {\n        if (this.state === PlayerState.ENDED && this.options.loop) {\n            console.log(\"changeState - UNSTARTED - call :  this.play()\");\n            return await this.play();\n        }\n    }\n}\n\n\n  private async moveStateTo(state: PlayerState, success?: (newState: PlayerState, oldState: PlayerState) => void, fail?: (newState: PlayerState, oldState: PlayerState) => void) {\n    if (state === this.state) return;\n    if (isValidState(this.state, state)) {\n      const oldState = this.state;\n      this.state = state;\n      if (success) {\n        await success(this.state, oldState);\n      }\n      Logger.debug('state changed to: ', state);\n    } else {\n      if (fail) {\n        await fail(this.state, state);\n      }\n      Logger.error('invalid state change: ', this.state, state);\n    }\n  }\n\n  public async onReady() {\n    this.readyCount++;\n    if (this.readyCount !== this.videoPlayers.length) return;\n    await this.moveStateTo(PlayerState.LOADED);\n  }\n\n  public onTimeUpdate(videoPlayer: VideoPlayer, time: number) {\n    const diff = Math.abs(this.currentTime - time);\n    if (diff >= 0.2) {\n        this.timeTo(time);\n    }\n    this.currentTime = time;\n    this.fixVideoStates();\n  }\n\n  private fixVideoStates() {\n    const mainVideoPlayer = this.videoPlayers.find((vp) => vp.main);\n    if (!mainVideoPlayer) return;\n\n    this.videoPlayers.forEach(async vp => {\n      if (vp === mainVideoPlayer || vp.isEnded()) return;\n      if (mainVideoPlayer.isPlaying && !vp.isPlaying) {\n        await vp.play();\n      } else if (!mainVideoPlayer.isPlaying && vp.isPlaying) {\n        await vp.pause();\n      }\n    });\n  }\n\n\n  /**\n   * ------------------------------\n   * Public methods\n   * ------------------------------\n   */\n\n  public addVideoPlayers(videoPlayers: VideoPlayerOptions[] | undefined) {\n    if (!videoPlayers) return;\n\n    videoPlayers.forEach(videoPlayer => {\n      this.addVideoPlayer(videoPlayer);\n    });\n  }\n\n  public addVideoPlayer(videoPlayer: VideoPlayerOptions) {\n    const videoInstance = new VideoPlayer(this, videoPlayer);\n    if (!videoInstance.videoElement) return;\n    this.videoPlayers.push(videoInstance);\n  }\n\n  public async play() {\n      await this.moveStateTo(PlayerState.PLAYING, async () => {\n        // this.timeTo(this.currentTime);\n        await Promise.all(\n          this.videoPlayers.map(async (video) => {\n            if (this.currentTime < video.getPlayLength()) {\n              await video.play();\n            }\n          })\n        );\n      });\n  }\n\n  public pause(excludeMain?: boolean) {\n    this.moveStateTo(PlayerState.PAUSE, () => {\n        this.videoPlayers.forEach((video) => {\n            video.pause();\n        });\n    });\n}\n\n  public async stop() {\n    await this.moveStateTo(PlayerState.PAUSE, async () => {\n      await Promise.all(this.videoPlayers.map(async video => {\n        await video.stop();\n      }));\n    });\n  }\n\n  public async timeTo(time: number) {\n    this.currentTime = time;\n    this.videoPlayers.forEach(async video => {\n      await video.timeTo(time);\n    });\n  }\n\n  public swapVideo(index1: number, index2: number) {\n    if (index1 === index2) return;\n    this.videoPlayers[index1]._swap(this.videoPlayers[index2]);\n    const tmp = this.videoPlayers[index1];\n    this.videoPlayers[index1] = this.videoPlayers[index2];\n    this.videoPlayers[index2] = tmp;\n  }\n}\n\nexport default SyncVideoPlayer;","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"container\",\n  id: \"fullscreen-part\"\n}\nconst _hoisted_2 = { id: \"main-video\" }\nconst _hoisted_3 = { id: \"thumbnails-videos\" }\nconst _hoisted_4 = [\"id\", \"onClick\", \"onTouchend\"]\nconst _hoisted_5 = { class: \"controls\" }\nconst _hoisted_6 = { class: \"time\" }\n\nimport { onMounted, nextTick, ref } from \"vue\"\n\nimport SyncVideoPlayer from \"./SyncVideoPlayer\"\nimport { PlayerState } from './constants';\n\n\nexport default /*#__PURE__*/_defineComponent({\n  __name: 'VideoComponent',\n  setup(__props) {\n\nconst multivideos = (window as any).multivideos\nconsole.log(multivideos)\n\nconst syncVideoPlayer = new SyncVideoPlayer({\n  controls: false,\n  loop: false,\n  videoPlayers: multivideos || []\n})\n\n\n// build a list of video ids equal to multivideos length\nconst ids = ref(Array.from({ length: multivideos.length }, (_, i) => `video-${i}`))\nconst debugInfo = ref({})\n\nvar count = 0;\n\nonMounted(() => {\n  syncVideoPlayer.mount();\n\n  setInterval(() => {\n    debugInfo.value = syncVideoPlayer.getDebugInfo();\n  }, 50);\n\n  // const videoElement = document.querySelector(\"#video-0 video\");\n  // console.log(\"✅✅✅✅✅ videoElement = \", videoElement)\n  // videoElement.addEventListener('play', (event) => {\n  //   count = count + 1;\n  //   try{\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\", count)\n  //     syncVideoPlayer.play();\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\")\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n\n  // videoElement.addEventListener('pause', (event) => {\n  //   try{\n  //     syncVideoPlayer.pause();\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n  \n\n  // const buttonTest = document.querySelector('.vjs-play-control');\n  // if (buttonTest) {\n  //   buttonTest.addEventListener('click', (event) => {\n  //     event.preventDefault();\n  //     event.stopPropagation(); \n  //     if(buttonTest.classList.contains('vjs-paused'))\n  //     {\n  //       console.log(\"✅✅✅✅✅ Play ✅✅✅✅✅\")\n  //     }\n  //     else {\n  //       console.log(\"✅✅✅✅✅ Pause ✅✅✅✅✅\")\n  //     }\n  //   });\n  // }\n\n})\n\n\n// function resizeVideoContainers() {\n//   /** resize video containers so it fits a 2/3 - 1/3 */\n\n//   console.log(\"resizeVideoContainers\")\n//   const mainVideoContainer = document.getElementById(\"main-video\")\n//   const mainVideoHeight = mainVideoContainer?.clientHeight\n//   // set height to thumbnails list\n//   const thumbnailsVideos = document.getElementById(\"thumbnails-videos\")\n//   // check if window size is less than 1280px (thumbnails wraps below in this case)\n//   let thumbnailsVideoHeight = mainVideoHeight\n//   if (window.innerWidth < 1280) {\n//     thumbnailsVideoHeight = mainVideoHeight / 2\n\n//   }\n//   console.log(thumbnailsVideos, thumbnailsVideoHeight)\n\n//   thumbnailsVideos!.style.height = `${thumbnailsVideoHeight}px`\n// }\n\n\nasync function onPlay() {\n  await syncVideoPlayer.play()\n}\n\nasync function onPause() {\n  await syncVideoPlayer.pause()\n}\n\nfunction onAdd() {\n  // create area for video1\n  const id = `video-${Math.random().toString(36).substring(2, 9)}`\n  ids.value.push(id)\n  nextTick(() => {\n    // add video\n    syncVideoPlayer.addVideoPlayer({\n      id: `#${id}`,\n      initialSrc:\n        \"https://static.videezy.com/system/resources/previews/000/004/294/original/18_20Dragon_20Coaster_20Part_202.mp4\"\n    })\n  })\n}\n\nfunction onFullscreen() {\n  document.getElementById(\"multivideo\")!.requestFullscreen()\n}\n\nasync function onClick(index: number) {\n  syncVideoPlayer.swapVideo(0, index)\n}\n\nasync function onChange(e: Event) {\n  const value = (e.target as HTMLInputElement).value\n  await syncVideoPlayer.timeTo(parseFloat(value))\n}\n\n\n\nreturn (_ctx: any,_cache: any) => {\n  return (_openBlock(), _createElementBlock(\"div\", null, [\n    _createElementVNode(\"div\", null, [\n      _createElementVNode(\"div\", _hoisted_1, [\n        _createElementVNode(\"div\", _hoisted_2, [\n          (_openBlock(), _createElementBlock(\"div\", {\n            class: \"box\",\n            id: \"video-0\",\n            key: 0,\n            onClick: _cache[0] || (_cache[0] = ($event: any) => (onClick(0))),\n            onTouchend: _cache[1] || (_cache[1] = ($event: any) => (onClick(0)))\n          }, null, 32))\n        ]),\n        _createElementVNode(\"div\", _hoisted_3, [\n          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(ids.value.slice(1), (id, i) => {\n            return (_openBlock(), _createElementBlock(\"div\", {\n              class: \"box\",\n              id: id,\n              key: i + 1,\n              onClick: _withModifiers(($event: any) => (onClick(i + 1)), [\"prevent\"]),\n              onTouchend: _withModifiers(($event: any) => (onClick(i + 1)), [\"prevent\"])\n            }, null, 40, _hoisted_4))\n          }), 128))\n        ])\n      ])\n    ]),\n    _createElementVNode(\"div\", _hoisted_5, [\n      _createTextVNode(\" MAIN STATE = \" + _toDisplayString(debugInfo.value.state) + \" \", 1),\n      _createElementVNode(\"ul\", null, [\n        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(debugInfo.value.videoPlayers, (player) => {\n          return (_openBlock(), _createElementBlock(\"li\", {\n            key: player.id\n          }, _toDisplayString(player.id) + \" - \" + _toDisplayString(player.state), 1))\n        }), 128))\n      ]),\n      _createElementVNode(\"button\", { onClick: onAdd }, \"Add video\"),\n      _createElementVNode(\"button\", { onClick: onPlay }, \"Play\"),\n      _createElementVNode(\"button\", { onClick: onPause }, \"Pause\"),\n      _createElementVNode(\"button\", { onClick: onFullscreen }, \"fullscreen\"),\n      _createElementVNode(\"div\", _hoisted_6, [\n        _createElementVNode(\"input\", {\n          type: \"range\",\n          min: \"0\",\n          max: \"100\",\n          value: \"0\",\n          class: \"slider\",\n          id: \"myRange\",\n          onInput: onChange\n        }, null, 32)\n      ])\n    ])\n  ]))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { onMounted, nextTick, ref } from \"vue\"\n\nimport SyncVideoPlayer from \"./SyncVideoPlayer\"\nimport { PlayerState } from './constants';\n\nconst multivideos = (window as any).multivideos\nconsole.log(multivideos)\n\nconst syncVideoPlayer = new SyncVideoPlayer({\n  controls: false,\n  loop: false,\n  videoPlayers: multivideos || []\n})\n\n\n// build a list of video ids equal to multivideos length\nconst ids = ref(Array.from({ length: multivideos.length }, (_, i) => `video-${i}`))\nconst debugInfo = ref({})\n\nvar count = 0;\n\nonMounted(() => {\n  syncVideoPlayer.mount();\n\n  setInterval(() => {\n    debugInfo.value = syncVideoPlayer.getDebugInfo();\n  }, 50);\n\n  // const videoElement = document.querySelector(\"#video-0 video\");\n  // console.log(\"✅✅✅✅✅ videoElement = \", videoElement)\n  // videoElement.addEventListener('play', (event) => {\n  //   count = count + 1;\n  //   try{\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\", count)\n  //     syncVideoPlayer.play();\n  //     console.log(\"✅✅✅✅✅ 778999454555555555\")\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n\n  // videoElement.addEventListener('pause', (event) => {\n  //   try{\n  //     syncVideoPlayer.pause();\n  //   }\n  //   catch(error){\n  //     console.log(error)\n  //   }\n  // });\n  \n\n  // const buttonTest = document.querySelector('.vjs-play-control');\n  // if (buttonTest) {\n  //   buttonTest.addEventListener('click', (event) => {\n  //     event.preventDefault();\n  //     event.stopPropagation(); \n  //     if(buttonTest.classList.contains('vjs-paused'))\n  //     {\n  //       console.log(\"✅✅✅✅✅ Play ✅✅✅✅✅\")\n  //     }\n  //     else {\n  //       console.log(\"✅✅✅✅✅ Pause ✅✅✅✅✅\")\n  //     }\n  //   });\n  // }\n\n})\n\n\n// function resizeVideoContainers() {\n//   /** resize video containers so it fits a 2/3 - 1/3 */\n\n//   console.log(\"resizeVideoContainers\")\n//   const mainVideoContainer = document.getElementById(\"main-video\")\n//   const mainVideoHeight = mainVideoContainer?.clientHeight\n//   // set height to thumbnails list\n//   const thumbnailsVideos = document.getElementById(\"thumbnails-videos\")\n//   // check if window size is less than 1280px (thumbnails wraps below in this case)\n//   let thumbnailsVideoHeight = mainVideoHeight\n//   if (window.innerWidth < 1280) {\n//     thumbnailsVideoHeight = mainVideoHeight / 2\n\n//   }\n//   console.log(thumbnailsVideos, thumbnailsVideoHeight)\n\n//   thumbnailsVideos!.style.height = `${thumbnailsVideoHeight}px`\n// }\n\n\nasync function onPlay() {\n  await syncVideoPlayer.play()\n}\n\nasync function onPause() {\n  await syncVideoPlayer.pause()\n}\n\nfunction onAdd() {\n  // create area for video1\n  const id = `video-${Math.random().toString(36).substring(2, 9)}`\n  ids.value.push(id)\n  nextTick(() => {\n    // add video\n    syncVideoPlayer.addVideoPlayer({\n      id: `#${id}`,\n      initialSrc:\n        \"https://static.videezy.com/system/resources/previews/000/004/294/original/18_20Dragon_20Coaster_20Part_202.mp4\"\n    })\n  })\n}\n\nfunction onFullscreen() {\n  document.getElementById(\"multivideo\")!.requestFullscreen()\n}\n\nasync function onClick(index: number) {\n  syncVideoPlayer.swapVideo(0, index)\n}\n\nasync function onChange(e: Event) {\n  const value = (e.target as HTMLInputElement).value\n  await syncVideoPlayer.timeTo(parseFloat(value))\n}\n\n\n</script>\n\n<template>\n  <div>\n    <div>\n      <div class=\"container\" id=\"fullscreen-part\">\n        <div id=\"main-video\">\n          <div class=\"box\" id=\"video-0\" :key=\"0\" @click=\"onClick(0)\" @touchend=\"onClick(0)\"></div>\n        </div>\n        <div id=\"thumbnails-videos\">\n          <div v-for=\"(id, i) in ids.slice(1)\" class=\"box\" :id=\"id\" :key=\"i + 1\" @click.prevent=\"onClick(i + 1)\"\n            @touchend.prevent=\"onClick(i + 1)\"></div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"controls\">\n      MAIN STATE = {{ debugInfo.state }}\n      <ul>\n        <li v-for=\"player in debugInfo.videoPlayers\" :key=\"player.id\">\n          {{ player.id }} - {{ player.state }}\n        </li>\n      </ul>\n\n      <button @click=\"onAdd\">Add video</button>\n      <button @click=\"onPlay\">Play</button>\n      <button @click=\"onPause\">Pause</button>\n      <button @click=\"onFullscreen\">fullscreen</button>\n      <!-- range selector for time -->\n      <div class=\"time\">\n        <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" class=\"slider\" id=\"myRange\" @input=\"onChange\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<style>\n.container {\n  position: relative;\n}\n\n#thumbnails-videos {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 25%;\n  margin-left: 10px;\n\n  max-height: 100%;\n  overflow-y: auto;\n}\n</style>\n","import script from \"./VideoComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./VideoComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./VideoComponent.vue?vue&type=style&index=0&id=482f0b94&lang=css\"\n\nconst __exports__ = script;\n\nexport default __exports__","import \"./compatibility\"\nimport { createApp } from \"vue\"\n\nimport ChatComponent from \"./components/ChatComponent.vue\"\nimport NotificationsBell from \"./components/NotificationsBell.vue\"\nimport VideoComponent from \"./video/VideoComponent.vue\"\n\nimport axios from \"axios\";\n// default axios config\naxios.defaults.xsrfHeaderName = \"X-CSRFTOKEN\";\naxios.defaults.xsrfCookieName = \"csrftoken\";\naxios.defaults.withCredentials = true\n\nif (document.getElementById(\"chat\")) {\n  createApp(ChatComponent).mount('#chat')\n}\n\nif (document.getElementById(\"notifications\")) {\n  createApp(NotificationsBell).mount('#notifications')\n}\n\nif(document.getElementById(\"multivideo\")) {\n  createApp(VideoComponent).mount('#multivideo');\n}"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","status","responseURL","indexOf","responseHeaders","getAllResponseHeaders","responseData","responseType","response","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","e","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","defaults","createInstance","defaultConfig","context","instance","prototype","extend","axios","create","instanceConfig","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","interceptors","arguments","chain","interceptor","unshift","fulfilled","rejected","push","length","shift","getUri","replace","handlers","use","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","error","Error","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","axiosKeys","concat","otherKeys","Object","keys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","process","call","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","JSON","stringify","parse","maxContentLength","maxBodyLength","thisArg","args","Array","i","apply","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","trim","substr","callback","arr","constructor","FormData","result","ArrayBuffer","isView","getPrototypeOf","isFunction","pipe","URLSearchParams","str","product","obj","l","hasOwnProperty","assignValue","a","b","stripBOM","content","charCodeAt","testVideo","canPlayType","webm","container","getElementById","p","classList","add","prepend","innerHTML","sfc","props","__vccOpts","isCallable","tryToString","$TypeError","argument","$String","String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","O","index","includes","DESCRIPTORS","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","uncurryThis","stringSlice","it","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","f","createPropertyDescriptor","object","bitmap","enumerable","configurable","makeBuiltIn","defineGlobalProperty","options","simple","global","unsafe","nonConfigurable","nonWritable","fails","get","EXISTS","MAX_SAFE_INTEGER","version","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","exec","NATIVE_BIND","Function","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","aFunction","namespace","aCallable","isNullOrUndefined","V","P","func","check","Math","globalThis","self","g","toObject","classof","$Object","propertyIsEnumerable","store","functionToString","inspectSource","set","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","getterFor","TYPE","state","type","metadata","facade","STATE","documentAll","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","toLength","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","getter","setter","arity","ceil","floor","trunc","x","n","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","enumBugKeys","getOwnPropertyNames","getOwnPropertySymbols","names","$propertyIsEnumerable","NASHORN_BUG","input","pref","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","uid","SHARED","IS_PURE","mode","copyright","license","V8_VERSION","symbol","Symbol","toIntegerOrInfinity","max","min","integer","IndexedObject","requireObjectCoercible","len","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","proto","item","argCount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","d","definition","o","makeMap","expectsLowerCase","Set","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","startsWith","assign","splice","hasOwnProperty$1","isMap","toTypeString","isSet","isRegExp","isPromise","catch","objectToString","toRawType","isIntegerKey","parseInt","isReservedProp","cacheStringFunction","cache","hit","camelizeRE","camelize","_","hyphenateRE","hyphenate","capitalize","toHandlerKey","s","hasChanged","oldValue","is","invokeArrayFns","arg","def","looseToNumber","parseFloat","isNaN","toNumber","Number","NaN","_globalThis","getGlobalThis","GLOBALS_ALLOWED","isGloballyAllowed","normalizeStyle","res","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","normalizeProps","class","klass","style","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","equal","looseEqual","aValidType","bValidType","getTime","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","findIndex","toDisplayString","replacer","_key","__v_isRef","size","entries","reduce","val2","stringifySymbol","values","map","_a","activeEffectScope","activeEffect","EffectScope","detached","_active","effects","cleanups","parent","scopes","active","run","currentEffectScope","on","off","stop","fromParent","last","pop","effectScope","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","ReactiveEffect","trigger","scheduler","deps","_dirtyLevel","_trackId","_runnings","_shouldSchedule","_depsLength","dirty","pauseTracking","dep","computed","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","onStop","effect2","cleanupDepEffect","trackId","delete","cleanup","_effect","lazy","runner","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","lastDirtyLevel","scheduleEffects","allowRecurse","createDep","Map","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","track","depsMap","newValue","oldTarget","newLength","key2","getDepFromReactive","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","toRaw","BaseReactiveHandler","_isReadonly","_shallow","receiver","isReadonly2","shallow","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","MutableReactiveHandler","super","isOldValueReadonly","isReadonly","isShallow","hadKey","deleteProperty","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","get2","deleteEntry","clear","hadItems","createForEach","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","next","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","iteratorMethods","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","Proxy","isReactive","isProxy","raw","markRaw","ComputedRefImpl","_setter","isSSR","_value","triggerRefValue","_cacheable","trackRefValue","_dirty","computed$1","getterOrOptions","debugOptions","onlyGetter","cRef","ref2","newVal","r","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","_rawValue","useDirectValue","triggerRef","unref","toValue","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","_get","_set","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","__v_isReadonly","toRef","defaultValue","TrackOpTypes","TriggerOpTypes","assertNumber","ErrorCodes","ErrorTypeStrings$1","callWithErrorHandling","err","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","vnode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","logError","console","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","findInsertionIndex","start","end","middle","middleJob","middleJobId","getId","pre","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","sort","Infinity","comparator","diff","devtools$1","devtoolsNotInstalled","setDevtoolsHook$1","hook","_b","enabled","event","emit","HTMLElement","replay","__VUE_DEVTOOLS_HOOK_REPLAY__","newHook","setTimeout","DeprecationTypes$1","warnDeprecation","globalCompatConfig","MODE","configureCompat$1","getCompatConfigForKey","compatConfig","isCompatEnabled","enableForBuiltIn","__isBuiltIn","rawMode","assertCompatEnabled","softAssertCompatEnabled","checkCompatEnabled","eventRegistryMap","getRegistry","events","once","wrapped","vm","cbs","emit$1","compatModelEventPrefix","convertLegacyVModelProps","shapeFlag","dynamicProps","comp","model","applyModelFromMixins","mixins","modelValue","m","compatModelEmit","modelHandler","rawArgs","isUnmounted","modelArg","modifiersKey","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","asMixin","emitsCache","cached","emits","hasExtends","extendEmits","raw2","normalizedFromExtend","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","_scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","_ns","renderComponentRoot","Component","withProxy","propsOptions","slots","attrs","render","renderCache","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","root","some","filterModelListeners","cloneVNode","cls","dirs","transition","filterSingleRoot","children","recurse","singleRoot","child","isVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","nextKeys","updateHOCHostEl","subTree","suspense","activeBranch","COMPONENTS","DIRECTIVES","FILTERS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","for","resolveDynamicComponent","resolveDirective","resolveFilter$1","warnMissing","currentInstance","selfName","getComponentName","registry","isSuspense","__isSuspense","suspenseId","SuspenseImpl","n1","n2","anchor","parentComponent","parentSuspense","slotScopeIds","rendererInternals","mountSuspense","patchSuspense","hydrate","hydrateSuspense","createSuspenseBoundary","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","patch","hiddenContainer","pendingBranch","ssContent","ssFallback","setActiveBranch","um","unmount","newBranch","newFallback","isInFallback","isHydrating","isSameVNodeType","pendingId","fallback","move","parentNode","parentSuspenseId","isSuspensible","isVNodeSuspensible","initialAnchor","resume","sync","vnode2","parentComponent2","container2","delayEnter","afterLeave","hasUnresolvedAncestor","fallbackVNode","namespace2","anchor2","mountFallback","registerDep","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncDep","asyncSetupResult","asyncResolved","handleSetupResult","placeholder","parentSuspense2","doRemove","node","hydrateNode","isSlotChildren","normalizeSuspenseSlot","default","block","trackBlock","isBlockTreeEnabled","openBlock","currentBlock","closeBlock","singleChild","dynamicChildren","queueEffectWithSuspense","branch","suspensible","legacyDirectiveHookMap","beforeMount","mounted","updated","unmounted","mapCompatDirectiveHook","dir","mappedName","mapped","mappedHook","ssrContextKey","useSSRContext","inject","watchEffect","doWatch","watchPostEffect","flush","watchSyncEffect","INITIAL_WATCHER_VALUE","watch","immediate","deep","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","traverse","forceTrigger","isMultiSource","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","__watcherHandles","fill","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","reset","setCurrentInstance","segments","depth","currentDepth","withDirectives","directives","getExposeProxy","bindings","modifiers","invokeDirectiveHook","oldBindings","binding","leaveCbKey","enterCbKey$1","useTransitionState","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","appear","Boolean","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","BaseTransitionImpl","setup","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","hasFound","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","leavingHooks","update","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","BaseTransition","callHook","callAsyncHook","every","hook2","hooks","beforeEnter","leavingVNode","enter","afterHook","cancelHook","called","cancelled","leave","clone","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","onError","userOnError","resolvedComp","pendingRequest","retries","retry","load","thisRequest","userRetry","userFail","toStringTag","__asyncResolved","createInnerComp","loaded","delayed","ce","__isKeepAlive","KeepAliveImpl","include","exclude","sharedContext","renderer","_unmount","storageContainer","resetShapeFlag","pruneCache","pruneCacheEntry","activate","instance2","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","onVnodeUnmounted","matches","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","cachedVNode","KeepAlive","pattern","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","__weh","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","getCompatChildren","walk","vnodes","getCompatListeners","listeners","convertLegacyRenderFn","_rc","_compatChecked","_compatWrapped","compatH","propsOrChildren","t","is2ndArgArrayChildren","convertLegacySlots","convertLegacyDirectives","convertLegacyProps","skipLegacyRootLevelProps","legacyProps","converted","handlerKey","convertLegacyEventKey","existing","incoming","staticClass","staticStyle","slotName","slot","slotChildren","scopedSlots","normalizeChildren","defineLegacyVNodeProperties","getInstance","componentOptions","defineProperties","tag","elm","componentInstance","text","Ctor","propsData","normalizedFunctionalComponentMap","legacySlotProxyHandlers","convertLegacyFunctionalComponent","legacyFn","Func","legacyCtx","injections","resolveInjections","displayName","renderList","renderItem","from","createSlots","dynamicSlots","j","renderSlot","noSlotted","isCE","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","toHandlers","preserveCaseIfNecessary","legacyBindObjectProps","_tag","_asProp","isSync","camelizedKey","hyphenatedKey","$event","legacyBindObjectListeners","mergeProps","legacyRenderSlot","bindObject","legacyresolveScopedSlots","hasDynamicKeys","mapKeyToName","staticCacheMap","legacyRenderStatic","staticRenderFns","legacyCheckKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","configKeyCodes","keyCodes","mappedKeyCode","isKeyNotMatch","expect","actual","legacyMarkOnce","tree","legacyBindDynamicKeys","legacyPrependModifier","installCompatInstanceProperties","del","$set","$delete","$mount","_compat_mount","$destroy","_compat_destroy","$slots","$scopedSlots","$on","$once","$off","$children","$listeners","$vnode","$options","resolveMergedOptions","$parent","_self","_uid","_data","_isMounted","_isDestroyed","$createElement","_o","_s","_l","_t","_q","_i","_m","_f","_k","_v","createTextVNode","_e","createCommentVNode","_u","_g","_p","getPublicInstance","isStatefulComponent","publicPropertiesMap","$el","$data","$props","$attrs","$refs","refs","$root","$emit","$forceUpdate","$nextTick","$watch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","desc","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","deepMergeData","to","toVal","fromVal","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","useSlots","getContext","useAttrs","setupContext","createSetupContext","normalizePropsOrEmits","mergeDefaults","opt","skipFactory","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","unsetCurrentInstance","applyOptions","beforeCreate","callHook$1","dataOptions","computedOptions","methods","watchOptions","provide","provideOptions","injectOptions","created","beforeUpdate","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","checkDuplicateProperties","methodHandler","createWatcher","provides","registerLifecycleHook","register","_hook","normalizeInject","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","mergeOptions","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","installLegacyOptionMergeStrats","singletonApp","singletonCtor","isCopyingConfig","createCompatVue$1","createApp","createSingletonApp","Vue","Vue2","createCompatApp","app","applySingletonPrototype","_createRoot","install","mixin","directive","_base","cid","extendCache","extendCtor","extendOptions","Super","SubVue","inlineOptions","mergeBase","superValue","observable","util","warn","defineReactive","configureCompat","installAppCompatProperties","installFilterMethod","installCompatMount","installLegacyAPIs","applySingletonAppMutations","_context","isRuntimeOnly","compilerOptions","isCustomElement","hasPrototypeAugmentations","descriptors","getOwnPropertyDescriptors","_component","hasNoRender","template","emptyRender","createComponentInstance","setupComponent","isCompatRoot","selectorOrEl","querySelector","SVGElement","MathMLElement","finishComponentSetup","Element","removeAttribute","_container","__vue_app__","bum","methodsToPatch","patched","WeakSet","reactiveVal","defineReactiveSimple","createAppContext","isNativeTag","performance","warnHandler","propsCache","uid$1","createAppAPI","rootComponent","rootProps","installedPlugins","_props","_instance","plugin","mount","rootContainer","isHydrate","runWithContext","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","createPropsDefaultThis","propKey","shouldSkipAttr","initProps","isStateful","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","endsWith","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","extendProps","normalizedKey","validatePropName","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","_isString","_isRef","isVFor","doSet","k","hasMismatch","isSVGContainer","namespaceURI","tagName","isMathMLContainer","getContainerType","isComment","nodeType","createHydrationFunctions","mt","mountComponent","patchProp","createText","nextSibling","insert","createComment","hasChildNodes","_vnode","firstChild","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","isTemplateNode","replaceNode","Static","needToAdoptContent","staticCount","outerHTML","hydrateFragment","hydrateElement","locateClosingAnchor","previousSibling","lastChild","hydrateChildren","forcePatch","vnodeHooks","needCallTransitionHooks","needTransition","textContent","onClick","onVnodeBeforeMount","parentVNode","fragmentSlotScopeIds","isFragment","next2","close","newNode","oldNode","parentNode2","replaceChild","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","__VUE__","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","mountChildren","resolveChildrenNamespace","unmountChildren","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","traverseStaticChildren","updateComponent","initialVNode","compatMountInstance","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","moveType","needTransition2","remove2","performLeave","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","mc","pc","pbc","currentNamespace","encoding","allowed","ch1","ch2","arrI","subComponent","isTeleport","__isTeleport","isTeleportDisabled","disabled","isTargetSVG","isTargetMathML","resolveTarget","select","targetSelector","TeleportImpl","mainAnchor","targetAnchor","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","shouldRemove","hydrateTeleport","isReorder","targetNode","_lpa","Teleport","ut","normalizedAsyncComponentMap","convertLegacyAsyncComponent","fallbackPromise","rj","loading","convertLegacyComponent","functional","disableTracking","vnodeArgsTransformer","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","mergedProps","flag","createStaticVNode","numberOfNodes","asBlock","memo","slotFlag","toMerge","emptyAppContext","exposeProxy","attrsProxy","slotsProxy","bc","rtg","rtc","sp","internalSetCurrentInstance","setInSSRSetupState","registerGlobalSetter","setters","compile","installWithProxy","setupResult","setupStatefulComponent","resolvedResult","__ssrInlineRender","ssrRender","registerRuntimeCompiler","_compile","skipOptions","delimiters","componentCompilerOptions","finalCompilerOptions","getAttrsProxy","includeInferred","__name","useModel","camelizedName","hyphenatedName","localValue","propValue","modifierKey","i2","initCustomFormatter","withMemo","isMemoSame","ErrorTypeStrings","devtools","setDevtoolsHook","_ssrUtils","ssrUtils","resolveFilter","_compatUtils","createCompatVue","compatUtils","DeprecationTypes","svgNS","mathmlNS","doc","templateContainer","nodeOps","insertBefore","removeChild","createElementNS","multiple","createTextNode","nodeValue","selector","before","cloneNode","wrapper","appendChild","TRANSITION","ANIMATION","vtcKey","Transition","resolveTransitionProps","DOMTransitionPropsValidators","css","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","h2","hasExplicitCallback","baseProps","legacyClassEnabled","legacyEnterFromClass","legacyAppearFromClass","legacyLeaveFromClass","toLegacyClass","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","legacyClass","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","_vtc","requestAnimationFrame","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","removeEventListener","onEnd","styles","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","body","offsetHeight","patchClass","isSVG","transitionClasses","className","vShowOldKey","vShow","display","setDisplay","initVShowForSSR","getSSRProps","CSS_VAR_TEXT","useCssVars","updateTeleports","vars","querySelectorAll","setVarsOnNode","setVars","setVarsOnVNode","ob","MutationObserver","observe","childList","disconnect","setProperty","patchStyle","currentDisplay","isCssString","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","compatCoerceAttr","isBoolean","isEnumeratedAttr","v2CoercedValue","patchDOMProp","getAttribute","needRemove","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","_vts","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","isNativeOn","shouldSetAsProp","_trueValue","_falseValue","defineCustomElement","hydrate2","Comp","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","BaseClass","_def","_connected","_resolved","_numberProps","_ob","shadowRoot","attachShadow","_resolveProps","connectedCallback","_update","_resolveDef","disconnectedCallback","attributes","_setAttr","mutations","attributeName","isAsync","numberProps","_applyStyles","asyncDef","declaredPropKeys","_setProp","_getProp","shouldReflect","shouldUpdate","dispatch","dispatchEvent","CustomEvent","detail","useCssModule","modules","mod","positionMap","newPositionMap","moveCbKey","enterCbKey","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","transform","webkitTransform","transitionDuration","propertyName","cssTransitionProps","getBoundingClientRect","TransitionGroup","oldPos","newPos","dx","left","dy","top","getModelAssigner","onCompositionStart","composing","onCompositionEnd","Event","assignKey","vModelText","castToNumber","domValue","elValue","activeElement","vModelCheckbox","_modelValue","elementValue","getValue","checked","found","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","_assigning","setSelected","_binding","isMultiple","isArrayValue","option","optionValue","optionType","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","modelToUse","initVModelForSSR","systemModifiers","modifierGuards","stopPropagation","prevent","preventDefault","currentTarget","ctrl","ctrlKey","shiftKey","alt","altKey","meta","metaKey","button","right","exact","withModifiers","_withMods","cacheKey","guard","keyNames","esc","space","up","down","withKeys","globalKeyCodes","_withKeys","eventKey","keyCode","codes","rendererOptions","enabledHydration","ensureRenderer","ensureHydrationRenderer","containerOrSelector","normalizeContainer","resolveRootNamespace","createSSRApp","ssrDirectiveInitialized","initDirectivesForSSR","runtimeDom","freeze","__proto__","createElementVNode","wrappedCreateApp","show","Vue$1","_cache","$setup","_component_vue_advanced_chat","_resolveComponent","_openBlock","_createBlock","currentUserId","rooms","messagesLoaded","roomId","messages","title","ROOMS_EMPTY","ROOM_EMPTY","NEW_MESSAGES","MESSAGE_DELETED","MESSAGES_EMPTY","CONVERSATION_STARTED","TYPE_MESSAGE","SEARCH","IS_ONLINE","LAST_SEEN","IS_TYPING","onSendMessage","sendMessage","makeMap$2","list2","NOOP$1","extend$2","hasOwnProperty$3","hasOwn$1","isArray$2","isMap$1","toTypeString$1","isFunction$2","isString$2","isObject$2","objectToString$1","hasChanged$1","def$1","w","wasTracked","trackOpBit","newTracked","initDepMarkers","finalizeDepMarkers","ptr","effectTrackDepth","maxMarkerBits","cleanupEffect","deferStop","trackEffects","shouldTrack2","triggerEffect","get$1","createGetter","shallowGet","readonlyGet","set$1","createSetter","shallowSet","get$1$1","isShallow2","has$1","set$1$1","self2","makeMap$1","isArray$1","isString$1","isObject$1","isFunction$1","onRE$1","isOn$1","isModelListener$1","extend$1","hasOwnProperty$2","cacheStringFunction$1","camelizeRE$1","camelize$1","hyphenateRE$1","hyphenate$1","capitalize$1","toNumber$1","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","currentPreFlushParentJob","p2","queueCb","activeQueue","pendingQueue","queuePreFlushCb","parentJob","isModelListener2","render3","flush2","path2","_leaveCb","callHook2","_enterCb","internalInstance","beforeMount2","updated2","unmounted2","unwrapInjectedRef","set2","register2","unwrapRef","directive2","hostCloneNode","areChildrenSVG","update2","remove3","text2","compile$1","createAttrsProxy","onRE","content2","_getNow","skipTimestampCheck","_getNow2","skipTimestampCheck2","createEvent","timeStamp","ffMatch","addEventListener$1","_vei","nativeOnRE","resolve2","def2","hasOptions","rawKeys","_moveCb","_vod","_export_sfc","_sfc_main$q","infinite","required","messageId","_hoisted_1$q","_hoisted_2$n","_hoisted_3$j","_hoisted_4$g","_hoisted_5$b","_hoisted_6$7","_sfc_render$q","Loader","_sfc_main$p","param","svgItem","toggle","menu","file","paperclip","emoji","pencil","checkmark","eye","dropdown","deleted","microphone","svgId","_hoisted_1$p","_hoisted_2$m","_hoisted_3$i","_sfc_render$p","xmlns","width","height","viewBox","SvgIcon","_sfc_main$o","textMessages","showSearch","showAddRoom","loadingRooms","showSearchBar","_hoisted_1$o","_hoisted_2$l","_sfc_render$o","_component_svg_icon","autocomplete","onInput","RoomsSearch","element$1","decodeNamedCharacterReference","characterReference2","char","items","parameters","chunkStart","combineExtensions","extensions","syntaxExtension","extension","maybe","code2","constructs","combineHtmlExtensions","htmlExtensions","htmlExtension","decodeNumericCharacterReference","fromCharCode","characterReferences","replace2","value2","normalizeIdentifier","unicodePunctuationRegex","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","sanitizeUri","normalizeUri","colon","questionMark","numberSign","slash","skip","protocolHref","protocolSrc","settings","tags","definitions2","buffers","mediaStack","tightStack","defaultHandlers","blockQuote","onenterblockquote","codeFenced","onentercodefenced","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","onentercodeindented","codeText","onentercodetext","onentercontent","onenterdefinition","definitionDestinationString","onenterdefinitiondestinationstring","definitionLabelString","definitionTitleString","emphasis","onenteremphasis","htmlFlow","onenterhtmlflow","htmlText","onenterhtml","image","onenterimage","label","link","onenterlink","listItemMarker","onenterlistitemmarker","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterlistunordered","paragraph","onenterparagraph","reference","resource","onenterresource","resourceDestinationString","onenterresourcedestinationstring","resourceTitleString","setextHeading","onentersetextheading","strong","onenterstrong","exit","atxHeading","onexitatxheading","atxHeadingSequence","onexitatxheadingsequence","autolinkEmail","onexitautolinkemail","autolinkProtocol","onexitautolinkprotocol","onexitblockquote","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitflowcode","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","codeFlowValue","onexitcodeflowvalue","onexitcodetext","codeTextData","onexitdefinition","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexitemphasis","hardBreakEscape","onexithardbreak","hardBreakTrailing","onexithtml","htmlFlowData","htmlTextData","onexitmedia","onexitlabel","labelText","onexitlabeltext","lineEnding","onexitlineending","onexitlistordered","onexitlistunordered","onexitparagraph","referenceString","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","onexitstrong","thematicBreak","onexitthematicbreak","definitions","lineEndingIfNeeded","encode$1","setData","getData","lineEndingStyle","defaultLineEnding","compile2","listStack","head","sliceSerialize","prepareList","null","handles","kind","handle","atMarker","containerBalance","loose","_loose","buf","lineEnding2","buffer2","previous2","onexitlistitem","count","labelId","referenceId","destination","media","context2","allowDangerousProtocol","allowDangerousHtml","uri","factorySpace","ok","limit","POSITIVE_INFINITY","size2","prefix","consume","content$1","tokenize","initializeContent","contentStart","attempt","parser","contentInitial","afterContentStartConstruct","paragraphInitial","lineStart","contentType","previous","document$2","initializeDocument","containerConstruct","tokenizeContainer","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","point","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","thereIsANewContainer","thereIsNoNewContainer","offset","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","entry","nok","disable","classifyCharacter","resolveAll","constructs2","attention","tokenizeAttention","resolveAllAttention","group","openingSequence","closingSequence","nextEvents","_close","_open","movePoint","insideSpan","attentionMarkers2","attentionMarkers","marker","inside","after","column","_bufferIndex","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","partial","tokenizeBlockQuoteStart","tokenizeBlockQuoteContinuation","contStart","contBefore","characterEscape","tokenizeCharacterEscape","characterReference","tokenizeCharacterReference","numeric","nonLazyContinuation","tokenizeNonLazyContinuation","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","info","metaBefore","contentBefore","beforeContentChunk","contentChunk","effects2","ok2","nok2","startBefore","start2","beforeSequenceClose","sequenceClose","sequenceCloseAfter","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","furtherStart2","tokenizeCodeText","resolveCodeText","tailExitIndex","headEnterIndex","between","subtokenize","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","adjust","breaks","_gfmTasklistFirstContentOfListItem","tokenizeContent","resolveContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","factoryDestination","literalType","literalMarkerType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","begin","escape","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","defined","titleBefore2","beforeMarker","titleAfter","titleAfterOptionalWhitespace","tokenizeHardBreakEscape","headingAtx","tokenizeHeadingAtx","resolveHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","tokenizeHtmlFlow","resolveTo","resolveToHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","continuationAfter","continuationStartNonLazy","continuationBefore","continuationRawEndTag","tokenizeHtmlText","returnState","instruction","tagOpen","declaration","commentEnd","comment","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","tokenizeLabelEnd","resolveToLabelEnd","resolveAllLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","_inactive","_balanced","labelStart","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","tokenizeLineEnding","tokenizeThematicBreak","sequence","list","tokenizeListStart","tokenizeListContinuation","tokenizeListEnd","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent$1","initialSize","onBlank","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","setextUnderline","tokenizeSetextUnderline","resolveToSetextUnderline","definition2","heading","flow$1","initializeFlow","initial","atBlankEnding","flowInitial","afterConstruct","resolver","createResolver","string$1","initializeFactory","text$3","field","initializeText","resolveAllLineSuffixes","notText","extraResolver","resolveAllText","chunks","tabs","bufferIndex","chunk","_index","createTokenizer","initialize","columnStart","resolveAllConstructs","exit2","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","main","addResult","expandTabs","serializeChunks","sliceChunks","accountForPotentialSkip","chunkIndex","go","fields","construct","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","from2","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","startIndex","startBufferIndex","endIndex","endBufferIndex","view","atTab","document$1","text$2","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","endPosition","lastIndex","micromark","wwwPrefix","tokenizeWwwPrefix","tokenizeDomain","tokenizePath","trail","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","text$1","gfmAutolinkLiteral","dot","gfmAtext","previousUnbalanced","atext","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trail2","trailCharRefStart","trailBracketAfter","trailCharRefInside","_gfmAutolinkLiteralWalkedInto","gfmAutolinkLiteralHtml","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","anchorFromToken","indent","tokenizeIndent","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","gfmFootnotes","codePointAt","string2","callStart","callData","callEscape","labelAtMarker","whitespaceAfter","own","emptyOptions","defaultBackLabel","referenceIndex","rereferenceIndex","gfmFootnoteHtml","labelTagName","labelAttributes","backLabel","clobberPrefix","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCallString","footnoteStack","calls","counts","counter","safeId","reuseCounter","references","$0","gfmStrikethroughHtml","strikethrough","gfmStrikethrough","options_","single","singleTilde","tokenizeStrikethrough","resolveAllStrikethrough","insideSpan2","alignment","none","center","gfmTableHtml","table","tableAlign","_align","tableBody","tableData","tableColumn","align","tableHead","tableHeader","tableRow","$1","EditMap","add2","addImpl","vecs","editMap","at","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","cell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","range","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","exits","related","side","reFlow","reText","gfmTagfilterHtml","exitHtmlData","gfmTaskListItemHtml","taskListCheck","taskListCheckValueChecked","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","gfmHtml","carriageReturn","lineFeed","carriageReturnLineFeed","horizontalTab","virtualSpace","nul","soh","stx","etx","eot","enq","ack","bel","bs","ht","lf","vt","ff","cr","so","si","dle","dc1","dc2","dc3","dc4","nak","syn","etb","can","em","sub","fs","gs","rs","us","exclamationMark","quotationMark","dollarSign","percentSign","ampersand","apostrophe","leftParenthesis","rightParenthesis","asterisk","plusSign","comma","dash","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","semicolon","lessThan","equalsTo","greaterThan","atSign","uppercaseA","uppercaseB","uppercaseC","uppercaseD","uppercaseE","uppercaseF","uppercaseG","uppercaseH","uppercaseI","uppercaseJ","uppercaseK","uppercaseL","uppercaseM","uppercaseN","uppercaseO","uppercaseP","uppercaseQ","uppercaseR","uppercaseS","uppercaseT","uppercaseU","uppercaseV","uppercaseW","uppercaseX","uppercaseY","uppercaseZ","leftSquareBracket","backslash","rightSquareBracket","caret","underscore","graveAccent","lowercaseA","lowercaseB","lowercaseC","lowercaseD","lowercaseE","lowercaseF","lowercaseG","lowercaseH","lowercaseI","lowercaseJ","lowercaseK","lowercaseL","lowercaseM","lowercaseN","lowercaseO","lowercaseP","lowercaseQ","lowercaseR","lowercaseS","lowercaseT","lowercaseU","lowercaseV","lowercaseW","lowercaseX","lowercaseY","lowercaseZ","leftCurlyBrace","verticalBar","rightCurlyBrace","tilde","degree","byteOrderMarker","replacementCharacter","underlineTokenize","insideEscape","underlineConstruct","underline","underlineHtml","usertagTokenize","usertagConstruct","usertag","usertagHtml","users","usertagContent","userId","user","find","user2","markdown","textFormatting","gfmDisabled","linkify","markdown2","replaceAll","singleLine","element2","types","innerText","IMAGE_TYPES","VIDEO_TYPES","AUDIO_TYPES","_sfc_main$n","roomList","reply","linkOptions","parsedMessage","checkType","checkImageType","lastIndexOf","slashIndex","substring","isMedia","setImageSize","Image","onLoad","img","ratio","round","src","openTag","_hoisted_1$n","_hoisted_2$k","_hoisted_3$h","_sfc_render$n","rel","FormatMessage","HANDLERS_PROPERTY","HAS_WINDOWS","HAS_NAVIGATOR","IS_TOUCH","msMaxTouchPoints","EVENTS","processDirectiveArguments","bindingValue","isFunction2","middleware","isActive","detectIframe","capture","execHandler","onFauxIframeClick","contains","onEvent","composedPath","isClickOutside","eventName","srcTarget","documentElement","detectIframeEvent","thisHandler","vClickOutside","typingText","room","typingUsers","checkMediaType","isImageFile","isVideoFile","isImageVideoFile","isAudioFile","_sfc_main$m","clickOutside","roomActions","roomMenuOpened","getLastMessage","isTyping","lastMessage","senderId","userStatus","isMessageCheckmarkVisible","saved","distributed","formattedDuration","files","isAudio","roomActionHandler","action","closeRoomMenu","_hoisted_1$m","_hoisted_2$j","_hoisted_3$g","_hoisted_4$f","_hoisted_5$a","_hoisted_6$6","_hoisted_7$6","_hoisted_8$4","_hoisted_9$4","_hoisted_10$4","_hoisted_11$3","_hoisted_12$3","_hoisted_13$1","_sfc_render$m","_component_format_message","_directive_click_outside","avatar","roomName","timestamp","new","idx","unreadCount","RoomContent","filteredItems","formatString","_sfc_main$l","showRoomsList","isMobile","roomsLoaded","customSearchRoomEnabled","scrollDistance","filteredRooms","observer","showLoader","loadingMoreRooms","selectedRoomId","oldVal","initIntersectionObserver","rootMargin","threshold","IntersectionObserver","isIntersecting","loadMoreRooms","searchRoom","ev","openRoom","_hoisted_1$l","_hoisted_2$i","_hoisted_3$f","_hoisted_4$e","_sfc_render$l","_component_rooms_search","_component_loader","_component_room_content","onSearchRoom","onAddRoom","fRoom","onRoomActionHandler","RoomsList","_sfc_main$k","singleRoom","roomInfoEnabled","menuActions","messageSelectionEnabled","messageSelectionActions","selectedMessagesTotal","menuOpened","messageSelectionAnimationEnded","lastChanged","menuActionHandler","closeMenu","messageSelectionActionHandler","_hoisted_1$k","_hoisted_2$h","_hoisted_3$e","_hoisted_4$d","_hoisted_5$9","_hoisted_6$5","_hoisted_7$5","_hoisted_8$3","_hoisted_9$3","_hoisted_10$3","_hoisted_11$2","_hoisted_12$2","_hoisted_13","_sfc_render$k","CANCEL_SELECT_MESSAGE","RoomHeader","assertNonEmptyString","DB_VERSION_CURRENT","DB_VERSION_INITIAL","STORE_EMOJI","STORE_KEYVALUE","STORE_FAVORITES","FIELD_TOKENS","INDEX_TOKENS","FIELD_UNICODE","INDEX_COUNT","FIELD_GROUP","FIELD_ORDER","INDEX_GROUP_AND_ORDER","KEY_ETAG","KEY_URL","KEY_PREFERRED_SKINTONE","MODE_READONLY","MODE_READWRITE","INDEX_SKIN_UNICODE","FIELD_SKIN_UNICODE","DEFAULT_DATA_SOURCE$1","DEFAULT_LOCALE$1","uniqBy$1","uniqEmoji","emojis","unicode","initialMigration","db","createObjectStore","keyPath","indexes","indexName","keyPath2","multiEntry","createIndex","openReqs","databaseCache","onCloseListeners","handleOpenOrDeleteReq","req","onblocked","onsuccess","async","createDatabase","dbName","indexedDB","onupgradeneeded","oldVersion","onclose","closeDatabase","openDatabase","dbPromise","storeName","readOnlyOrReadWrite","txn","transaction","durability","objectStore","oncomplete","listener","deleteDatabase","addOnCloseListener","irregularEmoticons","extractTokens","word","MIN_SEARCH_TEXT_LENGTH$1","normalizeTokens","transformEmojiData","emojiData","annotation","emoticon","order","shortcodes","skins","version2","tokens","flat","res2","skinTones","skinUnicodes","skinVersions","tone","emoji2","version3","callStore","getIDB","getAllIDB","commit","minBy","array","minItem","findCommonMembers","arrays","uniqByFunc","shortestArray","results","isEmpty","hasData","eTag","oldETag","oldUrl","doFullDatabaseScanForSingleResult","predicate","BATCH_SIZE","emojiStore","lastKey","processNextBatch","getAll","IDBKeyRange","lowerBound","loadData","transformedData","metaStore","todo","checkFetched","onFetched","put","getEmojiByGroup","bound","getEmojiBySearchQuery","query","intermediateResults","checkDone","onDone","only","getEmojiByShortcode","shortcode","lowerShortcodes","_2","getEmojiByUnicode","result2","incrementFavoriteEmojiCount","getTopFavoriteEmoji","customEmojiIndex2","favoritesStore","openCursor","cursor","continue","unicodeOrName","primaryKey","custom","byName","CODA_MARKER","trie","itemToTokens","currentMap","nextMap","valuesAtCoda","search2","results2","queue2","currentMap2","entriesSortedByKey","requiredKeys$1","assertCustomEmojis","customEmojis","isArray2","firstItemIsFaulty","customEmojiIndex","sortByName","emojiToTokens","searchTrie","searchByExactMatch","searchByPrefix","shortcodeToEmoji","nameToEmoji","customEmoji","byShortcode","cleanEmoji","warnETag","requiredKeys","assertEmojiData","assertStatus","dataSource","getETag","fetch","getETagAndData","json","arrayBufferToBinaryString","binary","bytes","Uint8Array","byteLength","binaryStringToArrayBuffer","jsonChecksum","inString","inBuffer","outBuffer","crypto","subtle","digest","outBinString","checkForUpdates","eTagAndData","loadDataForFirstTime","Database","locale","_dbName","_db","_lazyUpdate","_custom","_clear","_ready","_init","empty","ready","checkReady","customs","natives","getEmojiByUnicodeOrName","getPreferredSkinTone","setPreferredSkinTone","skinTone","_shutdown","noop","blank_object","run_all","is_function","thing","safe_not_equal","src_url_equal_anchor","current_component","src_url_equal","element_src","is_empty","action_destroyer","action_result","destroy","append","detach","listen","attr","attribute","set_data","wholeText","set_input_value","set_style","important","removeProperty","set_current_component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","tick","add_render_callback","seen_callbacks","flushidx","saved_component","$$","fragment","before_update","after_update","outroing","transition_in","local","globals","destroy_block","lookup","update_keyed_each","old_blocks","get_key","dynamic","create_each_block2","get_context","old_indexes","new_blocks","new_lookup","deltas","child_ctx","abs","will_move","did_move","insert2","first","new_block","old_block","new_key","old_key","mount_component","customElement","on_mount","on_destroy","new_on_destroy","destroy_component","detaching","make_dirty","init","create_fragment2","not_equal","append_styles","parent_component","on_disconnect","callbacks","skip_bound","rest","SvelteComponent","$$props","$$set","allGroups","groups","customGroup","MIN_SEARCH_TEXT_LENGTH","NUM_SKIN_TONES","rIC","requestIdleCallback","hasZwj","versionsAndTestEmoji","TIMEOUT_BEFORE_LOADING_MESSAGE","DEFAULT_SKIN_TONE_EMOJI","DEFAULT_NUM_COLUMNS","MOST_COMMONLY_USED_EMOJI","FONT_FAMILY","DEFAULT_CATEGORY_SORTING","getTextFeature","color","canvas","textBaseline","font","fillStyle","scale","fillText","getImageData","compareFeatures","feature1","feature2","feature1Str","feature2Str","testColorEmojiSupported","determineEmojiSupportLevel","emojiSupportLevelPromise","supportedZwjEmojis","VARIATION_SELECTOR","SKINTONE_MODIFIER","ZWJ","LIGHT_SKIN_TONE","LIGHT_SKIN_TONE_MODIFIER","applySkinTone","zwjIndex","halt","incrementOrDecrement","decrement","uniqBy","summarizeEmojisForUI","emojiSupportLevel","toSimpleSkinsMap","skin","category","rAF","baselineEmojiWidth","resizeObserverSupported","ResizeObserver","calculateWidth","onUpdate","resizeObserver","contentRect","calculateTextWidth","createRange","selectNode","checkZwjSupport","zwjEmojisToCheck","baselineEmoji","emojiToDomNode","domNode","emojiWidth","supported","uniq","Map_1","get_each_context","get_each_context_1","get_each_context_2","get_each_context_3","get_each_context_4","create_each_block_4","key_1","div","div_id_value","div_class_value","div_aria_selected_value","div_title_value","div_aria_label_value","t_value","new_ctx","create_each_block_3","button_aria_controls_value","button_aria_label_value","button_aria_selected_value","button_title_value","dispose","click_handler","categories","create_else_block_1","img_src_value","ctx2","create_if_block_1","create_each_block_2","button_role_value","button_class_value","button_id_value","select_block_type","current_block_type","if_block","create_each_block_1","div0","div0_id_value","div0_class_value","div1","div1_role_value","div1_aria_labelledby_value","div1_id_value","searchResultsLabel","each_blocks","each_1_lookup","each_value_2","create_else_block","create_if_block","create_each_block","select_block_type_1","create_fragment","section","div4","input_placeholder_value","input_aria_expanded_value","input_aria_activedescendant_value","t0","span0","t1","div2","button0","t2","button0_class_value","div2_class_value","span1","t3","div3","div3_class_value","div3_aria_label_value","div3_aria_activedescendant_value","div3_aria_hidden_value","div5","div5_aria_label_value","div7","div6","div8","t4","div8_class_value","div10","div9","div10_class_value","div10_role_value","div10_aria_label_value","div10_id_value","div11","div11_class_value","div11_aria_label_value","button1","section_aria_label_value","t0_value","searchLabel","t1_value","searchDescription","t3_value","skinToneDescription","each_blocks_3","each0_lookup","each_blocks_2","each1_lookup","each_blocks_1","each2_lookup","each3_lookup","each_value_4","each_value_3","get_key_1","each_value_1","get_key_2","each_value","get_key_3","skinTonesLabel","categoriesLabel","favoritesLabel","regionLabel","$$self","$$invalidate","rootElement","tabpanelElement","skinToneDropdown","skinToneButtonText","pickerStyle","defaultFavoriteEmojis","currentGroup","activeSearchItemId","skinToneEmoji","i18n","database","customCategorySorting","initialLoad","currentEmojis","currentEmojisWithCategories","rawSearchText","searchText","searchMode","activeSearchItem","skinTonePickerExpanded","skinTonePickerExpandedAfterAnimation","currentSkinTone","activeSkinTone","skinToneButtonLabel","currentFavorites","numColumns","isRtl","scrollbarWidth","currentGroupIndex","groups$1","databaseLoaded","focus","getRootNode","fireEvent","bubbles","composed","unicodeWithSkin","currentSkinTone2","labelWithSkin","isSkinToneOption","calculateEmojiGridStyle","newNumColumns","getPropertyValue","newIsRtl","parentWidth","parentElement","newScrollbarWidth","checkZwjSupportAndUpdate","rootNode","isZwjSupported","filterEmojisByVersion","summarizeEmojis","getEmojisByGroup","getEmojisBySearchQuery","onSearchKeydown","goToNextOrPrevious","clickEmoji","onNavClick","onNavKeydown","doFocus","emojiSummary","skinTonedUnicode","onEmojiClick","onSkinToneOptionsClick","onClickSkinToneButton","onSkinToneOptionsKeydown","changeActiveSkinTone","nextSkinTone","onSkinToneOptionsKeyup","onSkinToneOptionsFocusOut","relatedTarget","input_input_handler","div3_binding","$$value","level","emojiUnsupportedMessage","div10_binding","button1_binding","section_binding","$$props2","handleDatabaseLoading","showingLoadingMessage","timeoutHandle","loadingMessage","networkErrorMessage","clearTimeout","updateEmojis","currentSearchText","newEmojis","currentGroupId","updatePreferredSkinTone","skinToneLabel","updateDefaultFavoriteEmojis","updateFavorites","dbFavorites","favorites","scrollTop","calculateCurrentEmojisWithCategories","categoriesToEmoji","Picker","DEFAULT_DATA_SOURCE","DEFAULT_LOCALE","enI18n","activities","objects","symbols","flags","PROPS","PickerElement","_dbFlush","_cmp","observedAttributes","attributeChangedCallback","attrName","_dbCreate","findParentBySelector","customElements","define","_sfc_main$j","emojiOpened","emojiReaction","positionTop","positionRight","emojiDataSource","emojiPickerHeight","emojiPickerTop","emojiPickerRight","addCustomStyling","emojiPicker","picker","nav","searchBox","openEmoji","setEmojiPickerPosition","clientY","innerWidth","innerHeight","mobileSize","roomFooterRef","roomFooterTop","pickerTopPosition","_hoisted_1$j","_sfc_render$j","_component_emoji_picker","EmojiPickerContainer","_sfc_main$i","isImage","isVideo","_hoisted_1$i","_hoisted_2$g","_hoisted_3$d","_hoisted_4$c","_sfc_render$i","localUrl","controls","RoomFile","_sfc_main$h","_hoisted_1$h","_hoisted_2$f","_hoisted_3$c","_sfc_render$h","_component_room_file","onRemoveFile","RoomFiles","_sfc_main$g","percentage","isMouseDown","onMouseDown","seekPos","calculateLineHeadPosition","progress","onMouseMove","onMouseUp","progressWidth","leftPosition","pos","clientX","_hoisted_1$g","_hoisted_2$e","_sfc_render$g","onMousedown","onMouseover","onMouseout","AudioControl","_sfc_main$f","isPlaying","convertTimeMMSS","playedTime","playerUniqId","audioSource","resetProgress","player","updateProgressTime","onTimeUpdate","seconds","playback","pause","play","currentTime","onUpdateProgress","_hoisted_1$f","_hoisted_2$d","_sfc_render$f","_component_audio_control","onChangeLinehead","onHoverAudioProgress","AudioPlayer","_sfc_main$e","messageReply","firstFile","isOtherFile","_hoisted_1$e","_hoisted_2$c","_hoisted_3$b","_hoisted_4$b","_hoisted_5$8","_hoisted_6$4","_hoisted_7$4","_hoisted_8$2","_hoisted_9$2","_hoisted_10$2","_hoisted_11$1","_hoisted_12$1","_sfc_render$e","_component_audio_player","RoomMessageReply","_sfc_main$d","filteredUsersTag","selectItem","activeUpOrDown","activeItem","_hoisted_1$d","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$d","RoomUsersTag","_sfc_main$c","filteredEmojis","_hoisted_1$c","_hoisted_2$a","_sfc_render$c","RoomEmojis","_sfc_main$b","filteredTemplatesText","_hoisted_1$b","_hoisted_2$9","_hoisted_3$9","_hoisted_4$9","_hoisted_5$7","_sfc_render$b","RoomTemplatesText","new_byte$4","Int8Array","new_short","Int16Array","new_int$d","Int32Array","new_float$f","Float32Array","new_double$1","Float64Array","new_float_n$6","sz","A","new_int_n$2","new_short_n$1","new_array_n$1","Arrays$7","toIndex","System$a","srcPos","dest","destPos","srcEnd","out","println","log","printf","Util$5","ShortBlock$3","ordinal","SQRT2","FAST_LOG10","log10","FAST_LOG10_X","y","short_block_allowed","short_block_coupled","short_block_dispensed","short_block_forced","Float$2","VbrMode$7","MAX_VALUE","vbr_off","vbr_mt","vbr_rh","vbr_abr","vbr_mtrh","vbr_default","assert$b","System","VbrMode","Float","ShortBlock","Util","Arrays","new_array_n","new_byte","new_double","new_float","new_float_n","new_int","new_int_n","new_short_n","assert","System$9","Util$4","Arrays$6","new_float$e","NewMDCT","enwindow","NS","NL","win","tantab_l","Encoder","SHORT_TYPE","cx","ca","cs","window_subband","x1","x1Pos","xr","wp","x2","mdct_short","inout","inoutPos","tc0","tc1","tc2","ts0","ts1","ts2","mdct_long","outPos","_in","ct","st","tc3","tc4","ts5","ts6","ts7","ts8","ts3","ts4","tc5","tc6","tc7","tc8","mdct_sub48","gfc","w0","w1","wk","wkPos","ch","channels_out","gr","mode_gr","band","gi","l3_side","tt","mdct_enc","mdct_encPos","samp","sb_sample","sampPos","block_type","band0","band1","mixed_block_flag","amp_filter","work","bd","arraycopy","System$8","new_float$d","new_float_n$5","III_psy_xmin","SBMAX_l","SBMAX_s","iii_psy_xmin","III_psy_ratio","thm","en","MPEGMode","_ordinal","STEREO","JOINT_STEREO","DUAL_CHANNEL","MONO","NOT_SET","System$7","VbrMode$6","new_float$c","new_float_n$4","new_int$c","assert$a","FFTOFFSET","MPG_MD_MS_LR","psy","vbr","qupvt","setModules","_bs","_psy","_qupvt","_vbr","newMDCT","adjust_ATH","gr2_max","max_pow","ATH","useAdjust","loudness_sq","aaSensitivityP","adjustLimit","adj_lim_new","updateStats","bitrate_index","mode_ext","bitrate_stereoMode_Hist","bt","bitrate_blockType_Hist","lame_encode_frame_init","gfp","inbuf","internal_flags","primebuff0","primebuff1","mf_size","BLKSIZE","framesize","lame_encode_mp3_frame","inbuf_l","inbuf_r","mp3buf","mp3bufPos","mp3buf_size","mp3count","masking_LR","masking","masking_MS","pe_use","tot_ener","ms_ener_ratio","pe","pe_MS","padding","slot_lag","frac_SpF","out_samplerate","psymodel","bufp","bufpPos","blocktype","VBR","L3psycho_anal_vbr","L3psycho_anal_ns","cod_info","NORM_TYPE","MPG_MD_LR_LR","force_ms","sum_pe_MS","sum_pe_LR","gi0","gi1","analysis","pinfo","ms_ratio","ers","energy","nsPsy","pefirbuf","fircoef","iteration_loop","format_bitstream","copy_buffer","bWriteVbrTag","addVbrFrame","pcmdata","set_frame_pinfo","ENCDELAY","POSTDELAY","MDCTDELAY","DECDELAY","SBLIMIT","CBANDS","SBPSY_l","SBPSY_s","PSFB21","PSFB12","HBLKSIZE","BLKSIZE_s","HBLKSIZE_s","START_TYPE","STOP_TYPE","MPG_MD_LR_I","MPG_MD_MS_I","Util$3","new_float$b","FFT","window2","window_s","costab","fht","fz","fzPos","k4","fi","tri","k1","k2","k3","kx","f1","f0","f3","f2","g0","g1","g2","g3","rv_tbl","fft_short","x_real","chn","bufPos","fft_long","jj","init_fft","cos","PI","VbrMode$5","Float$1","ShortBlock$2","Util$2","Arrays$5","new_float$a","new_float_n$3","new_int$b","assert$9","PsyModel","fft","LOG10","rpelev","rpelev2","rpelev_s","rpelev2_s","DELBARK","VO_SCALE","temporalmask_sustain_sec","NS_PREECHO_ATT0","NS_PREECHO_ATT1","NS_PREECHO_ATT2","NS_MSFIX","NSFIRLEN","LN_TO_LOG10","NON_LINEAR_SCALE_ENERGY","psycho_loudness_approx","loudness_power","eql_w","compute_ffts","fftenergy","fftenergy_s","wsamp_l","wsamp_lPos","wsamp_s","wsamp_sPos","gr_out","re","im","totalenergy","energy_save","athaa_loudapprox","loudness_sq_save","ma_max_i1","ma_max_i2","ma_max_m","I1LIMIT","I2LIMIT","MLIMIT","tab","init_mask_add_max_values","pow","table1","table2","table3","mask_add","m1","m2","kk","shortblock","cb_s","cb_l","table2_","vbrpsy_mask_add","calc_interchannel_masking","sb","sblock","msfix1","mld","mld_l","rmid","rside","mld_s","ns_msfix","msfix","athadjust","msfix2","athlower","ath","bm_l","thmLR","thmM","thmS","bm_s","convert_partition2scalefac_s","eb","thr","enn","thmm","bo_s_sb","bo_s","npart_s","b_lim","w_curr","PSY","bo_s_weight","w_next","convert_partition2scalefac_l","bo_l_sb","bo_l","npart_l","bo_l_weight","compute_masking_s","ebb","numlines_s","s3ind_s","ecb","s3_ss","nb_s1","blocktype_old","nb_s2","block_type_set","uselongblock","blocktype_d","short_blocks","NS_INTERP","regcoef_s","pecalc_s","mr","masking_lower","pe_s","regcoef_l","pecalc_l","pe_l","calc_energy","avg","numlines_l","rnumlines_l","calc_mask_index_l","mask_idx","last_tab_entry","vbrpsy_compute_fft_l","vbrpsy_compute_fft_s","vbrpsy_compute_loudness_approximation_l","masking_ratio","masking_MS_ratio","percep_entropy","percep_MS_entropy","numchn","pcfact","wsamp_L","wsamp_S","eb_l","eb_s","ns_hpfsmpl","mask_idx_l","mask_idx_s","ResvMax","ResvSize","firbuf2","firbufPos","sum1","sum2","attackThreshold","en_subshort","en_short","attack_intensity","ns_uselongblock","ns_attacks","last_en_subshort","pf","pfPos","pfe","ers_save","attackthre_s","attackthre","lastAttacks","s3ind","eb2","s3_ll","nb_1","nb_2","interChRatio","ATHlower","ppe","ppePos","fircoef_","vbrpsy_attack_detection","sub_short_factor","n_chn_out","n_chn_psy","firbuf","factor","vbrpsy_skip_masking_s","vbrpsy_skip_masking_l","psyvbr_calc_mask_index_s","vbrpsy_compute_masking_s","float","int","dd","dd_n","avg_mask","minval_s","vbrpsy_compute_masking_l","ecb_limit","ecb_limit_2","ecb_limit_1","minval_l","vbrpsy_compute_block_type","vbrpsy_apply_block_type","vbrpsy_compute_MS_thresholds","cb_mld","ath_cb","ebM","ebS","thmL","thmR","mld_m","thmMS","s3_func_x","bark","hf_slope","tempy","tempx","exp","norm_s3_func_x","lim_a","lim_b","sum","norm","s3_func","temp","sqrt","freq2bark","freq","atan","init_numline","numlines","bo","bval","bval_width","bo_w","sfreq","blksize","scalepos","deltafreq","sbmax","b_frq","sample_freq_frac","partition","ni","j2","bark1","sfb","i1","f_tmp","bark2","init_s3_values","npart","use_old_s3","s3","numberOfNoneZero","s3_x_norm","stereo_demask","ATHformula_GB","ch01","mld_cb_l","mld_cb_s","new_thmm","psymodel_init","useOldS3","bvl_a","bvl_b","snr_l_a","snr_l_b","snr_s_a","snr_s_b","experimentalZ","ms_ener_ratio_old","scalefac_band","snr","ATHformula","decay","exp_nspsytune","frame_duration","ATHtype","freq_inc","eql_balance","ATHcurve","LameGlobalFlags","class_id","num_samples","num_channels","in_samplerate","scale_left","scale_right","decode_only","quality","free_format","findReplayGain","decode_on_the_fly","write_id3tag_automatic","brate","compression_ratio","original","error_protection","strict_ISO","disable_reservoir","quant_comp","quant_comp_short","experimentalY","preset","VBR_q_frac","VBR_q","VBR_mean_bitrate_kbps","VBR_min_bitrate_kbps","VBR_max_bitrate_kbps","VBR_hard_min","lowpassfreq","highpassfreq","lowpasswidth","highpasswidth","maskingadjust","maskingadjust_short","ATHonly","ATHshort","noATH","athaa_type","athaa_sensitivity","useTemporal","tune","tune_value_a","encoder_delay","encoder_padding","frameNum","lame_allocated_gfp","L3Side$1","SFBMAX","new_float$9","new_int$a","GrInfo","l3_enc","scalefac","xrpow_max","part2_3_length","big_values","count1","global_gain","scalefac_compress","table_select","subblock_gain","region0_count","region1_count","preflag","scalefac_scale","count1table_select","part2_length","sfb_lmax","sfb_smin","psy_lmax","sfbmax","psymax","sfbdivide","count1bits","sfb_partition_table","slen","max_nonzero_coeff","clone_int","clone_float","other","new_int$9","IIISideInfo","main_data_begin","private_bits","resvDrain_pre","resvDrain_post","scfsi","System$6","new_int$8","ScaleFac","arrL","arrS","arr21","arr12","psfb21","psfb12","new_float$8","new_float_n$2","new_int$7","NsPsy","longfact","shortfact","VBRSeekInfo","want","bag","nVbrNumFrames","nBytesWritten","TotalFrameSize","new_byte$3","new_float$7","new_float_n$1","new_int$6","new_int_n$1","LameInternalFlags$1","MAX_HEADER_LEN","Header","write_timing","Class_ID","iteration_init_init","fill_buffer_resample_init","mfbuf","MFSIZE","channels_in","resample_ratio","mf_samples_to_encode","VBR_min_bitrate","VBR_max_bitrate","samplerate_index","lowpass1","lowpass2","highpass1","highpass2","noise_shaping","noise_shaping_amp","substep_shaping","noise_shaping_stop","use_best_huffman","full_outer_loop","tag_spec","nMusicCRC","OldValue","CurrentStep","bv_scf","pseudohalf","sfb21_extra","inbuf_old","blackfilt","BPC","itime","sideinfo_len","header","MAX_HEADER_BUF","h_ptr","w_ptr","ancillary_flag","numlines_s_num1","numlines_l_num1","ms_ratio_s_old","ms_ratio_l_old","VBR_seek_table","nogap_total","nogap_current","findPeakSample","PeakSample","RadioGain","AudiophileGain","rgdata","noclipGainChange","noclipScale","hip","in_buffer_nsamples","in_buffer_0","in_buffer_1","MAX_BITS_PER_CHANNEL","MAX_BITS_PER_GRANULE","new_float$6","System$5","Arrays$4","GainAnalysis$1","PINK_REF","RMS_PERCENTILE","RMS_WINDOW_TIME_NUMERATOR","RMS_WINDOW_TIME_DENOMINATOR","ABYule","ABButter","filterYule","inputPos","output","outputPos","nSamples","kernel","filterButter","ResetSampleFrequency","rgData","samplefreq","MAX_ORDER","linprebuf","lstepbuf","loutbuf","rinprebuf","rstepbuf","routbuf","reqindex","INIT_GAIN_ANALYSIS_ERROR","sampleWindow","lsum","rsum","totsamp","ill","INIT_GAIN_ANALYSIS_OK","fsqr","analyzeResult","Array2","elems","GAIN_NOT_ENOUGH_SAMPLES","upper","STEPS_per_dB","InitGainAnalysis","linpre","rinpre","lstep","rstep","lout","rout","B","AnalyzeSamples","left_samples","left_samplesPos","right_samples","right_samplesPos","curleft","curleftBase","curright","currightBase","batchsamples","cursamples","cursamplepos","GAIN_ANALYSIS_OK","GAIN_ANALYSIS_ERROR","ival","GetTitleGain","retval","MAX_dB","YULE_ORDER","MAX_SAMP_FREQ","MAX_SAMPLES_PER_WINDOW","new_float$5","new_int$5","ReplayGain","freqindex","MeanBits$1","meanBits","bits","new_float$4","new_int$4","assert$8","CBRNewIterationLoop","_quantize","quantize","max_bits","l3_xmin","xrpow","targ_bits","mean_bits","mb","rv","ResvFrameBegin","on_pe","ms_convert","reduce_side","masking_lower_db","mask_adjust","mask_adjust_short","init_outer_loop","init_xrpow","calc_xmin","outer_loop","iteration_finish_one","ResvFrameEnd","HuffCodeTab","hl","xlen","linmax","hlen","Tables$1","t1HB","t1l","t2HB","t2l","t3HB","t3l","t5HB","t5l","t6HB","t6l","t7HB","t7l","t8HB","t8l","t9HB","t9l","t10HB","t10l","t11HB","t11l","t12HB","t12l","t13HB","t13l","t16_5l","t15HB","t15l","t16HB","t16l","t24HB","t24l","t32HB","t32l","t33HB","t33l","largetbl","table23","table56","bitrate_table","samplerate_table","scfsi_band","VbrMode$4","Util$1","new_float$3","new_int$3","assert$7","QuantizePVT","tak","POW20","pow20","Q_MAX2","_tk","_rv","IPOW20","ipow20","DBL_EPSILON","IXMAX_VAL","PRECALC_SIZE","Q_MAX","NSATHSCALE","nr_of_sfb_block","pretab","sfBandIndex","pow43","adj43","ATHmdct","compute_ath","ATH_l","ATH_psfb21","ATH_s","ATH_psfb12","samp_freq","ATH_f","StartLine","iteration_init","bass","alto","treble","sfb21","huffman_init","cbr","tbits","add_bits","extra_bits","ResvMaxBits","fac","move_bits","athAdjust","athFloor","pxmin","gsfb","pxminPos","ath_over","ATH2","enable_athaa_fix","xmin","rh1","rh2","en0","xa","xb","max_nonzero","BitStream$1","EQ","tmpATH","calc_noise_core","startline","step","noise","ix","ix01","calc_noise","distort","prev_noise","distortPos","l3_xminPos","over","over_noise_db","tot_noise_db","max_noise","scalefacPos","over_SSD","noise_log","usefullsize","sl","over_count","tot_noise","over_noise","set_pinfo","sfb2","en1","ifqstep","L3Side","xfsf","CalcNoiseResult","bw","LAMEsfb","en_s","xfsf_s","thr_s","LAMEsfb_s","LAMEqss","LAMEmainbits","LAMEsfbits","LARGE_BITS","System$4","Arrays$3","new_int$2","assert$6","Takehiro","Bits","subdv_table","quantize_lines_xrpow_01","istep","xrPos","ixPos","compareval0","quantize_lines_xrpow","remaining","x0","x3","rx0","rx1","rx2","rx3","quantize_xrpow","xp","pi","codInfo","prevNoise","prev_data_use","accumulate","accumulate01","xpPos","iData","iDataPos","acc_iData","acc_iDataPos","acc_xp","acc_xpPos","sfb_count1","ix_max","endPos","max1","max2","count_bit_ESC","linbits","count_bit_noESC","hlen1","count_bit_noESC_from2","count_bit_noESC_from3","sum3","hlen2","hlen3","huf_tbl_noESC","choose_table","choice2","choice","recalc_divide_init","r01_bits","r01_div","r0_tbl","r1_tbl","bigv","r0","a1","r0bits","bi","r0t","r1","a2","r1t","recalc_divide_sub","cod_info2","r2","r2t","noquant_count_bits","best_huffman_divide","count_bits","gain","roundfac","slen1_n","slen2_n","slen1_tab","slen2_tab","scfsi_calc","all_scalefactors_not_negative","best_scalefac_store","recalc","scale_bitcount","scale_bitcount_lsf","scale_short","scale_mixed","scale_long","max_slen1","max_slen2","max_range_sfac_tab","table_number","row_in_table","nr_sfb","max_sfac","partition_table","slen1","slen2","slen3","slen4","log2tab","bv_index","scfb_anz","System$3","Arrays$2","new_byte$2","new_int$1","assert$5","CRC16_POLYNOMIAL","ga","mpg","ver","_ga","_mpg","_ver","totbit","bufByteIdx","bufBitIdx","putheader_bits","putbits2","putbits_noheaders","drain_into_ancillary","remainingBits","getLameShortVersion","writeheader","CRC_update","crc","encodeSideInfo2","bitsPerFrame","CRC_writeheader","old","huffman_coder_count1","huffbits","Huffmancode","tableindex","cbits","xbits","ext","linbits_x1","linbits_x2","ShortHuffmancodebits","region1Start","LongHuffmancodebits","bigvalues","region2Start","writeMainData","data_bits","tot_bits","sfb_partition","scale_bits","sfbs","TotalBytes","total","compute_flushbits","total_bytes_output","flushbits","remaining_headers","last_ptr","first_ptr","getframebits","bit_rate","byte","flush_bitstream","NEQ","GainAnalysis","add_dummy_byte","bufferPos","mp3data","minimum","updateMusicCRC","pcm_buf","mp3_in","samples_out","hip_decode1_unclipped","init_bit_stream_w","Lame$1","LAME_MAXMP3BUFFER","System$2","VbrMode$3","ShortBlock$1","new_float$2","assert$4","LAME_MAXALBUMART","V9","V8","V7","V6","V5","V4","V3","V2","V1","V0","R3MIX","STANDARD","EXTREME","INSANE","STANDARD_FAST","EXTREME_FAST","MEDIUM","MEDIUM_FAST","qu","id3","mpglib","LowPassHighPass","lowerlimit","BandPass","bitrate","lPass","lowpass","enc","_qu","_id3","_mpglib","LAME_ID","lame_init_old","filter_coef","optimum_samplefreq","input_samplefreq","suggested_samplefreq","SmpFrqIndex","sample_freq","gpf","FindNearestBitrate","bRate","samplerate","BitrateIndex","optimum_bandwidth","lh","freq_map","table_index","nearestBitrateFullIndex","lame_init_params_ppflt","lowpass_band","highpass_band","minband","maxband","fc1","fc2","lame_init_qval","lame_init_bitstream","id3tag_write_v2","InitVbrTag","update_inbuffer_size","nsamples","calcNeeded","mf_needed","lame_encode_buffer_sample","buffer_l","buffer_r","mp3out","mp3size","in_buffer","in_bufferPos","in_buffer_ptr","n_in","n_out","inOut","InOut","fill_buffer","buf_size","lame_encode_frame","NumUsed","num_used","gcd","blackman","fcn","wcn","bkwn","sin","fill_buffer_resample","outbuf","outbufPos","desired_len","bpc","intratio","filter_l","BLACKSIZE","time0","joff","xvalue","n_shift","io","numUsed","lame_init","full_bitrate_table","lower_range","lower_range_kbps","upper_range","upper_range_kbps","lame_init_params","map2MP3Frequency","linear_int","hip_decode_exit","hip_decode_init","cmp","apply_preset","LAME_DEFAULT_QUALITY","VBRNewIterationLoop","VBROldIterationLoop","vbrmode","ABRIterationLoop","NSATTACKTHRE","NSATTACKTHRE_S","lame_encode_flush","mp3buffer","mp3bufferPos","mp3buffer_size","mp3buffer_size_remaining","end_padding","frames_left","imp3","samples_to_encode","bunch","frame_num","lame_encode_buffer","id3tag_write_v1","VbrMode$2","Presets","VBRPresets","qual","compS","shThreshold","shThresholdS","adj","adjShort","lower","curve","sens","inter","joint","fix","vbr_q","quant_comp_s","expY","st_lrm","st_s","masking_adj","masking_adj_short","ath_lower","ath_curve","ath_sensitivity","interch","safejoint","sfb21mod","ABRPresets","kbps","sc","mask","interCh","sfScale","nsmsfix","nsbass","sfscale","lame","_lame","vbr_old_switch_map","vbr_psy_switch_map","apply_vbr_preset","vbr_preset","q","lame_set_VBR_q","abr_switch_map","apply_abr_preset","actual_bitrate","VBRQuantize","CalcNoiseResult$1","new_float$1","CalcNoiseData","System$1","VbrMode$1","Arrays$1","assert$3","Quantize","tk","init_xrpow_core","psfb21_analogsilence","ath21","ath12","BinSearchDirection","bin_search_StepSize","desired_rate","nBits","flagGoneOver","Direction","BINSEARCH_NONE","BINSEARCH_DOWN","BINSEARCH_UP","loop_break","penalties","get_klemm_noise","klemm_noise","quant_compare","best","calc","better","BitStream","amp_scalefac_bands","bRefine","ifqstep34","trigger2","inc_scalefac_scale","inc_subblock_gain","amp","balance_noise","ixwork","trancate_smallspectrums","allowedNoise","trancateThreshold","nsame","cod_info_w","save_xrpow","best_noise_info","best_part2_3_length","bEndOfSearch","best_ggain_pass1","age","search_limit","noise_info","maxggain","huff_bits","ResvAdjust","VBR_encode_granule","min_bits","dbits","bst_cod_info","bst_xrpow","Max_bits","real_bits","this_bits","LameInternalFlags","get_framebits","frameBits","MeanBits","VBR_old_prepare","bands","analog_silence","mxb","bitpressure_strategy","VBR_new_prepare","maximum_framebits","calc_target_bits","analog_silence_bits","max_frame_bits","res_factor","totbits","assert$2","Reservoir","maxmp3buf","frameLength","resvLimit","fullFrameBits","resvsize","over_bits","stuffingBits","mdb_bytes","Version","LAME_URL","LAME_MAJOR_VERSION","LAME_MINOR_VERSION","LAME_PATCH_VERSION","PSY_MAJOR_VERSION","PSY_MINOR_VERSION","getLameVersion","getLameVeryShortVersion","getPsyVersion","getLameUrl","getLameOsBitness","new_byte$1","assert$1","VBRTag","FRAMES_FLAG","BYTES_FLAG","TOC_FLAG","VBR_SCALE_FLAG","NUMTOCENTRIES","MAXFRAMESIZE","VBRHEADERSIZE","LAMEHEADERSIZE","XING_BITRATE1","XING_BITRATE2","XING_BITRATE25","ISO_8859_1","VBRTag0","VBRTag1","crc16Lookup","addVbr","v2","xingSeekTable","act","indx","seek_point","extractInteger","createInteger","createShort","isVbrTag","equals","shiftInBitsValue","setLameTagFrameHeader","bbyte","abyte","crcUpdateLookup","putLameVBR","musicLength","streamBuffer","streamBufferPos","revMethod","abrBitrate","bytesWritten","encDelay","encPadding","revision","vbrTypeTranslator","peakSignalAmplitude","radioReplayGain","audiophileReplayGain","noiseShaping","stereoMode","nonOptimal","sourceFreq","misc","musicCRC","expNPsyTune","safeJoint","noGapMore","noGapPrevious","noGapCount","noGapCurr","athType","skipId3v2","fpStream","seek","id3v2TagSize","id3v2Header","readFully","Tables","getVbrTag","pTagData","VBRTagData","hId","hSrIndex","hMode","hBitrate","samprate","head_flags","frames","toc","vbrScale","headersize","kbps_header","totalFrameSize","headerSize","getLameTagFrame","Lame","streamIndex","streamSize","putVbrTag","GetAudio","parse2","mpg2","Parse","ver2","id32","pre2","MPGLib","ID3Tag","_bits","Mp3Encoder$1","channels","gaud","maxSamples","encodeBuffer","_sz","subarray","fourccToInt","fourcc","Mp3Encoder","bitRate","sampleRate","dataBuffer","encoder","arrayBuffer","samples","_convertBuffer","finish","blob","Blob","URL","createObjectURL","_floatTo16BitPCM","Recorder","beforeRecording","pauseRecording","afterRecording","micFailed","encoderOptions","bufferSize","records","isPause","isRecording","volume","_duration","constraints","video","audio","channelCount","echoCancellation","mediaDevices","getUserMedia","_micCaptured","_micError","lameEncoder","getTracks","track2","processor","record","AudioContext","webkitAudioContext","createMediaStreamSource","createScriptProcessor","onaudioprocess","sample","inputBuffer","getChannelData","toFixed","connect","isChromium","chrome","winNav","vendorName","vendor","isOpera","opr","isIEedge","isIOSChrome","detectChrome","detectMobile","getUserAgent","userAgentPart","opera","_sfc_main$a","roomMessage","showSendIcon","showFiles","showAudio","showEmojis","showFooter","acceptedFiles","multipleFiles","captureFiles","textareaActionEnabled","textareaAutoFocus","userTagsEnabled","emojisSuggestionEnabled","templatesText","audioBitRate","audioSampleRate","initReplyMessage","initEditMessage","droppedFiles","editedMessage","cursorRangePosition","fileDialog","selectUsersTagItem","selectEmojiItem","selectTemplatesTextItem","format","activeUpOrDownEmojis","activeUpOrDownUsersTag","activeUpOrDownTemplatesText","emojisDB","keepKeyboardOpen","selectedUsersTag","recorder","initRecorder","isMessageEmpty","isFileLoading","recordedTime","shadowFooter","resetMessage","onChangeInput","getTextareaRef","replyMessage","editMessage","onFileChange","isComposed","isComposing","updateFooterLists","resetFooterList","stopRecorder","roomTextarea","focusTextarea","disableMobileFocus","setSelectionRange","resizeTextarea","scrollHeight","escapeTextarea","onPasteImage","pasteEvent","clipboardData","getAsFile","updateActiveUpOrDown","direction","selectEmoji","position","getCharPosition","selectTemplateText","addEmoji","launchFilePicker","click","fileURL","typeIndex","blobFile","loadedFile","file2","removeFile","toggleRecorder","recording","textareaActionHandler","newContent","usersTag","messageContent","initialContent","firstTag","secondTag","usertags","matchAll","selectUserTag","updateFooterList","tagChar","textareaCursorPosition","selectionStart","beforeTag","notLetterNumber","updateShowUsersTag","updateShowTemplatesText","editMode","cursorPosition","selectionEnd","initRoom","resetTextareaSize","preventKeyboardFromClosing","_hoisted_1$a","_hoisted_2$8","_hoisted_3$8","_hoisted_4$8","_hoisted_5$6","_hoisted_6$3","_hoisted_7$3","_sfc_render$a","_component_room_emojis","_component_room_users_tag","_component_room_templates_text","_component_room_message_reply","_component_room_files","_component_emoji_picker_container","onSelectEmoji","onActivateItem","onSelectUserTag","onSelectTemplateText","onResetMessage","onKeydown","onPaste","onAddEmoji","onOpenEmoji","accept","onChange","RoomFooter","_sfc_main$9","roomUsers","replyUsername","replyUser","_hoisted_1$9","_hoisted_2$7","_hoisted_3$7","_hoisted_4$7","_hoisted_5$5","_hoisted_6$2","_hoisted_7$2","_hoisted_8$1","_hoisted_9$1","_hoisted_10$1","_sfc_render$9","onUpdateProgressTime","progressTime","hoverAudioProgress","MessageReply","_sfc_main$8","radius","stroke","normalizedRadius","circumference","strokeDashoffset","_hoisted_1$8","_hoisted_2$6","_hoisted_3$6","_hoisted_4$6","_hoisted_5$4","_sfc_render$8","strokeLinecap","cy","ProgressBar","_sfc_main$7","imageResponsive","imageLoading","imageHover","isImageLoading","checkImgLoad","maxHeight","clientWidth","loaderTop","clientHeight","openFile","_hoisted_1$7","_hoisted_2$5","_hoisted_3$5","_hoisted_4$5","_sfc_render$7","_component_progress_bar","onMouseleave","preview","MessageFile","_sfc_main$6","imageVideoFiles","otherFiles","_hoisted_1$6","_hoisted_2$4","_hoisted_3$4","_hoisted_4$4","_hoisted_5$3","_sfc_render$6","_component_message_file","onOpenFile","onOpenUserTag","MessageFiles","_sfc_main$5","messageActions","showReactionEmojis","messageHover","hoverMessageId","menuOptionsTop","optionsOpened","optionsClosing","isMessageActions","filteredMessageActions","disableActions","isMessageReactions","disableReactions","onlyMe","openOptions","menuOptions","actionIcon","actionIconTop","optionsTopPosition","closeOptions","updateMessageHover","closeEmoji","messageActionHandler","sendMessageReaction","reaction","_hoisted_1$5","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$5","MessageActions","_sfc_main$4","_hoisted_1$4","_sfc_render$4","reactions","MessageReactions","roomsValidation","roomsValidate","validate","obj2","validType","checkObjectValid","partcipantsValidation","participantsValidate","messagesValidation","messagesValidate","_sfc_main$3","editedMessageId","newMessages","showNewMessagesDivider","usernameOptions","selectedMessages","newMessage","showUsername","currentUser","minUsers","showDate","date","messageOffset","isMessageHover","isCheckmarkVisible","hasCurrentUserAvatar","hasSenderUserAvatar","isMessageSelected","resetMessageHover","onHoverMessage","canEditMessage","onLeaveMessage","openUserTag","selectMessage","_hoisted_1$3","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_hoisted_5$2","_hoisted_6$1","_hoisted_7$1","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_sfc_render$3","_component_message_reply","_component_message_files","_component_message_actions","_component_message_reactions","system","edited","onUpdateMessageHover","onUpdateOptionsOpened","onUpdateEmojiOpened","onMessageActionHandler","onSendMessageReaction","failure","RoomMessage","_sfc_main$2","loadFirstRoom","autoScroll","loadingMessages","loadingMoreMessages","scrollIcon","scrollMessagesCount","showNoMessages","showNoRoom","noRoomSelected","updateLoadingMessages","showMessagesStarted","onRoomChanged","loadMoreMessages","preventTopScroll","scrollContainer","prevScrollHeight","scrollTo","touchStart","touchEvent","changedTouches","posXStart","posYStart","touchEvent2","touchEnd","posXEnd","posYEnd","swippedRight","swippedVertically","resetMessageSelection","unselectMessage","onMessageAdded","autoScrollOffset","scrolledUp","getBottomScroll","newAfterScrollUp","scrollToBottom","receive","onContainerScroll","bottomScroll","messageReaction","behavior","onDropFiles","dataTransfer","_hoisted_1$2","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_hoisted_5$1","_hoisted_6","_hoisted_7","_sfc_render$2","_component_room_header","_component_room_message","_component_room_footer","onDrop","onDragenter","onDragover","onDragleave","onTouchstart","onToggleRoomsList","onRoomInfo","onMenuActionHandler","onMessageSelectionActionHandler","onCancelMessageSelection","onScroll","indexId","onOpenFailedMessage","onSelectMessage","onUnselectMessage","onUpdateEditedMessageId","onEditMessage","onTypingMessage","onTextareaActionHandler","Room","_sfc_main$1","modal","closeModal","_hoisted_1$1","_hoisted_2","_hoisted_3","autoplay","_hoisted_4","_hoisted_5","_sfc_render$1","tabindex","MediaPreview","locales","defaultThemeStyles","light","general","colorButtonClear","colorButton","backgroundColorButton","backgroundInput","colorPlaceholder","colorCaret","colorSpinner","borderStyle","backgroundScrollIcon","border","borderRadius","boxShadow","background","colorRoomName","colorRoomInfo","footer","borderStyleInput","borderInputSelected","backgroundReply","backgroundTagActive","backgroundTag","sidemenu","backgroundHover","backgroundActive","colorActive","borderColorSearch","backgroundMe","colorStarted","backgroundDeleted","backgroundSelected","colorDeleted","colorUsername","colorTimestamp","backgroundDate","colorDate","backgroundSystem","colorSystem","backgroundMedia","colorReplyUsername","colorReply","colorTag","backgroundImage","colorNewMessages","backgroundScrollCounter","colorScrollCounter","backgroundReaction","borderStyleReaction","backgroundReactionHover","borderStyleReactionHover","colorReactionCounter","backgroundReactionMe","borderStyleReactionMe","backgroundReactionHoverMe","borderStyleReactionHoverMe","colorReactionCounterMe","backgroundAudioRecord","backgroundAudioLine","backgroundAudioProgress","backgroundAudioProgressSelector","colorFileExtension","colorMulti","colorMessage","colorStateOnline","colorStateOffline","backgroundCounterBadge","colorCounterBadge","icons","closeImage","closeOutline","closePreview","sendDisabled","checkmarkSeen","dropdownMessage","dropdownMessageBackground","dropdownRoom","dropdownScroll","audioPlay","audioPause","audioCancel","audioConfirm","dark","cssThemeVars","_style_0","_sfc_main","theme","responsiveBreakpoint","roomsListOpened","roomsOrder","mediaPreviewEnabled","showMediaPreview","previewFile","textMessagesCasted","cssVars","defaultStyles","customStyles","stylesCasted","orderedRooms","roomsCasted","aVal","bVal","singleRoomCasted","castBoolean","roomsListOpenedCasted","loadingRoomsCasted","roomsLoadedCasted","loadFirstRoomCasted","messagesLoadedCasted","multipleFilesCasted","showSearchCasted","showAddRoomCasted","showSendIconCasted","showFilesCasted","showAudioCasted","showEmojisCasted","showReactionEmojisCasted","showNewMessagesDividerCasted","showFooterCasted","roomInfoEnabledCasted","textareaActionEnabledCasted","textareaAutoFocusCasted","userTagsEnabledCasted","emojisSuggestionEnabledCasted","mediaPreviewEnabledCasted","castArray","messagesCasted","roomActionsCasted","menuActionsCasted","messageActionsCasted","messageSelectionActionsCasted","templatesTextCasted","castObject","autoScrollCasted","textFormattingCasted","linkOptionsCasted","usernameOptionsCasted","fetchRoom","updateResponsive","isTrusted","toggleRoomsList","opened","fetchMessages","fetchMoreRooms","roomInfo","addRoom","deleteMessage","openFailedMessage","typingMessage","_hoisted_1","_sfc_render","_component_rooms_list","_component_room","_component_media_preview","onFetchRoom","onFetchMoreRooms","onLoadingMoreRooms","onFetchMessages","onDeleteMessage","onCloseMediaPreview","ChatWindow","VueAdvancedChat","PACKAGE_NAME","socket","roomInfoStr","roomInfoElm","room_name","room_title","user_id","WebSocket","onmessage","replyTo","__exports__","_withScopeId","_pushScopeId","_popScopeId","_createElementVNode","_component_notification_message","_createElementBlock","onFocus","onFocusout","numberOfUnread","_toDisplayString","_createCommentVNode","_Fragment","_renderList","viewed","onMouseup","_withModifiers","onMiddleClick","_normalizeClass","unviewed","relativeCreationDate","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","requiredArgs","toDate","argStr","startOfDay","dirtyDate","setHours","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","isValid","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formats","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","era","quarter","month","day","dayPeriod","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","weekStartsOn","firstWeekContainsDate","toInteger","addMilliseconds","dirtyAmount","amount","subMilliseconds","getUTCDayOfYear","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCDate","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","formatters","signedYear","M","getUTCMonth","dayPeriodEnumValue","getUTCHours","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","dayPeriodEnum","G","unit","lightFormatters","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","Q","L","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","K","X","_localize","originalDate","_originalDate","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","longFormatters","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","dirtyBaseDate","baseDate","_ref","_ref$locale","_ref$weekStartsOn","utcBaseDate","form","suffix","feminineUnits","creationDate","setAsViewed","fr","NotificationMessage","PlayerState","_typeof","_defineProperty","ENABLE_DEBUG","Logger","debug","VideoPlayer","videoPlayerConfig","videoId","sound","playBackRate","canWait","loop","_startSeconds","startSeconds","videoPlayerArea","videoState","LOADING","videoElement","setupVideoElement","lastScrollY","fullscreenElement","scrollY","videojs","newRate","playbackRate","videoPlayers","onReady","onSeeking","onStateChange","ENDED","syncTime","BUFFERING","PLAYING","PAUSE","LOADED","READY","mainVideo","syncThreshold","syncLoop","videoCurrentTime","mainCurrentTime","thisCurrentTime","timeTo","statesToPropagate","UNSTARTED","changeState","initialSrc","userActions","doubleClick","controlBar","volumePanel","fullscreenToggle","playbackRateMenuButton","muted","_createFullscreenButton","setControls","setMain","_swap","videoPlayer","animateSwap","nodeA","nodeB","parentA","parentB","siblingA","thisControls","thisMain","paused","HAVE_CURRENT_DATA","getDuration","getPlayLength","getCurrentTime","getPlayedTime","isEnded","fullscreenButton","addChild","clickHandler","videoContainer","exitFullscreen","requestFullscreen","controlText","buttonDom","validStates","isValidState","currentState","nextState","stateOuts","SyncVideoPlayer","area","readyCount","$container","getDebugInfo","vp","isMain","addVideoPlayers","areaEl","mainVideoPlayer","moveStateTo","allReady","success","fail","oldState","fixVideoStates","addVideoPlayer","videoInstance","excludeMain","swapVideo","index1","index2","_defineComponent","__props","multivideos","syncVideoPlayer","ids","debugInfo","onPlay","onPause","onAdd","onFullscreen","setInterval","onTouchend","_createTextVNode","ChatComponent","NotificationsBell","VideoComponent"],"sourceRoot":""}
\ No newline at end of file