1import{$ as e,C as t,E as n,K as r,Q as i,S as a,at as o,c as s,dt as c,et as l,it as u,lt as d,nt as f,rt as ee,tt as p}from"./runtime-core.esm-bundler-v431.js";import{Bt as te,D as m,I as h,Vt as ne,_t as re,bt as ie,gt as g,ht as ae,it as oe,nt as se,ot as ce,rt as le,st as ue,tt as _,ut as v,vt as de}from"./use-router-link-v431.js";import{t as y}from"./defineProperty-v431.js";import{r as fe}from"./wrappers-v431.js";var b=o(!1),pe,me=512;function he(e){return typeof e==`string`?e.slice(0,me).toLowerCase():``}var ge=/(?:^|\s)version\/([\w.]+)/,_e=/(?:^|\s)applewebkit\/[\w.]+/,ve=/(?:^|\s)safari\/[\w.]+/;function ye(e){let t=ge.exec(e);return t!==null&&_e.test(e)&&ve.test(e)?{browser:`safari`,version:t[1]}:null}var be=/(edg|edga|edgios)\/([\w.]+)/,xe=/(opr)[\/]([\w.]+)/,Se=/(vivaldi)[\/]([\w.]+)/,Ce=/(chrome|crios)[\/]([\w.]+)/,we=/(firefox|fxios)[\/]([\w.]+)/,Te=/(webkit)[\/]([\w.]+)/;function Ee(e,t){let n=be.exec(e)||xe.exec(e)||Se.exec(e)||Ce.exec(e);if(n===null){let r=ye(e);if(r!==null)return{...r,platform:t[0]||``};n=we.exec(e)||Te.exec(e)||[]}return{browser:n[5]||n[3]||n[1]||``,version:n[4]||n[2]||`0`,platform:t[0]||``}}var De=/(ipad)/,Oe=/(ipod)/,ke=/(iphone)/,Ae=/(android)/,je=/(win)/,Me=/(mac)/,Ne=/(linux)/,Pe=/(cros)/;function Fe(e){return De.exec(e)||Oe.exec(e)||ke.exec(e)||Ae.exec(e)||je.exec(e)||Me.exec(e)||Ne.exec(e)||Pe.exec(e)||[]}var Ie=`ontouchstart`in window||window.navigator.maxTouchPoints>0;function Le(e){let t=he(e),n=Ee(t,Fe(t)),r={mobile:!1,desktop:!1,cordova:!1,capacitor:!1,nativeMobile:!1,electron:!1,bex:!1,linux:!1,mac:!1,win:!1,cros:!1,chrome:!1,firefox:!1,opera:!1,safari:!1,vivaldi:!1,edge:!1,webkit:!1,android:!1,ios:!1,ipad:!1,iphone:!1,ipod:!1};n.browser&&(r[n.browser]=!0,r.version=n.version,r.versionNumber=Number.parseInt(n.version,10)),n.platform&&(r[n.platform]=!0);let i=r.android||r.ios||r.ipad||r.iphone||r.ipod;if(i===!0||t.includes(`mobile`)?r.mobile=!0:r.desktop=!0,r.edga||r.edgios||r.edg?(r.edge=!0,n.browser=`edge`):r.crios?(r.chrome=!0,n.browser=`chrome`):r.fxios&&(r.firefox=!0,n.browser=`firefox`),(r.ipod||r.ipad||r.iphone)&&(r.ios=!0),r.vivaldi&&=(n.browser=`vivaldi`,!0),(r.chrome||r.opr||r.safari||r.vivaldi||r.mobile&&!r.ios&&!i)&&(r.webkit=!0),r.opr&&(n.browser=`opera`,r.opera=!0),r.name=n.browser,r.platform=n.platform,t.includes(`electron`))r.electron=!0;else if(document.location.href.includes(`-extension://`))r.bex=!0;else{if(window.Capacitor===void 0?(window._cordovaNative!==void 0||window.cordova!==void 0)&&(r.cordova=!0,r.nativeMobile=!0,r.nativeMobileWrapper=`cordova`):(r.capacitor=!0,r.nativeMobile=!0,r.nativeMobileWrapper=`capacitor`),b.value&&(pe={is:{...r}}),Ie&&r.mac&&(r.desktop&&r.safari||r.nativeMobile&&!r.android&&!r.ios&&!r.ipad)){delete r.mac,delete r.desktop;let e=Math.min(window.innerHeight,window.innerWidth)>414?`ipad`:`iphone`;Object.assign(r,{mobile:!0,ios:!0,platform:e,[e]:!0})}!r.mobile&&window.navigator.userAgentData&&window.navigator.userAgentData.mobile&&(delete r.desktop,r.mobile=!0)}return r}var Re=navigator.userAgent,ze={has:{touch:!1,webStorage:!1},within:{iframe:!1}},Be={userAgent:Re,is:Le(Re),has:{touch:Ie},within:{iframe:window.self!==window.top}},Ve={install(e){let{$q:t}=e;b.value?(e.onSSRHydrated.push(()=>{Object.assign(t.platform,Be),b.value=!1}),t.platform=u(this)):t.platform=this}};{let e;ne(Be.has,`webStorage`,()=>{if(e!==void 0)return e;try{if(window.localStorage)return e=!0,!0}catch{}return e=!1,!1}),Object.assign(Ve,Be),b.value&&(Object.assign(Ve,pe,ze),pe=null)}var He=`data-dark-auto`,x=te({isActive:!1,mode:!1},{__media:void 0,set(e){x.mode=e,e===`auto`?(x.__media===void 0&&(x.__media=window.matchMedia(`(prefers-color-scheme: dark)`),x.__updateMedia=()=>{x.set(`auto`)},x.__media.addListener(x.__updateMedia)),e=x.__media.matches):x.__media!==void 0&&(x.__media.removeListener(x.__updateMedia),x.__media=void 0),x.isActive=e===!0,document.body.classList.remove(`body--${e===!0?`light`:`dark`}`),document.body.classList.add(`body--${e===!0?`dark`:`light`}`)},toggle(){x.set(!x.isActive)},install({$q:e,ssrContext:t,onSSRHydrated:n}){if(e.dark=this,!this.__installed){if(b.value){if(document.body.hasAttribute(He)){this.mode=`auto`,n.push(()=>{document.body.removeAttribute(He),this.mode===`auto`&&this.set(`auto`)});return}this.set(document.body.classList.contains(`body--dark`));return}this.set(e.config.dark??!1)}}}),Ue=typeof window<`u`,We,Ge=e=>We=e,Ke=Symbol();function qe(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var Je=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function Ye(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function Xe(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){tt(r.response,t,n
1)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Ze(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function Qe(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var $e=typeof navigator==`object`?navigator:{userAgent:``},et=/Macintosh/.test($e.userAgent)&&/AppleWebKit/.test($e.userAgent)&&!/Safari/.test($e.userAgent),tt=Ue?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!et?nt:`msSaveOrOpenBlob`in $e?rt:it:()=>{};function nt(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?Qe(r):Ze(r.href)?Xe(e,t,n):(r.target=`_blank`,Qe(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){Qe(r)},0))}function rt(e,t=`download`,n){if(typeof e==`string`){if(Ze(e))Xe(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){Qe(t)})}}else navigator.msSaveOrOpenBlob(Ye(e,n),t)}function it(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return Xe(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(Je.HTMLElement))||`safari`in Je,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||et)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:at}=Object;function ot(){let e=i(!0),t=e.run(()=>o({})),n=[],r=[],a=f({install(e){Ge(a),a._a=e,e.provide(Ke,a),e.config.globalProperties.$pinia=a,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return a}var st=()=>{};function ct(t,n,r,i=st){t.add(n);let a=()=>{t.delete(n)&&i()};return!r&&e()&&ee(a),a}function S(e,...t){e.forEach(e=>{e(...t)})}var lt=e=>e(),ut=Symbol(),dt=Symbol();function ft(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];e[n]=qe(i)&&qe(r)&&Object.hasOwn(e,n)&&!p(r)&&!l(r)?ft(i,r):r}return e}var pt=Symbol();function mt(e){return!e||typeof e!=`object`||!Object.hasOwn(e,pt)}var{assign:C}=Object;function ht(e){return!!(p(e)&&e.effect)}function gt(e,t,n,r){let{state:i,actions:a,getters:o}=t,l=n.state.value[e],u;function d(){return l||(n.state.value[e]=i?i():{}),C(c(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=f(s(()=>{Ge(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return u=_t(e,d,t,n,r,!0),u}function _t(e,t,a={},o,s,c){let f,ee=C({actions:{}},a),te={deep:!0},m,h,ne=new Set,re=new Set,ie,g=o.state.value[e];!c&&!g&&(o.state.value[e]={});let ae;function oe(t){let r;m=h=!1,typeof t==`function`?(t(o.state.value[e]),r={type:`patch function`,storeId:e,events:ie}):(ft(o.state.value[e],t),r={type:`patch object`,payload:t,storeId:e,events:ie});let i=ae=Symbol();n().then(()=>{ae===i&&(m=!0)}),h=!0,S(ne,r,o.state.value[e])}let se=c?function(){let{state:e}=a,t=e?e():{};this.$patch(e=>{C(e,t)})}:st;function ce(){f.stop(),ne.clear(),re.clear(),o._s.delete(e)}let le=(t,n=``)=>{if(ut in t)return t[dt]=n,t;let r=function(){Ge(o);let n=Array.from(arguments),i=new Set,a=new Set;function s(e){i.add(e)}function c(e){a.add(e)}S(re,{args:n,name:r[dt],store:_,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:_,n)}catch(e){throw S(a,e),e}return l instanceof Promise?l.then(e=>(S(i,e),e)).catch(e=>(S(a,e),Promise.reject(e))):(S(i,l),l)};return r[ut]=!0,r[dt]=n,r},ue={_p:o,$id:e,$onAction:ct.bind(null,re),$patch:oe,$reset:se,$subscribe(t,n={}){if(ne.has(t))return st;let i=ct(ne,t,n.detached,()=>a()),a=f.run(()=>r(()=>o.state.value[e],r=>{(n.flush===`sync`?h:m)&&t({storeId:e,type:`direct`,events:ie},r)},C({},te,n)));return i},$dispose:ce},_=u(ue);o._s.set(e,_);let v=(o._a&&o._a.runWithContext||lt)(()=>o._e.run(()=>(f=i()).run(()=>t({action:le}))));for(let t in v){let n=v[t];p(n)&&!ht(n)||l(n)?c||(g&&mt(n)&&(p(n)?n.value=g[t]:((n instanceof Set||n instanceof Map)&&n.clear(),ft(n,g[t]))),o.state.value[e][t]=n):typeof n==`function`&&(v[t]=le(n,t),ee.actions[t]=n)}return C(_,v),C(d(_),v),Object.defineProperty(_,"$state",{get:()=>o.state.value[e],set:e=>{oe(t=>{C(t,e)})}}
1),o._p.forEach(e=>{let t=f.run(()=>e({store:_,app:o._a,pinia:o,options:ee}));C(_,t)}),g&&c&&a.hydrate&&a.hydrate(_.$state,g),m=!0,h=!0,_}function vt(e,n,r){let i,o=typeof n==`function`;i=o?r:n;function s(r,s){let c=a();return r||=c?t(Ke,null):null,r&&Ge(r),r=We,r._s.has(e)||(o?_t(e,n,i,r):gt(e,i,r)),r._s.get(e)}return s.$id=e,s}var yt=vt(`preferences`,{state:()=>({version:431,appInfoVisible:!0,darkMode:`auto`,latestSeenVersion:0,userHasSeenCurrentVersion:!1,seenUkraineBanner:!1,shouldShowRebrandToast:!0,wheelLocation:null,showWheelOverlay:!0,showLanguageTip:!0,newWheelGroup:null}),actions:{setDurablePrefs(e){`appInfoVisible`in e&&(this.appInfoVisible=e.appInfoVisible),`darkMode`in e&&(this.darkMode=e.darkMode),`latestSeenVersion`in e&&(this.latestSeenVersion=e.latestSeenVersion),`seenUkraineBanner`in e&&(this.seenUkraineBanner=e.seenUkraineBanner),`shouldShowRebrandToast`in e&&(this.shouldShowRebrandToast=e.shouldShowRebrandToast),`wheelLocation`in e&&(this.wheelLocation=e.wheelLocation),`showWheelOverlay`in e&&(this.showWheelOverlay=e.showWheelOverlay),`showLanguageTip`in e&&(this.showLanguageTip=e.showLanguageTip),`newWheelGroup`in e&&(this.newWheelGroup=e.newWheelGroup),this.savePrefsToLocalStorage()},setLatestSeenVersion(e){this.latestSeenVersion=e,this.savePrefsToLocalStorage()},setUserHasSeenCurrentVersion(e){this.userHasSeenCurrentVersion=e},toggleAppInfoVisibility(){this.appInfoVisible=!this.appInfoVisible,this.savePrefsToLocalStorage()},setDarkMode(e){this.darkMode=e,x.set(e),this.savePrefsToLocalStorage()},setSeenUkraineBanner(){this.seenUkraineBanner=!0,this.savePrefsToLocalStorage()},setShouldShowRebrandToast(e){this.shouldShowRebrandToast=e,this.savePrefsToLocalStorage()},setWheelLocation(e){this.wheelLocation=e,this.savePrefsToLocalStorage()},switchWheelLocation(){this.wheelLocation=this.wheelLocation===`cloud`?`local`:`cloud`},setShowWheelOverlay(e){this.showWheelOverlay=e,this.savePrefsToLocalStorage()},setShowWheelOverlayNoPersist(e){this.showWheelOverlay=e},setShowLanguageTip(e){this.showLanguageTip=e,this.savePrefsToLocalStorage()},setNewWheelGroup(e){this.newWheelGroup=e,this.savePrefsToLocalStorage()},loadPreferences(){try{let e=JSON.parse(localStorage.getItem(`Preferences`)||`{}`);Object.keys(e).length===0&&(this.shouldShowRebrandToast=!1),this.setUserHasSeenCurrentVersion(this.version<=e.latestSeenVersion),this.setDurablePrefs(e)}catch{}this.setLatestSeenVersion(this.version)},savePrefsToLocalStorage(){localStorage.setItem(`Preferences`,JSON.stringify({appInfoVisible:this.appInfoVisible,darkMode:this.darkMode,latestSeenVersion:this.latestSeenVersion,seenUkraineBanner:this.seenUkraineBanner,shouldShowRebrandToast:this.shouldShowRebrandToast,wheelLocation:this.wheelLocation,showWheelOverlay:this.showWheelOverlay,showLanguageTip:this.showLanguageTip,newWheelGroup:this.newWheelGroup}))}}});async function bt(e,t,n,r){let i={method:e,mode:`cors`,headers:{}};return n&&(i.headers.Authorization=n),r&&(i.headers[`Content-Type`]=`application/json`,i.body=JSON.stringify(r)),await St(await fetch(h(t),i))}async function xt(e,t,n,r){let i={method:e,mode:`cors`,credentials:`omit`,headers:{}};return n&&(i.headers.Authorization=n),r&&(i.body=r),await(await fetch(h(t),i)).blob()}async function St(e){let t=await e.text();if(t.startsWith(`<`))throw Error(t);let n=JSON.parse(t);if(`error`in n)throw Error(n.error);return n}async function Ct(e,t){return(await w(`POST`,`api/v3/wheels`,e,t)).data.path}async function wt(e,t){let n=`api/v3/wheels/shared`;return t&&t.length>0&&(n+=`?fields=${t}`),(await w(`GET`,n,e)).data.wheels}async function Tt(e,t){let n=`api/v3/wheels/private`;return t&&t.length>0&&(n+=`?fields=${t}`),(await w(`GET`,n,e)).data.wheels}async function Et(e,t){return(await w(`GET`,`api/v3/wheels/${e}`,t)).data}async function Dt(e,t){let n=`api/v3/wheels`;return t&&t.length>0&&(n+=`?fields=${t}`),(await w(`GET`,n,e)).data.wheels}async function Ot(e,t){return(await w(`PUT`,`api/v3/wheels/private`,e,t)).data.path}async function kt(e,t,n){await w(`PUT`,`api/v3/wheels/${t}`,e,n)}async function At(e,t){await w(`DELETE`,`api/v3/wheels/${t}`,e)}async function jt(e){await w(`POST`,`api/v3/users`,e)}async function Mt(e,t){await w(`POST`,`api/v3/wheels/change-owner`,t,{oldIdToken:e})}async function Nt(e){await w(`DELETE`,`api/v3/users`,e)}async function Pt(e){try{return!!(await w(`GET`,`api/v3/users`,e)).data.premium}catch(e){if(e instanceof Error&&e.message===`Unauthorized`)return!1;throw e}}async function Ft(e,t){let n=new URLSearchParams;return e&&n.append(`search`,e),t&&n.append(`pageNumber`,String(t)),(await w(`GET`,`api/v3/gallery?${n.toString()}`)).data}async function It(){return(await w(`GET`,`api/v3/gallery/suggestions`)).data.suggestions}async function Lt(){return(await w(`GET`,`api/v3/client-settings`)).data}async function Rt(e){return(await w(`POST`,`api/v3/api-keys`,e)).data.apiKey}async function zt(e){await w(`DELETE`,`api/v3/api-keys`,e)}async function Bt(e){return(await w(`GET`,`api/v3/api-keys`,e)).data}async function Vt(e){let t={method:`GET`,mode:`cors`,headers:{"x-api-key":e}};return(await Gt(await fetch(h(`api/v3/api-keys`),t))).data}async function Ht(){return(await w(`GET`,`api/v3/languages`)).data.languages}async function Ut(e,t,n,r){return await Wt(`GET`,`api/v3/wheels/thumbnails/${t}?size=${n}&lastWrite=${r}`,e)}async function w(e,t,n,r){return await bt(e,t,n,r)}async function Wt(e,t,n,r){return await xt(e,t,n,r)}async function Gt(e){return await St(e)}var Kt=vt(`serverSettings`,{state:()=>({spinsPerSecond:46.6,hoursSpunPerSecond:.129,maintenanceMessage:null,readOnlyMode:!1,commitHash:`?`,advertiser:null}),actions:{setSettings(e){this.spinsPerSecond=e.spinsPerSecond||46.6,this.hoursSpunPerSecond=e.hoursSpunPerSecond||.129,this.maintenanceMessage=e.maintenanceMessage||null,this.readOnlyMode=e.readOnlyMode||!1,this.commitHash=e.commitHash||`?`;let t=Object.entries(e.advertiserWeights||{}).reduce((e,[t,n])=>e.concat(Array(n).fill(t)),[]),n=Math.floor(Math.random()*t.length);this.advertiser=t.at(n)||null},async loadServerSettings(){try{let e=await Lt();this.setSettings(e)}catch(e){console.error(`Failed to load server settings:`,e)}}}}),qt=()=>void 0,Jt=function(e){let t=[],n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?t[n++]=i:i<2048?(t[n++]=i>>6|192,t[n++]=i&63|128):(i&64512)==55296&&r+1<e.length&&(e.charCodeAt(r+1)&64512)==56320?(i=65536+((i&1023)<<10)+(e.charCodeAt(++r)&1023),t[n++]=i>>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=i&63|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=i&63|128)}return t},Yt=function(e){let t=[],n=0,r=0;for(;n<e.length;){let i=e[n++];if(i<128)t[r++]=String.fromCharCode(i);else if(i>191&&i<224){let a=e[n++];t[r++]=String.fromCharCode((i&31)<<6|a&63)}else if(i>239&&i<365){let a=e[n++],o=e[n++],s=e[n++],c=((i&7)<<18|(a&63)<<12|(o&63)<<6|s&63)-65536;t[r++]=String.fromCharCode(55296+(c>>10)),t[r++]=String.fromCharCode(56320+(c&1023))}else{let a=e[n++],o=e[n++];t[r++]=String.fromCharCode((i&15)<<12|(a&63)<<6|o&63)}}return t.join(``)},Xt={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`,get ENCODED_VALS(){return this.ENCODED_VALS_BASE+`+/=`},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+`-_.`},HAS_NATIVE_SUPPORT:typeof atob==`function`,encodeByteArray(e,t){if(!Array.isArray(e))throw Error(`encodeByteArray takes an array as a parameter`);this.init_();let n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let t=0;t<e.length;t+=3){let i=e[t],a=t+1<e.length,o=a?e[t+1]:0,s=t+2<e.length,c=s?e[t+2]:0,l=i>>2,u=(i&3)<<4|o>>4,d=(o&15)<<2|c>>6,f=c&63;s||(f=64,a||(d=64)),r.push(n[l],n[u],n[d],n[f])}return r.join(``)},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(Jt(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):Yt(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();let n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let t=0;t<e.length;){let i=n[e.charAt(t++)],a=t<e.length?n[e.charAt(t)]:0;++t;let o=t<e.length?n[e.charAt(t)]:64;++t;let s=t<e.length?n[e.charAt(t)]:64;if(++t,i==null||a==null||o==null||s==null)throw new Zt;let c=i<<2|a>>4;if(r.push(c),o!==64){let e=a<<4&240|o>>2;if(r.push(e),s!==64){let e=o<<6&192|s;
1r.push(e)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++)this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e),this.charToByteMap_[this.byteToCharMap_[e]]=e,this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e,e>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}},Zt=class extends Error{constructor(){super(...arguments),this.name=`DecodeBase64StringError`}},Qt=function(e){let t=Jt(e);return Xt.encodeByteArray(t,!0)},$t=function(e){return Qt(e).replace(/\./g,``)},en=function(e){try{return Xt.decodeString(e,!0)}catch(e){console.error(`base64Decode failed: `,e)}return null};function tn(){if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global;throw Error(`Unable to locate global object.`)}var nn=()=>tn().__FIREBASE_DEFAULTS__,rn=()=>{if(typeof process>`u`)return;let e={}.__FIREBASE_DEFAULTS__;if(e)return JSON.parse(e)},an=()=>{if(typeof document>`u`)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}let t=e&&en(e[1]);return t&&JSON.parse(t)},on=()=>{try{return qt()||nn()||rn()||an()}catch(e){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);return}},sn=e=>on()?.emulatorHosts?.[e],cn=()=>on()?.config,ln=e=>on()?.[`_${e}`],un=class{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),typeof e==`function`&&(this.promise.catch(()=>{}),e.length===1?e(t):e(t,n))}}};function T(){return typeof navigator<`u`&&typeof navigator.userAgent==`string`?navigator.userAgent:``}function dn(){return typeof window<`u`&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(T())}function fn(){return typeof navigator<`u`&&navigator.userAgent===`Cloudflare-Workers`}function pn(){let e=typeof chrome==`object`?chrome.runtime:typeof browser==`object`?browser.runtime:void 0;return typeof e==`object`&&e.id!==void 0}function mn(){return typeof navigator==`object`&&navigator.product===`ReactNative`}function hn(){let e=T();return e.indexOf(`MSIE `)>=0||e.indexOf(`Trident/`)>=0}function gn(){try{return typeof indexedDB==`object`}catch{return!1}}function _n(){return new Promise((e,t)=>{try{let n=!0,r=`validate-browser-context-for-indexeddb-analytics-module`,i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{t(i.error?.message||``)}}catch(e){t(e)}})}var vn=`FirebaseError`,yn=class e extends Error{constructor(t,n,r){super(n),this.code=t,this.customData=r,this.name=vn,Object.setPrototypeOf(this,e.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,bn.prototype.create)}},bn=class{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){let n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],a=i?xn(i,n):`Error`;return new yn(r,`${this.serviceName}: ${a} (${r}).`,n)}};function xn(e,t){try{let n=0,r=``;for(;n<e.length;){let i=e.indexOf(`{$`,n);if(i===-1){r+=e.substring(n);break}let a=e.indexOf(`}`,i+2);if(a===-1){r+=e.substring(n);break}let o=e.substring(i+2,a),s=t[o];r+=e.substring(n,i)+(s==null?`<${o}?>`:String(s)),n=a+1}return r}catch{return e}}function Sn(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function E(e,t){if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);for(let i of n){if(!r.includes(i))return!1;let n=e[i],a=t[i];if(Cn(n)&&Cn(a)){if(!E(n,a))return!1}else if(n!==a)return!1}for(let e of r)if(!n.includes(e))return!1;return!0}function Cn(e){return typeof e==`object`&&!!e}function wn(e){let t=[];for(let[n,r]of Object.entries(e))Array.isArray(r)?r.forEach(e=>{t.push(encodeURIComponent(n)+`=`+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+`=`+encodeURIComponent(r));return t.length?`&`+t.join(`&`):``}function Tn(e){let t={};
1return e.replace(/^\?/,``).split(`&`).forEach(e=>{if(e){let[n,r]=e.split(`=`);t[decodeURIComponent(n)]=decodeURIComponent(r)}}),t}function En(e){let t=e.indexOf(`?`);if(!t)return``;let n=e.indexOf(`#`,t);return e.substring(t,n>0?n:void 0)}function Dn(e,t){let n=new On(e,t);return n.subscribe.bind(n)}var On=class{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then(()=>{e(this)}).catch(e=>{this.error(e)})}next(e){this.forEachObserver(t=>{t.next(e)})}error(e){this.forEachObserver(t=>{t.error(e)}),this.close(e)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,n){let r;if(e===void 0&&t===void 0&&n===void 0)throw Error(`Missing Observer.`);r=kn(e,[`next`,`error`,`complete`])?e:{next:e,error:t,complete:n},r.next===void 0&&(r.next=An),r.error===void 0&&(r.error=An),r.complete===void 0&&(r.complete=An);let i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch{}}),this.observers.push(r),i}unsubscribeOne(e){this.observers!==void 0&&this.observers[e]!==void 0&&(delete this.observers[e],--this.observerCount,this.observerCount===0&&this.onNoObservers!==void 0&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let t=0;t<this.observers.length;t++)this.sendOne(t,e)}sendOne(e,t){this.task.then(()=>{if(this.observers!==void 0&&this.observers[e]!==void 0)try{t(this.observers[e])}catch(e){typeof console<`u`&&console.error&&console.error(e)}})}close(e){this.finalized||(this.finalized=!0,e!==void 0&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}};function kn(e,t){if(typeof e!=`object`||!e)return!1;for(let n of t)if(n in e&&typeof e[n]==`function`)return!0;return!1}function An(){}function D(e){return e&&e._delegate?e._delegate:e}function jn(e){try{return(e.startsWith(`http://`)||e.startsWith(`https://`)?new URL(e).hostname:e).endsWith(`.cloudworkstations.dev`)}catch{return!1}}async function Mn(e){return(await fetch(e,{credentials:`include`})).ok}var O=class{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode=`LAZY`,this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}},k=`[DEFAULT]`,Nn=class{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){let t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){let e=new un;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{let n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch{}}return this.instancesDeferred.get(t).promise}getImmediate(e){let t=this.normalizeInstanceIdentifier(e?.identifier),n=e?.optional??!1;if(this.isInitialized(t)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:t})}catch(e){if(n)return null;throw e}if(n)return null;throw Error(`Service ${this.name} is not available`)}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(Fn(e))try{this.getOrInitializeService({instanceIdentifier:k})}catch{}for(let[e,t]of this.instancesDeferred.entries()){let n=this.normalizeInstanceIdentifier(e);try{let e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch{}}}}clearInstance(e=k){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){let e=Array.from(this.instances.values());await Promise.all([...e.filter(e=>`INTERNAL`in e).map(e=>e.INTERNAL.delete()),...e.filter(e=>`_delete`in e).map(e=>e._delete())])}isComponentSet(){return this.component!=null}isInitialized(e=k){return this.instances.has(e)}getOptions(e=k){return this.instancesOptions.get(e)||{}}initialize(e={}){let{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);let r=this.getOrInitializeService({instanceIdentifier:n,options:t});for(let[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(r);return r}onInit(e,t){let n=this.normalizeInstanceIdentifier(t),r=this.onInitCallbacks.get(n)??new Set;r.add(e),this.onInitCallbacks.set(n,r);let i=this.instances.get(n);return i&&e(i,n),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){let n=this.onInitCallbacks.get(t);if(n)for(let r of n)try{r(e,t)}catch{}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:Pn(e),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch{}return n||null}normalizeInstanceIdentifier(e=k){return this.component?this.component.multipleInstances?e:k:e}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!==`EXPLICIT`}};function Pn(e){return e===k?void 0:e}function Fn(e){return e.instantiationMode===`EAGER`}var In=class{constructor(e){this.name=e,this.providers=new Map}addComponent(e){let t=this.getProvider(e.name);if(t.isComponentSet())throw Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);let t=new Nn(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}},Ln=[],A;(function(e){e[e.DEBUG=0]=`DEBUG`,e[e.VERBOSE=1]=`VERBOSE`,e[e.INFO=2]=`INFO`,e[e.WARN=3]=`WARN`,e[e.ERROR=4]=`ERROR`,e[e.SILENT=5]=`SILENT`})(A||={});var Rn={debug:A.DEBUG,verbose:A.VERBOSE,info:A.INFO,warn:A.WARN,error:A.ERROR,silent:A.SILENT},zn=A.INFO,Bn={[A.DEBUG]:`log`,[A.VERBOSE]:`log`,[A.INFO]:`info`,[A.WARN]:`warn`,[A.ERROR]:`error`},Vn=(e,t,...n)=>{if(t<e.logLevel)return;let r=new Date().toISOString(),i=Bn[t];if(i)console[i](`[${r}] ${e.name}:`,...n);
1else throw Error(`Attempted to log a message with an invalid logType (value: ${t})`)},Hn=class{constructor(e){this.name=e,this._logLevel=zn,this._logHandler=Vn,this._userLogHandler=null,Ln.push(this)}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in A))throw TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel=typeof e==`string`?Rn[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if(typeof e!=`function`)throw TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,A.DEBUG,...e),this._logHandler(this,A.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,A.VERBOSE,...e),this._logHandler(this,A.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,A.INFO,...e),this._logHandler(this,A.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,A.WARN,...e),this._logHandler(this,A.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,A.ERROR,...e),this._logHandler(this,A.ERROR,...e)}},Un=(e,t)=>t.some(t=>e instanceof t),Wn,Gn;function Kn(){return Wn||=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]}function qn(){return Gn||=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]}var Jn=new WeakMap,Yn=new WeakMap,Xn=new WeakMap,Zn=new WeakMap,Qn=new WeakMap;function $n(e){let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`success`,i),e.removeEventListener(`error`,a)},i=()=>{t(j(e.result)),r()},a=()=>{n(e.error),r()};e.addEventListener(`success`,i),e.addEventListener(`error`,a)});return t.then(t=>{t instanceof IDBCursor&&Jn.set(t,e)}).catch(()=>{}),Qn.set(t,e),t}function er(e){if(Yn.has(e))return;let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`complete`,i),e.removeEventListener(`error`,a),e.removeEventListener(`abort`,a)},i=()=>{t(),r()},a=()=>{n(e.error||new DOMException(`AbortError`,`AbortError`)),r()};e.addEventListener(`complete`,i),e.addEventListener(`error`,a),e.addEventListener(`abort`,a)});Yn.set(e,t)}var tr={get(e,t,n){if(e instanceof IDBTransaction){if(t===`done`)return Yn.get(e);if(t===`objectStoreNames`)return e.objectStoreNames||Xn.get(e);if(t===`store`)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return j(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t===`done`||t===`store`)||t in e}};function nr(e){tr=e(tr)}function rr(e){return e===IDBDatabase.prototype.transaction&&!(`objectStoreNames`in IDBTransaction.prototype)?function(t,...n){let r=e.call(ar(this),t,...n);return Xn.set(r,t.sort?t.sort():[t]),j(r)}:qn().includes(e)?function(...t){return e.apply(ar(this),t),j(Jn.get(this))}:function(...t){return j(e.apply(ar(this),t))}}function ir(e){return typeof e==`function`?rr(e):(e instanceof IDBTransaction&&er(e),Un(e,Kn())?new Proxy(e,tr):e)}function j(e){if(e instanceof IDBRequest)return $n(e);if(Zn.has(e))return Zn.get(e);let t=ir(e);return t!==e&&(Zn.set(e,t),Qn.set(t,e)),t}var ar=e=>Qn.get(e);function or(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){let o=indexedDB.open(e,t),s=j(o);return r&&o.addEventListener(`upgradeneeded`,e=>{r(j(o.result),e.oldVersion,e.newVersion,j(o.transaction),e)}),n&&o.addEventListener(`blocked`,e=>n(e.oldVersion,e.newVersion,e)),s.then(e=>{a&&e.addEventListener(`close`,()=>a()),i&&e.addEventListener(`versionchange`,e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),s}var sr=[`get`,`getKey`,`getAll`,`getAllKeys`,`count`],cr=[`put`,`add`,`delete`,`clear`],lr=new Map;function ur(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t==`string`))return;if(lr.get(t))return lr.get(t);let n=t.replace(/FromIndex$/,``),r=t!==n,i=cr.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||sr.includes(n)))return;let a=async function(e,...t){let a=this.transaction(e,i?`readwrite`:`readonly`),o=a.store;
1return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&a.done]))[0]};return lr.set(t,a),a}nr(e=>({...e,get:(t,n,r)=>ur(t,n)||e.get(t,n,r),has:(t,n)=>!!ur(t,n)||e.has(t,n)}));var dr=class{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(e=>{if(fr(e)){let t=e.getImmediate();return`${t.library}/${t.version}`}return null}).filter(e=>e).join(` `)}};function fr(e){return e.getComponent()?.type===`VERSION`}var pr=`@firebase/app`,mr=`0.16.2`,M=new Hn(`@firebase/app`),hr=`@firebase/app-compat`,gr=`@firebase/analytics-compat`,_r=`@firebase/analytics`,vr=`@firebase/app-check-compat`,yr=`@firebase/app-check`,br=`@firebase/auth`,xr=`@firebase/auth-compat`,Sr=`@firebase/database`,Cr=`@firebase/data-connect`,wr=`@firebase/database-compat`,Tr=`@firebase/functions`,Er=`@firebase/functions-compat`,Dr=`@firebase/installations`,Or=`@firebase/installations-compat`,kr=`@firebase/messaging`,Ar=`@firebase/messaging-compat`,jr=`@firebase/performance`,Mr=`@firebase/performance-compat`,Nr=`@firebase/remote-config`,Pr=`@firebase/remote-config-compat`,Fr=`@firebase/storage`,Ir=`@firebase/storage-compat`,Lr=`@firebase/firestore`,Rr=`@firebase/ai`,zr=`@firebase/firestore-compat`,Br=`firebase`,Vr=`12.19.0`,Hr=`[DEFAULT]`,Ur={[pr]:`fire-core`,[hr]:`fire-core-compat`,[_r]:`fire-analytics`,[gr]:`fire-analytics-compat`,[yr]:`fire-app-check`,[vr]:`fire-app-check-compat`,[br]:`fire-auth`,[xr]:`fire-auth-compat`,[Sr]:`fire-rtdb`,[Cr]:`fire-data-connect`,[wr]:`fire-rtdb-compat`,[Tr]:`fire-fn`,[Er]:`fire-fn-compat`,[Dr]:`fire-iid`,[Or]:`fire-iid-compat`,[kr]:`fire-fcm`,[Ar]:`fire-fcm-compat`,[jr]:`fire-perf`,[Mr]:`fire-perf-compat`,[Nr]:`fire-rc`,[Pr]:`fire-rc-compat`,[Fr]:`fire-gcs`,[Ir]:`fire-gcs-compat`,[Lr]:`fire-fst`,[zr]:`fire-fst-compat`,[Rr]:`fire-vertex`,"fire-js":`fire-js`,[Br]:`fire-js-all`},Wr=new Map,Gr=new Map,Kr=new Map;function qr(e,t){try{e.container.addComponent(t)}catch(n){M.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function Jr(e){let t=e.name;if(Kr.has(t))return M.debug(`There were multiple attempts to register component ${t}.`),!1;Kr.set(t,e);for(let t of Wr.values())qr(t,e);for(let t of Gr.values())qr(t,e);return!0}function Yr(e,t){let n=e.container.getProvider(`heartbeat`).getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}function N(e){return e!=null&&e.settings!==void 0}var P=new bn(`app`,`Firebase`,{"no-app":`No Firebase App '{$appName}' has been created - call initializeApp() first`,"bad-app-name":`Illegal App name: '{$appName}'`,"duplicate-app":`Firebase App named '{$appName}' already exists with different {$mismatchedParam}. Existing: '{$oldValue}'. New: '{$newValue}'.`,"app-deleted":`Firebase App named '{$appName}' already deleted`,"server-app-deleted":`Firebase Server App has been deleted`,"no-options":`Need to provide options, when not being deployed to hosting via source.`,"invalid-app-argument":`firebase.{$appName}() takes either no argument or a Firebase App instance.`,"invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":`Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.`,"idb-get":`Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.`,"idb-set":`Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.`,"idb-delete":`Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.`,"finalization-registry-not-supported":`FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.`,"invalid-server-app-environment":`FirebaseServerApp is not for use in browser environments.`}),Xr=class{constructor(e,t,n){this._isDeleted=!1,this._options={...e},this._config={...t},this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new O(`app`,()=>this,`PUBLIC`))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw P.create(`app-deleted`,{appName:this._name})}},Zr=Vr;function Qr(e,t={}){let n=e;typeof t!=`object`&&(t={name:t});let r={name:Hr,automaticDataCollectionEnabled:!0,...t},i=r.name;if(typeof i!=`string`||!i)throw P.create(`bad-app-name`,{appName:String(i)});if(n||=cn(),!n)throw P.create(`no-options`);let a=Wr.get(i);if(a){if(!E(n,a.options))throw P.create(`duplicate-app`,{appName:i,mismatchedParam:`options`,oldValue:JSON.stringify(a.options),newValue:JSON.stringify(n)});if(E(r,a.config))return a;throw P.create(`duplicate-app`,{appName:i,mismatchedParam:`config`,oldValue:JSON.stringify(a.config),newValue:JSON.stringify(r)})}let o=new In(i);for(let e of Kr.values())o.addComponent(e);let s=new Xr(n,r,o);return Wr.set(i,s),s}function $r(e=Hr){let t=Wr.get(e);if(!t&&e===`[DEFAULT]`&&cn())return Qr();if(!t)throw P.create(`no-app`,{appName:e});return t}function F(e,t,n){let r=Ur[e]??e;n&&(r+=`-${n}`);let i=r.match(/\s|\//),a=t.match(/\s|\//);if(i||a){let e=[`Unable to register library "${r}" with version "${t}":`];i&&e.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&a&&e.push(`and`),a&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),M.warn(e.join(` `));return}Jr(new O(`${r}-version`,()=>({library:r,version:t}),`VERSION`))}var ei=`firebase-heartbeat-database`,ti=1,ni=`firebase-heartbeat-store`,ri=null;function ii(){return ri||=or(ei,ti,{upgrade:(e,t)=>{if(t===0)try{e.createObjectStore(ni)}catch(e){console.warn(e)}}}).catch(e=>{throw P.create(`idb-open`,{originalErrorMessage:e.message})}),ri}async function ai(e){try{let t=(await ii()).transaction(ni),n=await t.objectStore(ni).get(si(e));return await t.done,n}catch(e){if(e instanceof yn)M.warn(e.message);else{let t=P.create(`idb-get`,{originalErrorMessage:e?.message});M.warn(t.message)}}}async function oi(e,t){try{let n=(await ii()).transaction(ni,`readwrite`);await n.objectStore(ni).put(t,si(e)),await n.done}catch(e){if(e instanceof yn)M.warn(e.message);else{let t=P.create(`idb-set`,{originalErrorMessage:e?.message});M.warn(t.message)}}}function si(e){return`${e.name}!${e.options.appId}`}var ci=1024,li=30,ui=class{constructor(e){this.container=e,this._heartbeatsCache=null;let t=this.container.getProvider(`app`).getImmediate();this._storage=new pi(t),this._heartbeatsCachePromise=this._storage.read().then(e=>(this._heartbeatsCache=e,e))}async triggerHeartbeat(){try{let e=this.container.getProvider(`platform-logger`).getImmediate().getPlatformInfoString(),t=di();if(this._heartbeatsCache?.heartbeats==null&&(this._heartbeatsCache=await this._heartbeatsCachePromise,this._heartbeatsCache?.heartbeats==null)||this._heartbeatsCache.lastSentHeartbeatDate===t||this._heartbeatsCache.heartbeats.some(e=>e.date===t))return;if(this._heartbeatsCache.heartbeats.push({date:t,agent:e}),this._heartbeatsCache.heartbeats.length>li){let e=hi(this._heartbeatsCache.heartbeats);this._heartbeatsCache.heartbeats.splice(e,1)}return this._storage.overwrite(this._heartbeatsCache)}catch(e){M.warn(e)}}async getHeartbeatsHeader(){try{if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache?.heartbeats==null||this._heartbeatsCache.heartbeats.length===0)return``;let e=di(),{heartbeatsToSend:t,unsentEntries:n}=fi(this._heartbeatsCache.heartbeats),r=$t(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,n.length>0?(this._heartbeatsCache.heartbeats=n,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),r}catch(e){return M.warn(e),``}}};function di(){return new Date().toISOString().substring(0,10)}function fi(e,t=ci){let n=[],r=e.slice();for(let i of e){let e=n.find(e=>e.agent===i.agent);if(!e){if(n.push({agent:i.agent,dates:[i.date]}),mi(n)>t){n.pop();break}}else if(e.dates.push(i.date),mi(n)>t){e.dates.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}var pi=class{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return gn()?_n().then(()=>!0).catch(()=>!1):!1}async read(){if(await this._canUseIndexedDBPromise){let e=await ai(this.app);return e?.heartbeats?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){if(await this._canUseIndexedDBPromise){let t=await this.read();return oi(this.app,{lastSentHeartbeatDate:e.lastSentHeartbeatDate??t.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){if(await this._canUseIndexedDBPromise){let t=await this.read();return oi(this.app,{lastSentHeartbeatDate:e.lastSentHeartbeatDate??t.lastSentHeartbeatDate,heartbeats:[...t.heartbeats,...e.heartbeats]})}}};function mi(e){return $t(JSON.stringify({version:2,heartbeats:e})).length}function hi(e){if(e.length===0)return-1;let t=0,n=e[0].date;for(let r=1;r<e.length;r++)e[r].date<n&&(n=e[r].date,t=r);return t}function gi(e){Jr(new O(`platform-logger`,e=>new dr(e),`PRIVATE`)),Jr(new O(`heartbeat`,e=>new ui(e),`PRIVATE`)),F(pr,mr,e),F(pr,mr,`esm2020`),F(`fire-js`,``)}gi(``),F(`firebase`,`12.19.0`,`app`);function _i(){return{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}}var vi=_i,yi=new bn(`auth`,`Firebase`,_i()),bi=new Hn(`@firebase/auth`);function xi(e,...t){bi.logLevel<=A.WARN&&bi.warn(`Auth (${Zr}): ${e}`,...t)}function Si(e,...t){bi.logLevel<=A.ERROR&&bi.error(`Auth (${Zr}): ${e}`,...t)}function I(e,...t){throw Ti(e,...t)}function L(e,...t){return Ti(e,...t)}function Ci(e,t,n){return new bn(`auth`,`Firebase`,{...vi(),[t]:n}
1).create(t,{appName:e.name})}function R(e){return Ci(e,`operation-not-supported-in-this-environment`,`Operations that alter the current user are not supported in conjunction with FirebaseServerApp`)}function wi(e,t,n){let r=n;if(!(t instanceof r))throw r.name!==t.constructor.name&&I(e,`argument-error`),Ci(e,`argument-error`,`Type of ${t.constructor.name} does not match expected instance.Did you pass a reference from a different Auth SDK?`)}function Ti(e,...t){if(typeof e!=`string`){let n=t[0],r=[...t.slice(1)];return r[0]&&(r[0].appName=e.name),e._errorFactory.create(n,...r)}return yi.create(e,...t)}function z(e,t,...n){if(!e)throw Ti(t,...n)}function B(e){let t=`INTERNAL ASSERTION FAILED: `+e;throw Si(t),Error(t)}function V(e,t){e||B(t)}function Ei(){return typeof self<`u`&&self.location?.href||``}function Di(){return Oi()===`http:`||Oi()===`https:`}function Oi(){return typeof self<`u`&&self.location?.protocol||null}function ki(){return typeof navigator<`u`&&navigator&&`onLine`in navigator&&typeof navigator.onLine==`boolean`&&(Di()||pn()||`connection`in navigator)?navigator.onLine:!0}function Ai(){if(typeof navigator>`u`)return null;let e=navigator;return e.languages&&e.languages[0]||e.language||null}var ji=class{constructor(e,t){this.shortDelay=e,this.longDelay=t,V(t>e,`Short delay should be less than long delay!`),this.isMobile=dn()||mn()}get(){return ki()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}};function Mi(e,t){V(e.emulator,`Emulator should always be set here`);let{url:n}=e.emulator;return t?`${n}${t.startsWith(`/`)?t.slice(1):t}`:n}var Ni=class{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if(typeof self<`u`&&`fetch`in self)return self.fetch;if(typeof globalThis<`u`&&globalThis.fetch)return globalThis.fetch;if(typeof fetch<`u`)return fetch;B(`Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill`)}static headers(){if(this.headersImpl)return this.headersImpl;if(typeof self<`u`&&`Headers`in self)return self.Headers;if(typeof globalThis<`u`&&globalThis.Headers)return globalThis.Headers;if(typeof Headers<`u`)return Headers;B(`Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill`)}static response(){if(this.responseImpl)return this.responseImpl;if(typeof self<`u`&&`Response`in self)return self.Response;if(typeof globalThis<`u`&&globalThis.Response)return globalThis.Response;if(typeof Response<`u`)return Response;B(`Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill`)}},Pi={CREDENTIAL_MISMATCH:`custom-token-mismatch`,MISSING_CUSTOM_TOKEN:`internal-error`,INVALID_IDENTIFIER:`invalid-email`,MISSING_CONTINUE_URI:`internal-error`,INVALID_PASSWORD:`wrong-password`,MISSING_PASSWORD:`missing-password`,INVALID_LOGIN_CREDENTIALS:`invalid-credential`,EMAIL_EXISTS:`email-already-in-use`,PASSWORD_LOGIN_DISABLED:`operation-not-allowed`,INVALID_IDP_RESPONSE:`invalid-credential`,INVALID_PENDING_TOKEN:`invalid-credential`,FEDERATED_USER_ID_ALREADY_LINKED:`credential-already-in-use`,MISSING_REQ_TYPE:`internal-error`,EMAIL_NOT_FOUND:`user-not-found`,RESET_PASSWORD_EXCEED_LIMIT:`too-many-requests`,EXPIRED_OOB_CODE:`expired-action-code`,INVALID_OOB_CODE:`invalid-action-code`,MISSING_OOB_CODE:`internal-error`,CREDENTIAL_TOO_OLD_LOGIN_AGAIN:`requires-recent-login`,INVALID_ID_TOKEN:`invalid-user-token`,TOKEN_EXPIRED:`user-token-expired`,USER_NOT_FOUND:`user-token-expired`,TOO_MANY_ATTEMPTS_TRY_LATER:`too-many-requests`,PASSWORD_DOES_NOT_MEET_REQUIREMENTS:`password-does-not-meet-requirements`,INVALID_CODE:`invalid-verification-code`,INVALID_SESSION_INFO:`invalid-verification-id`,INVALID_TEMPORARY_PROOF:`invalid-credential`,MISSING_SESSION_INFO:`missing-verification-id`,SESSION_EXPIRED:`code-expired`,MISSING_ANDROID_PACKAGE_NAME:`missing-android-pkg-name`,UNAUTHORIZED_DOMAIN:`unauthorized-continue-uri`,INVALID_OAUTH_CLIENT_ID:`invali
1d-oauth-client-id`,ADMIN_ONLY_OPERATION:`admin-restricted-operation`,INVALID_MFA_PENDING_CREDENTIAL:`invalid-multi-factor-session`,MFA_ENROLLMENT_NOT_FOUND:`multi-factor-info-not-found`,MISSING_MFA_ENROLLMENT_ID:`missing-multi-factor-info`,MISSING_MFA_PENDING_CREDENTIAL:`missing-multi-factor-session`,SECOND_FACTOR_EXISTS:`second-factor-already-in-use`,SECOND_FACTOR_LIMIT_EXCEEDED:`maximum-second-factor-count-exceeded`,BLOCKING_FUNCTION_ERROR_RESPONSE:`internal-error`,RECAPTCHA_NOT_ENABLED:`recaptcha-not-enabled`,MISSING_RECAPTCHA_TOKEN:`missing-recaptcha-token`,INVALID_RECAPTCHA_TOKEN:`invalid-recaptcha-token`,INVALID_RECAPTCHA_ACTION:`invalid-recaptcha-action`,MISSING_CLIENT_TYPE:`missing-client-type`,MISSING_RECAPTCHA_VERSION:`missing-recaptcha-version`,INVALID_RECAPTCHA_VERSION:`invalid-recaptcha-version`,INVALID_REQ_TYPE:`invalid-req-type`},Fi=[`/v1/accounts:signInWithCustomToken`,`/v1/accounts:signInWithEmailLink`,`/v1/accounts:signInWithIdp`,`/v1/accounts:signInWithPassword`,`/v1/accounts:signInWithPhoneNumber`,`/v1/token`],Ii=new ji(3e4,6e4);function H(e,t){return e.tenantId&&!t.tenantId?{...t,tenantId:e.tenantId}:t}async function U(e,t,n,r,i={}){return Li(e,i,async()=>{let i={},a={};r&&(t===`GET`?a=r:i={body:JSON.stringify(r)});let o=wn({...a,key:e.config.apiKey}).slice(1),s=await e._getAdditionalHeaders();s[`Content-Type`]=`application/json`,e.languageCode&&(s[`X-Firebase-Locale`]=e.languageCode);let c={method:t,headers:s,...i};return fn()||(c.referrerPolicy=`strict-origin-when-cross-origin`),e.emulatorConfig&&jn(e.emulatorConfig.host)&&(c.credentials=`include`),Ni.fetch()(await zi(e,e.config.apiHost,n,o),c)})}async function Li(e,t,n){e._canInitEmulator=!1;let r={...Pi,...t};try{let t=new Vi(e),i=await Promise.race([n(),t.promise]);t.clearNetworkTimeout();let a=await i.json();if(`needConfirmation`in a)throw Hi(e,`account-exists-with-different-credential`,a);if(i.ok&&!(`errorMessage`in a))return a;{let[t,n]=(i.ok?a.errorMessage:a.error.message).split(` : `);if(t===`FEDERATED_USER_ID_ALREADY_LINKED`)throw Hi(e,`credential-already-in-use`,a);if(t===`EMAIL_EXISTS`)throw Hi(e,`email-already-in-use`,a);if(t===`USER_DISABLED`)throw Hi(e,`user-disabled`,a);let o=r[t]||t.toLowerCase().replace(/[_\s]+/g,`-`);if(n)throw Ci(e,o,n);I(e,o)}}catch(t){if(t instanceof yn)throw t;I(e,`network-request-failed`,{message:String(t)})}}async function Ri(e,t,n,r,i={}){let a=await U(e,t,n,r,i);return`mfaPendingCredential`in a&&I(e,`multi-factor-auth-required`,{_serverResponse:a}),a}async function zi(e,t,n,r){let i=`${t}${n}?${r}`,a=e,o=a.config.emulator?Mi(e.config,i):`${e.config.apiScheme}://${i}`;return Fi.includes(n)&&(await a._persistenceManagerAvailable,a._getPersistenceType()===`COOKIE`)?a._getPersistence()._getFinalTarget(o).toString():o}function Bi(e){switch(e){case`ENFORCE`:return`ENFORCE`;case`AUDIT`:return`AUDIT`;case`OFF`:return`OFF`;default:return`ENFORCEMENT_STATE_UNSPECIFIED`}}var Vi=class{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(L(this.auth,`network-request-failed`)),Ii.get())})}};function Hi(e,t,n){let r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);let i=L(e,t,r);return i.customData._tokenResponse=n,i}function Ui(e){return e!==void 0&&e.enterprise!==void 0}var Wi=class{constructor(e){if(this.siteKey=``,this.recaptchaEnforcementState=[],e.recaptchaKey===void 0)throw Error(`recaptchaKey undefined`);this.siteKey=e.recaptchaKey.split(`/`)[3],this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){if(!this.recaptchaEnforcementState||this.recaptchaEnforcementState.length===0)return null;for(let t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return Bi(t.enforcementState);return null}isProviderEnabled(e){return this.getProviderEnforcementState(e)===`ENFORCE`||this.getProviderEnforcementState(e)===`AUDIT`}isAnyProviderEnabled(){return this.isProviderEnabled(`EMAIL_PASSWORD_PROVIDER`)||this.isProviderEnabled(`PHONE_PROVIDER`)}};async function Gi(e,t){return U(e,`GET`,`/v2/recaptchaConfig`,H(e,t))}async function Ki(e,t){return U(e,`POST`,`/v1/accounts:delete`,t)}async function qi(e,t){return U(e,`POST`,`/v1/accounts:lookup`,t)}function Ji(e){if(e)try{let t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch{}}async function Yi(e,t=!1){let n=D(e),r=await n.getIdToken(t),i=Zi(r);z(i&&i.exp&&i.auth_time&&i.iat,n.auth,`internal-error`);let a=typeof i.firebase==`object`?i.firebase:void 0,o=a?.sign_in_provider;return{claims:i,token:r,authTime:Ji(Xi(i.auth_time)),issuedAtTime:Ji(Xi(i.iat)),expirationTime:Ji(Xi(i.exp
1)),signInProvider:o||null,signInSecondFactor:a?.sign_in_second_factor||null}}function Xi(e){return Number(e)*1e3}function Zi(e){let[t,n,r]=e.split(`.`);if(t===void 0||n===void 0||r===void 0)return Si(`JWT malformed, contained fewer than 3 sections`),null;try{let e=en(n);return e?JSON.parse(e):(Si(`Failed to decode base64 JWT payload`),null)}catch(e){return Si(`Caught error parsing JWT payload as JSON`,e?.toString()),null}}function Qi(e){let t=Zi(e);return z(t,`internal-error`),z(t.exp!==void 0,`internal-error`),z(t.iat!==void 0,`internal-error`),Number(t.exp)-Number(t.iat)}async function W(e,t,n=!1){if(n)return t;try{return await t}catch(t){throw t instanceof yn&&$i(t)&&e.auth.currentUser===e&&await e.auth.signOut(),t}}function $i({code:e}){return e===`auth/user-disabled`||e===`auth/user-token-expired`}var ea=class{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,this.timerId!==null&&clearTimeout(this.timerId))}getInterval(e){if(e){let e=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),e}{this.errorBackoff=3e4;let e=(this.user.stsTokenManager.expirationTime??0)-Date.now()-3e5;return Math.max(0,e)}}schedule(e=!1){if(!this.isRunning)return;let t=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},t)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){e?.code===`auth/network-request-failed`&&this.schedule(!0);return}this.schedule()}},ta=class{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Ji(this.lastLoginAt),this.creationTime=Ji(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}};async function na(e){let t=e.auth,n=await W(e,qi(t,{idToken:await e.getIdToken()}));z(n?.users.length,t,`internal-error`);let r=n.users[0];e._notifyReloadListener(r);let i=r.providerUserInfo?.length?aa(r.providerUserInfo):[],a=ia(e.providerData,i),o=e.isAnonymous,s=!(e.email&&r.passwordHash)&&!a?.length,c=o?s:!1,l={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:a,metadata:new ta(r.createdAt,r.lastLoginAt),isAnonymous:c};Object.assign(e,l)}async function ra(e){let t=D(e);await na(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}function ia(e,t){return[...e.filter(e=>!t.some(t=>t.providerId===e.providerId)),...t]}function aa(e){return e.map(({providerId:e,...t})=>({providerId:e,uid:t.rawId||``,displayName:t.displayName||null,email:t.email||null,phoneNumber:t.phoneNumber||null,photoURL:t.photoUrl||null}))}async function oa(e,t){let n=await Li(e,{},async()=>{let n=wn({grant_type:`refresh_token`,refresh_token:t}).slice(1),{tokenApiHost:r,apiKey:i}=e.config,a=await zi(e,r,`/v1/token`,`key=${i}`),o=await e._getAdditionalHeaders();o[`Content-Type`]=`application/x-www-form-urlencoded`;let s={method:`POST`,headers:o,body:n};return e.emulatorConfig&&jn(e.emulatorConfig.host)&&(s.credentials=`include`),Ni.fetch()(a,s)});return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}async function sa(e,t){return U(e,`POST`,`/v2/accounts:revokeToken`,H(e,t))}var ca=class e{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){z(e.idToken,`internal-error`),z(e.idToken!==void 0,`internal-error`),z(e.refreshToken!==void 0,`internal-error`);let t=`expiresIn`in e&&e.expiresIn!==void 0?Number(e.expiresIn):Qi(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){z(e.length!==0,`internal-error`);let t=Qi(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return!t&&this.accessToken&&!this.isExpired?this.accessToken:(z(this.refreshToken,e,`user-token-expired`),this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null)}clearRefreshToken(){this.refreshToken=null}
1async refresh(e,t){let{accessToken:n,refreshToken:r,expiresIn:i}=await oa(e,t);this.updateTokensAndExpiration(n,r,Number(i))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+n*1e3}static fromJSON(t,n){let{refreshToken:r,accessToken:i,expirationTime:a}=n,o=new e;return r&&(z(typeof r==`string`,`internal-error`,{appName:t}),o.refreshToken=r),i&&(z(typeof i==`string`,`internal-error`,{appName:t}),o.accessToken=i),a&&(z(typeof a==`number`,`internal-error`,{appName:t}),o.expirationTime=a),o}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new e,this.toJSON())}_performRefresh(){return B(`not implemented`)}};function G(e,t){z(typeof e==`string`||e===void 0,`internal-error`,{appName:t})}var K=class e{constructor({uid:e,auth:t,stsTokenManager:n,...r}){this.providerId=`firebase`,this.proactiveRefresh=new ea(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=n,this.accessToken=n.accessToken,this.displayName=r.displayName||null,this.email=r.email||null,this.emailVerified=r.emailVerified||!1,this.phoneNumber=r.phoneNumber||null,this.photoURL=r.photoURL||null,this.isAnonymous=r.isAnonymous||!1,this.tenantId=r.tenantId||null,this.providerData=r.providerData?[...r.providerData]:[],this.metadata=new ta(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){let t=await W(this,this.stsTokenManager.getToken(this.auth,e));return z(t,this.auth,`internal-error`),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return Yi(this,e)}reload(){return ra(this)}_assign(e){this!==e&&(z(this.uid===e.uid,this.auth,`internal-error`),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(e=>({...e})),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(t){let n=new e({...this,auth:t,stsTokenManager:this.stsTokenManager._clone()});return n.metadata._copy(this.metadata),n}_onReload(e){z(!this.reloadListener,this.auth,`internal-error`),this.reloadListener=e,this.reloadUserInfo&&=(this._notifyReloadListener(this.reloadUserInfo),null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await na(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(N(this.auth.app))return Promise.reject(R(this.auth));let e=await this.getIdToken();return await W(this,Ki(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return{uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>({...e})),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId,...this.metadata.toJSON(),apiKey:this.auth.config.apiKey,appName:this.auth.name}}get refreshToken(){return this.stsTokenManager.refreshToken||``}static _fromJSON(t,n){let r=n.displayName??void 0,i=n.email??void 0,a=n.phoneNumber??void 0,o=n.photoURL??void 0,s=n.tenantId??void 0,c=n._redirectEventId??void 0,l=n.createdAt??void 0,u=n.lastLoginAt??void 0,{uid:d,emailVerified:f,isAnonymous:ee,providerData:p,stsTokenManager:te}=n;z(d&&te,t,`internal-error`);let m=ca.fromJSON(this.name,te);z(typeof d==`string`,t,`internal-error`),G(r,t.name),G(i,t.name),z(typeof f==`boolean`,t,`internal-error`),z(typeof ee==`boolean`,t,`internal-error`),G(a,t.name),G(o,t.name),G(s,t.name),G(c,t.name),G(l,t.name),G(u,t.name);let h=new e({uid:d,auth:t,email:i,emailVerified:f,displayName:r,isAnonymous:ee,photoURL:o,phoneNumber:a,tenantId:s,stsTokenManager:m,createdAt:l,lastLoginAt:u});return p&&Array.isArray(p)&&(h.providerData=p.map(e=>({...e}))),c&&(h._redirectEventId=c),h}static async _fromIdTokenResponse(t,n,r=!1){let i=new ca;i.updateFromServerResponse(n);let a=new e({uid:n.localId,auth:t,stsTokenManager:i,isAnonymous:r});return await na(a),a}static async _fromGetAccountInfoResponse(t,n,r){let i=n.users[0];z(i.localId!==void 0,`internal-error`);let a=i.providerUserInfo===void 0?[]:aa(i.providerUserInfo),o=!(i.email&&i.passwordHash)&&!a?.length,s=new ca;s.updateFromIdToken(r);let c=new e({uid:i.localId,auth:t,stsTokenManager:s,isAnonymous:o}),l={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:a,metadata:new ta(i.createdAt,i.lastLoginAt),isAnonymous:!(i.email&&i.passwordHash)&&!a?.length};return Object.assign(c,l),c}},la=new Map;function q(e){V(e instanceof Function,`Expected a class definition`);let t=la.get(e);return t?(V(t instanceof e,`Instance stored in cache mismatched with class`),t):(t=new e,la.set(e,t),t)}var ua=class{constructor(){this.type=`NONE`,this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){let t=this.storage[e];return t===void 0?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}};ua.type=`NONE`;var da=ua;function fa(e,t,n){return`firebase:${e}:${t}:${n}`}var pa=class e{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;let{config:r,name:i}=this.auth;this.fullUserKey=fa(this.userKey,r.apiKey,i),this.fullPersistenceKey=fa(`persistence`,r.apiKey,i),this.boundEventHandler=t._onStorageEvent.bind(t);try{this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}catch{}}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){let e=await this.persistence._get(this.fullUserKey);if(!e)return null;if(typeof e==`string`){let t=await qi(this.auth,{idToken:e}).catch(()=>void 0);return t?K._fromGetAccountInfoResponse(this.auth,t,e):null}return K._fromJSON(this.auth,e)}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;let t=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,t)return this.setCurrentUser(t)}delete(){try{this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}catch{}}static async create(t,n,r=`authUser`){if(!n.length)return new e(q(da),t,r);let i=(await Promise.all(n.map(async e=>{try{if(await e._isAvailable())return e}catch{return}}))).filter(e=>e),a=i[0]||q(da),o=fa(r,t.config.apiKey,t.name),s=null;for(let e of n)try{let n=await e._get(o);if(n){let r;if(typeof n==`string`){let e=await qi(t,{idToken:n}).catch(()=>void 0);if(!e)break;r=await K._fromGetAccountInfoResponse(t,e,n)}else r=K._fromJSON(t,n);e!==a&&(s=r),a=e;break}}catch{}let c=i.filter(e=>e._shouldAllowMigration);return!a._shouldAllowMigration||!c.length?new e(a,t,r):(a=c[0],s&&await a._set(o,s.toJSON()),await Promise.all(n.map(async e=>{if(e!==a)try{await e._remove(o)}catch{}})),new e(a,t,r))}};function ma(e){let t=e.toLowerCase();if(t.includes(`opera/`)||t.includes(`opr/`)||t.includes(`opios/`))return`Opera`;if(va(t))return`IEMobile`;if(t.includes(`msie`)||t.includes(`trident/`))return`IE`;if(t.includes(`edge/`))return`Edge`;if(ha(t))return`Firefox`;if(t.includes(`silk/`))return`Silk`;if(ba(t))return`Blackberry`;if(xa(t))return`Webos`;if(ga(t))return`Safari`;if((t.includes(`chrome/`)||_a(t))&&!t.includes(`edge/`))return`Chrome`;if(ya(t))return`Android`;{let t=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);if(t?.length===2)return t[1]}return`Other`}function ha(e=T()){return/firefox\//i.test(e)}function ga(e=T()){let t=e.toLowerCase();return t.includes(`safari/`)&&!t.includes(`chrome/`)&&!t.includes(`crios/`)&&!t.includes(`android`)}function _a(e=T()){return/crios\//i.test(e)}function va(e=T()){return/iemobile/i.test(e)}function ya(e=T()){return/android/i.test(e)}function ba(e=T()){return/blackberry/i.test(e)}function xa(e=T()){return/webos/i.test(e)}function Sa(e=T()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function Ca(e=T()){return Sa(e)&&!!window.navigator?.standalone}function wa(){return hn()&&document.documentMode===10}function Ta(e=T()){return Sa(e)||ya(e)||xa(e)||ba(e)||/windows phone/i.test(e)||va(e)}function Ea(e,t=[]){let n;switch(e){case`Browser`:n=ma(T());break;case`Worker`:n=`${ma(T())}-${e}`;break;default:n=e}let r=t.length?t.join(`,`):`FirebaseCore-web`;return`${n}/JsCore/${Zr}/${r}`}var Da=class{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){let n=t=>new Promise((n,r)=>{try{n(e(t))}catch(e){r(e)}});n.onAbort=t,this.queue.push(n);let r=this.queue.length-1;return()=>{this.queue[r]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;let t=[];try{for(let n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(let e of t)try{e()}catch{}throw this.auth._errorFactory.create(`login-blocked`,{originalMessage:e?.message})}}};async function Oa(e,t={}){return U(e,`GET`,`/v2/passwordPolicy`,H(e,t))}var ka=6,Aa=class{constructor(e){let t=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=t.minPasswordLength??ka,t.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=t.maxPasswordLength),t.containsLowercaseCharacter!==void 0&&(this.customStrengthOptions.containsLowercaseLetter=t.containsLowercaseCharacter),t.containsUppercaseCharacter!==void 0&&(this.customStrengthOptions.containsUppercaseLetter=t.containsUppercaseCharacter),t.containsNumericCharacter!==void 0&&(this.customStrengthOptions.containsNumericCharacter=t.containsNumericCharacter),t.containsNonAlphanumericCharacter!==void 0&&(this.customStrengthOptions.containsNonAlphanumericCharacter=t.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,this.enforcementState===`ENFORCEMENT_STATE_UNSPECIFIED`&&(this.enforcementState=`OFF`),this.allowedNonAlphanumericCharacters=e.allowedNonAlphanumericCharacters?.join(``)??``,this.forceUpgradeOnSignin=e.forceUpgradeOnSignin??!1,this.schemaVersion=e.schemaVersion}validatePassword(e){let t={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,t),this.validatePasswordCharacterOptions(e,t),t.isValid&&=t.meetsMinPasswordLength??!0,t.isValid&&=t.meetsMaxPasswordLength??!0,t.isValid&&=t.containsLowercaseLetter??!0,t.isValid&&=t.containsUppercaseLetter??!0,t.isValid&&=t.containsNumericCharacter??!0,t.isValid&&=t.containsNonAlphanumericCharacter??!0,t}validatePasswordLengthOptions(e,t){let n=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;n&&(t.meetsMinPasswordLength=e.length>=n),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let n;for(let r=0;r<e.length;r++)n=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,n>=`a`&&n<=`z`,n>=`A`&&n<=`Z`,n>=`0`&&n<=`9`,this.allowedNonAlphanumericCharacters.includes(n))}updatePasswordCharacterOptionsStatuses(e,t,n,r,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||=t),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||=n),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||=r),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||=i)}},ja=class{constructor(e,t,n,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=n,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new Ma(this),this.idTokenSubscription=new Ma(this),this.beforeStateQueue=new Da(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=yi,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this._resolvePersistenceManagerAvailable=void 0,this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion,this._persistenceManagerAvailable=new Promise(e=>this._resolvePersistenceManagerAvailable=e)}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=q(t)),this._initializationPromise=this.queue(async()=>
1{if(!this._deleted){try{this.persistenceManager=await pa.create(this,e)}catch(e){xi(`Failed to initialize persistence: ${e}`),this.persistenceManager=await pa.create(this,[])}finally{this._resolvePersistenceManagerAvailable?.()}if(!this._deleted){if(this._popupRedirectResolver?._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch{}try{await this.initializeCurrentUser(t)}catch(e){xi(`Failed to initialize current user: ${e}`),await this.directlySetCurrentUser(null).catch(()=>{})}this.lastNotifiedUid=this.currentUser?.uid||null,!this._deleted&&(this._isInitialized=!0)}}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;let e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUserFromIdToken(e){try{let t=await qi(this,{idToken:e}),n=await K._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(n)}catch(e){console.warn(`FirebaseServerApp could not login user with provided authIdToken: `,e),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){if(N(this.app)){let e=this.app.settings.authIdToken;return e?new Promise(t=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(e).then(t,t))}):this.directlySetCurrentUser(null)}let t=await this.assertedPersistence.getCurrentUser(),n=t,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();let t=this.redirectUser?._redirectEventId,i=n?._redirectEventId,a=await this.tryRedirectSignIn(e);(!t||t===i)&&a?.user&&(n=a.user,r=!0)}if(!n)return this.directlySetCurrentUser(null);if(!n._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(n)}catch(e){n=t,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return n?this.reloadAndSetCurrentUserOrClear(n):this.directlySetCurrentUser(null)}return z(this._popupRedirectResolver,this,`argument-error`),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===n._redirectEventId?this.directlySetCurrentUser(n):this.reloadAndSetCurrentUserOrClear(n)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch{await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await na(e)}catch(e){if(e?.code!==`auth/network-request-failed`)return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=Ai()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(N(this.app))return Promise.reject(R(this));let t=e?D(e):null;return t&&z(t.auth.config.apiKey===this.config.apiKey,this,`invalid-user-token`),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&z(this.tenantId===e.tenantId,this,`tenant-id-mismatch`),t||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return N(this.app)?Promise.reject(R(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return N(this.app)?Promise.reject(R(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(q(e))})}_getRecaptchaConfig(){return this.tenantId==null?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();let t=this._getPasswordPolicyInternal();return t.schemaVersion===this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?t.validatePassword(e):Promise.reject(this._errorFactory.create(`unsupported-password-policy-schema-version`,{}))}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){let e=new Aa(await Oa(this));this.tenantId===null?this._projectPasswordPolicy=e:this._tenantPasswordPolicies[this.tenantId]=e}_getPersistenceType(){return this.assertedPersistence.persistence.type}_getPersistence(){return this.assertedPersistence.persistence}_updateErrorMap(e){this._errorFactory=new bn(`auth`,`Firebase`,e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}authStateReady(){return new Promise((e,t)=>
1{if(this.currentUser)e();else{let n=this.onAuthStateChanged(()=>{n(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){let t={providerId:`apple.com`,tokenType:`ACCESS_TOKEN`,token:e,idToken:await this.currentUser.getIdToken()};this.tenantId!=null&&(t.tenantId=this.tenantId),await sa(this,t)}}toJSON(){return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:this._currentUser?.toJSON()}}async _setRedirectUser(e,t){let n=await this.getOrInitRedirectPersistenceManager(t);return e===null?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){let t=e&&q(e)||this._popupRedirectResolver;z(t,this,`argument-error`),this.redirectPersistenceManager=await pa.create(this,[q(t._redirectPersistence)],`redirectUser`),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){return this._isInitialized&&await this.queue(async()=>{}),this._currentUser?._redirectEventId===e?this._currentUser:this.redirectUser?._redirectEventId===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);let e=this.currentUser?.uid??null;this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,n,r){if(this._deleted)return()=>{};let i=typeof t==`function`?t:t.next.bind(t),a=!1,o=this._isInitialized?Promise.resolve():this._initializationPromise;if(z(o,this,`internal-error`),o.then(()=>{a||i(this.currentUser)}).catch(e=>{if(!a){if(typeof t!=`function`&&t.error)t.error(e);else if(n)n(e);else throw e}}),typeof t==`function`){let i=e.addObserver(t,n,r);return()=>{a=!0,i()}}{let n=e.addObserver(t);return()=>{a=!0,n()}}}async directlySetCurrentUser(e){if(this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,this.persistenceManager)try{e?await this.persistenceManager.setCurrentUser(e):await this.persistenceManager.removeCurrentUser()}catch(e){let t=e?.message||String(e),n=Ci(this,`internal-error`,`An internal AuthError has occurred: ${t}`);throw n.customData={originalError:e},n}}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return z(this.persistenceManager,this,`internal-error`),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Ea(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){let e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e[`X-Firebase-gmpid`]=this.app.options.appId);let t=await this.heartbeatServiceProvider.getImmediate({optional:!0})?.getHeartbeatsHeader();t&&(e[`X-Firebase-Client`]=t);let n=await this._getAppCheckToken();return n&&(e[`X-Firebase-AppCheck`]=n),e}async _getAppCheckToken(){if(N(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;let e=await this.appCheckServiceProvider.getImmediate({optional:!0})?.getToken();return e?.error&&xi(`Error while retrieving App Check token: ${e.error}`),e?.token}};function J(e){return D(e)}var Ma=class{constructor(e){this.auth=e,this.observer=null,this.addObserver=Dn(e=>this.observer=e)}get next(){return z(this.observer,this.auth,`internal-error`),this.observer.next.bind(this.observer)}},Na={async loadJS(){throw Error(`Unable to load external scripts`)},recaptchaV2Script:``,recaptchaEnterpriseScript:``,gapiScript:``};function Pa(e){Na=e}function Fa(e){return Na.loadJS(e)}function Ia(){return Na.recaptchaEnterpriseScript}function La(){return Na.gapiScript}function Ra(e){return`__${e}${Math.floor(Math.random()*1e6)}`}var za=class{constructor(){this.enterprise=new Ba}ready(e){e()}execute(e,t){return Promise.resolve(`token`)}render(e,t){return``}},Ba=class{ready(e){e()}execute(e,t){return Promise.resolve(`token`)}render(e,t){return``}},Va=`recaptcha-enterprise`,Ha=`NO_RECAPTCHA`,Ua=`onFirebaseAuthREInstanceReady`,Wa=class e{constructor(e){this.type=Va,this.auth=J(e)}
1async verify(t=`verify`,n=!1){async function r(e){if(!n){if(e.tenantId==null&&e._agentRecaptchaConfig!=null)return e._agentRecaptchaConfig.siteKey;if(e.tenantId!=null&&e._tenantRecaptchaConfigs[e.tenantId]!==void 0)return e._tenantRecaptchaConfigs[e.tenantId].siteKey}return new Promise(async(t,n)=>{Gi(e,{clientType:`CLIENT_TYPE_WEB`,version:`RECAPTCHA_ENTERPRISE`}).then(r=>{if(r.recaptchaKey===void 0)n(Error(`recaptcha Enterprise site key undefined`));else{let n=new Wi(r);return e.tenantId==null?e._agentRecaptchaConfig=n:e._tenantRecaptchaConfigs[e.tenantId]=n,t(n.siteKey)}}).catch(e=>{n(e)})})}function i(e,n,r){let i=window.grecaptcha;Ui(i)?i.enterprise.ready(()=>{i.enterprise.execute(e,{action:t}).then(e=>{n(e)}).catch(()=>{n(Ha)})}):r(Error(`No reCAPTCHA enterprise script loaded.`))}return this.auth.settings.appVerificationDisabledForTesting?new za().execute(`siteKey`,{action:`verify`}):new Promise((t,a)=>{r(this.auth).then(async r=>{if(!n&&Ui(window.grecaptcha)&&e.scriptInjectionDeferred)await e.scriptInjectionDeferred.promise,i(r,t,a);else{if(typeof window>`u`){a(Error(`RecaptchaVerifier is only supported in browser`));return}let n=Ia();n.length!==0&&(n+=r+`&onload=${Ua}`),e.scriptInjectionDeferred=new un,window[Ua]=()=>{e.scriptInjectionDeferred?.resolve()},Fa(n).then(()=>e.scriptInjectionDeferred?.promise).then(()=>{i(r,t,a)}).catch(e=>{a(e)})}}).catch(e=>{a(e)})})}};Wa.scriptInjectionDeferred=null;async function Ga(e,t,n,r=!1,i=!1){let a=new Wa(e),o;if(i)o=Ha;else try{o=await a.verify(n)}catch{o=await a.verify(n,!0)}let s={...t};if(n===`mfaSmsEnrollment`||n===`mfaSmsSignIn`){if(`phoneEnrollmentInfo`in s){let e=s.phoneEnrollmentInfo.phoneNumber,t=s.phoneEnrollmentInfo.recaptchaToken;Object.assign(s,{phoneEnrollmentInfo:{phoneNumber:e,recaptchaToken:t,captchaResponse:o,clientType:`CLIENT_TYPE_WEB`,recaptchaVersion:`RECAPTCHA_ENTERPRISE`}})}else if(`phoneSignInInfo`in s){let e=s.phoneSignInInfo.recaptchaToken;Object.assign(s,{phoneSignInInfo:{recaptchaToken:e,captchaResponse:o,clientType:`CLIENT_TYPE_WEB`,recaptchaVersion:`RECAPTCHA_ENTERPRISE`}})}return s}return r?Object.assign(s,{captchaResp:o}):Object.assign(s,{captchaResponse:o}),Object.assign(s,{clientType:`CLIENT_TYPE_WEB`}),Object.assign(s,{recaptchaVersion:`RECAPTCHA_ENTERPRISE`}),s}async function Ka(e,t,n,r,i){return i===`EMAIL_PASSWORD_PROVIDER`?e._getRecaptchaConfig()?.isProviderEnabled(`EMAIL_PASSWORD_PROVIDER`)?r(e,await Ga(e,t,n,n===`getOobCode`)):r(e,t).catch(async i=>i.code===`auth/missing-recaptcha-token`?(console.log(`${n} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`),r(e,await Ga(e,t,n,n===`getOobCode`))):Promise.reject(i)):i===`PHONE_PROVIDER`?e._getRecaptchaConfig()?.isProviderEnabled(`PHONE_PROVIDER`)?r(e,await Ga(e,t,n)).catch(async i=>e._getRecaptchaConfig()?.getProviderEnforcementState(`PHONE_PROVIDER`)===`AUDIT`&&(i.code===`auth/missing-recaptcha-token`||i.code===`auth/invalid-app-credential`)?(console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${n} flow.`),r(e,await Ga(e,t,n,!1,!0))):Promise.reject(i)):r(e,await Ga(e,t,n,!1,!0)):Promise.reject(i+` provider is not supported.`)}function qa(e,t){let n=Yr(e,`auth`);if(n.isInitialized()){let e=n.getImmediate();if(E(n.getOptions(),t??{}))return e;I(e,`already-initialized`)}return n.initialize({options:t})}function Ja(e,t){let n=t?.persistence||[],r=(Array.isArray(n)?n:[n]).map(q);t?.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,t?.popupRedirectResolver)}function Ya(e,t,n){let r=J(e);z(/^https?:\/\//.test(t),r,`invalid-emulator-scheme`);let i=!!n?.disableWarnings,a=Xa(t),{host:o,port:s}=Za(t),c=s===null?``:`:${s}`,l={url:`${a}//${o}${c}/`},u=Object.freeze({host:o,port:s,protocol:a.replace(`:`,``),options:Object.freeze({disableWarnings:i})});if(!r._canInitEmulator){z(r.config.emulator&&r.emulatorConfig,r,`emulator-config-failed`),z(E(l,r.config.emulator)&&E(u,r.emulatorConfig),r,`emulator-config-failed`);return}r.config.emulator=l,r.emulatorConfig=u,r.settings.appVerificationDisabledForTesting=!0,jn(o)?Mn(`${a}//${o}${c}`):i||$a()}function Xa(e){let t=e.indexOf(`:`);return t<0?``:e.substr(0,t+1)}function Za(e){let t=Xa(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:``,port:null};let r=n[2].split(`@`).pop()||``,i=/^(\[[^\]]+\])(:|$)/.exec(r);if(i){let e=i[1];return{host:e,port:Qa(r.substr(e.length+1))}}{let[e,t]=r.split(`:`);return{host:e,port:Qa(t)}}}function Qa(e){if(!e)return null;let t=Number(e);return isNaN(t)?null:t}function $a(){function e(){let e=document.createElement(`p`),t=e.style;e.innerText=`Running in emulator mode. Do not use with production credentials.`,t.position=`fixed`,t.width=`100%`,t.backgroundColor=`#ffffff`,t.border=`.1em solid #000000`,t.color=`#b50000`,t.bottom=`0px`,t.left=`0px`,t.margin=`0px`,t.zIndex=`10000`,t.textAlign=`center`,e.classList.add(`firebase-emulator-warning`),document.body.appendChild(e)}typeof console<`u`&&typeof console.info==`function`&&console.info(`WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials.`),typeof window<`u`&&typeof document<`u`&&(document.readyState===`loading`?window.addEventListener(`DOMContentLoaded`,e):e())}var eo=class{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return B(`not implemented`)}_getIdTokenResponse(e){return B(`not implemented`)}_linkToIdToken(e,t){return B(`not implemented`)}_getReauthenticationResolver(e){return B(`not implemented`)}};async function to(e,t){return U(e,`POST`,`/v1/accounts:signUp`,t)}
1async function no(e,t){return Ri(e,`POST`,`/v1/accounts:signInWithPassword`,H(e,t))}async function ro(e,t){return U(e,`POST`,`/v1/accounts:sendOobCode`,H(e,t))}async function io(e,t){return ro(e,t)}async function ao(e,t){return Ri(e,`POST`,`/v1/accounts:signInWithEmailLink`,H(e,t))}async function oo(e,t){return Ri(e,`POST`,`/v1/accounts:signInWithEmailLink`,H(e,t))}var so=class e extends eo{constructor(e,t,n,r=null){super(`password`,n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(t,n){return new e(t,n,`password`)}static _fromEmailAndCode(t,n,r=null){return new e(t,n,`emailLink`,r)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){let t=typeof e==`string`?JSON.parse(e):e;if(t?.email&&t?.password){if(t.signInMethod===`password`)return this._fromEmailAndPassword(t.email,t.password);if(t.signInMethod===`emailLink`)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case`password`:return Ka(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:`CLIENT_TYPE_WEB`},`signInWithPassword`,no,`EMAIL_PASSWORD_PROVIDER`);case`emailLink`:return ao(e,{email:this._email,oobCode:this._password});default:I(e,`internal-error`)}}async _linkToIdToken(e,t){switch(this.signInMethod){case`password`:return Ka(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:`CLIENT_TYPE_WEB`},`signUpPassword`,to,`EMAIL_PASSWORD_PROVIDER`);case`emailLink`:return oo(e,{idToken:t,email:this._email,oobCode:this._password});default:I(e,`internal-error`)}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}};async function co(e,t){return Ri(e,`POST`,`/v1/accounts:signInWithIdp`,H(e,t))}var lo=`http://localhost`,uo=class e extends eo{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(t){let n=new e(t.providerId,t.signInMethod);return t.idToken||t.accessToken?(t.idToken&&(n.idToken=t.idToken),t.accessToken&&(n.accessToken=t.accessToken),t.nonce&&!t.pendingToken&&(n.nonce=t.nonce),t.pendingToken&&(n.pendingToken=t.pendingToken)):t.oauthToken&&t.oauthTokenSecret?(n.accessToken=t.oauthToken,n.secret=t.oauthTokenSecret):I(`argument-error`),n}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,n
1once:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(t){let{providerId:n,signInMethod:r,...i}=typeof t==`string`?JSON.parse(t):t;if(!n||!r)return null;let a=new e(n,r);return a.idToken=i.idToken||void 0,a.accessToken=i.accessToken||void 0,a.secret=i.secret,a.nonce=i.nonce,a.pendingToken=i.pendingToken||null,a}_getIdTokenResponse(e){return co(e,this.buildRequest())}_linkToIdToken(e,t){let n=this.buildRequest();return n.idToken=t,co(e,n)}_getReauthenticationResolver(e){let t=this.buildRequest();return t.autoCreate=!1,co(e,t)}buildRequest(){let e={requestUri:lo,returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{let t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=wn(t)}return e}};function fo(e){switch(e){case`recoverEmail`:return`RECOVER_EMAIL`;case`resetPassword`:return`PASSWORD_RESET`;case`signIn`:return`EMAIL_SIGNIN`;case`verifyEmail`:return`VERIFY_EMAIL`;case`verifyAndChangeEmail`:return`VERIFY_AND_CHANGE_EMAIL`;case`revertSecondFactorAddition`:return`REVERT_SECOND_FACTOR_ADDITION`;default:return null}}function po(e){let t=Tn(En(e)).link,n=t?Tn(En(t)).deep_link_id:null,r=Tn(En(e)).deep_link_id;return(r?Tn(En(r)).link:null)||r||n||t||e}var mo=class e{constructor(e){let t=Tn(En(e)),n=t.apiKey??null,r=t.oobCode??null,i=fo(t.mode??null);z(n&&r&&i,`argument-error`),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=t.continueUrl??null,this.languageCode=t.lang??null,this.tenantId=t.tenantId??null}static parseLink(t){let n=po(t);try{return new e(n)}catch{return null}}},ho=class e{constructor(){this.providerId=e.PROVIDER_ID}static credential(e,t){return so._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){let n=mo.parseLink(t);return z(n,`argument-error`),so._fromEmailAndCode(e,n.code,n.tenantId)}};ho.PROVIDER_ID=`password`,ho.EMAIL_PASSWORD_SIGN_IN_METHOD=`password`,ho.EMAIL_LINK_SIGN_IN_METHOD=`emailLink`;var go=class{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}},_o=class extends go{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}},vo=class e extends _o{constructor(){super(`facebook.com`)}static credential(t){return uo._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.FACEBOOK_SIGN_IN_METHOD,accessToken:t})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t||!(`oauthAccessToken`in t)||!t.oauthAccessToken)return null;try{return e.credential(t.oauthAccessToken)}catch{return null}}};vo.FACEBOOK_SIGN_IN_METHOD=`facebook.com`,vo.PROVIDER_ID=`facebook.com`;var yo=class e extends _o{constructor(){super(`google.com`),this.addScope(`profile`)}static credential(t,n){return uo._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.GOOGLE_SIGN_IN_METHOD,idToken:t,accessToken:n})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthIdToken:n,oauthAccessToken:r}=t;if(!n&&!r)return null;try{return e.credential(n,r)}catch{return null}}};yo.GOOGLE_SIGN_IN_METHOD=`google.com`,yo.PROVIDER_ID=`google.com`;var bo=class e extends _o{constructor(){super(`github.com`)}static credential(t){return uo._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.GITHUB_SIGN_IN_METHOD,accessToken:t})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}
1static credentialFromTaggedObject({_tokenResponse:t}){if(!t||!(`oauthAccessToken`in t)||!t.oauthAccessToken)return null;try{return e.credential(t.oauthAccessToken)}catch{return null}}};bo.GITHUB_SIGN_IN_METHOD=`github.com`,bo.PROVIDER_ID=`github.com`;var xo=class e extends _o{constructor(){super(`twitter.com`)}static credential(t,n){return uo._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.TWITTER_SIGN_IN_METHOD,oauthToken:t,oauthTokenSecret:n})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthAccessToken:n,oauthTokenSecret:r}=t;if(!n||!r)return null;try{return e.credential(n,r)}catch{return null}}};xo.TWITTER_SIGN_IN_METHOD=`twitter.com`,xo.PROVIDER_ID=`twitter.com`;async function So(e,t){return Ri(e,`POST`,`/v1/accounts:signUp`,H(e,t))}var Co=class e{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(t,n,r,i=!1){let a=await K._fromIdTokenResponse(t,r,i),o=wo(r);return new e({user:a,providerId:o,_tokenResponse:r,operationType:n})}static async _forOperation(t,n,r){await t._updateTokensIfNecessary(r,!0);let i=wo(r);return new e({user:t,providerId:i,_tokenResponse:r,operationType:n})}};function wo(e){return e.providerId?e.providerId:`phoneNumber`in e?`phone`:null}async function To(e){if(N(e.app))return Promise.reject(R(e));let t=J(e);if(await t._initializationPromise,t.currentUser?.isAnonymous)return new Co({user:t.currentUser,providerId:null,operationType:`signIn`});let n=await So(t,{returnSecureToken:!0}),r=await Co._fromIdTokenResponse(t,`signIn`,n,!0);return await t._updateCurrentUser(r.user),r}var Eo=class e extends yn{constructor(t,n,r,i){super(n.code,n.message),this.operationType=r,this.user=i,Object.setPrototypeOf(this,e.prototype),this.customData={appName:t.name,tenantId:t.tenantId??void 0,_serverResponse:n.customData._serverResponse,operationType:r}}static _fromErrorAndOperation(t,n,r,i){return new e(t,n,r,i)}};function Do(e,t,n,r){return(t===`reauthenticate`?n._getReauthenticationResolver(e):n._getIdTokenResponse(e)).catch(n=>{throw n.code===`auth/multi-factor-auth-required`?Eo._fromErrorAndOperation(e,n,t,r):n})}async function Oo(e,t,n=!1){let r=await W(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Co._forOperation(e,`link`,r)}async function ko(e,t,n=!1){let{auth:r}=e;if(N(r.app))return Promise.reject(R(r));let i=`reauthenticate`;try{let a=await W(e,Do(r,i,t,e),n);z(a.idToken,r,`internal-error`);let o=Zi(a.idToken);z(o,r,`internal-error`);let{sub:s}=o;return z(e.uid===s,r,`user-mismatch`),Co._forOperation(e,i,a)}catch(e){throw e?.code===`auth/user-not-found`&&I(r,`user-mismatch`),e}}async function Ao(e,t,n=!1){if(N(e.app))return Promise.reject(R(e));let r=`signIn`,i=await Do(e,r,t),a=await Co._fromIdTokenResponse(e,r,i);return n||await e._updateCurrentUser(a.user),a}async function jo(e,t){return Ao(J(e),t)}function Mo(e,t,n){z(n.url?.length>0,e,`invalid-continue-uri`),z(n.dynamicLinkDomain===void 0||n.dynamicLinkDomain.length>0,e,`invalid-dynamic-link-domain`),z(n.linkDomain===void 0||n.linkDomain.length>0,e,`invalid-hosting-link-domain`),t.continueUrl=n.url,t.dynamicLinkDomain=n.dynamicLinkDomain,t.linkDomain=n.linkDomain,t.canHandleCodeInApp=n.handleCodeInApp,n.iOS&&(z(n.iOS.bundleId.length>0,e,`missing-ios-bundle-id`),t.iOSBundleId=n.iOS.bundleId),n.android&&(z(n.android.packageName.length>0,e,`missing-android-pkg-name`),t.androidInstallApp=n.android.installApp,t.androidMinimumVersionCode=n.android.minimumVersion,t.androidPackageName=n.android.packageName)}async function No(e){let t=J(e);t._getPasswordPolicyInternal()&&await t._updatePasswordPolicy()}async function Po(e,t,n){let r=J(e),i={requestType:`PASSWORD_RESET`,email:t,clientType:`CLIENT_TYPE_WEB`};n&&Mo(r,i,n),await Ka(r,i,`getOobCode`,io,`EMAIL_PASSWORD_PROVIDER`)}
1async function Fo(e,t,n){if(N(e.app))return Promise.reject(R(e));let r=J(e),i=await Ka(r,{returnSecureToken:!0,email:t,password:n,clientType:`CLIENT_TYPE_WEB`},`signUpPassword`,So,`EMAIL_PASSWORD_PROVIDER`).catch(t=>{throw t.code===`auth/password-does-not-meet-requirements`&&No(e),t}),a=await Co._fromIdTokenResponse(r,`signIn`,i);return await r._updateCurrentUser(a.user),a}function Io(e,t,n){return N(e.app)?Promise.reject(R(e)):jo(D(e),ho.credential(t,n)).catch(async t=>{throw t.code===`auth/password-does-not-meet-requirements`&&No(e),t})}async function Lo(e,t){return U(e,`POST`,`/v1/accounts:update`,t)}async function Ro(e,t){let{displayName:n,photoURL:r}=t;if(n===void 0&&r===void 0)return;let i=D(e),a={idToken:await i.getIdToken(),displayName:n,photoUrl:r,returnSecureToken:!0},o=await W(i,Lo(i.auth,a));i.displayName=o.displayName||null,i.photoURL=o.photoUrl||null;let s=i.providerData.find(({providerId:e})=>e===`password`);s&&(s.displayName=i.displayName,s.photoURL=i.photoURL),await i._updateTokensIfNecessary(o)}function zo(e,t,n,r){return D(e).onIdTokenChanged(t,n,r)}function Bo(e,t,n){return D(e).beforeAuthStateChanged(t,n)}var Vo=`__sak`,Ho=class{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Vo,`1`),this.storage.removeItem(Vo),Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){let t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}},Uo=1e3,Wo=10,Go=class extends Ho{constructor(){super(()=>window.localStorage,`LOCAL`),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Ta(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(let t of Object.keys(this.listeners)){let n=this.storage.getItem(t),r=this.localCache[t];n!==r&&e(t,r,n)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)});return}let n=e.key;t?this.detachListener():this.stopPolling();let r=()=>{let e=this.storage.getItem(n);(t||this.localCache[n]!==e)&&this.notifyListeners(n,e)},i=this.storage.getItem(n);wa()&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,Wo):r()}notifyListeners(e,t){this.localCache[e]=t;let n=this.listeners[e];if(n)for(let e of Array.from(n))e(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,n)=>{this.onStorageEvent(new StorageEvent(`storage`,{key:e,oldValue:t,newValue:n}),!0)})},Uo)}stopPolling(){this.pollTimer&&=(clearInterval(this.pollTimer),null)}attachListener(){window.addEventListener(`storage`,this.boundEventHandler)}detachListener(){window.removeEventListener(`storage`,this.boundEventHandler)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Ob
1ject.keys(this.listeners).length===0&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){let t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}};Go.type=`LOCAL`;var Ko=Go,qo=class extends Ho{constructor(){super(()=>window.sessionStorage,`SESSION`)}_addListener(e,t){}_removeListener(e,t){}};qo.type=`SESSION`;var Jo=qo;function Yo(e){return Promise.all(e.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}}))}var Xo=class e{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){let n=this.receivers.find(e=>e.isListeningto(t));if(n)return n;let r=new e(t);return this.receivers.push(r),r}isListeningto(e){return this.eventTarget===e}async handleEvent(e){let t=e,{eventId:n,eventType:r,data:i}=t.data,a=this.handlersMap[r];if(!a?.size)return;t.ports[0].postMessage({status:`ack`,eventId:n,eventType:r});let o=await Yo(Array.from(a).map(async e=>e(t.origin,i)));t.ports[0].postMessage({status:`done`,eventId:n,eventType:r,response:o})}_subscribe(e,t){Object.keys(this.handlersMap).length===0&&this.eventTarget.addEventListener(`message`,this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),(!t||this.handlersMap[e].size===0)&&delete this.handlersMap[e],Object.keys(this.handlersMap).length===0&&this.eventTarget.removeEventListener(`message`,this.boundEventHandler)}};Xo.receivers=[];function Zo(e=``,t=10){let n=``;for(let e=0;e<t;e++)n+=Math.floor(Math.random()*10);return e+n}var Qo=class{constructor(e){this.target=e,this.handlers=new Set}removeMessageHandler(e){e.messageChannel&&(e.messageChannel.port1.removeEventListener(`message`,e.onMessage),e.messageChannel.port1.close()),this.handlers.delete(e)}async _send(e,t,n=50){let r=typeof MessageChannel<`u`?new MessageChannel:null;if(!r)throw Error(`connection_unavailable`);let i,a;return new Promise((o,s)=>{let c=Zo(``,20);r.port1.start();let l=setTimeout(()=>{s(Error(`unsupported_event`))},n);a={messageChannel:r,onMessage(e){let t=e;if(t.data.eventId===c)switch(t.data.status){case`ack`:clearTimeout(l),i=setTimeout(()=>{s(Error(`timeout`))},3e3);break;case`done`:clearTimeout(i),o(t.data.response);break;default:clearTimeout(l),clearTimeout(i),s(Error(`invalid_response`))}}},this.handlers.add(a),r.port1.addEventListener(`message`,a.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[r.port2])}).finally(()=>{a&&this.removeMessageHandler(a)})}};function Y(){return window}function $o(e){Y().location.href=e}function es(){return Y().WorkerGlobalScope!==void 0&&typeof Y().importScripts==`function`}async function ts(){if(!navigator?.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function ns(){return navigator?.serviceWorker?.controller||null}function rs(){return es()?self:null}var is=`firebaseLocalStorageDb`,as=1,os=`firebaseLocalStorage`,ss=`fbase_key`,cs=class{constructor(e){this.request=e}toPromise(){return new Promise((e,t)=>{this.request.addEventListener(`success`,()=>{e(this.request.result)}),this.request.addEventListener(`error`,()=>{t(this.request.error)})})}};function ls(e,t){return e.transaction([os],t?`readwrite`:`readonly`).objectStore(os)}function us(){return new cs(indexedDB.deleteDatabase(is)).toPromise()}function ds(){let e=indexedDB.open(is,as);return new Promise((t,n)=>{e.addEventListener(`error`,()=>{n(e.error)}),e.addEventListener(`upgradeneeded`,()=>{let t=e.result;try{t.createObjectStore(os,{keyPath:ss})}catch(e){n(e)}}),e.addEventListener(`success`,async()=>{let n=e.result;n.objectStoreNames.contains(os)?t(n):(n.close(),await us(),t(await ds()))})})}async function fs(e,t,n){return new cs(ls(e,!0).put({[ss]:t,value:n})).toPromise()}async function ps(e,t){let n=await new cs(ls(e,!1).get(t)).toPromise();return n===void 0?null:n.value}function ms(e,t){return new cs(ls(e,!0).delete(t)).toPromise()}var hs=800,gs=3,_s=class{registerLifecycleListeners(){typeof window<`u`&&typeof window.addEventListener==`function`&&(window.addEventListener(`pagehide`,this.onPageHide),window.addEventListener(`pageshow`,this.onPageShow))}unregisterLifecycleListeners(){typeof window<`u`&&typeof window.removeEventListener==`function`&&(window.removeEventListener(`pagehide`,this.onPageHide),window.removeEventListener(`pageshow`,this.onPageShow))}constructor(){this.type=`LOCAL`,this.dbPromise=null,this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.isClosing=!1,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this.onPageHide=()=>{this.isClosing=!0,this.stopPolling(),this.dbPromise&&=(this.dbPromise.then(e=>e.close()).catch(()=>{}),null)},this.onPageShow=()=>{this.isClosing&&(this.isClosing=!1,Object.keys(this.listeners).length>0&&this.startPolling())},this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.dbPromise?this.dbPromise:(this.dbPromise=ds(),this.dbPromise.catch(()=>{this.dbPromise=null}),this.dbPromise)}async _withRetries(e){let t=0;for(;;)try{return await e(await this._openDb())}catch(e){if(t++>gs)throw e;if(this.dbPromise){let e=this.dbPromise;this.dbPromise=null;try{(await e).close()}catch{}}}}async initializeServiceWorkerMessaging(){return es()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Xo._getInstance(rs()),this.receiver._subscribe(`keyChanged`,async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)})),this.receiver._subscribe(`ping`,async(e,t)=>[`keyChanged`])}
1async initializeSender(){if(this.activeServiceWorker=await ts(),!this.activeServiceWorker)return;this.sender=new Qo(this.activeServiceWorker);let e=await this.sender._send(`ping`,{},800);e&&e[0]?.fulfilled&&e[0]?.value.includes(`keyChanged`)&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(this.sender&&this.activeServiceWorker&&ns()===this.activeServiceWorker)try{await this.sender._send(`keyChanged`,{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{return indexedDB?(await this._withRetries(async e=>{await fs(e,Vo,`1`),await ms(e,Vo)}),!0):!1}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite(async()=>(await this._withRetries(n=>fs(n,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){let t=await this._withRetries(t=>ps(t,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>ms(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){if(this.isClosing)return[];try{let e=await this._withRetries(e=>new cs(ls(e,!1).getAll()).toPromise());if(this.isClosing||!e||this.pendingWrites!==0)return[];let t=[],n=new Set;if(e.length!==0)for(let{fbase_key:r,value:i}of e)n.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(i)&&(this.notifyListeners(r,i),t.push(r));for(let e of Object.keys(this.localCache))this.localCache[e]&&!n.has(e)&&(this.notifyListeners(e,null),t.push(e));return t}catch(e){return this.isClosing||xi(`Firebase Auth cross-tab polling failed with error: ${e}`),[]}}notifyListeners(e,t){this.localCache[e]=t;let n=this.listeners[e];if(n)for(let e of Array.from(n))e(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),hs)}stopPolling(){this.pollTimer&&=(clearInterval(this.pollTimer),null)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.startPolling(),this.registerLifecycleListeners()),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Ob
1ject.keys(this.listeners).length===0&&(this.stopPolling(),this.unregisterLifecycleListeners())}};_s.type=`LOCAL`;var vs=_s;Ra(`rcb`),new ji(3e4,6e4);function ys(e,t){return t?q(t):(z(e._popupRedirectResolver,e,`argument-error`),e._popupRedirectResolver)}var bs=class extends eo{constructor(e){super(`custom`,`custom`),this.params=e}_getIdTokenResponse(e){return co(e,this._buildIdpRequest())}_linkToIdToken(e,t){return co(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return co(e,this._buildIdpRequest())}_buildIdpRequest(e){let t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}};function xs(e){return Ao(e.auth,new bs(e),e.bypassAuthState)}function Ss(e){let{auth:t,user:n}=e;return z(n,t,`internal-error`),ko(n,new bs(e),e.bypassAuthState)}async function Cs(e){let{auth:t,user:n}=e;return z(n,t,`internal-error`),Oo(n,new bs(e),e.bypassAuthState)}var ws=class{constructor(e,t,n,r,i=!1){this.auth=e,this.resolver=n,this.user=r,this.bypassAuthState=i,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(e){this.reject(e)}})}async onAuthEvent(e){let{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:a,type:o}=e;if(a){this.reject(a);return}let s={auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(o)(s))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case`signInViaPopup`:case`signInViaRedirect`:return xs;case`linkViaPopup`:case`linkViaRedirect`:return Cs;case`reauthViaPopup`:case`reauthViaRedirect`:return Ss;default:I(this.auth,`internal-error`)}}resolve(e){V(this.pendingPromise,`Pending promise was never set`),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){V(this.pendingPromise,`Pending promise was never set`),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}},Ts=new ji(2e3,1e4);async function Es(e,t,n){if(N(e.app))return Promise.reject(L(e,`operation-not-supported-in-this-environment`));let r=J(e);return wi(e,t,go),new Ds(r,`signInViaPopup`,t,ys(r,n)).executeNotNull()}var Ds=class e extends ws{constructor(t,n,r,i,a){super(t,n,i,a),this.provider=r,this.authWindow=null,this.pollId=null,e.currentPopupAction&&e.currentPopupAction.cancel(),e.currentPopupAction=this}async executeNotNull(){let e=await this.execute();return z(e,this.auth,`internal-error`),e}async onExecution(){V(this.filter.length===1,`Popup operations only handle one event`);let e=Zo();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)}),this.resolver._isIframeWebStorageSupported(this.auth,e=>{e||this.reject(L(this.auth,`web-storage-unsupported`))}),this.pollUserCancellation()}get eventId(){return this.authWindow?.associatedEvent||null}cancel(){this.reject(L(this.auth,`cancelled-popup-request`))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,e.currentPopupAction=null}pollUserCancellation(){let e=()=>{if(this.authWindow?.window?.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(L(this.auth,`popup-closed-by-user`))},8e3);return}this.pollId=window.setTimeout(e,Ts.get())};e()}};Ds.currentPopupAction=null;var Os=`pendingRedirect`,ks=new Map,As=class extends ws{constructor(e,t,n=!1){super(e,[`signInViaRedirect`,`linkViaRedirect`,`reauthViaRedirect`,`unknown`],t,void 0,n),this.eventId=null}async execute(){let e=ks.get(this.auth._key());if(!e){try{let t=await js(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(t)}catch(t){e=()=>Promise.reject(t)}ks.set(this.auth._key(),e)}return this.bypassAuthState||ks.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if(e.type===`signInViaRedirect`)return super.onAuthEvent(e);
1if(e.type===`unknown`){this.resolve(null);return}if(e.eventId){let t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}};async function js(e,t){let n=Ps(t),r=Ns(e);if(!await r._isAvailable())return!1;let i=await r._get(n)===`true`;return await r._remove(n),i}function Ms(e,t){ks.set(e._key(),t)}function Ns(e){return q(e._redirectPersistence)}function Ps(e){return fa(Os,e.config.apiKey,e.name)}async function Fs(e,t,n=!1){if(N(e.app))return Promise.reject(R(e));let r=J(e),i=await new As(r,ys(r,t),n).execute();return i&&!n&&(delete i.user._redirectEventId,await r._persistUserIfCurrent(i.user),await r._setRedirectUser(null,t)),i}var Is=6e5,Ls=class{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach(n=>{this.isEventForConsumer(e,n)&&(t=!0,this.sendToConsumer(e,n),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!Bs(e)?t:(this.hasHandledPotentialRedirect=!0,t||=(this.queuedRedirectEvent=e,!0),t)}sendToConsumer(e,t){if(e.error&&!zs(e)){let n=e.error.code?.split(`auth/`)[1]||`internal-error`;t.onError(L(this.auth,n))}else t.onAuthEvent(e)}isEventForConsumer(e,t){let n=t.eventId===null||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=Is&&this.cachedEventUids.clear(),this.cachedEventUids.has(Rs(e))}saveEventToCache(e){this.cachedEventUids.add(Rs(e)),this.lastProcessedEventTime=Date.now()}};function Rs(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join(`-`)}function zs({type:e,error:t}){return e===`unknown`&&t?.code===`auth/no-auth-event`}function Bs(e){switch(e.type){case`signInViaRedirect`:case`linkViaRedirect`:case`reauthViaRedirect`:return!0;case`unknown`:return zs(e);default:return!1}}async function Vs(e,t={}){return U(e,`GET`,`/v1/projects`,t)}var Hs=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Us=/^https?/;async function Ws(e){if(e.config.emulator)return;let{authorizedDomains:t}=await Vs(e);for(let e of t)try{if(Gs(e))return}catch{}I(e,`unauthorized-domain`)}function Gs(e){let t=Ei(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith(`chrome-extension://`)){let i=new URL(e);return i.hostname===``&&r===``?n===`chrome-extension:`&&e.replace(`chrome-extension://`,``)===t.replace(`chrome-extension://`,``):n===`chrome-extension:`&&i.hostname===r}if(!Us.test(n))return!1;if(Hs.test(e))return r===e;let i=e.replace(/\./g,`\\.`);return RegExp(`^(.+\\.`+i+`|`+i+`)$`,`i`).test(r)}var Ks=new ji(3e4,6e4);function qs(){let e=Y().___jsl;if(e?.H){for(let t of Object.keys(e.H))if(e.H[t].r=e.H[t].r||[],e.H[t].L=e.H[t].L||[],e.H[t].r=[...e.H[t].L],e.CP)for(let t=0;t<e.CP.length;t++)e.CP[t]=null}}function Js(e){return new Promise((t,n)=>{function r(){qs(),gapi.load(`gapi.iframes`,{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{qs(),n(L(e,`network-request-failed`))},timeout:Ks.get()})}if(Y().gapi?.iframes?.Iframe)t(gapi.iframes.getContext());else if(Y().gapi?.load)r();else{let t=Ra(`iframefcb`);return Y()[t]=()=>{gapi.load?r():n(L(e,`network-request-failed`))},Fa(`${La()}?onload=${t}`).catch(e=>n(e))}}).catch(e=>{throw Ys=null,e})}var Ys=null;function Xs(e){return Ys||=Js(e),Ys}var Zs=new ji(5e3,15e3),Qs=`__/auth/iframe`,$s=`emulator/auth/iframe`,ec={style:{position:`absolute`,top:`-100px`,width:`1px`,height:`1px`},"aria-hidden":`true`,tabindex:`-1`},tc=new Map([[`identitytoolkit.googleapis.com`,`p`],[`staging-identitytoolkit.sandbox.googleapis.com`,`s`],[`test-identitytoolkit.sandbox.googleapis.com`,`t`]]);function nc(e){let t=e.config;z(t.authDomain,e,`auth-domain-config-required`);let n=t.emulator?Mi(t,$s):`https://${e.config.authDomain}/${Qs}
1`,r={apiKey:t.apiKey,appName:e.name,v:Zr},i=tc.get(e.config.apiHost);i&&(r.eid=i);let a=e._getFrameworks();return a.length&&(r.fw=a.join(`,`)),`${n}?${wn(r).slice(1)}`}async function rc(e){let t=await Xs(e),n=Y().gapi;return z(n,e,`internal-error`),t.open({where:document.body,url:nc(e),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:ec,dontclear:!0},t=>new Promise(async(n,r)=>{await t.restyle({setHideOnLeave:!1});let i=L(e,`network-request-failed`),a=Y().setTimeout(()=>{r(i)},Zs.get());function o(){Y().clearTimeout(a),n(t)}t.ping(o).then(o,()=>{r(i)})}))}var ic={location:`yes`,resizable:`yes`,statusbar:`yes`,toolbar:`no`},ac=500,oc=600,sc=`_blank`,cc=`http://localhost`,lc=class{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}};function uc(e,t,n,r=ac,i=oc){let a=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-r)/2,0).toString(),s=``,c={...ic,width:r.toString(),height:i.toString(),top:a,left:o},l=T().toLowerCase();n&&(s=_a(l)?sc:n),ha(l)&&(t||=cc,c.scrollbars=`yes`);let u=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,``);if(Ca(l)&&s!==`_self`)return dc(t||``,s),new lc(null);let d=window.open(t||``,s,u);z(d,e,`popup-blocked`);try{d.focus()}catch{}return new lc(d)}function dc(e,t){let n=document.createElement(`a`);n.href=e,n.target=t;let r=document.createEvent(`MouseEvent`);r.initMouseEvent(`click`,!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}var fc=`__/auth/handler`,pc=`emulator/auth/handler`,mc=`fac`;async function hc(e,t,n,r,i,a){z(e.config.authDomain,e,`auth-domain-config-required`),z(e.config.apiKey,e,`invalid-api-key`);let o={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Zr,eventId:i};if(t instanceof go){t.setDefaultLanguage(e.languageCode),o.providerId=t.providerId||``,Sn(t.getCustomParameters())||(o.customParameters=JSON.stringify(t.getCustomParameters()));for(let[e,t]of Object.entries(a||{}))o[e]=t}if(t instanceof _o){let e=t.getScopes().filter(e=>e!==``);e.length>0&&(o.scopes=e.join(`,`))}e.tenantId&&(o.tid=e.tenantId);let s=o;for(let e of Object.keys(s))s[e]===void 0&&delete s[e];let c=await e._getAppCheckToken(),l=c?`#${mc}=${encodeURIComponent(c)}`:``;return`${gc(e)}?${wn(s).slice(1)}${l}`}function gc({config:e}){return e.emulator?Mi(e,pc):`https://${e.authDomain}/${fc}`}var _c=`webStorageSupport`,vc=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Jo,this._completeRedirectFn=Fs,this._overrideRedirectResult=Ms}async _openPopup(e,t,n,r){return V(this.eventManagers[e._key()]?.manager,`_initialize() not called before _openPopup()`),uc(e,await hc(e,t,n,Ei(),r),Zo())}async _openRedirect(e,t,n,r){return await this._originValidation(e),$o(await hc(e,t,n,Ei(),r)),new Promise(()=>{})}_initialize(e){let t=e._key();if(this.eventManagers[t]){let{manager:e,promise:n}=this.eventManagers[t];return e?Promise.resolve(e):(V(n,`If manager is not set, promise should be`),n)}let n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(e){let t=await rc(e),n=new Ls(e);return t.register(`authEvent`,t=>(z(t?.authEvent,e,`invalid-auth-event`),{status:n.onEvent(t.authEvent)?`ACK`:`ERROR`}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:n},this.iframes[e._key()]=t,n}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(_c,{type:_c},n=>{let r=n?.[0]?.[_c];r!==void 0&&t(!!r),I(e,`internal-error`)},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){let t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=Ws(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return Ta()||ga()||Sa()}},yc=`@firebase/auth`,bc=`1.13.6`,xc=class{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){return this.assertAuthConfigured(),this.auth.currentUser?.uid||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;let t=this.auth.onIdTokenChanged(t=>{e(t?.stsTokenManager.accessToken||null)});this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();let t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){z(this.auth._initializationPromise,`dependent-sdk-initialized-before-auth`)}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}};function Sc(e){switch(e){case`Node`:return`node`;case`ReactNative`:return`rn`;case`Worker`:return`webworker`;case`Cordova`:return`cordova`;case`WebExtension`:return`web-extension`;default:return}}function Cc(e){Jr(new O(`auth`,(t,{options:n})=>{let r=t.getProvider(`app`).getImmediate(),i=t.getProvider(`heartbeat`),a=t.getProvider(`app-check-internal`),{apiKey:o,authDomain:s}=r.options;z(o&&!o.includes(`:`),`invalid-api-key`,{appName:r.name});let c=new ja(r,i,a,{apiKey:o,authDomain:s,clientPlatform:e,apiHost:`identitytoolkit.googleapis.com`,tokenApiHost:`securetoken.googleapis.com`,apiScheme:`https`,sdkClientVersion:Ea(e)});return Ja(c,n),c},`PUBLIC`).setInstantiationMode(`EXPLICIT`).setInstanceCreatedCallback((e,t,n)=>{e.getProvider(`auth-internal`).initialize()})),Jr(new O(`auth-internal`,e=>(e=>new xc(e))(J(e.getProvider(`auth`).getImmediate())),`PRIVATE`).setInstantiationMode(`EXPLICIT`)),F(yc,bc,Sc(e)),F(yc,bc,`esm2020`)}var wc=ln(`authIdTokenMaxAge`)||300,Tc=null,Ec=e=>async t=>{let n=t&&await t.getIdTokenResult(),r=n&&(new Date().getTime()-Date.parse(n.issuedAtTime))/1e3;if(r&&r>wc)return;let i=n?.token;
1Tc!==i&&(Tc=i,await fetch(e,{method:i?`POST`:`DELETE`,headers:i?{Authorization:`Bearer ${i}`}:{}}))};function Dc(e=$r()){let t=Yr(e,`auth`);if(t.isInitialized())return t.getImmediate();let n=qa(e,{popupRedirectResolver:vc,persistence:[vs,Ko,Jo]}),r=ln(`authTokenSyncURL`);if(r&&typeof isSecureContext==`boolean`&&isSecureContext){let e=new URL(r,location.origin);if(location.origin===e.origin){let t=Ec(e.toString());Bo(n,t,()=>t(n.currentUser)),zo(n,e=>t(e))}}let i=sn(`auth`);return i&&Ya(n,`http://${i}`),n}function Oc(){return document.getElementsByTagName(`head`)?.[0]??document}Pa({loadJS(e){return new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=t,r.onerror=e=>{let t=L(`internal-error`);t.customData=e,n(t)},r.type=`text/javascript`,r.charset=`UTF-8`,Oc().appendChild(r)})},gapiScript:`https://apis.google.com/js/api.js`,recaptchaV2Script:`https://www.google.com/recaptcha/api.js`,recaptchaEnterpriseScript:`https://www.google.com/recaptcha/enterprise.js?render=`}),Cc(`Browser`);var kc=[{partialName:`noms`,locale:`fr`}],Ac=[{name:`am`,googleName:`am_ET`,file:`am-ET.json`,englishName:`Amharic`,localName:`á ááá`},{name:`ar`,googleName:`ar_AR`,file:`ar-EG.json`,englishName:`Arabic`,localName:`Ø§ÙØ¹Ø±Ø¨ÙØ©`},{name:`az`,googleName:`az_AZ`,file:`az-Latn-AZ.json`,englishName:`Azerbaijani`,localName:`AzÉrbaycanca`},{name:`be`,googleName:`be_BY`,file:`be-BY.json`,englishName:`Belarusian`,localName:`ÐелаÑÑÑкаÑ`},{name:`bg`,googleName:`bg_BG`,file:`bg-BG.json`,englishName:`Bulgarian`,localName:`бÑлгаÑÑки`},{name:`bn`,googleName:`bn_IN`,file:`bn-IN.json`,englishName:`Bengali`,localName:`বাà¦à¦²à¦¾`},{name:`bs`,googleName:`bs_BA`,file:`bs-Latn-BA.json`,englishName:`Bosnian`,localName:`Bosanski`},{name:`ca`,googleName:`ca_ES`,file:`ca-ES.json`,englishName:`Catalan`,localName:`Català `},{name:`cs`,googleName:`cs_CZ`,file:`cs-CZ.json`,englishName:`Czech`,localName:`ÄeÅ¡tina`},{name:`cy`,googleName:`cy_GB`,file:`cy-GB.json`,englishName:`Welsh`,localName:`Cymraeg`},{name:`da`,googleName:`da_DK`,file:`da-DK.json`,englishName:`Danish`,localName:`Dansk`},{name:`de`,googleName:`de_DE`,file:`de-DE.json`,englishName:`German`,localName:`Deutsch`},{name:`el`,googleName:`el_GR`,file:`el-GR.json`,englishName:`Greek`,localName:`Eλληνικά`},{name:`en-PI`,googleName:`en_US`,file:`en-PI.json`,englishName:`English (Pirate)`,localName:`English (Pirate)`},{name:`en`,googleName:`en_US`,file:`en-US.json`,englishName:`English`,localName:`English`},{name:`es`,googleName:`es_ES`,file:`es-ES.json`,englishName:`Spanish`,localName:`Español`},{name:`et`,googleName:`et_EE`,file:`et-EE.json`,englishName:`Estonian`,localName:`Eesti`},{name:`fa`,googleName:`fa_IR`,file:`fa-IR.json`,englishName:`Persian`,localName:`ÙØ§Ø±Ø³Û`},{name:`fi`,googleName:`fi_FI`,file:`fi-FI.json`,englishName:`Finnish`,localName:`Suomi`},{name:`fil`,googleName:`fil_PH`,file:`fil-PH.json`,englishName:`Filipino`,localName:`Filipino`},{name:`fr`,googleName:`fr_FR`,file:`fr-FR.json`,englishName:`French`,localName:`Français`},{name:`gl`,googleName:`gl_ES`,file:`gl-ES.json`,englishName:`Galician`,localName:`Galego`},{name:`gu`,googleName:`gu_IN`,file:`gu-IN.json`,englishName:`Gujarati`,localName:`àªà«àªàª°àª¾àª¤à«`},{name:`he`,googleName:`he_IL`,file:`he-IL.json`,englishName:`Hebrew`,localName:`×¢×ר×ת`},{name:`hi`,googleName:`hi_IN`,file:`hi-IN.json`,englishName:`Hindi`,localName:`हिà¤à¤¦à¥`},{name:`hr`,googleName:`hr_HR`,file:`hr-HR.json`,englishName:`Croatian`,localName:`Hrvatski`},{name:`hu`,googleName:`hu_HU`,file:`hu-HU.json`,englishName:`Hungarian`,localName:`Magyar`},{name:`hy`,googleName:`hy_AM`,file:`hy-AM.json`,englishName:`Armenian`,localName:`ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶`},{name:`id`,googleName:`id_ID`,file:`id-ID.json`,englishName:`Indonesian`,localName:`Bahasa Indonesia`},{name:`is`,googleName:`is_IS`,file:`is-IS.json`,englishName:`Icelandic`,localName:`Ãslenskur`},{name:`it`,googleName:`it_IT`,file:`it-IT.json`,englishName:`Italian`,localName:`Italiano`},{name:`ja`,googleName:`ja_JP`,file:`ja-JP.json`,englishName:`Japanese`,localName:`æ¥æ¬èª`},{name:`ka`,googleName:`ka_GE`,file:`ka-GE.json`,englishName:`Georgian`,localName:`á¥áá áá£áá`},{name:`kk`,googleName:`kk_KZ`,file:`kk-KZ.json`,englishName:`Kazakh`,localName:`ÒÐ°Ð·Ð°Ò ÑÑлÑ`},{name:`kn`,googleName:`kn_IN`,file:`kn-IN.json`,englishName:`Kannada`,localName:`à²à²¨à³à²¨à²¡`},{name:`ko`,googleName:`ko_KR`,file:`ko-KR.json`,englishName:`Korean`,localName:`íêµì´`},{name:`lo`,googleName:`lo_LA`,file:`lo-LA.json`,englishName:`Lao`,localName:`àºàº²àºªàº²àº¥àº²àº§`},{name:`lt`,googleName:`lt_LT`,file:`lt-LT.json`,englishName:`Lithuanian`,localName:`Lietuvių`},{name:`lv`,googleName:`lv_LV`,file:`lv-LV.json`,englishName:`Latvian`,localName:`LatvieÅ¡u`},{name:`mk`,googleName:`mk_MK`,file:`mk-MK.json`,englishName:`Macedonian`,localName:`MакедонÑки`},{name:`ml`,googleName:`ml_IN`,file:`ml-IN.json`,englishName:`Malayalam`,localName:`മലയാളà´`},{name:`mn`,googleName:`mn_MN`,file:`mn-MN.json`,englishName:`Mongolian`,localName:`Mонгол`},{name:`ms`,googleName:`ms_MY`,file:`ms-MY.json`,englishName:`Malay`,localName:`Bahasa Melayu`}
1,{name:`my`,googleName:`my_MM`,file:`my-MM.json`,englishName:`Burmese`,localName:`áá¼ááºáá¬á
á¬`},{name:`nl`,googleName:`nl_NL`,file:`nl-NL.json`,englishName:`Dutch`,localName:`Nederlands`},{name:`no`,googleName:`nb_NO`,file:`nb-NO.json`,englishName:`Norwegian`,localName:`Norsk`},{name:`pa`,googleName:`pa_IN`,file:`pa-IN.json`,englishName:`Punjabi`,localName:`ਪੰà¨à¨¾à¨¬à©`},{name:`pl`,googleName:`pl_PL`,file:`pl-PL.json`,englishName:`Polish`,localName:`Polski`},{name:`pt`,googleName:`pt_BR`,file:`pt-PT.json`,englishName:`Portuguese`,localName:`Português`},{name:`ro`,googleName:`ro_RO`,file:`ro-RO.json`,englishName:`Romanian`,localName:`RomânÄ`},{name:`ru`,googleName:`ru_RU`,file:`ru-RU.json`,englishName:`Russian`,localName:`PÑÑÑкий`},{name:`sd`,googleName:`sd_PK`,file:`sd-PK.json`,englishName:`Sindhi`,localName:`سÙÚÙ`},{name:`sl`,googleName:`sl_SL`,file:`sl-SI.json`,englishName:`Slovenian`,localName:`SlovenÅ¡Äina`},{name:`so`,googleName:`so_SO`,file:`so-SO.json`,englishName:`Somali`,localName:`Soomaali`},{name:`sq`,googleName:`sq_AL`,file:`sq-AL.json`,englishName:`Albanian`,localName:`Shqip`},{name:`sr`,googleName:`sr_SP`,file:`sr-Latn-RS.json`,englishName:`Serbian`,localName:`Srpski`},{name:`sv`,googleName:`sv_SE`,file:`sv-SE.json`,englishName:`Swedish`,localName:`Svenska`},{name:`ta`,googleName:`ta_IN`,file:`ta-IN.json`,englishName:`Tamil`,localName:`தமிழà¯`},{name:`th`,googleName:`th_TH`,file:`th-TH.json`,englishName:`Thai`,localName:`à¹à¸à¸¢`},{name:`tr`,googleName:`tr_TR`,file:`tr-TR.json`,englishName:`Turkish`,localName:`Türkçe`},{name:`uk`,googleName:`uk_UA`,file:`uk-UA.json`,englishName:`Ukrainian`,localName:`УкÑаÑнÑÑка`},{name:`ur`,googleName:`ur_PK`,file:`ur-PK.json`,englishName:`Urdu`,localName:`اردÙ`},{name:`uz`,googleName:`uz_UZ`,file:`uz-Latn-UZ.json`,englishName:`Uzbek`,localName:`OÊ»zbekcha`},{name:`vi`,googleName:`vi_VN`,file:`vi-VN.json`,englishName:`Vietnamese`,localName:`Tiếng Viá»t`},{name:`zh-CN`,googleName:`zh_CN`,file:`zh-CN.json`,englishName:`Chinese (Simplified)`,localName:`ç®ä½ä¸æ`},{name:`zh-HK`,googleName:`zh_TW`,file:`zh-HK.json`,englishName:`Chinese (Traditional)`,localName:`ç¹é«ä¸æ`}];function jc(e,t){return Kc(e)===t?`/`:`/${t}/`}function Mc(e,t,n){return`${e}${jc(e,t)}/${n}`.replace(`//`,`/`)}function Nc(e){return Ac.find(t=>t.name===e)?.googleName||`en_US`}function Pc(e){return Ac.find(t=>t.name===e)?.file.slice(0,-5)||`en-US`}function Fc(e,t){let n=Bc(``)(t);return g(zc,Rc(e),Bc({}),e=>e.name??``)([n])}function Ic(e){return Array.isArray(e)?g(zc,Hc,Wc)(e):[]}function Lc(){return Ac.map(e=>({name:e.name,localName:e.localName,englishName:e.englishName})).sort(Vc)}function Rc(e){return t=>t.filter(t=>!qc(e,t.name))}function zc(e){return Ac.filter(t=>e.some(e=>qc(e,t.name)))}function Bc(e){return t=>t?.[0]??e}function Vc(e,t){return e.localName.localeCompare(t.localName)}function Hc(e){return e.filter(e=>!Uc(e))}function Uc(e){return e.name===`en-PI`}function Wc(e){return e.map(Gc)}function Gc(e){return{name:e.name,localName:e.localName}}function Kc(e){return kc.find(t=>e.includes(t.partialName))?.locale||`en`}function qc(e,t){return e.length===t.length?e===t:Jc(e)===Jc(t)}function Jc(e){return e.split(`-`)[0]}var X=Dc(Qr({apiKey:`AIzaSyDjijmJdtsEsOzacG4Cl0RhKvwORhL5a4g`,authDomain:`wheel-of-names-firebase.firebaseapp.com`,databaseURL:`https://wheel-of-names-firebase.firebaseio.com`,projectId:`wheel-of-names-firebase`}));async function Yc(){let e=await Xc();return!!e&&!e.isAnonymous}async function Xc(){return X.currentUser||new Promise(e=>{X.onAuthStateChanged(t=>e(t))})}async function Z(){return await(await Xc())?.getIdToken()??``}async function Zc(){return(await Xc())?.uid}async function Qc(){let e=await Xc();if(e?.isAnonymous)return await e.getIdToken()}async function $c(){return await To(X),X.currentUser}async function el(e){X.languageCode=Nc(e);let t=new yo;return t.addScope(`email`),t.addScope(`profile`),t.setCustomParameters({prompt:`select_account`}),(await Es(X,t)).user}async function tl(e,t){return(await Io(X,e,t)).user}async function nl(e,t,n){let r=await Fo(X,e,t);return await Ro(r.user,{displayName:n}),r.user}async function rl(e){await Po(X,e)}async function il(e){X.languageCode=Nc(e);let t=new yo;for(let e of m)t.addScope(e);t.setCustomParameters({prompt:`select_account`});let n=await Es(X,t);return yo.credentialFromResult(n)?.accessToken}async function al(){await X.signOut()}async function ol(e,t){return(await Q(`GET`,`api/v3/admin/wheels/${t}`,e)).data}async function sl(e,t,n){let r=`api/v3/admin/users/${e}/wheels`;return n&&n.length>0&&(r+=`?fields=${n}`),(await Q(`GET`,r,t)).data.wheels}async function cl(e,t){return(await Q(`GET`,`api/v3/admin/users/${t}`,e)).data}async function ll(e){return(await Q(`GET`,`api/v3/admin/review-queue`,e)).data}async function ul(e,t){return(await Q(`POST`,`api/v3/admin/translate`,e,{texts:t})).data.translations}async function dl(e){try{return(await Q(`GET`,`api/v3/admin`,e)).data.isAdmin}catch{return!1}}async function fl(e,t,n){await Q(`PUT`,`api/v3/admin/administrators`,e,{uid:t,totalReviews:n})}async function pl(e,t,n){await Q(`PUT`,`api/v3/admin/administrators`,e,{uid:t,sessionReviews:n})}async function ml(e){return(await Q(`GET`,`api/v3/admin/dirty-words`,e)).data.dirtyWords}async function hl(e,t){await Q(`PUT`,`api/v3/admin/dirty-words`,e,{dirtyWords:t})}async function gl(e){return(await Q(`GET`,`api/v3/admin/administrators`,e)).data.administrators}async function _l(e,t,n){await Q(`POST`,`api/v3/admin/administrators`,e,{uid:t,name:n})}async function vl(e,t){await Q(`DELETE`,`api/v3/admin/administrators`,e,{uid:t})}async function yl(e,t){await Q(`POST`,`api/v3/admin/wheels/${t}/remove-from-gallery`,e)}async function bl(e,t){await Q(`DELETE`,`api/v3/admin/wheels/${t}`,e)}async function xl(e){return(await Q(`GET`,`api/v3/admin/review-queue/next-shared-wheel`,e)).data.wheel}async function Sl(e){return(await Q(`GET`,`api/v3/admin/review-queue/next-gallery-wheel`,e)).data.wheel}async function Cl(e,t){await Q(`POST`,`api/v3/admin/review-queue/approve/${t}`,e)}async function wl(e,t){await Q(`POST`,`api/v3/admin/review-queue/reject/${t}`,e)}async function Tl(e,t,n,r,i=0){return await Al(`GET`,`api/v3/admin/wheels/thumbnails/${t}?size=${n}&lastWrite=${r}&wheelIndex=${i}`,e)}async function El(e,t){let n=t.email||t.uid||``;return(await Q(`GET`,`api/v3/admin/users/${encodeURIComponent(n)}`,e)).data}async function Dl(e,t,n=0){return(await Q(`GET`,`api/v3/admin/wheels/search?title=${encodeURIComponent(t)}&offset=${n}`,e)).data.wheels}async function Ol(e,t,n){await Q(`POST`,`api/v3/admin/users/${t}/transfer-wheels`,e,{targetUid:n})}async function kl(e,t,n){await Q(`PUT`,`api/v3/admin/users/${t}`,e,n)}async function Q(e,t,n,r){return await bt(e,t,n,r)}async function Al(e,t,n,r){return await xt(e,t,n,r)}var jl=vt(`user`,{state:()=>({userPhotoUrl:``,userDisplayName:``,uid:``,loginProvider:``,premium:`unknown`,admin:!1}),actions:{setUser(e){if(!e){this.clearUser();return}this.userDisplayName=e.displayName??``,this.userPhotoUrl=e.photoURL||`images/user_profile.png`,this.uid=e.uid??``;let t=e.providerData[0]?.providerId??`unknown`;this.loginProvider=Ml[t]??``},clearUser(){this.userDisplayName=``,this.userPhotoUrl=``,this.uid=``,this.loginProvider=``,this.premium=`unknown`,this.admin=!1},async userIsLoggedIn(){let e=await Yc();if(e){let e=await Xc();this.setUser(e)}return e},async logOut(){await al(),this.clearUser()},async deleteAccount(){await Nt(await Z()),al(),this.clearUser()},async logInAnonymously(){await $c()},async logInWithPopup(e){let t=await Qc(),n=await el(e);if(!n)throw Error(`Login failed`);this.setUser(n);let r=await Z();await jt(r),t&&await Mt(t,r)},async logInWithEmail(e,t,n){let r=await Qc(),i=await(n?nl(e,t,n):tl(e,t));if(!i)throw Error(`Login failed`);this.setUser(i);let a=await Z();await jt(a),r&&await Mt(r,a)},async logInToSheets(e){let t=await Qc(),n=await il(e),r=await Xc();return this.setUser(r),t&&await Mt(t,await Z()),n},async sendPasswordResetEmail(e){await rl(e)},async fetchPremiumStatus(){if(this.premium!==`yes`&&this.premium!==`no`){if(await this.userIsLoggedIn())try{let e=await Z();this.premium=await Pt(e)?`yes`:`no`}catch{this.premium=`unknown`}
1else this.premium=`no`}},async userIsAdmin(){let e=await Z();try{return await dl(e)}catch{return!1}},async getAccount(e){return await cl(await Z(),e)},async getUserIdToken(){return await Z()},async getSavedWheelGroups(e){return(await Tt(await Z(),e)).sort((e,t)=>e.title.localeCompare(t.title,`en`,{numeric:!0,sensitivity:`base`}))},async loadWheel(e){return await Et(e,await Z())},async loadMyWheels(e){return await Dt(await Z(),e)},async saveWheelGroup(e){return await Ot(await Z(),e)},async getSharedWheelGroups(e){return await wt(await Z(),e)},async shareWheelGroup(e){return await Ct(await Z(),e)},async updateWheelGroup(e,t){return await kt(await Z(),e,t)},async deleteWheel(e){return await At(await Z(),e)},async generateApiKey(){return await Rt(await Z())},async getExistingApiKey(){return await Bt(await Z())},async deleteExistingApiKey(){await zt(await Z())},async getWheelThumbnail(e,t,n,r){let i=await Z();return this.admin?await Tl(i,e,t,n,r):await Ut(i,e,t,n)}}}),Ml={"google.com":`Google`,password:`email`},Nl=`Quicksand, sans-serif`;function Pl(e){let t=e.trim();return t?`${t}, ${Nl}`:Nl}function Fl(e,t,n,r,i,a,o){let s=Pl(o);return`${Rl(Ll(e,n,r,i,a,s),Bl(e,t,s,r,i,a))}px ${s}`}var Il=new Map;function Ll(e,t,n,r,i,a){let o=JSON.stringify({texts:t,fontName:a,wheelRadius:n,hubRadius:r,smallestAngle:i});if(Il.get(o))return Il.get(o)||[10];let s=Ul(t.map(t=>Bl(e,t,a,n,r,i)));return Il.set(o,s),s}function Rl(e,t){for(let n=e.length-1;n>=0;n--)if(e[n]<=t)return e[n];return e[0]}var zl=new Map;function Bl(e,t,n,r,i,a){let o=JSON.stringify({displayText:t,fontName:n,wheelRadius:r,hubRadius:i,smallestAngle:a});if(zl.get(o))return zl.get(o)||10;let s=Vl(e,t,n,r,i,a);return zl.set(o,s),s}function Vl(e,t,n,r,i,a){let o,s=3,c=200;for(;;){o=Math.round((s+c)/2);let l=`${o}px ${n}`;if(Hl(e,r,i,a/2,t,l,o)?s=o:c=o,Math.abs(c-s)<2)break}return o}function Hl(e,t,n,r,i,a,o){if(!i)return!0;e.font=a;let s=e.measureText(` ${re(i)} `).width;return le(r,t,n,s,o)}function Ul(e){let t=[...e].sort((e,t)=>e-t),n=[],r=t[0];n.push(r);for(let e=1;e<t.length;e++){let i=t[e];i>r*2&&(n.push(i),r=i)}return n}async function Wl(e){return new Promise(t=>{let n=new Image;n.onload=()=>{let r=eu(n.width,n.height,200);su(r,n),t(lu(r,e,.5))},n.src=e})}async function Gl(e){return new Promise(t=>{let n=new Image;n.onload=()=>{let e=tu(370);nu(n)||su(e,n,`blur(4px)`),cu(e,n,!0),t(lu(e,null,.5))},n.src=e})}async function Kl(e){return new Promise(t=>{let n=new Image;n.onload=()=>{let e=tu(700);cu(e,n,!1),t(lu(e,null,.7))},n.src=e})}function ql(e){let t=document.createElement(`canvas`);return t.width=e.canvas.width,t.height=e.canvas.height,t}function Jl(e){let t=uu(document.createElement(`canvas`));t.drawImage(e,0,0);let n=t.getImageData(0,0,1,1).data;return iu(n[0],n[1],n[2])?`#FFFFFFFF`:au(n[0],n[1],n[2],n[3])}function Yl(e){let t=e.match(/#\w\w\w\w\w\w(\w\w)/);return t?Number.parseInt(t[1],16)/255*100<50:!1}function Xl(e,t){let n=tu(300),r=uu(n);return r.fillStyle=`white`,r.fillRect(0,0,300,300),r.fillStyle=`black`,r.textBaseline=`middle`,r.textAlign=`center`,$l(r,e,270,t),r.fillText(e,150,150,270),n.toDataURL(`image/webp`,.5)}function Zl(e){return new Promise(t=>{let n=new Image;n.setAttribute(`crossOrigin`,`anonymous`),n.onload=()=>t(n),n.src=e})}function Ql(e){return Jl(e).slice(7)===`00`}function $l(e,t,n,r){for(let i=Math.round(n/2);i>
1=n/20&&(e.font=`${i}px ${Pl(r)}`,!(e.measureText(t).width<=n));i--);}function eu(e,t,n){let r=n/e,i=n/t,a=Math.max(r,i),o=document.createElement(`canvas`);return o.width=e*a,o.height=t*a,o}function tu(e){let t=document.createElement(`canvas`);return t.width=e,t.height=e,t}function nu(e){let t=Jl(e);return t===`#FFFFFFFF`||t.slice(7)===`FF`}function ru(e){return e.getImageData(0,0,1,1).data[3]<5}function iu(e,t,n){return e===t&&e===n&&e>230}function au(e,t,n,r){return`#${ou(e)}${ou(t)}${ou(n)}${ou(r)}`}var ou=e=>e.toString(16).padStart(2,`0`);function su(e,t,n){let r=uu(e);r.save(),n&&(r.filter=n),r.drawImage(t,-2,-2,e.width+4,e.height+4),r.restore()}function cu(e,t,n){let r=e.width,i=r/Math.min(t.width,t.height);n&&(i=r/Math.max(t.width,t.height));let a=t.width*i,o=(r-a)/2,s=t.height*i,c=(r-s)/2;uu(e).drawImage(t,o,c,a,s)}function lu(e,t,n){let r;return r=ru(uu(e))?e.toDataURL(`image/webp`,.5):e.toDataURL(`image/jpeg`,n),t&&t.length<r.length?t:r}function uu(e){let t=e.getContext(`2d`);if(!t)throw Error(`Could not get canvas context`);return t}var $=class e{constructor(e){y(this,`afterSpinSound`,`applause-sound-soft`),y(this,`afterSpinSoundVolume`,50),y(this,`allowDuplicates`,!0),y(this,`animateWinner`,!1),y(this,`autoRemoveWinner`,!1),y(this,`centerText`,``),y(this,`colorSettings`,[{color:`#5DADE2`,enabled:!0},{color:`#82E0AA`,enabled:!0},{color:`#F7DC6F`,enabled:!0},{color:`#AF7AC5`,enabled:!0},{color:`#000000`,enabled:!1},{color:`#000000`,enabled:!1}]),y(this,`coverImageName`,``),y(this,`coverImageType`,``),y(this,`customCoverImageDataUri`,``),y(this,`customPictureDataUri`,``),y(this,`customPictureName`,``),y(this,`description`,``),y(this,`displayHideButton`,!0),y(this,`displayRemoveButton`,!0),y(this,`displayWinnerDialog`,!0),y(this,`drawOutlines`,!1),y(this,`drawShadow`,!0),y(this,`duringSpinSound`,`ticking-sound`),y(this,`duringSpinSoundVolume`,50),y(this,`entries`,[{text:`Ali`},{text:`Beatriz`},{text:`Charles`},{text:`Diya`},{text:`Eric`},{text:`Fatima`},{text:`Gabriel`},{text:`Hanna`}]),y(this,`galleryPicture`,`/images/none.png`),y(this,`hubSize`,`S`),y(this,`isAdvanced`,!1),y(this,`launchConfetti`,!0),y(this,`maxNames`,1e3),y(this,`pageBackgroun
1dColor`,`#FFFFFF`),y(this,`pictureType`,`none`),y(this,`playClickWhenWinnerRemoved`,!1),y(this,`showTitle`,!0),y(this,`slowSpin`,!1),y(this,`spinTime`,10),y(this,`title`,``),y(this,`type`,`color`),y(this,`winnerMessage`,``),y(this,`pointerChangesColor`,!0),y(this,`pageGradient`,!0),y(this,`font`,``),y(this,`hideEntryText`,`never`),e&&this.copyPropertiesFrom(e)}loadJson(e){try{let t=JSON.parse(e);t.entries?.length>0&&this.copyPropertiesFrom(t)}catch(e){console.error(e)}}getJson(){return JSON.stringify(this)}getValues(){return JSON.parse(this.getJson())}loadValues(e){this.copyPropertiesFrom(JSON.parse(JSON.stringify(e)))}clone(){let t=new e;return t.loadValues(this.getValues()),t}hasOnlyDefaultEntries(){return se(this.getTexts(),new e().getTexts())}setUploadedCenterImage(e,t){this.customPictureName=e,this.customPictureDataUri=t,this.pictureType=`uploaded`,this.centerText=``}setUploadedBackgroundImage(e,t){this.coverImageName=e,this.customCoverImageDataUri=t,this.coverImageType=`uploaded`}setGalleryBackgroundImage(e){this.coverImageType=`gallery`,this.coverImageName=e}setGalleryCenterImage(e){this.centerText=``,this.pictureType=`gallery`,this.galleryPicture=e,this.customPictureName=``,this.customPictureDataUri=``}getWheelImage(){return this.pictureType===`none`?null:this.pictureType===`gallery`&&this.galleryPicture?this.galleryPicture:(this.pictureType===`uploaded`||this.pictureType===`text`)&&this.customPictureDataUri?this.customPictureDataUri:null}getCoverImage(){return this.coverImageType===`gallery`&&this.coverImageName?this.coverImageName:this.coverImageType===`uploaded`&&this.customCoverImageDataUri?this.customCoverImageDataUri:null}shouldPlayTicks(){return this.duringSpinSound===`ticking-sound`}setColorValues(e){if(e)for(this.colorSettings=e.map(e=>({color:e,enabled:!0}));this.colorSettings.length<6;)this.colorSettings.push({color:`#000000`,enabled:!1})}getCoalescedColors(){let e=this.colorSettings.filter(e=>e.enabled).map(e=>e.color);return e.length>0?e:[`#CCCCCC`]}isTooBigForDatabase(){return this.getJson().length>99e4}getTexts(){return this.entries.map(e=>e.text).filter(e=>e)}getFirstText(){let e=this.getTexts();return e.length>0?e[0]:``}copyPropertiesFrom(e){Object.assign(this,e),this.convertOldData()}usesAdvancedFeatures(){for(let[e,t]of this.entries.entries())if(t.color&&t.color!==this.getEntryColor(e)||`weight`in t&&t.weight!==1||t.enabled===!1||t.sound||t.message)return!0;return!1}getEntryColor(e){let t=this.getCoalescedColors();return this.entries.length>1&&this.isLastSliceAndSameColorAsFirstSlice(e)&&t.length>2?t[1]:t[e%t.length]}isLastSliceAndSameColorAsFirstSlice(e){return e===this.entries.length-1&&e%this.getCoalescedColors().length===0}convertOldData(){let e=this;if(Array.isArray(e.names)&&(e.entries=e.names.map(e=>{let t=ue(e),n=ce(e);return n?{text:t,image:n}:{text:t}}),delete e.names),e.maxNames=Number(e.maxNames),e.spinTime=Number(e.spinTime),delete e.displayHat,e.playTicks===!1&&(e.duringSpinSound=`no-sound`),delete e.playTicks,e.playCheers===!1&&(e.afterSpinSound=`no-sound`),delete e.playCheers,`showTitle`in e||(e.showTitle=!0),e.type===`image`&&!e.coverImageType&&(e.coverImageType=`gallery`),e.entries||=[],e.isAdvanced&&e.entries.length>0&&!(`enabled`in e.entries[0]))for(let e of this.entries)e.enabled=!0;e.drawShadow===void 0&&(e.drawShadow=!0);for(let t of e.entries)t.text&&=t.text.replace(` 2`,``).replace(`\r`,``);_(e.entries),e.entries=e.entries.filter(e=>e.text||e.image||`enabled`in e);for(let t of e.colorSettings||[])t.color.length===4&&(t.color=`#${t.color[1]}${t.color[1]}${t.color[2]}${t.color[2]}${t.color[3]}${t.color[3]}`)}removeImages(){for(let e of this.entries)if(`image`in e){if(!e.text?.trim())return!1;delete e.image}return this.type===`image`&&(this.type=`color`),this.customPictureDataUri=``,this.customCoverImageDataUri=``,!0}},du=Object.fromEntries(Object.entries(new $().getValues()).map(([e,t])=>[e,typeof t]));function fu(e){let t=new $(e),n=new $(Object.fromEntries(Object.entries(oe(t)).filter(([e,t])=>e in du&&typeof t===du[e])));for(let e=0;e<n.entries.length;
2e++)if(`id`in n.entries[e]){let{id:t,...r}=n.entries[e];n.entries[e]=r}return n}function pu(e){try{let t=JSON.parse(e||`{}`);if(`wheelConfigs`in t)return{...t,wheelConfigs:t.wheelConfigs.map(e=>new $(e))};if(`wheels`in t)return{path:``,shareMode:null,wheelConfigs:t.wheels.map(e=>new $(e.wheelConfig)),title:t.wheels[0].wheelConfig.title,description:t.wheels[0].wheelConfig.description};if(`wheelConfig`in t)return{wheelConfigs:[new $(t.wheelConfig)],shareMode:t.shareMode,path:t.path,title:t.wheelConfig.title,description:t.wheelConfig.description};if(`entries`in t)return{wheelConfigs:[new $(t)],shareMode:null,path:``,title:t.title||``,description:t.description||``}}catch{}return{wheelConfigs:[new $({})],shareMode:null,path:``,title:``,description:``}}function mu(e){return JSON.stringify({...e,wheelConfigs:e.wheelConfigs.map(e=>e.getValues())})}var hu=_u(),gu=vt(`wheel`,{state:()=>({busyWheels:new Set,wheelConfigs:hu.wheelConfigs,path:hu.path,shareMode:hu.shareMode,title:hu.title,description:hu.description,sheetLinked:!1,winnerEntry:{},winners:[],unsavedChanges:!1,previousWheels:``}),getters:{wheelIsBusy:e=>!!e.busyWheels.size,wheelCount:e=>e.wheelConfigs.length||1,multiWheel:e=>e.wheelConfigs.length>1,wheelGroup:e=>({wheelConfigs:e.wheelConfigs,shareMode:e.shareMode,title:e.title,description:e.description}),wheelIsShared:e=>!!(e.shareMode&&ae(e.shareMode))},actions:{addWheel(e){this.wheelConfigs.push(vu(new $(e))),this.persistWheels()},removeWheel(e){this.wheelConfigs.splice(e,1),this.persistWheels()},setWheelBusy(e,t){t?this.busyWheels.add(e):this.busyWheels.delete(e)},isWheelBusy(e){return this.busyWheels.has(e)},setWheelGroup(e){this.wheelConfigs=e.wheelConfigs.map(e=>vu(fu(e))),this.path=e.path,this.shareMode=e.shareMode,this.title=e.title,this.description=e.description,this.unsavedChanges=!1,this.persistWheels(),this.winners=[]},setWheelConfig(e,t){this.wheelConfigs[t]=e,this.persistWheels()},copyWheel(e){this.setWheelGroup({...e,path:``,shareMode:null})},saveWheelsForUndo(){this.previousWheels=JSON.stringify({...this.wheelGroup,path:this.path})},undoWheelsChange(){this.setWheelGroup(JSON.parse(this.previousWheels))},persistWheels(){try{let e=mu({...this.wheelGroup,path:this.path});sessionStorage.setItem(`LastWheelGroup`,e),localStorage.setItem(`LastWheelGroup`,e)}catch{console.error(`Error saving wheel to local storage`)}},setWheelTitle(e,t){this.wheelConfigs[t].title=e,this.multiWheel||(this.title=e),this.persistWheels(),this.unsavedChanges=!0},getWheelTitle(e){return this.multiWheel?this.wheelConfigs[e].title:this.title},setWheelDescription(e,t){this.wheelConfigs[t].description=e,this.multiWheel||(this.description=e),this.persistWheels(),this.unsavedChanges=!0},getWheelDescription(e){return this.multiWheel?this.wheelConfigs[e].description:this.description},setShowTitle(e,t){this.wheelConfigs[t].showTitle=e,this.persistWheels(),this.unsavedChanges=!0},setEntries(e,t){this.wheelConfigs[t].entries=_(e),this.persistWheels(),this.unsavedChanges=!0},shuffleEntries(e){let t=this.wheelConfigs[e];t.entries=de(t.entries),this.persistWheels(),this.unsavedChanges=!0},sortEntries(e){let t=this.wheelConfigs[e];t.entries=ie(d(t.entries)),this.persistWheels(),this.unsavedChanges=!0},addEntry(e,t){let{entries:n}=this.wheelConfigs[t];n.push({...e,id:v()}),this.persistWheels(),this.unsavedChanges=!0},enableAllEntries(e){let t=this.wheelConfigs[e];t.entries=t.entries.map(e=>({...e,enabled:!0})),this.persistWheels(),this.unsavedChanges=!0},setEntryText(e,t,n){let r=this.wheelConfigs[n].entries.at(e);r&&(r.text=t,this.persistWheels(),this.unsavedChanges=!0)},unsetEntryImage(e,t){let n=this.wheelConfigs[t].entries.at(e);if(n){let{image:r,...i}=n;this.wheelConfigs[t].entries[e]=i,this.persistWheels(),this.unsavedChanges=!0}},setEntryColor(e,t,n){let r=this.wheelConfigs[n].entries.at(e);r&&(r.color=t,this.persistWheels(),this.unsavedChanges=!0)},unsetEntryColor(e,t){let n=this.wheelConfigs[t].entries.at(e);if(n){let{color:r,...i}=n;this.wheelConfigs[t].entries[e]=i,this.persistWheels(),this.unsavedChanges=!0}},setEntryEnabled(e,t,n){let r=this.wheelConfigs[n].entries.at(e);r&&(r.enabled=t,this.persistWheels(),this.unsavedChanges=!0)},setEntryWeight(e,t,n){let r=this.wheelConfigs[n].entries.at(e);r&&(r.weight=t,this.persistWheels(),this.unsavedChanges=!0)},removeEntryByIndex(e,t){this.wheelConfigs[t].entries.splice(e,1),this.persistWheels(),this.sheetLinked=!1,this.unsavedChanges=!0},removeEntry(e,t){let n=this.wheelConfigs[t];
2n.entries=n.entries.filter(t=>t.id!==e.id),this.persistWheels(),this.sheetLinked=!1,this.unsavedChanges=!0},removeEntryAll(e,t){let n=this.wheelConfigs[t];n.entries=n.entries.filter(t=>t.text&&t.text.trim()!==e.text?.trim()||t.image&&t.image!==e.image),this.persistWheels(),this.sheetLinked=!1,this.unsavedChanges=!0},hideEntry(e,t){let n=this.wheelConfigs[t].entries.find(t=>t.id===e.id);n&&(n.enabled=!1,this.persistWheels(),this.unsavedChanges=!0)},moveEntry(e,t,n){let r=e+t,i=this.wheelConfigs[n].entries;r<0||r>=i.length||([i[e],i[r]]=[i[r],i[e]],this.persistWheels(),this.unsavedChanges=!0)},duplicateEntry(e,t){let n=this.wheelConfigs[t],r={...n.entries.at(e),id:v()};n.entries.splice(e+1,0,r),this.persistWheels(),this.unsavedChanges=!0},setColorValues(e,t){this.wheelConfigs[t].setColorValues(e),this.persistWheels(),this.unsavedChanges=!0},setHubSize(e,t){this.wheelConfigs[t].hubSize=e,this.persistWheels(),this.unsavedChanges=!0},setUploadedCenterImage(e,t,n){let r=this.wheelConfigs[n];r.type=`color`,r.setUploadedCenterImage(e,t),this.persistWheels(),this.unsavedChanges=!0},setUploadedBackgroundImage(e,t,n){let r=this.wheelConfigs[n];r.type=`image`,r.setUploadedBackgroundImage(e,t),this.persistWheels(),this.unsavedChanges=!0},setGalleryBackgroundImage(e,t){let n=this.wheelConfigs[t];n.type=`image`,n.setGalleryBackgroundImage(e),this.persistWheels(),this.unsavedChanges=!0},setGalleryCenterImage(e,t){let n=this.wheelConfigs[t];n.type=`color`,n.setGalleryCenterImage(e),this.persistWheels(),this.unsavedChanges=!0},setAnimateWinner(e,t){this.wheelConfigs[t].animateWinner=e,this.persistWheels(),this.unsavedChanges=!0},linkSheet(){this.multiWheel||(this.sheetLinked=!0,this.unsavedChanges=!0)},unlinkSheet(){this.sheetLinked=!1},setPath(e){this.path=e},setShareMode(e){this.shareMode=e},addWinner(e){this.winnerEntry=e,this.winners.push(e)},sortWinners(){this.winners=ie(this.winners)},clearWinners(){this.winners=[]},setVolumes(e,t,n){let r=this.wheelConfigs[n];r.duringSpinSoundVolume=e,r.afterSpinSoundVolume=t,this.persistWheels(),this.unsavedChanges=!0},resetWheel(e){this.unlinkSheet(),e?this.setWheelGroup({...e,path:``}):this.setWheelGroup({wheelConfigs:[new $],shareMode:null,path:``,title:``,description:``}),this.clearWinners(),this.unsavedChanges=!1},addImageEntry(e,t){this.wheelConfigs[t].entries.push({image:e,id:v()}),this.persistWheels(),this.unsavedChanges=!0},async addImageToEntry(e,t,n){let r=this.wheelConfigs[n].entries.at(t);if(r){let t=await Zl(e);Ql(t)||(r.color=Jl(t).slice(0,7)),r.image=e,this.persistWheels(),this.unsavedChanges=!0}},async setAdvanced(e,t){let n=this.wheelConfigs[t];if(n.isAdvanced=e,e)for(let e of n.entries){if(e.image){let t=await Zl(e.image);Ql(t)||(e.color=Jl(t).slice(0,7))}e.weight=1,e.enabled=!0}else{for(let e=0;e<n.entries.length;e++){let{color:t,weight:r,enabled:i,sound:a,message:o,...s}=n.entries[e];n.entries[e]=s}n.entries=n.entries.filter(e=>e.text||e.image)}this.persistWheels(),this.unsavedChanges=!0}}});function _u(){return pu(sessionStorage.getItem(`LastWheelGroup`)||localStorage.getItem(`LastWheelGroup`)||localStorage.getItem(`LastWheels`)||localStorage.getItem(`LastWheel`)||localStorage.getItem(`LastWheelConfig`))}function vu(e){return _(e.entries),e}var yu=fe(()=>ot());export{Vt as $,Dl as A,Zc as B,ml as C,sl as D,ll as E,hl as F,Lc as G,Mc as H,Ol as I,Mt as J,Ic as K,ul as L,yl as M,pl as N,ol as O,fl as P,Ft as Q,kl as R,gl as S,xl as T,Fc as U,Z as V,Pc as W,It as X,Nt as Y,Ht as Z,jl as _,fu as a,Cl as b,Jl as c,Gl as d,yt as et,Wl as f,Fl as g,Pl as h,$ as i,b as it,wl as j,El as k,Yl as l,Ql as m,gu as n,Ve as nt,ql as o,Xl as p,Kt as q,pu as r,Be as rt,Zl as s,yu as t,x as tt,Kl as u,_l as v,Sl as w,vl as x,bl as y,dl as z};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.