firebase 12.6.0-canary.60d1b18bd → 12.6.0-canary.a09ef786f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/app/dist/esm/index.esm.js +1 -1
  2. package/app/dist/index.cjs.js +1 -1
  3. package/app/dist/index.mjs +1 -1
  4. package/compat/app/dist/esm/index.esm.js +1 -1
  5. package/compat/app/dist/index.cjs.js +1 -1
  6. package/compat/app/dist/index.mjs +1 -1
  7. package/compat/dist/esm/index.esm.js +2 -2
  8. package/compat/dist/index.node.cjs +2 -2
  9. package/compat/dist/index.rn.cjs.js +2 -2
  10. package/firebase-ai.js +1 -1
  11. package/firebase-ai.js.map +1 -1
  12. package/firebase-analytics-compat.js +1 -1
  13. package/firebase-analytics.js +1 -1
  14. package/firebase-app-check-compat.js +1 -1
  15. package/firebase-app-check.js +1 -1
  16. package/firebase-app-compat.js +2 -2
  17. package/firebase-app.js +5 -5
  18. package/firebase-auth-compat.js +1 -1
  19. package/firebase-auth-cordova.js +1 -1
  20. package/firebase-auth-web-extension.js +1 -1
  21. package/firebase-auth.js +1 -1
  22. package/firebase-compat.js +6 -6
  23. package/firebase-compat.js.map +1 -1
  24. package/firebase-data-connect.js +1 -1
  25. package/firebase-database-compat.js +1 -1
  26. package/firebase-database.js +1 -1
  27. package/firebase-firestore-compat.js +2 -2
  28. package/firebase-firestore-compat.js.map +1 -1
  29. package/firebase-firestore-lite.js +1 -1
  30. package/firebase-firestore-lite.js.map +1 -1
  31. package/firebase-firestore.js +1 -1
  32. package/firebase-firestore.js.map +1 -1
  33. package/firebase-functions-compat.js +1 -1
  34. package/firebase-functions.js +1 -1
  35. package/firebase-installations-compat.js +1 -1
  36. package/firebase-installations.js +1 -1
  37. package/firebase-messaging-compat.js +1 -1
  38. package/firebase-messaging-sw.js +1 -1
  39. package/firebase-messaging.js +1 -1
  40. package/firebase-performance-compat.js +1 -1
  41. package/firebase-performance-standalone-compat.js +7 -7
  42. package/firebase-performance.js +1 -1
  43. package/firebase-remote-config-compat.js +1 -1
  44. package/firebase-remote-config.js +1 -1
  45. package/firebase-storage-compat.js +1 -1
  46. package/firebase-storage.js +1 -1
  47. package/package.json +29 -29
@@ -193,7 +193,7 @@ function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window
193
193
  * See the License for the specific language governing permissions and
194
194
  * limitations under the License.
195
195
  */
196
- class K{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===t?.type}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const J="@firebase/app",G="0.14.6-canary.60d1b18bd",X=new k("@firebase/app"),Y="@firebase/app-compat",Z="@firebase/analytics-compat",Q="@firebase/analytics",ee="@firebase/app-check-compat",te="@firebase/app-check",ne="@firebase/auth",re="@firebase/auth-compat",ie="@firebase/database",ae="@firebase/data-connect",oe="@firebase/database-compat",se="@firebase/functions",ce="@firebase/functions-compat",le="@firebase/installations",ue="@firebase/installations-compat",fe="@firebase/messaging",de="@firebase/messaging-compat",pe="@firebase/performance",he="@firebase/performance-compat",ge="@firebase/remote-config",me="@firebase/remote-config-compat",be="@firebase/storage",ve="@firebase/storage-compat",ye="@firebase/firestore",_e="@firebase/ai",we="@firebase/firestore-compat",Ee="firebase",Se="[DEFAULT]",Ie={[J]:"fire-core",[Y]:"fire-core-compat",[Q]:"fire-analytics",[Z]:"fire-analytics-compat",[te]:"fire-app-check",[ee]:"fire-app-check-compat",[ne]:"fire-auth",[re]:"fire-auth-compat",[ie]:"fire-rtdb",[ae]:"fire-data-connect",[oe]:"fire-rtdb-compat",[se]:"fire-fn",[ce]:"fire-fn-compat",[le]:"fire-iid",[ue]:"fire-iid-compat",[fe]:"fire-fcm",[de]:"fire-fcm-compat",[pe]:"fire-perf",[he]:"fire-perf-compat",[ge]:"fire-rc",[me]:"fire-rc-compat",[be]:"fire-gcs",[ve]:"fire-gcs-compat",[ye]:"fire-fst",[we]:"fire-fst-compat",[_e]:"fire-vertex","fire-js":"fire-js",[Ee]:"fire-js-all"},Te=new Map,Ce=new Map,Ae=new Map;function De(e,t){try{e.container.addComponent(t)}catch(n){X.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function ke(e){const t=e.name;if(Ae.has(t))return X.debug(`There were multiple attempts to register component ${t}.`),!1;Ae.set(t,e);for(const t of Te.values())De(t,e);for(const t of Ce.values())De(t,e);return!0}function Ne(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}function Me(e){return void 0!==e.options}function Oe(e){return!Me(e)&&("authIdToken"in e||"appCheckToken"in e||"releaseOnDeref"in e||"automaticDataCollectionEnabled"in e)}
196
+ class K{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===t?.type}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const J="@firebase/app",G="0.14.6-canary.a09ef786f",X=new k("@firebase/app"),Y="@firebase/app-compat",Z="@firebase/analytics-compat",Q="@firebase/analytics",ee="@firebase/app-check-compat",te="@firebase/app-check",ne="@firebase/auth",re="@firebase/auth-compat",ie="@firebase/database",ae="@firebase/data-connect",oe="@firebase/database-compat",se="@firebase/functions",ce="@firebase/functions-compat",le="@firebase/installations",ue="@firebase/installations-compat",fe="@firebase/messaging",de="@firebase/messaging-compat",pe="@firebase/performance",he="@firebase/performance-compat",ge="@firebase/remote-config",me="@firebase/remote-config-compat",be="@firebase/storage",ve="@firebase/storage-compat",ye="@firebase/firestore",_e="@firebase/ai",we="@firebase/firestore-compat",Ee="firebase",Se="[DEFAULT]",Ie={[J]:"fire-core",[Y]:"fire-core-compat",[Q]:"fire-analytics",[Z]:"fire-analytics-compat",[te]:"fire-app-check",[ee]:"fire-app-check-compat",[ne]:"fire-auth",[re]:"fire-auth-compat",[ie]:"fire-rtdb",[ae]:"fire-data-connect",[oe]:"fire-rtdb-compat",[se]:"fire-fn",[ce]:"fire-fn-compat",[le]:"fire-iid",[ue]:"fire-iid-compat",[fe]:"fire-fcm",[de]:"fire-fcm-compat",[pe]:"fire-perf",[he]:"fire-perf-compat",[ge]:"fire-rc",[me]:"fire-rc-compat",[be]:"fire-gcs",[ve]:"fire-gcs-compat",[ye]:"fire-fst",[we]:"fire-fst-compat",[_e]:"fire-vertex","fire-js":"fire-js",[Ee]:"fire-js-all"},Te=new Map,Ce=new Map,Ae=new Map;function De(e,t){try{e.container.addComponent(t)}catch(n){X.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function ke(e){const t=e.name;if(Ae.has(t))return X.debug(`There were multiple attempts to register component ${t}.`),!1;Ae.set(t,e);for(const t of Te.values())De(t,e);for(const t of Ce.values())De(t,e);return!0}function Ne(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}function Me(e){return void 0!==e.options}function Oe(e){return!Me(e)&&("authIdToken"in e||"appCheckToken"in e||"releaseOnDeref"in e||"automaticDataCollectionEnabled"in e)}
197
197
  /**
198
198
  * @license
199
199
  * Copyright 2019 Google LLC
@@ -259,7 +259,7 @@ class Pe{constructor(e,t,n){this._isDeleted=!1,this._options={...e},this._config
259
259
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
260
260
  * See the License for the specific language governing permissions and
261
261
  * limitations under the License.
262
- */const Fe="12.6.0-canary.60d1b18bd";function $e(e,t={}){let n=e;if("object"!=typeof t){t={name:t}}const r={name:Se,automaticDataCollectionEnabled:!0,...t},i=r.name;if("string"!=typeof i||!i)throw Le.create("bad-app-name",{appName:String(i)});if(n||(n=c()),!n)throw Le.create("no-options");const a=Te.get(i);if(a){if(b(n,a.options)&&b(r,a.config))return a;throw Le.create("duplicate-app",{appName:i})}const o=new E(i);for(const e of Ae.values())o.addComponent(e);const s=new Pe(n,r,o);return Te.set(i,s),s}async function Ue(e){let t=!1;const n=e.name;if(Te.has(n))t=!0,Te.delete(n);else if(Ce.has(n)){e.decRefCount()<=0&&(Ce.delete(n),t=!0)}t&&(await Promise.all(e.container.getProviders().map((e=>e.delete()))),e.isDeleted=!0)}function je(e,t,n){let r=Ie[e]??e;n&&(r+=`-${n}`);const i=r.match(/\s|\//),a=t.match(/\s|\//);if(i||a){const e=[`Unable to register library "${r}" with version "${t}":`];return 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 "/")`),void X.warn(e.join(" "))}ke(new y(`${r}-version`,(()=>({library:r,version:t})),"VERSION"))}function xe(e,t){if(null!==e&&"function"!=typeof e)throw Le.create("invalid-log-argument");!function(e,t){for(const n of S){let r=null;t&&t.level&&(r=T[t.level]),n.userLogHandler=null===e?null:(t,n,...i)=>{const a=i.map((e=>{if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return e.toString();if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch(e){return null}})).filter((e=>e)).join(" ");n>=(r??t.logLevel)&&e({level:I[n].toLowerCase(),message:a,args:i,type:t.name})}}}(e,t)}function ze(e){var t;t=e,S.forEach((e=>{e.setLogLevel(t)}))}
262
+ */const Fe="12.6.0-canary.a09ef786f";function $e(e,t={}){let n=e;if("object"!=typeof t){t={name:t}}const r={name:Se,automaticDataCollectionEnabled:!0,...t},i=r.name;if("string"!=typeof i||!i)throw Le.create("bad-app-name",{appName:String(i)});if(n||(n=c()),!n)throw Le.create("no-options");const a=Te.get(i);if(a){if(b(n,a.options)&&b(r,a.config))return a;throw Le.create("duplicate-app",{appName:i})}const o=new E(i);for(const e of Ae.values())o.addComponent(e);const s=new Pe(n,r,o);return Te.set(i,s),s}async function Ue(e){let t=!1;const n=e.name;if(Te.has(n))t=!0,Te.delete(n);else if(Ce.has(n)){e.decRefCount()<=0&&(Ce.delete(n),t=!0)}t&&(await Promise.all(e.container.getProviders().map((e=>e.delete()))),e.isDeleted=!0)}function je(e,t,n){let r=Ie[e]??e;n&&(r+=`-${n}`);const i=r.match(/\s|\//),a=t.match(/\s|\//);if(i||a){const e=[`Unable to register library "${r}" with version "${t}":`];return 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 "/")`),void X.warn(e.join(" "))}ke(new y(`${r}-version`,(()=>({library:r,version:t})),"VERSION"))}function xe(e,t){if(null!==e&&"function"!=typeof e)throw Le.create("invalid-log-argument");!function(e,t){for(const n of S){let r=null;t&&t.level&&(r=T[t.level]),n.userLogHandler=null===e?null:(t,n,...i)=>{const a=i.map((e=>{if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return e.toString();if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch(e){return null}})).filter((e=>e)).join(" ");n>=(r??t.logLevel)&&e({level:I[n].toLowerCase(),message:a,args:i,type:t.name})}}}(e,t)}function ze(e){var t;t=e,S.forEach((e=>{e.setLogLevel(t)}))}
263
263
  /**
264
264
  * @license
265
265
  * Copyright 2021 Google LLC
@@ -406,7 +406,7 @@ const rt=function(){const e=nt(et);e.SDK_VERSION=`${e.SDK_VERSION}_LITE`;const t
406
406
  * See the License for the specific language governing permissions and
407
407
  * limitations under the License.
408
408
  */
409
- function(e){je("@firebase/app-compat","0.5.6-canary.60d1b18bd",e)}("lite");
409
+ function(e){je("@firebase/app-compat","0.5.6-canary.a09ef786f",e)}("lite");
410
410
  /**
411
411
  * @license
412
412
  * Copyright 2020 Google LLC
@@ -423,7 +423,7 @@ function(e){je("@firebase/app-compat","0.5.6-canary.60d1b18bd",e)}("lite");
423
423
  * See the License for the specific language governing permissions and
424
424
  * limitations under the License.
425
425
  */
426
- rt.registerVersion("firebase","12.6.0-canary.60d1b18bd","app-compat");var it,at,ot=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},st=function(e){if("loading"===document.readyState)return"loading";var t=ot();if(t){if(e<t.domInteractive)return"loading";if(0===t.domContentLoadedEventStart||e<t.domContentLoadedEventStart)return"dom-interactive";if(0===t.domComplete||e<t.domComplete)return"dom-content-loaded"}return"complete"},ct=function(e){var t=e.nodeName;return 1===e.nodeType?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},lt=function(e,t){var n="";try{for(;e&&9!==e.nodeType;){var r=e,i=r.id?"#"+r.id:ct(r)+(r.classList&&r.classList.value&&r.classList.value.trim()&&r.classList.value.trim().length?"."+r.classList.value.trim().replace(/\s+/g,"."):"");if(n.length+i.length>(t||100)-1)return n||i;if(n=n?i+">"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},ut=-1,ft=function(e){addEventListener("pageshow",(function(t){t.persisted&&(ut=t.timeStamp,e(t))}),!0)},dt=function(){var e=ot();return e&&e.activationStart||0},pt=function(e,t){var n=ot(),r="navigate";return ut>=0?r="back-forward-cache":n&&(document.prerendering||dt()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},ht=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},gt=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},mt=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},bt=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},vt=function(e){var t=!1;return function(){t||(e(),t=!0)}},yt=-1,_t=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},wt=function(e){"hidden"===document.visibilityState&&yt>-1&&(yt="visibilitychange"===e.type?e.timeStamp:0,St())},Et=function(){addEventListener("visibilitychange",wt,!0),addEventListener("prerenderingchange",wt,!0)},St=function(){removeEventListener("visibilitychange",wt,!0),removeEventListener("prerenderingchange",wt,!0)},It=function(){return yt<0&&(yt=_t(),Et(),ft((function(){setTimeout((function(){yt=_t(),Et()}),0)}))),{get firstHiddenTime(){return yt}}},Tt=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},Ct=[1800,3e3],At=[.1,.25],Dt=function(e,t){!function(e,t){t=t||{},function(e,t){t=t||{},Tt((function(){var n,r=It(),i=pt("FCP"),a=ht("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-dt(),0),i.entries.push(e),n(!0)))}))}));a&&(n=gt(e,i,Ct,t.reportAllChanges),ft((function(r){i=pt("FCP"),n=gt(e,i,Ct,t.reportAllChanges),mt((function(){i.value=performance.now()-r.timeStamp,n(!0)}))})))}))}(vt((function(){var n,r=pt("CLS",0),i=0,a=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=a[0],n=a[a.length-1];i&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(i+=e.value,a.push(e)):(i=e.value,a=[e])}})),i>r.value&&(r.value=i,r.entries=a,n())},s=ht("layout-shift",o);s&&(n=gt(e,r,At,t.reportAllChanges),bt((function(){o(s.takeRecords()),n(!0)})),ft((function(){i=0,r=pt("CLS",0),n=gt(e,r,At,t.reportAllChanges),mt((function(){return n()}))})),setTimeout(n,0))})))}((function(t){var n=function(e){var t,n={};if(e.entries.length){var r=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(r&&r.sources&&r.sources.length){var i=(t=r.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];i&&(n={largestShiftTarget:lt(i.node),largestShiftTime:r.startTime,largestShiftValue:r.value,largestShiftSource:i,largestShiftEntry:r,loadState:st(r.startTime)})}}return Object.assign(e,{attribution:n})}(t);e(n)}),t)},kt=0,Nt=1/0,Mt=0,Ot=function(e){e.forEach((function(e){e.interactionId&&(Nt=Math.min(Nt,e.interactionId),Mt=Math.max(Mt,e.interactionId),kt=Mt?(Mt-Nt)/7+1:0)}))},Lt=function(){return it?kt:performance.interactionCount||0},Pt=function(){"interactionCount"in performance||it||(it=ht("event",Ot,{type:"event",buffered:!0,durationThreshold:0}))},Bt=[],Rt=new Map,Ft=0,$t=[],Ut=function(e){if($t.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=Bt[Bt.length-1],n=Rt.get(e.interactionId);if(n||Bt.length<10||e.duration>t.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};Rt.set(r.id,r),Bt.push(r)}Bt.sort((function(e,t){return t.latency-e.latency})),Bt.length>10&&Bt.splice(10).forEach((function(e){return Rt.delete(e.id)}))}}},jt=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=vt(e),"hidden"===document.visibilityState?e():(n=t(e),bt(e)),n},xt=[200,500],zt=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},Tt((function(){var n;Pt();var r,i=pt("INP"),a=function(e){jt((function(){e.forEach(Ut);var t=function(){var e=Math.min(Bt.length-1,Math.floor((Lt()-Ft)/50));return Bt[e]}();t&&t.latency!==i.value&&(i.value=t.latency,i.entries=t.entries,r())}))},o=ht("event",a,{durationThreshold:null!==(n=t.durationThreshold)&&void 0!==n?n:40});r=gt(e,i,xt,t.reportAllChanges),o&&(o.observe({type:"first-input",buffered:!0}),bt((function(){a(o.takeRecords()),r(!0)})),ft((function(){Ft=Lt(),Bt.length=0,Rt.clear(),i=pt("INP"),r=gt(e,i,xt,t.reportAllChanges)})))})))},Vt=[],Ht=[],qt=0,Wt=new WeakMap,Kt=new Map,Jt=-1,Gt=function(e){Vt=Vt.concat(e),Xt()},Xt=function(){Jt<0&&(Jt=jt(Yt))},Yt=function(){Kt.size>10&&Kt.forEach((function(e,t){Rt.has(t)||Kt.delete(t)}));var e=Bt.map((function(e){return Wt.get(e.entries[0])})),t=Ht.length-50;Ht=Ht.filter((function(n,r){return r>=t||e.includes(n)}));for(var n=new Set,r=0;r<Ht.length;r++){var i=Ht[r];Zt(i.startTime,i.processingEnd).forEach((function(e){n.add(e)}))}var a=Vt.length-1-50;Vt=Vt.filter((function(e,t){return e.startTime>qt&&t>a||n.has(e)})),Jt=-1};$t.push((function(e){e.interactionId&&e.target&&!Kt.has(e.interactionId)&&Kt.set(e.interactionId,e.target)}),(function(e){var t,n=e.startTime+e.duration;qt=Math.max(qt,e.processingEnd);for(var r=Ht.length-1;r>=0;r--){var i=Ht[r];if(Math.abs(n-i.renderTime)<=8){(t=i).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:n,entries:[e]},Ht.push(t)),(e.interactionId||"first-input"===e.entryType)&&Wt.set(e,t),Xt()}));var Zt=function(e,t){for(var n,r=[],i=0;n=Vt[i];i++)if(!(n.startTime+n.duration<e)){if(n.startTime>t)break;r.push(n)}return r},Qt=function(e,t){at||(at=ht("long-animation-frame",Gt)),zt((function(t){var n=function(e){var t=e.entries[0],n=Wt.get(t),r=t.processingStart,i=n.processingEnd,a=n.entries.sort((function(e,t){return e.processingStart-t.processingStart})),o=Zt(t.startTime,i),s=e.entries.find((function(e){return e.target})),c=s&&s.target||Kt.get(t.interactionId),l=[t.startTime+t.duration,i].concat(o.map((function(e){return e.startTime+e.duration}))),u=Math.max.apply(Math,l),f={interactionTarget:lt(c),interactionTargetElement:c,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:u,processedEventEntries:a,longAnimationFrameEntries:o,inputDelay:r-t.startTime,processingDuration:i-r,presentationDelay:Math.max(u-i,0),loadState:st(t.startTime)};return Object.assign(e,{attribution:f})}(t);e(n)}),t)},en=[2500,4e3],tn={},nn=function(e,t){!function(e,t){t=t||{},Tt((function(){var n,r=It(),i=pt("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-dt(),0),i.entries=[e],n())}))},o=ht("largest-contentful-paint",a);if(o){n=gt(e,i,en,t.reportAllChanges);var s=vt((function(){tn[i.id]||(a(o.takeRecords()),o.disconnect(),tn[i.id]=!0,n(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return jt(s)}),{once:!0,capture:!0})})),bt(s),ft((function(r){i=pt("LCP"),n=gt(e,i,en,t.reportAllChanges),mt((function(){i.value=performance.now()-r.timeStamp,tn[i.id]=!0,n(!0)}))}))}}))}((function(t){var n=function(e){var t={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:e.value};if(e.entries.length){var n=ot();if(n){var r=n.activationStart||0,i=e.entries[e.entries.length-1],a=i.url&&performance.getEntriesByType("resource").filter((function(e){return e.name===i.url}))[0],o=Math.max(0,n.responseStart-r),s=Math.max(o,a?(a.requestStart||a.startTime)-r:0),c=Math.max(s,a?a.responseEnd-r:0),l=Math.max(c,i.startTime-r);t={element:lt(i.element),timeToFirstByte:o,resourceLoadDelay:s-o,resourceLoadDuration:c-s,elementRenderDelay:l-c,navigationEntry:n,lcpEntry:i},i.url&&(t.url=i.url),a&&(t.lcpResourceEntry=a)}}return Object.assign(e,{attribution:t})}(t);e(n)}),t)};const rn="@firebase/installations",an="0.6.19-canary.60d1b18bd",on=1e4,sn=`w:${an}`,cn="FIS_v2",ln=36e5,un=new h("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function fn(e){return e instanceof p&&e.code.includes("request-failed")}
426
+ rt.registerVersion("firebase","12.6.0-canary.a09ef786f","app-compat");var it,at,ot=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},st=function(e){if("loading"===document.readyState)return"loading";var t=ot();if(t){if(e<t.domInteractive)return"loading";if(0===t.domContentLoadedEventStart||e<t.domContentLoadedEventStart)return"dom-interactive";if(0===t.domComplete||e<t.domComplete)return"dom-content-loaded"}return"complete"},ct=function(e){var t=e.nodeName;return 1===e.nodeType?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},lt=function(e,t){var n="";try{for(;e&&9!==e.nodeType;){var r=e,i=r.id?"#"+r.id:ct(r)+(r.classList&&r.classList.value&&r.classList.value.trim()&&r.classList.value.trim().length?"."+r.classList.value.trim().replace(/\s+/g,"."):"");if(n.length+i.length>(t||100)-1)return n||i;if(n=n?i+">"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},ut=-1,ft=function(e){addEventListener("pageshow",(function(t){t.persisted&&(ut=t.timeStamp,e(t))}),!0)},dt=function(){var e=ot();return e&&e.activationStart||0},pt=function(e,t){var n=ot(),r="navigate";return ut>=0?r="back-forward-cache":n&&(document.prerendering||dt()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},ht=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},gt=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},mt=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},bt=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},vt=function(e){var t=!1;return function(){t||(e(),t=!0)}},yt=-1,_t=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},wt=function(e){"hidden"===document.visibilityState&&yt>-1&&(yt="visibilitychange"===e.type?e.timeStamp:0,St())},Et=function(){addEventListener("visibilitychange",wt,!0),addEventListener("prerenderingchange",wt,!0)},St=function(){removeEventListener("visibilitychange",wt,!0),removeEventListener("prerenderingchange",wt,!0)},It=function(){return yt<0&&(yt=_t(),Et(),ft((function(){setTimeout((function(){yt=_t(),Et()}),0)}))),{get firstHiddenTime(){return yt}}},Tt=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},Ct=[1800,3e3],At=[.1,.25],Dt=function(e,t){!function(e,t){t=t||{},function(e,t){t=t||{},Tt((function(){var n,r=It(),i=pt("FCP"),a=ht("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-dt(),0),i.entries.push(e),n(!0)))}))}));a&&(n=gt(e,i,Ct,t.reportAllChanges),ft((function(r){i=pt("FCP"),n=gt(e,i,Ct,t.reportAllChanges),mt((function(){i.value=performance.now()-r.timeStamp,n(!0)}))})))}))}(vt((function(){var n,r=pt("CLS",0),i=0,a=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=a[0],n=a[a.length-1];i&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(i+=e.value,a.push(e)):(i=e.value,a=[e])}})),i>r.value&&(r.value=i,r.entries=a,n())},s=ht("layout-shift",o);s&&(n=gt(e,r,At,t.reportAllChanges),bt((function(){o(s.takeRecords()),n(!0)})),ft((function(){i=0,r=pt("CLS",0),n=gt(e,r,At,t.reportAllChanges),mt((function(){return n()}))})),setTimeout(n,0))})))}((function(t){var n=function(e){var t,n={};if(e.entries.length){var r=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(r&&r.sources&&r.sources.length){var i=(t=r.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];i&&(n={largestShiftTarget:lt(i.node),largestShiftTime:r.startTime,largestShiftValue:r.value,largestShiftSource:i,largestShiftEntry:r,loadState:st(r.startTime)})}}return Object.assign(e,{attribution:n})}(t);e(n)}),t)},kt=0,Nt=1/0,Mt=0,Ot=function(e){e.forEach((function(e){e.interactionId&&(Nt=Math.min(Nt,e.interactionId),Mt=Math.max(Mt,e.interactionId),kt=Mt?(Mt-Nt)/7+1:0)}))},Lt=function(){return it?kt:performance.interactionCount||0},Pt=function(){"interactionCount"in performance||it||(it=ht("event",Ot,{type:"event",buffered:!0,durationThreshold:0}))},Bt=[],Rt=new Map,Ft=0,$t=[],Ut=function(e){if($t.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=Bt[Bt.length-1],n=Rt.get(e.interactionId);if(n||Bt.length<10||e.duration>t.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};Rt.set(r.id,r),Bt.push(r)}Bt.sort((function(e,t){return t.latency-e.latency})),Bt.length>10&&Bt.splice(10).forEach((function(e){return Rt.delete(e.id)}))}}},jt=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=vt(e),"hidden"===document.visibilityState?e():(n=t(e),bt(e)),n},xt=[200,500],zt=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},Tt((function(){var n;Pt();var r,i=pt("INP"),a=function(e){jt((function(){e.forEach(Ut);var t=function(){var e=Math.min(Bt.length-1,Math.floor((Lt()-Ft)/50));return Bt[e]}();t&&t.latency!==i.value&&(i.value=t.latency,i.entries=t.entries,r())}))},o=ht("event",a,{durationThreshold:null!==(n=t.durationThreshold)&&void 0!==n?n:40});r=gt(e,i,xt,t.reportAllChanges),o&&(o.observe({type:"first-input",buffered:!0}),bt((function(){a(o.takeRecords()),r(!0)})),ft((function(){Ft=Lt(),Bt.length=0,Rt.clear(),i=pt("INP"),r=gt(e,i,xt,t.reportAllChanges)})))})))},Vt=[],Ht=[],qt=0,Wt=new WeakMap,Kt=new Map,Jt=-1,Gt=function(e){Vt=Vt.concat(e),Xt()},Xt=function(){Jt<0&&(Jt=jt(Yt))},Yt=function(){Kt.size>10&&Kt.forEach((function(e,t){Rt.has(t)||Kt.delete(t)}));var e=Bt.map((function(e){return Wt.get(e.entries[0])})),t=Ht.length-50;Ht=Ht.filter((function(n,r){return r>=t||e.includes(n)}));for(var n=new Set,r=0;r<Ht.length;r++){var i=Ht[r];Zt(i.startTime,i.processingEnd).forEach((function(e){n.add(e)}))}var a=Vt.length-1-50;Vt=Vt.filter((function(e,t){return e.startTime>qt&&t>a||n.has(e)})),Jt=-1};$t.push((function(e){e.interactionId&&e.target&&!Kt.has(e.interactionId)&&Kt.set(e.interactionId,e.target)}),(function(e){var t,n=e.startTime+e.duration;qt=Math.max(qt,e.processingEnd);for(var r=Ht.length-1;r>=0;r--){var i=Ht[r];if(Math.abs(n-i.renderTime)<=8){(t=i).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:n,entries:[e]},Ht.push(t)),(e.interactionId||"first-input"===e.entryType)&&Wt.set(e,t),Xt()}));var Zt=function(e,t){for(var n,r=[],i=0;n=Vt[i];i++)if(!(n.startTime+n.duration<e)){if(n.startTime>t)break;r.push(n)}return r},Qt=function(e,t){at||(at=ht("long-animation-frame",Gt)),zt((function(t){var n=function(e){var t=e.entries[0],n=Wt.get(t),r=t.processingStart,i=n.processingEnd,a=n.entries.sort((function(e,t){return e.processingStart-t.processingStart})),o=Zt(t.startTime,i),s=e.entries.find((function(e){return e.target})),c=s&&s.target||Kt.get(t.interactionId),l=[t.startTime+t.duration,i].concat(o.map((function(e){return e.startTime+e.duration}))),u=Math.max.apply(Math,l),f={interactionTarget:lt(c),interactionTargetElement:c,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:u,processedEventEntries:a,longAnimationFrameEntries:o,inputDelay:r-t.startTime,processingDuration:i-r,presentationDelay:Math.max(u-i,0),loadState:st(t.startTime)};return Object.assign(e,{attribution:f})}(t);e(n)}),t)},en=[2500,4e3],tn={},nn=function(e,t){!function(e,t){t=t||{},Tt((function(){var n,r=It(),i=pt("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-dt(),0),i.entries=[e],n())}))},o=ht("largest-contentful-paint",a);if(o){n=gt(e,i,en,t.reportAllChanges);var s=vt((function(){tn[i.id]||(a(o.takeRecords()),o.disconnect(),tn[i.id]=!0,n(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return jt(s)}),{once:!0,capture:!0})})),bt(s),ft((function(r){i=pt("LCP"),n=gt(e,i,en,t.reportAllChanges),mt((function(){i.value=performance.now()-r.timeStamp,tn[i.id]=!0,n(!0)}))}))}}))}((function(t){var n=function(e){var t={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:e.value};if(e.entries.length){var n=ot();if(n){var r=n.activationStart||0,i=e.entries[e.entries.length-1],a=i.url&&performance.getEntriesByType("resource").filter((function(e){return e.name===i.url}))[0],o=Math.max(0,n.responseStart-r),s=Math.max(o,a?(a.requestStart||a.startTime)-r:0),c=Math.max(s,a?a.responseEnd-r:0),l=Math.max(c,i.startTime-r);t={element:lt(i.element),timeToFirstByte:o,resourceLoadDelay:s-o,resourceLoadDuration:c-s,elementRenderDelay:l-c,navigationEntry:n,lcpEntry:i},i.url&&(t.url=i.url),a&&(t.lcpResourceEntry=a)}}return Object.assign(e,{attribution:t})}(t);e(n)}),t)};const rn="@firebase/installations",an="0.6.19-canary.a09ef786f",on=1e4,sn=`w:${an}`,cn="FIS_v2",ln=36e5,un=new h("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function fn(e){return e instanceof p&&e.code.includes("request-failed")}
427
427
  /**
428
428
  * @license
429
429
  * Copyright 2019 Google LLC
@@ -667,7 +667,7 @@ async function jn(e,t=!1){const n=e;await async function(e){const{registrationPr
667
667
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
668
668
  * See the License for the specific language governing permissions and
669
669
  * limitations under the License.
670
- */const zn="installations",Vn=e=>{const t=Ne(e.getProvider("app").getImmediate(),zn).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:r}=await On(t);return r?r.catch(console.error):Fn(t).catch(console.error),n.fid}(t),getToken:e=>jn(t,e)}};ke(new y(zn,(e=>{const t=e.getProvider("app").getImmediate(),n=function(e){if(!e||!e.options)throw xn("App Configuration");if(!e.name)throw xn("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw xn(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:n,heartbeatServiceProvider:Ne(t,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),ke(new y("installations-internal",Vn,"PRIVATE")),je(rn,an),je(rn,an,"esm2020");const Hn="@firebase/performance",qn="0.7.9-canary.60d1b18bd",Wn=qn,Kn="FB-PERF-TRACE-MEASURE",Jn="_wt_",Gn="_fcp",Xn="_fid",Yn="_lcp",Zn="_inp",Qn="_cls",er="@firebase/performance/config",tr="@firebase/performance/configexpire",nr="Performance",rr=new h("performance",nr,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),ir=new k(nr);
670
+ */const zn="installations",Vn=e=>{const t=Ne(e.getProvider("app").getImmediate(),zn).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:r}=await On(t);return r?r.catch(console.error):Fn(t).catch(console.error),n.fid}(t),getToken:e=>jn(t,e)}};ke(new y(zn,(e=>{const t=e.getProvider("app").getImmediate(),n=function(e){if(!e||!e.options)throw xn("App Configuration");if(!e.name)throw xn("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw xn(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:n,heartbeatServiceProvider:Ne(t,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),ke(new y("installations-internal",Vn,"PRIVATE")),je(rn,an),je(rn,an,"esm2020");const Hn="@firebase/performance",qn="0.7.9-canary.a09ef786f",Wn=qn,Kn="FB-PERF-TRACE-MEASURE",Jn="_wt_",Gn="_fcp",Xn="_fid",Yn="_lcp",Zn="_inp",Qn="_cls",er="@firebase/performance/config",tr="@firebase/performance/configexpire",nr="Performance",rr=new h("performance",nr,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),ir=new k(nr);
671
671
  /**
672
672
  * @license
673
673
  * Copyright 2020 Google LLC
@@ -946,7 +946,7 @@ class ni{constructor(e,t){this.app=e,this._delegate=t}get instrumentationEnabled
946
946
  * See the License for the specific language governing permissions and
947
947
  * limitations under the License.
948
948
  */
949
- var ii;(ii=rt).INTERNAL.registerComponent(new y("performance-compat",ri,"PUBLIC")),ii.registerVersion("@firebase/performance-compat","0.2.22-canary.60d1b18bd");
949
+ var ii;(ii=rt).INTERNAL.registerComponent(new y("performance-compat",ri,"PUBLIC")),ii.registerVersion("@firebase/performance-compat","0.2.22-canary.a09ef786f");
950
950
  /**
951
951
  * @license
952
952
  * Copyright 2019 Google LLC
@@ -963,5 +963,5 @@ var ii;(ii=rt).INTERNAL.registerComponent(new y("performance-compat",ri,"PUBLIC"
963
963
  * See the License for the specific language governing permissions and
964
964
  * limitations under the License.
965
965
  */
966
- return rt.registerVersion("firebase","12.6.0-canary.60d1b18bd","compat-lite"),rt}));
966
+ return rt.registerVersion("firebase","12.6.0-canary.a09ef786f","compat-lite"),rt}));
967
967
  //# sourceMappingURL=firebase-performance-standalone-compat.js.map
@@ -1,3 +1,3 @@
1
- import{registerVersion as e,_registerComponent as t,_getProvider,getApp as c}from"https://www.gstatic.com/firebasejs/12.6.0-canary.60d1b18bd/firebase-app.js";class FirebaseError extends Error{constructor(e,t,c){super(t),this.code=e,this.customData=c,this.name="FirebaseError",Object.setPrototypeOf(this,FirebaseError.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,ErrorFactory.prototype.create)}}class ErrorFactory{constructor(e,t,c){this.service=e,this.serviceName=t,this.errors=c}create(e,...t){const c=t[0]||{},w=`${this.service}/${e}`,I=this.errors[e],_=I?function replaceTemplate(e,t){return e.replace(g,((e,c)=>{const g=t[c];return null!=g?String(g):`<${c}?>`}))}(I,c):"Error",k=`${this.serviceName}: ${_} (${w}).`;return new FirebaseError(w,k,c)}}const g=/\{\$([^}]+)}/g;function deepEqual(e,t){if(e===t)return!0;const c=Object.keys(e),g=Object.keys(t);for(const w of c){if(!g.includes(w))return!1;const c=e[w],I=t[w];if(isObject(c)&&isObject(I)){if(!deepEqual(c,I))return!1}else if(c!==I)return!1}for(const e of g)if(!c.includes(e))return!1;return!0}function isObject(e){return null!==e&&"object"==typeof e}function getModularInstance(e){return e&&e._delegate?e._delegate:e}var w;!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"}(w||(w={}));const I={debug:w.DEBUG,verbose:w.VERBOSE,info:w.INFO,warn:w.WARN,error:w.ERROR,silent:w.SILENT},_=w.INFO,k={[w.DEBUG]:"log",[w.VERBOSE]:"log",[w.INFO]:"info",[w.WARN]:"warn",[w.ERROR]:"error"},defaultLogHandler=(e,t,...c)=>{if(t<e.logLevel)return;const g=(new Date).toISOString(),w=k[t];if(!w)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[w](`[${g}] ${e.name}:`,...c)};var C,M,n=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},r=function(e){if("loading"===document.readyState)return"loading";var t=n();if(t){if(e<t.domInteractive)return"loading";if(0===t.domContentLoadedEventStart||e<t.domContentLoadedEventStart)return"dom-interactive";if(0===t.domComplete||e<t.domComplete)return"dom-content-loaded"}return"complete"},i=function(e){var t=e.nodeName;return 1===e.nodeType?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},a=function(e,t){var c="";try{for(;e&&9!==e.nodeType;){var g=e,w=g.id?"#"+g.id:i(g)+(g.classList&&g.classList.value&&g.classList.value.trim()&&g.classList.value.trim().length?"."+g.classList.value.trim().replace(/\s+/g,"."):"");if(c.length+w.length>(t||100)-1)return c||w;if(c=c?w+">"+c:w,g.id)break;e=g.parentNode}}catch(e){}return c},R=-1,u=function(e){addEventListener("pageshow",(function(t){t.persisted&&(R=t.timeStamp,e(t))}),!0)},s=function(){var e=n();return e&&e.activationStart||0},f=function(e,t){var c=n(),g="navigate";return R>=0?g="back-forward-cache":c&&(document.prerendering||s()>0?g="prerender":document.wasDiscarded?g="restore":c.type&&(g=c.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:g}},d=function(e,t,c){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var g=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return g.observe(Object.assign({type:e,buffered:!0},c||{})),g}}catch(e){}},l=function(e,t,c,g){var w,I;return function(_){t.value>=0&&(_||g)&&((I=t.value-(w||0))||void 0===w)&&(w=t.value,t.delta=I,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,c),e(t))}},m=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},v=function(e){var t=!1;return function(){t||(e(),t=!0)}},L=-1,h=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},T=function(e){"hidden"===document.visibilityState&&L>-1&&(L="visibilitychange"===e.type?e.timeStamp:0,E())},y=function(){addEventListener("visibilitychange",T,!0),addEventListener("prerenderingchange",T,!0)},E=function(){removeEventListener("visibilitychange",T,!0),removeEventListener("prerenderingchange",T,!0)},S=function(){return L<0&&(L=h(),y(),u((function(){setTimeout((function(){L=h(),y()}),0)}))),{get firstHiddenTime(){return L}}},b=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},O=[1800,3e3],B=[.1,.25],D=function(e,t){!function(e,t){t=t||{},function(e,t){t=t||{},b((function(){var c,g=S(),w=f("FCP"),I=d("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(I.disconnect(),e.startTime<g.firstHiddenTime&&(w.value=Math.max(e.startTime-s(),0),w.entries.push(e),c(!0)))}))}));I&&(c=l(e,w,O,t.reportAllChanges),u((function(g){w=f("FCP"),c=l(e,w,O,t.reportAllChanges),m((function(){w.value=performance.now()-g.timeStamp,c(!0)}))})))}))}(v((function(){var c,g=f("CLS",0),w=0,I=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=I[0],c=I[I.length-1];w&&e.startTime-c.startTime<1e3&&e.startTime-t.startTime<5e3?(w+=e.value,I.push(e)):(w=e.value,I=[e])}})),w>g.value&&(g.value=w,g.entries=I,c())},_=d("layout-shift",o);_&&(c=l(e,g,B,t.reportAllChanges),p((function(){o(_.takeRecords()),c(!0)})),u((function(){w=0,g=f("CLS",0),c=l(e,g,B,t.reportAllChanges),m((function(){return c()}))})),setTimeout(c,0))})))}((function(t){var c=function(e){var t,c={};if(e.entries.length){var g=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(g&&g.sources&&g.sources.length){var w=(t=g.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];w&&(c={largestShiftTarget:a(w.node),largestShiftTime:g.startTime,largestShiftValue:g.value,largestShiftSource:w,largestShiftEntry:g,loadState:r(g.startTime)})}}return Object.assign(e,{attribution:c})}(t);e(c)}),t)},q=0,x=1/0,U=0,A=function(e){e.forEach((function(e){e.interactionId&&(x=Math.min(x,e.interactionId),U=Math.max(U,e.interactionId),q=U?(U-x)/7+1:0)}))},F=function(){return C?q:performance.interactionCount||0},P=function(){"interactionCount"in performance||C||(C=d("event",A,{type:"event",buffered:!0,durationThreshold:0}))},j=[],$=new Map,V=0,W=[],H=function(e){if(W.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=j[j.length-1],c=$.get(e.interactionId);if(c||j.length<10||e.duration>t.latency){if(c)e.duration>c.latency?(c.entries=[e],c.latency=e.duration):e.duration===c.latency&&e.startTime===c.entries[0].startTime&&c.entries.push(e);else{var g={id:e.interactionId,latency:e.duration,entries:[e]};$.set(g.id,g),j.push(g)}j.sort((function(e,t){return t.latency-e.latency})),j.length>10&&j.splice(10).forEach((function(e){return $.delete(e.id)}))}}},N=function(e){var t=self.requestIdleCallback||self.setTimeout,c=-1;return e=v(e),"hidden"===document.visibilityState?e():(c=t(e),p(e)),c},K=[200,500],z=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},b((function(){var c;P();var g,w=f("INP"),a=function(e){N((function(){e.forEach(H);var t=function(){var e=Math.min(j.length-1,Math.floor((F()-V)/50));return j[e]}();t&&t.latency!==w.value&&(w.value=t.latency,w.entries=t.entries,g())}))},I=d("event",a,{durationThreshold:null!==(c=t.durationThreshold)&&void 0!==c?c:40});g=l(e,w,K,t.reportAllChanges),I&&(I.observe({type:"first-input",buffered:!0}),p((function(){a(I.takeRecords()),g(!0)})),u((function(){V=F(),j.length=0,$.clear(),w=f("INP"),g=l(e,w,K,t.reportAllChanges)})))})))},G=[],J=[],Z=0,ee=new WeakMap,te=new Map,ne=-1,Q=function(e){G=G.concat(e),X()},X=function(){ne<0&&(ne=N(Y))},Y=function(){te.size>10&&te.forEach((function(e,t){$.has(t)||te.delete(t)}));var e=j.map((function(e){return ee.get(e.entries[0])})),t=J.length-50;J=J.filter((function(c,g){return g>=t||e.includes(c)}));for(var c=new Set,g=0;g<J.length;g++){var w=J[g];nt(w.startTime,w.processingEnd).forEach((function(e){c.add(e)}))}var I=G.length-1-50;G=G.filter((function(e,t){return e.startTime>Z&&t>I||c.has(e)})),ne=-1};W.push((function(e){e.interactionId&&e.target&&!te.has(e.interactionId)&&te.set(e.interactionId,e.target)}),(function(e){var t,c=e.startTime+e.duration;Z=Math.max(Z,e.processingEnd);for(var g=J.length-1;g>=0;g--){var w=J[g];if(Math.abs(c-w.renderTime)<=8){(t=w).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:c,entries:[e]},J.push(t)),(e.interactionId||"first-input"===e.entryType)&&ee.set(e,t),X()}));var nt=function(e,t){for(var c,g=[],w=0;c=G[w];w++)if(!(c.startTime+c.duration<e)){if(c.startTime>t)break;g.push(c)}return g},rt=function(e,t){M||(M=d("long-animation-frame",Q)),z((function(t){var c=function(e){var t=e.entries[0],c=ee.get(t),g=t.processingStart,w=c.processingEnd,I=c.entries.sort((function(e,t){return e.processingStart-t.processingStart})),_=nt(t.startTime,w),k=e.entries.find((function(e){return e.target})),C=k&&k.target||te.get(t.interactionId),M=[t.startTime+t.duration,w].concat(_.map((function(e){return e.startTime+e.duration}))),R=Math.max.apply(Math,M),L={interactionTarget:a(C),interactionTargetElement:C,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:R,processedEventEntries:I,longAnimationFrameEntries:_,inputDelay:g-t.startTime,processingDuration:w-g,presentationDelay:Math.max(R-w,0),loadState:r(t.startTime)};return Object.assign(e,{attribution:L})}(t);e(c)}),t)},re=[2500,4e3],ie={},ot=function(e,t){!function(e,t){t=t||{},b((function(){var c,g=S(),w=f("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<g.firstHiddenTime&&(w.value=Math.max(e.startTime-s(),0),w.entries=[e],c())}))},I=d("largest-contentful-paint",a);if(I){c=l(e,w,re,t.reportAllChanges);var _=v((function(){ie[w.id]||(a(I.takeRecords()),I.disconnect(),ie[w.id]=!0,c(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return N(_)}),{once:!0,capture:!0})})),p(_),u((function(g){w=f("LCP"),c=l(e,w,re,t.reportAllChanges),m((function(){w.value=performance.now()-g.timeStamp,ie[w.id]=!0,c(!0)}))}))}}))}((function(t){var c=function(e){var t={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:e.value};if(e.entries.length){var c=n();if(c){var g=c.activationStart||0,w=e.entries[e.entries.length-1],I=w.url&&performance.getEntriesByType("resource").filter((function(e){return e.name===w.url}))[0],_=Math.max(0,c.responseStart-g),k=Math.max(_,I?(I.requestStart||I.startTime)-g:0),C=Math.max(k,I?I.responseEnd-g:0),M=Math.max(C,w.startTime-g);t={element:a(w.element),timeToFirstByte:_,resourceLoadDelay:k-_,resourceLoadDuration:C-k,elementRenderDelay:M-C,navigationEntry:c,lcpEntry:w},w.url&&(t.url=w.url),I&&(t.lcpResourceEntry=I)}}return Object.assign(e,{attribution:t})}(t);e(c)}),t)};class Component{constructor(e,t,c){this.name=e,this.instanceFactory=t,this.type=c,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}}let ae,oe;const se=new WeakMap,ce=new WeakMap,ue=new WeakMap,le=new WeakMap,de=new WeakMap;let fe={get(e,t,c){if(e instanceof IDBTransaction){if("done"===t)return ce.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ue.get(e);if("store"===t)return c.objectStoreNames[1]?void 0:c.objectStore(c.objectStoreNames[0])}return wrap(e[t])},set:(e,t,c)=>(e[t]=c,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function wrapFunction(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?function getCursorAdvanceMethods(){return oe||(oe=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}().includes(e)?function(...t){return e.apply(unwrap(this),t),wrap(se.get(this))}:function(...t){return wrap(e.apply(unwrap(this),t))}:function(t,...c){const g=e.call(unwrap(this),t,...c);return ue.set(g,t.sort?t.sort():[t]),wrap(g)}}function transformCachableValue(e){return"function"==typeof e?wrapFunction(e):(e instanceof IDBTransaction&&function cacheDonePromiseForTransaction(e){if(ce.has(e))return;const t=new Promise(((t,c)=>{const unlisten=()=>{e.removeEventListener("complete",complete),e.removeEventListener("error",error),e.removeEventListener("abort",error)},complete=()=>{t(),unlisten()},error=()=>{c(e.error||new DOMException("AbortError","AbortError")),unlisten()};e.addEventListener("complete",complete),e.addEventListener("error",error),e.addEventListener("abort",error)}));ce.set(e,t)}(e),t=e,function getIdbProxyableTypes(){return ae||(ae=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}().some((e=>t instanceof e))?new Proxy(e,fe):e);var t}function wrap(e){if(e instanceof IDBRequest)return function promisifyRequest(e){const t=new Promise(((t,c)=>{const unlisten=()=>{e.removeEventListener("success",success),e.removeEventListener("error",error)},success=()=>{t(wrap(e.result)),unlisten()},error=()=>{c(e.error),unlisten()};e.addEventListener("success",success),e.addEventListener("error",error)}));return t.then((t=>{t instanceof IDBCursor&&se.set(t,e)})).catch((()=>{})),de.set(t,e),t}(e);if(le.has(e))return le.get(e);const t=transformCachableValue(e);return t!==e&&(le.set(e,t),de.set(t,e)),t}const unwrap=e=>de.get(e);const pe=["get","getKey","getAll","getAllKeys","count"],ge=["put","add","delete","clear"],me=new Map;function getMethod(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(me.get(t))return me.get(t);const c=t.replace(/FromIndex$/,""),g=t!==c,w=ge.includes(c);if(!(c in(g?IDBIndex:IDBObjectStore).prototype)||!w&&!pe.includes(c))return;const method=async function(e,...t){const I=this.transaction(e,w?"readwrite":"readonly");let _=I.store;return g&&(_=_.index(t.shift())),(await Promise.all([_[c](...t),w&&I.done]))[0]};return me.set(t,method),method}!function replaceTraps(e){fe=e(fe)}((e=>({...e,get:(t,c,g)=>getMethod(t,c)||e.get(t,c,g),has:(t,c)=>!!getMethod(t,c)||e.has(t,c)})));const he="@firebase/installations",ve="0.6.19-canary.60d1b18bd",Te=1e4,be=`w:${ve}`,ye="FIS_v2",Ee=36e5,Se=new ErrorFactory("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function isServerError(e){return e instanceof FirebaseError&&e.code.includes("request-failed")}function getInstallationsEndpoint({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function extractAuthTokenInfoFromResponse(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function getErrorFromResponse(e,t){const c=(await t.json()).error;return Se.create("request-failed",{requestName:e,serverCode:c.code,serverMessage:c.message,serverStatus:c.status})}function getHeaders({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function getHeadersWithAuth(e,{refreshToken:t}){const c=getHeaders(e);return c.append("Authorization",function getAuthorizationHeader(e){return`${ye} ${e}`}(t)),c}async function retryIfServerError(e){const t=await e();return t.status>=500&&t.status<600?e():t}function sleep(e){return new Promise((t=>{setTimeout(t,e)}))}const we=/^[cdef][\w-]{21}$/;function generateFid(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function encode(e){const t=function bufferToBase64UrlSafe(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(e);return we.test(t)?t:""}catch{return""}}function getKey(e){return`${e.appName}!${e.appId}`}const Ie=new Map;function fidChanged(e,t){const c=getKey(e);callFidChangeCallbacks(c,t),function broadcastFidChange(e,t){const c=function getBroadcastChannel(){!_e&&"BroadcastChannel"in self&&(_e=new BroadcastChannel("[Firebase] FID Change"),_e.onmessage=e=>{callFidChangeCallbacks(e.data.key,e.data.fid)});return _e}();c&&c.postMessage({key:e,fid:t});!function closeBroadcastChannel(){0===Ie.size&&_e&&(_e.close(),_e=null)}()}(c,t)}function callFidChangeCallbacks(e,t){const c=Ie.get(e);if(c)for(const e of c)e(t)}let _e=null;const Ae="firebase-installations-store";let ke=null;function getDbPromise(){return ke||(ke=function openDB(e,t,{blocked:c,upgrade:g,blocking:w,terminated:I}={}){const _=indexedDB.open(e,t),k=wrap(_);return g&&_.addEventListener("upgradeneeded",(e=>{g(wrap(_.result),e.oldVersion,e.newVersion,wrap(_.transaction),e)})),c&&_.addEventListener("blocked",(e=>c(e.oldVersion,e.newVersion,e))),k.then((e=>{I&&e.addEventListener("close",(()=>I())),w&&e.addEventListener("versionchange",(e=>w(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),k}("firebase-installations-database",1,{upgrade:(e,t)=>{if(0===t)e.createObjectStore(Ae)}})),ke}async function set(e,t){const c=getKey(e),g=(await getDbPromise()).transaction(Ae,"readwrite"),w=g.objectStore(Ae),I=await w.get(c);return await w.put(t,c),await g.done,I&&I.fid===t.fid||fidChanged(e,t.fid),t}async function remove(e){const t=getKey(e),c=(await getDbPromise()).transaction(Ae,"readwrite");await c.objectStore(Ae).delete(t),await c.done}async function update(e,t){const c=getKey(e),g=(await getDbPromise()).transaction(Ae,"readwrite"),w=g.objectStore(Ae),I=await w.get(c),_=t(I);return void 0===_?await w.delete(c):await w.put(_,c),await g.done,!_||I&&I.fid===_.fid||fidChanged(e,_.fid),_}async function getInstallationEntry(e){let t;const c=await update(e.appConfig,(c=>{const g=function updateOrCreateInstallationEntry(e){const t=e||{fid:generateFid(),registrationStatus:0};return clearTimedOutRequest(t)}(c),w=function triggerRegistrationIfNecessary(e,t){if(0===t.registrationStatus){if(!navigator.onLine){return{installationEntry:t,registrationPromise:Promise.reject(Se.create("app-offline"))}}const c={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},g=async function registerInstallation(e,t){try{const c=await async function createInstallationRequest({appConfig:e,heartbeatServiceProvider:t},{fid:c}){const g=getInstallationsEndpoint(e),w=getHeaders(e),I=t.getImmediate({optional:!0});if(I){const e=await I.getHeartbeatsHeader();e&&w.append("x-firebase-client",e)}const _={fid:c,authVersion:ye,appId:e.appId,sdkVersion:be},k={method:"POST",headers:w,body:JSON.stringify(_)},C=await retryIfServerError((()=>fetch(g,k)));if(C.ok){const e=await C.json();return{fid:e.fid||c,registrationStatus:2,refreshToken:e.refreshToken,authToken:extractAuthTokenInfoFromResponse(e.authToken)}}throw await getErrorFromResponse("Create Installation",C)}(e,t);return set(e.appConfig,c)}catch(c){throw isServerError(c)&&409===c.customData.serverCode?await remove(e.appConfig):await set(e.appConfig,{fid:t.fid,registrationStatus:0}),c}}(e,c);return{installationEntry:c,registrationPromise:g}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:waitUntilFidRegistration(e)}:{installationEntry:t}}(e,g);return t=w.registrationPromise,w.installationEntry}));return""===c.fid?{installationEntry:await t}:{installationEntry:c,registrationPromise:t}}async function waitUntilFidRegistration(e){let t=await updateInstallationRequest(e.appConfig);for(;1===t.registrationStatus;)await sleep(100),t=await updateInstallationRequest(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:c}=await getInstallationEntry(e);return c||t}return t}function updateInstallationRequest(e){return update(e,(e=>{if(!e)throw Se.create("installation-not-found");return clearTimedOutRequest(e)}))}function clearTimedOutRequest(e){return function hasInstallationRequestTimedOut(e){return 1===e.registrationStatus&&e.registrationTime+Te<Date.now()}(e)?{fid:e.fid,registrationStatus:0}:e}async function generateAuthTokenRequest({appConfig:e,heartbeatServiceProvider:t},c){const g=function getGenerateAuthTokenEndpoint(e,{fid:t}){return`${getInstallationsEndpoint(e)}/${t}/authTokens:generate`}(e,c),w=getHeadersWithAuth(e,c),I=t.getImmediate({optional:!0});if(I){const e=await I.getHeartbeatsHeader();e&&w.append("x-firebase-client",e)}const _={installation:{sdkVersion:be,appId:e.appId}},k={method:"POST",headers:w,body:JSON.stringify(_)},C=await retryIfServerError((()=>fetch(g,k)));if(C.ok){return extractAuthTokenInfoFromResponse(await C.json())}throw await getErrorFromResponse("Generate Auth Token",C)}async function refreshAuthToken(e,t=!1){let c;const g=await update(e.appConfig,(g=>{if(!isEntryRegistered(g))throw Se.create("not-registered");const w=g.authToken;if(!t&&function isAuthTokenValid(e){return 2===e.requestStatus&&!function isAuthTokenExpired(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+Ee}(e)}(w))return g;if(1===w.requestStatus)return c=async function waitUntilAuthTokenRequest(e,t){let c=await updateAuthTokenRequest(e.appConfig);for(;1===c.authToken.requestStatus;)await sleep(100),c=await updateAuthTokenRequest(e.appConfig);const g=c.authToken;return 0===g.requestStatus?refreshAuthToken(e,t):g}(e,t),g;{if(!navigator.onLine)throw Se.create("app-offline");const t=function makeAuthTokenRequestInProgressEntry(e){const t={requestStatus:1,requestTime:Date.now()};return{...e,authToken:t}}(g);return c=async function fetchAuthTokenFromServer(e,t){try{const c=await generateAuthTokenRequest(e,t),g={...t,authToken:c};return await set(e.appConfig,g),c}catch(c){if(!isServerError(c)||401!==c.customData.serverCode&&404!==c.customData.serverCode){const c={...t,authToken:{requestStatus:0}};await set(e.appConfig,c)}else await remove(e.appConfig);throw c}}(e,t),t}}));return c?await c:g.authToken}function updateAuthTokenRequest(e){return update(e,(e=>{if(!isEntryRegistered(e))throw Se.create("not-registered");return function hasAuthTokenRequestTimedOut(e){return 1===e.requestStatus&&e.requestTime+Te<Date.now()}(e.authToken)?{...e,authToken:{requestStatus:0}}:e}))}function isEntryRegistered(e){return void 0!==e&&2===e.registrationStatus}async function getToken(e,t=!1){const c=e;await async function completeInstallationRegistration(e){const{registrationPromise:t}=await getInstallationEntry(e);t&&await t}(c);return(await refreshAuthToken(c,t)).token}function getMissingValueError(e){return Se.create("missing-app-config-values",{valueName:e})}const Ce="installations",publicFactory=e=>{const t=e.getProvider("app").getImmediate(),c=function extractAppConfig(e){if(!e||!e.options)throw getMissingValueError("App Configuration");if(!e.name)throw getMissingValueError("App Name");const t=["projectId","apiKey","appId"];for(const c of t)if(!e.options[c])throw getMissingValueError(c);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:c,heartbeatServiceProvider:_getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},internalFactory=e=>{const t=e.getProvider("app").getImmediate(),c=_getProvider(t,Ce).getImmediate();return{getId:()=>async function getId(e){const t=e,{installationEntry:c,registrationPromise:g}=await getInstallationEntry(t);return g?g.catch(console.error):refreshAuthToken(t).catch(console.error),c.fid}(c),getToken:e=>getToken(c,e)}};!function registerInstallations(){t(new Component(Ce,publicFactory,"PUBLIC")),t(new Component("installations-internal",internalFactory,"PRIVATE"))}(),e(he,ve),e(he,ve,"esm2020");const Me="@firebase/performance",Re="0.7.9-canary.60d1b18bd",Pe=Re,Le="FB-PERF-TRACE-MEASURE",Ne="_wt_",Oe="_fcp",De="_fid",Fe="_lcp",Be="_inp",qe="_cls",xe="@firebase/performance/config",Ue="@firebase/performance/configexpire",je="Performance",$e=new ErrorFactory("performance",je,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),He=new class Logger{constructor(e){this.name=e,this._logLevel=_,this._logHandler=defaultLogHandler,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in w))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?I[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new 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,w.DEBUG,...e),this._logHandler(this,w.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,w.VERBOSE,...e),this._logHandler(this,w.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,w.INFO,...e),this._logHandler(this,w.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,w.WARN,...e),this._logHandler(this,w.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,w.ERROR,...e),this._logHandler(this,w.ERROR,...e)}}(je);let Ve,ze,We,Ke;He.logLevel=w.INFO;class Api{constructor(e){if(this.window=e,!e)throw $e.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay),this.onLCP=ot,this.onINP=rt,this.onCLS=D}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,c){this.performance&&this.performance.measure&&this.performance.measure(e,t,c)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&function areCookiesEnabled(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}()?!!function isIndexedDBAvailable(){try{return"object"==typeof indexedDB}catch(e){return!1}}()||(He.info("IndexedDB is not supported by current browser"),!1):(He.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,t){if(!this.PerformanceObserver)return;new this.PerformanceObserver((e=>{for(const c of e.getEntries())t(c)})).observe({entryTypes:[e]})}static getInstance(){return void 0===Ve&&(Ve=new Api(ze)),Ve}}function getIid(){return We}function mergeStrings(e,t){const c=e.length-t.length;if(c<0||c>1)throw $e.create("invalid String merger input");const g=[];for(let c=0;c<e.length;c++)g.push(e.charAt(c)),t.length>c&&g.push(t.charAt(c));return g.join("")}class SettingsService{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=mergeStrings("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=mergeStrings("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12,this.logMaxFlushSize=40}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===Ke&&(Ke=new SettingsService),Ke}}var Ge;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.VISIBLE=1]="VISIBLE",e[e.HIDDEN=2]="HIDDEN"}(Ge||(Ge={}));const Je=["firebase_","google_","ga_"],Qe=new RegExp("^[a-zA-Z]\\w*$");function getServiceWorkerStatus(){const e=Api.getInstance().navigator;return e?.serviceWorker?e.serviceWorker.controller?2:3:1}function getVisibilityState(){switch(Api.getInstance().document.visibilityState){case"visible":return Ge.VISIBLE;case"hidden":return Ge.HIDDEN;default:return Ge.UNKNOWN}}function getEffectiveConnectionType(){const e=Api.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function getAppId(e){const t=e.options?.appId;if(!t)throw $e.create("no app id");return t}const Ze="0.0.1",Xe={loggingEnabled:!0},Ye="FIREBASE_INSTALLATIONS_AUTH";function getConfig(e,t){const c=function getStoredConfig(){const e=Api.getInstance().localStorage;if(!e)return;const t=e.getItem(Ue);if(!t||!function configValid(e){return Number(e)>Date.now()}(t))return;const c=e.getItem(xe);if(!c)return;try{return JSON.parse(c)}catch{return}}();return c?(processConfig(c),Promise.resolve()):function getRemoteConfig(e,t){return function getAuthTokenPromise(e){const t=e.getToken();return t.then((e=>{})),t}(e.installations).then((c=>{const g=function getProjectId(e){const t=e.options?.projectId;if(!t)throw $e.create("no project id");return t}(e.app),w=function getApiKey(e){const t=e.options?.apiKey;if(!t)throw $e.create("no api key");return t}(e.app),I=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${g}/namespaces/fireperf:fetch?key=${w}`,{method:"POST",headers:{Authorization:`${Ye} ${c}`},body:JSON.stringify({app_instance_id:t,app_instance_id_token:c,app_id:getAppId(e.app),app_version:Pe,sdk_version:Ze})});return fetch(I).then((e=>{if(e.ok)return e.json();throw $e.create("RC response not ok")}))})).catch((()=>{He.info(et)}))}(e,t).then(processConfig).then((e=>function storeConfig(e){const t=Api.getInstance().localStorage;if(!e||!t)return;t.setItem(xe,JSON.stringify(e)),t.setItem(Ue,String(Date.now()+60*SettingsService.getInstance().configTimeToLive*60*1e3))}(e)),(()=>{}))}const et="Could not fetch config, will use default configs";function processConfig(e){if(!e)return e;const t=SettingsService.getInstance(),c=e.entries||{};return void 0!==c.fpr_enabled?t.loggingEnabled="true"===String(c.fpr_enabled):t.loggingEnabled=Xe.loggingEnabled,c.fpr_log_source?t.logSource=Number(c.fpr_log_source):Xe.logSource&&(t.logSource=Xe.logSource),c.fpr_log_endpoint_url?t.logEndPointUrl=c.fpr_log_endpoint_url:Xe.logEndPointUrl&&(t.logEndPointUrl=Xe.logEndPointUrl),c.fpr_log_transport_key?t.transportKey=c.fpr_log_transport_key:Xe.transportKey&&(t.transportKey=Xe.transportKey),void 0!==c.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(c.fpr_vc_network_request_sampling_rate):void 0!==Xe.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=Xe.networkRequestsSamplingRate),void 0!==c.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(c.fpr_vc_trace_sampling_rate):void 0!==Xe.tracesSamplingRate&&(t.tracesSamplingRate=Xe.tracesSamplingRate),c.fpr_log_max_flush_size?t.logMaxFlushSize=Number(c.fpr_log_max_flush_size):Xe.logMaxFlushSize&&(t.logMaxFlushSize=Xe.logMaxFlushSize),t.logTraceAfterSampling=shouldLogAfterSampling(t.tracesSamplingRate),t.logNetworkAfterSampling=shouldLogAfterSampling(t.networkRequestsSamplingRate),e}function shouldLogAfterSampling(e){return Math.random()<=e}let tt,it=1;function getInitializationPromise(e){return it=2,tt=tt||function initializePerf(e){return function getDocumentReadyComplete(){const e=Api.getInstance().document;return new Promise((t=>{if(e&&"complete"!==e.readyState){const handler=()=>{"complete"===e.readyState&&(e.removeEventListener("readystatechange",handler),t())};e.addEventListener("readystatechange",handler)}else t()}))}().then((()=>function getIidPromise(e){const t=e.getId();return t.then((e=>{We=e})),t}(e.installations))).then((t=>getConfig(e,t))).then((()=>changeInitializationStatus()),(()=>changeInitializationStatus()))}(e),tt}function changeInitializationStatus(){it=3}const at=1e4,st=new TextEncoder;let ct,ut=3,lt=[],dt=!1;function processQueue(e){setTimeout((()=>{ut<=0||(lt.length>0&&function dispatchQueueEvents(){const e=lt.splice(0,1e3);(function postToFlEndpoint(e){const t=SettingsService.getInstance().getFlTransportFullUrl();return st.encode(e).length<=65536&&navigator.sendBeacon&&navigator.sendBeacon(t,e)?Promise.resolve():fetch(t,{method:"POST",body:e})})(buildPayload(e)).then((()=>{ut=3})).catch((()=>{lt=[...e,...lt],ut--,He.info(`Tries left: ${ut}.`),processQueue(at)}))}(),processQueue(at))}),e)}function buildPayload(e){const t=e.map((e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)}))),c={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:SettingsService.getInstance().logSource,log_event:t};return JSON.stringify(c)}function transportHandler(e){return(...t)=>{!function addToQueue(e){if(!e.eventTime||!e.message)throw $e.create("invalid cc log");lt=[...lt,e]}({message:e(...t),eventTime:Date.now()})}}function flushQueuedEvents(){const e=SettingsService.getInstance().getFlTransportFullUrl();for(;lt.length>0;){const t=lt.splice(-SettingsService.getInstance().logMaxFlushSize),c=buildPayload(t);if(!navigator.sendBeacon||!navigator.sendBeacon(e,c)){lt=[...lt,...t];break}}if(lt.length>0){const t=buildPayload(lt);fetch(e,{method:"POST",body:t}).catch((()=>{He.info("Failed flushing queued events.")}))}}function sendLog(e,t){ct||(ct={send:transportHandler(serializer),flush:flushQueuedEvents}),ct.send(e,t)}function logTrace(e){const t=SettingsService.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&Api.getInstance().requiredApisAvailable()&&(!function isPerfInitialized(){return 3===it}()?getInitializationPromise(e.performanceController).then((()=>sendTraceLog(e)),(()=>sendTraceLog(e))):sendTraceLog(e))}function sendTraceLog(e){if(!getIid())return;const t=SettingsService.getInstance();t.loggingEnabled&&t.logTraceAfterSampling&&sendLog(e,1)}function serializer(e,t){return 0===t?function serializeNetworkRequest(e){const t={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},c={application_info:getApplicationInfo(e.performanceController.app),network_request_metric:t};return JSON.stringify(c)}(e):function serializeTrace(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);const c=e.getAttributes();0!==Object.keys(c).length&&(t.custom_attributes=c);const g={application_info:getApplicationInfo(e.performanceController.app),trace_metric:t};return JSON.stringify(g)}(e)}function getApplicationInfo(e){return{google_app_id:getAppId(e),app_instance_id:getIid(),web_app_info:{sdk_version:Pe,page_url:Api.getInstance().getUrl(),service_worker_status:getServiceWorkerStatus(),visibility_state:getVisibilityState(),effective_connection_type:getEffectiveConnectionType()},application_process_state:0}}function createNetworkRequestEntry(e,t){const c=t;if(!c||void 0===c.responseStart)return;const g=Api.getInstance().getTimeOrigin(),w=Math.floor(1e3*(c.startTime+g)),I=c.responseStart?Math.floor(1e3*(c.responseStart-c.startTime)):void 0,_=Math.floor(1e3*(c.responseEnd-c.startTime));!function logNetworkRequest(e){const t=SettingsService.getInstance();if(!t.instrumentationEnabled)return;const c=e.url,g=t.logEndPointUrl.split("?")[0],w=t.flTransportEndpointUrl.split("?")[0];c!==g&&c!==w&&t.loggingEnabled&&t.logNetworkAfterSampling&&sendLog(e,0)}({performanceController:e,url:c.name&&c.name.split("?")[0],responsePayloadBytes:c.transferSize,startTimeUs:w,timeToResponseInitiatedUs:I,timeToResponseCompletedUs:_})}const ft=["_fp",Oe,De,Fe,qe,Be];class Trace{constructor(e,t,c=!1,g){this.performanceController=e,this.name=t,this.isAuto=c,this.state=1,this.customAttributes={},this.counters={},this.api=Api.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=g||`${Le}-${this.randomId}-${this.name}`,g&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw $e.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw $e.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),logTrace(this)}record(e,t,c){if(e<=0)throw $e.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw $e.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),c&&c.attributes&&(this.customAttributes={...c.attributes}),c&&c.metrics)for(const e of Object.keys(c.metrics))isNaN(Number(c.metrics[e]))||(this.counters[e]=Math.floor(Number(c.metrics[e])));logTrace(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(!function isValidMetricName(e,t){return!(0===e.length||e.length>100)&&(t&&t.startsWith(Ne)&&ft.indexOf(e)>-1||!e.startsWith("_"))}(e,this.name))throw $e.create("invalid custom metric name",{customMetricName:e});this.counters[e]=function convertMetricValueToInteger(e){const t=Math.floor(e);return t<e&&He.info(`Metric value should be an Integer, setting the value as : ${t}.`),t}(t??0)}getMetric(e){return this.counters[e]||0}putAttribute(e,t){const c=function isValidCustomAttributeName(e){return!(0===e.length||e.length>40)&&(!Je.some((t=>e.startsWith(t)))&&!!e.match(Qe))}(e),g=function isValidCustomAttributeValue(e){return 0!==e.length&&e.length<=100}(t);if(c&&g)this.customAttributes[e]=t;else{if(!c)throw $e.create("invalid attribute name",{attributeName:e});if(!g)throw $e.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return{...this.customAttributes}}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){const e=this.api.getEntriesByName(this.traceMeasure),t=e&&e[0];t&&(this.durationUs=Math.floor(1e3*t.duration),this.startTimeUs=Math.floor(1e3*(t.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,c,g,w){const I=Api.getInstance().getUrl();if(!I)return;const _=new Trace(e,Ne+I,!0),k=Math.floor(1e3*Api.getInstance().getTimeOrigin());_.setStartTime(k),t&&t[0]&&(_.setDuration(Math.floor(1e3*t[0].duration)),_.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),_.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),_.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));if(c){const e=c.find((e=>"first-paint"===e.name));e&&e.startTime&&_.putMetric("_fp",Math.floor(1e3*e.startTime));const t=c.find((e=>"first-contentful-paint"===e.name));t&&t.startTime&&_.putMetric(Oe,Math.floor(1e3*t.startTime)),w&&_.putMetric(De,Math.floor(1e3*w))}this.addWebVitalMetric(_,Fe,"lcp_element",g.lcp),this.addWebVitalMetric(_,qe,"cls_largestShiftTarget",g.cls),this.addWebVitalMetric(_,Be,"inp_interactionTarget",g.inp),logTrace(_),function flushLogs(){ct&&ct.flush()}()}static addWebVitalMetric(e,t,c,g){g&&(e.putMetric(t,Math.floor(1e3*g.value)),g.elementAttribution&&(g.elementAttribution.length>100?e.putAttribute(c,g.elementAttribution.substring(0,100)):e.putAttribute(c,g.elementAttribution)))}static createUserTimingTrace(e,t){logTrace(new Trace(e,t,!1,t))}}let pt,gt={},mt=!1;function setupOobResources(e){getIid()&&(setTimeout((()=>function setupOobTraces(e){const t=Api.getInstance();"onpagehide"in window?t.document.addEventListener("pagehide",(()=>sendOobTrace(e))):t.document.addEventListener("unload",(()=>sendOobTrace(e)));t.document.addEventListener("visibilitychange",(()=>{"hidden"===t.document.visibilityState&&sendOobTrace(e)})),t.onFirstInputDelay&&t.onFirstInputDelay((e=>{pt=e}));t.onLCP((e=>{gt.lcp={value:e.value,elementAttribution:e.attribution?.element}})),t.onCLS((e=>{gt.cls={value:e.value,elementAttribution:e.attribution?.largestShiftTarget}})),t.onINP((e=>{gt.inp={value:e.value,elementAttribution:e.attribution?.interactionTarget}}))}(e)),0),setTimeout((()=>function setupNetworkRequests(e){const t=Api.getInstance(),c=t.getEntriesByType("resource");for(const t of c)createNetworkRequestEntry(e,t);t.setupObserver("resource",(t=>createNetworkRequestEntry(e,t)))}(e)),0),setTimeout((()=>function setupUserTimingTraces(e){const t=Api.getInstance(),c=t.getEntriesByType("measure");for(const t of c)createUserTimingTrace(e,t);t.setupObserver("measure",(t=>createUserTimingTrace(e,t)))}(e)),0))}function createUserTimingTrace(e,t){const c=t.name;c.substring(0,21)!==Le&&Trace.createUserTimingTrace(e,c)}function sendOobTrace(e){if(!mt){mt=!0;const t=Api.getInstance(),c=t.getEntriesByType("navigation"),g=t.getEntriesByType("paint");setTimeout((()=>{Trace.createOobTrace(e,c,g,gt,pt)}),0)}}class PerformanceController{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==e?.dataCollectionEnabled&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==e?.instrumentationEnabled&&(this.instrumentationEnabled=e.instrumentationEnabled),Api.getInstance().requiredApisAvailable()?function validateIndexedDBOpenable(){return new Promise(((e,t)=>{try{let c=!0;const g="validate-browser-context-for-indexeddb-analytics-module",w=self.indexedDB.open(g);w.onsuccess=()=>{w.result.close(),c||self.indexedDB.deleteDatabase(g),e(!0)},w.onupgradeneeded=()=>{c=!1},w.onerror=()=>{t(w.error?.message||"")}}catch(e){t(e)}}))}().then((e=>{e&&(!function setupTransportService(){dt||(processQueue(5500),dt=!0)}(),getInitializationPromise(this).then((()=>setupOobResources(this)),(()=>setupOobResources(this))),this.initialized=!0)})).catch((e=>{He.info(`Environment doesn't support IndexedDB: ${e}`)})):He.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){SettingsService.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return SettingsService.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){SettingsService.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return SettingsService.getInstance().dataCollectionEnabled}}function getPerformance(e=c()){e=getModularInstance(e);return _getProvider(e,"performance").getImmediate()}function initializePerformance(e,t){e=getModularInstance(e);const c=_getProvider(e,"performance");if(c.isInitialized()){const e=c.getImmediate();if(deepEqual(c.getOptions(),t??{}))return e;throw $e.create("already initialized")}return c.initialize({options:t})}function trace(e,t){return e=getModularInstance(e),new Trace(e,t)}const factory=(e,{options:t})=>{const c=e.getProvider("app").getImmediate(),g=e.getProvider("installations-internal").getImmediate();if("[DEFAULT]"!==c.name)throw $e.create("FB not default");if("undefined"==typeof window)throw $e.create("no window");!function setupApi(e){ze=e}(window);const w=new PerformanceController(c,g);return w._init(t),w};!function registerPerformance(){t(new Component("performance",factory,"PUBLIC")),e(Me,Re),e(Me,Re,"esm2020")}();export{getPerformance,initializePerformance,trace};
1
+ import{registerVersion as e,_registerComponent as t,_getProvider,getApp as c}from"https://www.gstatic.com/firebasejs/12.6.0-canary.a09ef786f/firebase-app.js";class FirebaseError extends Error{constructor(e,t,c){super(t),this.code=e,this.customData=c,this.name="FirebaseError",Object.setPrototypeOf(this,FirebaseError.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,ErrorFactory.prototype.create)}}class ErrorFactory{constructor(e,t,c){this.service=e,this.serviceName=t,this.errors=c}create(e,...t){const c=t[0]||{},w=`${this.service}/${e}`,I=this.errors[e],_=I?function replaceTemplate(e,t){return e.replace(g,((e,c)=>{const g=t[c];return null!=g?String(g):`<${c}?>`}))}(I,c):"Error",k=`${this.serviceName}: ${_} (${w}).`;return new FirebaseError(w,k,c)}}const g=/\{\$([^}]+)}/g;function deepEqual(e,t){if(e===t)return!0;const c=Object.keys(e),g=Object.keys(t);for(const w of c){if(!g.includes(w))return!1;const c=e[w],I=t[w];if(isObject(c)&&isObject(I)){if(!deepEqual(c,I))return!1}else if(c!==I)return!1}for(const e of g)if(!c.includes(e))return!1;return!0}function isObject(e){return null!==e&&"object"==typeof e}function getModularInstance(e){return e&&e._delegate?e._delegate:e}var w;!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"}(w||(w={}));const I={debug:w.DEBUG,verbose:w.VERBOSE,info:w.INFO,warn:w.WARN,error:w.ERROR,silent:w.SILENT},_=w.INFO,k={[w.DEBUG]:"log",[w.VERBOSE]:"log",[w.INFO]:"info",[w.WARN]:"warn",[w.ERROR]:"error"},defaultLogHandler=(e,t,...c)=>{if(t<e.logLevel)return;const g=(new Date).toISOString(),w=k[t];if(!w)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[w](`[${g}] ${e.name}:`,...c)};var C,M,n=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},r=function(e){if("loading"===document.readyState)return"loading";var t=n();if(t){if(e<t.domInteractive)return"loading";if(0===t.domContentLoadedEventStart||e<t.domContentLoadedEventStart)return"dom-interactive";if(0===t.domComplete||e<t.domComplete)return"dom-content-loaded"}return"complete"},i=function(e){var t=e.nodeName;return 1===e.nodeType?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},a=function(e,t){var c="";try{for(;e&&9!==e.nodeType;){var g=e,w=g.id?"#"+g.id:i(g)+(g.classList&&g.classList.value&&g.classList.value.trim()&&g.classList.value.trim().length?"."+g.classList.value.trim().replace(/\s+/g,"."):"");if(c.length+w.length>(t||100)-1)return c||w;if(c=c?w+">"+c:w,g.id)break;e=g.parentNode}}catch(e){}return c},R=-1,u=function(e){addEventListener("pageshow",(function(t){t.persisted&&(R=t.timeStamp,e(t))}),!0)},s=function(){var e=n();return e&&e.activationStart||0},f=function(e,t){var c=n(),g="navigate";return R>=0?g="back-forward-cache":c&&(document.prerendering||s()>0?g="prerender":document.wasDiscarded?g="restore":c.type&&(g=c.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:g}},d=function(e,t,c){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var g=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return g.observe(Object.assign({type:e,buffered:!0},c||{})),g}}catch(e){}},l=function(e,t,c,g){var w,I;return function(_){t.value>=0&&(_||g)&&((I=t.value-(w||0))||void 0===w)&&(w=t.value,t.delta=I,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,c),e(t))}},m=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},v=function(e){var t=!1;return function(){t||(e(),t=!0)}},L=-1,h=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},T=function(e){"hidden"===document.visibilityState&&L>-1&&(L="visibilitychange"===e.type?e.timeStamp:0,E())},y=function(){addEventListener("visibilitychange",T,!0),addEventListener("prerenderingchange",T,!0)},E=function(){removeEventListener("visibilitychange",T,!0),removeEventListener("prerenderingchange",T,!0)},S=function(){return L<0&&(L=h(),y(),u((function(){setTimeout((function(){L=h(),y()}),0)}))),{get firstHiddenTime(){return L}}},b=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},O=[1800,3e3],B=[.1,.25],D=function(e,t){!function(e,t){t=t||{},function(e,t){t=t||{},b((function(){var c,g=S(),w=f("FCP"),I=d("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(I.disconnect(),e.startTime<g.firstHiddenTime&&(w.value=Math.max(e.startTime-s(),0),w.entries.push(e),c(!0)))}))}));I&&(c=l(e,w,O,t.reportAllChanges),u((function(g){w=f("FCP"),c=l(e,w,O,t.reportAllChanges),m((function(){w.value=performance.now()-g.timeStamp,c(!0)}))})))}))}(v((function(){var c,g=f("CLS",0),w=0,I=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=I[0],c=I[I.length-1];w&&e.startTime-c.startTime<1e3&&e.startTime-t.startTime<5e3?(w+=e.value,I.push(e)):(w=e.value,I=[e])}})),w>g.value&&(g.value=w,g.entries=I,c())},_=d("layout-shift",o);_&&(c=l(e,g,B,t.reportAllChanges),p((function(){o(_.takeRecords()),c(!0)})),u((function(){w=0,g=f("CLS",0),c=l(e,g,B,t.reportAllChanges),m((function(){return c()}))})),setTimeout(c,0))})))}((function(t){var c=function(e){var t,c={};if(e.entries.length){var g=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(g&&g.sources&&g.sources.length){var w=(t=g.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];w&&(c={largestShiftTarget:a(w.node),largestShiftTime:g.startTime,largestShiftValue:g.value,largestShiftSource:w,largestShiftEntry:g,loadState:r(g.startTime)})}}return Object.assign(e,{attribution:c})}(t);e(c)}),t)},q=0,x=1/0,U=0,A=function(e){e.forEach((function(e){e.interactionId&&(x=Math.min(x,e.interactionId),U=Math.max(U,e.interactionId),q=U?(U-x)/7+1:0)}))},F=function(){return C?q:performance.interactionCount||0},P=function(){"interactionCount"in performance||C||(C=d("event",A,{type:"event",buffered:!0,durationThreshold:0}))},j=[],$=new Map,V=0,W=[],H=function(e){if(W.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=j[j.length-1],c=$.get(e.interactionId);if(c||j.length<10||e.duration>t.latency){if(c)e.duration>c.latency?(c.entries=[e],c.latency=e.duration):e.duration===c.latency&&e.startTime===c.entries[0].startTime&&c.entries.push(e);else{var g={id:e.interactionId,latency:e.duration,entries:[e]};$.set(g.id,g),j.push(g)}j.sort((function(e,t){return t.latency-e.latency})),j.length>10&&j.splice(10).forEach((function(e){return $.delete(e.id)}))}}},N=function(e){var t=self.requestIdleCallback||self.setTimeout,c=-1;return e=v(e),"hidden"===document.visibilityState?e():(c=t(e),p(e)),c},K=[200,500],z=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},b((function(){var c;P();var g,w=f("INP"),a=function(e){N((function(){e.forEach(H);var t=function(){var e=Math.min(j.length-1,Math.floor((F()-V)/50));return j[e]}();t&&t.latency!==w.value&&(w.value=t.latency,w.entries=t.entries,g())}))},I=d("event",a,{durationThreshold:null!==(c=t.durationThreshold)&&void 0!==c?c:40});g=l(e,w,K,t.reportAllChanges),I&&(I.observe({type:"first-input",buffered:!0}),p((function(){a(I.takeRecords()),g(!0)})),u((function(){V=F(),j.length=0,$.clear(),w=f("INP"),g=l(e,w,K,t.reportAllChanges)})))})))},G=[],J=[],Z=0,ee=new WeakMap,te=new Map,ne=-1,Q=function(e){G=G.concat(e),X()},X=function(){ne<0&&(ne=N(Y))},Y=function(){te.size>10&&te.forEach((function(e,t){$.has(t)||te.delete(t)}));var e=j.map((function(e){return ee.get(e.entries[0])})),t=J.length-50;J=J.filter((function(c,g){return g>=t||e.includes(c)}));for(var c=new Set,g=0;g<J.length;g++){var w=J[g];nt(w.startTime,w.processingEnd).forEach((function(e){c.add(e)}))}var I=G.length-1-50;G=G.filter((function(e,t){return e.startTime>Z&&t>I||c.has(e)})),ne=-1};W.push((function(e){e.interactionId&&e.target&&!te.has(e.interactionId)&&te.set(e.interactionId,e.target)}),(function(e){var t,c=e.startTime+e.duration;Z=Math.max(Z,e.processingEnd);for(var g=J.length-1;g>=0;g--){var w=J[g];if(Math.abs(c-w.renderTime)<=8){(t=w).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:c,entries:[e]},J.push(t)),(e.interactionId||"first-input"===e.entryType)&&ee.set(e,t),X()}));var nt=function(e,t){for(var c,g=[],w=0;c=G[w];w++)if(!(c.startTime+c.duration<e)){if(c.startTime>t)break;g.push(c)}return g},rt=function(e,t){M||(M=d("long-animation-frame",Q)),z((function(t){var c=function(e){var t=e.entries[0],c=ee.get(t),g=t.processingStart,w=c.processingEnd,I=c.entries.sort((function(e,t){return e.processingStart-t.processingStart})),_=nt(t.startTime,w),k=e.entries.find((function(e){return e.target})),C=k&&k.target||te.get(t.interactionId),M=[t.startTime+t.duration,w].concat(_.map((function(e){return e.startTime+e.duration}))),R=Math.max.apply(Math,M),L={interactionTarget:a(C),interactionTargetElement:C,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:R,processedEventEntries:I,longAnimationFrameEntries:_,inputDelay:g-t.startTime,processingDuration:w-g,presentationDelay:Math.max(R-w,0),loadState:r(t.startTime)};return Object.assign(e,{attribution:L})}(t);e(c)}),t)},re=[2500,4e3],ie={},ot=function(e,t){!function(e,t){t=t||{},b((function(){var c,g=S(),w=f("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<g.firstHiddenTime&&(w.value=Math.max(e.startTime-s(),0),w.entries=[e],c())}))},I=d("largest-contentful-paint",a);if(I){c=l(e,w,re,t.reportAllChanges);var _=v((function(){ie[w.id]||(a(I.takeRecords()),I.disconnect(),ie[w.id]=!0,c(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return N(_)}),{once:!0,capture:!0})})),p(_),u((function(g){w=f("LCP"),c=l(e,w,re,t.reportAllChanges),m((function(){w.value=performance.now()-g.timeStamp,ie[w.id]=!0,c(!0)}))}))}}))}((function(t){var c=function(e){var t={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:e.value};if(e.entries.length){var c=n();if(c){var g=c.activationStart||0,w=e.entries[e.entries.length-1],I=w.url&&performance.getEntriesByType("resource").filter((function(e){return e.name===w.url}))[0],_=Math.max(0,c.responseStart-g),k=Math.max(_,I?(I.requestStart||I.startTime)-g:0),C=Math.max(k,I?I.responseEnd-g:0),M=Math.max(C,w.startTime-g);t={element:a(w.element),timeToFirstByte:_,resourceLoadDelay:k-_,resourceLoadDuration:C-k,elementRenderDelay:M-C,navigationEntry:c,lcpEntry:w},w.url&&(t.url=w.url),I&&(t.lcpResourceEntry=I)}}return Object.assign(e,{attribution:t})}(t);e(c)}),t)};class Component{constructor(e,t,c){this.name=e,this.instanceFactory=t,this.type=c,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}}let ae,oe;const se=new WeakMap,ce=new WeakMap,ue=new WeakMap,le=new WeakMap,de=new WeakMap;let fe={get(e,t,c){if(e instanceof IDBTransaction){if("done"===t)return ce.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ue.get(e);if("store"===t)return c.objectStoreNames[1]?void 0:c.objectStore(c.objectStoreNames[0])}return wrap(e[t])},set:(e,t,c)=>(e[t]=c,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function wrapFunction(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?function getCursorAdvanceMethods(){return oe||(oe=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}().includes(e)?function(...t){return e.apply(unwrap(this),t),wrap(se.get(this))}:function(...t){return wrap(e.apply(unwrap(this),t))}:function(t,...c){const g=e.call(unwrap(this),t,...c);return ue.set(g,t.sort?t.sort():[t]),wrap(g)}}function transformCachableValue(e){return"function"==typeof e?wrapFunction(e):(e instanceof IDBTransaction&&function cacheDonePromiseForTransaction(e){if(ce.has(e))return;const t=new Promise(((t,c)=>{const unlisten=()=>{e.removeEventListener("complete",complete),e.removeEventListener("error",error),e.removeEventListener("abort",error)},complete=()=>{t(),unlisten()},error=()=>{c(e.error||new DOMException("AbortError","AbortError")),unlisten()};e.addEventListener("complete",complete),e.addEventListener("error",error),e.addEventListener("abort",error)}));ce.set(e,t)}(e),t=e,function getIdbProxyableTypes(){return ae||(ae=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}().some((e=>t instanceof e))?new Proxy(e,fe):e);var t}function wrap(e){if(e instanceof IDBRequest)return function promisifyRequest(e){const t=new Promise(((t,c)=>{const unlisten=()=>{e.removeEventListener("success",success),e.removeEventListener("error",error)},success=()=>{t(wrap(e.result)),unlisten()},error=()=>{c(e.error),unlisten()};e.addEventListener("success",success),e.addEventListener("error",error)}));return t.then((t=>{t instanceof IDBCursor&&se.set(t,e)})).catch((()=>{})),de.set(t,e),t}(e);if(le.has(e))return le.get(e);const t=transformCachableValue(e);return t!==e&&(le.set(e,t),de.set(t,e)),t}const unwrap=e=>de.get(e);const pe=["get","getKey","getAll","getAllKeys","count"],ge=["put","add","delete","clear"],me=new Map;function getMethod(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(me.get(t))return me.get(t);const c=t.replace(/FromIndex$/,""),g=t!==c,w=ge.includes(c);if(!(c in(g?IDBIndex:IDBObjectStore).prototype)||!w&&!pe.includes(c))return;const method=async function(e,...t){const I=this.transaction(e,w?"readwrite":"readonly");let _=I.store;return g&&(_=_.index(t.shift())),(await Promise.all([_[c](...t),w&&I.done]))[0]};return me.set(t,method),method}!function replaceTraps(e){fe=e(fe)}((e=>({...e,get:(t,c,g)=>getMethod(t,c)||e.get(t,c,g),has:(t,c)=>!!getMethod(t,c)||e.has(t,c)})));const he="@firebase/installations",ve="0.6.19-canary.a09ef786f",Te=1e4,be=`w:${ve}`,ye="FIS_v2",Ee=36e5,Se=new ErrorFactory("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function isServerError(e){return e instanceof FirebaseError&&e.code.includes("request-failed")}function getInstallationsEndpoint({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function extractAuthTokenInfoFromResponse(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function getErrorFromResponse(e,t){const c=(await t.json()).error;return Se.create("request-failed",{requestName:e,serverCode:c.code,serverMessage:c.message,serverStatus:c.status})}function getHeaders({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function getHeadersWithAuth(e,{refreshToken:t}){const c=getHeaders(e);return c.append("Authorization",function getAuthorizationHeader(e){return`${ye} ${e}`}(t)),c}async function retryIfServerError(e){const t=await e();return t.status>=500&&t.status<600?e():t}function sleep(e){return new Promise((t=>{setTimeout(t,e)}))}const we=/^[cdef][\w-]{21}$/;function generateFid(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function encode(e){const t=function bufferToBase64UrlSafe(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(e);return we.test(t)?t:""}catch{return""}}function getKey(e){return`${e.appName}!${e.appId}`}const Ie=new Map;function fidChanged(e,t){const c=getKey(e);callFidChangeCallbacks(c,t),function broadcastFidChange(e,t){const c=function getBroadcastChannel(){!_e&&"BroadcastChannel"in self&&(_e=new BroadcastChannel("[Firebase] FID Change"),_e.onmessage=e=>{callFidChangeCallbacks(e.data.key,e.data.fid)});return _e}();c&&c.postMessage({key:e,fid:t});!function closeBroadcastChannel(){0===Ie.size&&_e&&(_e.close(),_e=null)}()}(c,t)}function callFidChangeCallbacks(e,t){const c=Ie.get(e);if(c)for(const e of c)e(t)}let _e=null;const Ae="firebase-installations-store";let ke=null;function getDbPromise(){return ke||(ke=function openDB(e,t,{blocked:c,upgrade:g,blocking:w,terminated:I}={}){const _=indexedDB.open(e,t),k=wrap(_);return g&&_.addEventListener("upgradeneeded",(e=>{g(wrap(_.result),e.oldVersion,e.newVersion,wrap(_.transaction),e)})),c&&_.addEventListener("blocked",(e=>c(e.oldVersion,e.newVersion,e))),k.then((e=>{I&&e.addEventListener("close",(()=>I())),w&&e.addEventListener("versionchange",(e=>w(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),k}("firebase-installations-database",1,{upgrade:(e,t)=>{if(0===t)e.createObjectStore(Ae)}})),ke}async function set(e,t){const c=getKey(e),g=(await getDbPromise()).transaction(Ae,"readwrite"),w=g.objectStore(Ae),I=await w.get(c);return await w.put(t,c),await g.done,I&&I.fid===t.fid||fidChanged(e,t.fid),t}async function remove(e){const t=getKey(e),c=(await getDbPromise()).transaction(Ae,"readwrite");await c.objectStore(Ae).delete(t),await c.done}async function update(e,t){const c=getKey(e),g=(await getDbPromise()).transaction(Ae,"readwrite"),w=g.objectStore(Ae),I=await w.get(c),_=t(I);return void 0===_?await w.delete(c):await w.put(_,c),await g.done,!_||I&&I.fid===_.fid||fidChanged(e,_.fid),_}async function getInstallationEntry(e){let t;const c=await update(e.appConfig,(c=>{const g=function updateOrCreateInstallationEntry(e){const t=e||{fid:generateFid(),registrationStatus:0};return clearTimedOutRequest(t)}(c),w=function triggerRegistrationIfNecessary(e,t){if(0===t.registrationStatus){if(!navigator.onLine){return{installationEntry:t,registrationPromise:Promise.reject(Se.create("app-offline"))}}const c={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},g=async function registerInstallation(e,t){try{const c=await async function createInstallationRequest({appConfig:e,heartbeatServiceProvider:t},{fid:c}){const g=getInstallationsEndpoint(e),w=getHeaders(e),I=t.getImmediate({optional:!0});if(I){const e=await I.getHeartbeatsHeader();e&&w.append("x-firebase-client",e)}const _={fid:c,authVersion:ye,appId:e.appId,sdkVersion:be},k={method:"POST",headers:w,body:JSON.stringify(_)},C=await retryIfServerError((()=>fetch(g,k)));if(C.ok){const e=await C.json();return{fid:e.fid||c,registrationStatus:2,refreshToken:e.refreshToken,authToken:extractAuthTokenInfoFromResponse(e.authToken)}}throw await getErrorFromResponse("Create Installation",C)}(e,t);return set(e.appConfig,c)}catch(c){throw isServerError(c)&&409===c.customData.serverCode?await remove(e.appConfig):await set(e.appConfig,{fid:t.fid,registrationStatus:0}),c}}(e,c);return{installationEntry:c,registrationPromise:g}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:waitUntilFidRegistration(e)}:{installationEntry:t}}(e,g);return t=w.registrationPromise,w.installationEntry}));return""===c.fid?{installationEntry:await t}:{installationEntry:c,registrationPromise:t}}async function waitUntilFidRegistration(e){let t=await updateInstallationRequest(e.appConfig);for(;1===t.registrationStatus;)await sleep(100),t=await updateInstallationRequest(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:c}=await getInstallationEntry(e);return c||t}return t}function updateInstallationRequest(e){return update(e,(e=>{if(!e)throw Se.create("installation-not-found");return clearTimedOutRequest(e)}))}function clearTimedOutRequest(e){return function hasInstallationRequestTimedOut(e){return 1===e.registrationStatus&&e.registrationTime+Te<Date.now()}(e)?{fid:e.fid,registrationStatus:0}:e}async function generateAuthTokenRequest({appConfig:e,heartbeatServiceProvider:t},c){const g=function getGenerateAuthTokenEndpoint(e,{fid:t}){return`${getInstallationsEndpoint(e)}/${t}/authTokens:generate`}(e,c),w=getHeadersWithAuth(e,c),I=t.getImmediate({optional:!0});if(I){const e=await I.getHeartbeatsHeader();e&&w.append("x-firebase-client",e)}const _={installation:{sdkVersion:be,appId:e.appId}},k={method:"POST",headers:w,body:JSON.stringify(_)},C=await retryIfServerError((()=>fetch(g,k)));if(C.ok){return extractAuthTokenInfoFromResponse(await C.json())}throw await getErrorFromResponse("Generate Auth Token",C)}async function refreshAuthToken(e,t=!1){let c;const g=await update(e.appConfig,(g=>{if(!isEntryRegistered(g))throw Se.create("not-registered");const w=g.authToken;if(!t&&function isAuthTokenValid(e){return 2===e.requestStatus&&!function isAuthTokenExpired(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+Ee}(e)}(w))return g;if(1===w.requestStatus)return c=async function waitUntilAuthTokenRequest(e,t){let c=await updateAuthTokenRequest(e.appConfig);for(;1===c.authToken.requestStatus;)await sleep(100),c=await updateAuthTokenRequest(e.appConfig);const g=c.authToken;return 0===g.requestStatus?refreshAuthToken(e,t):g}(e,t),g;{if(!navigator.onLine)throw Se.create("app-offline");const t=function makeAuthTokenRequestInProgressEntry(e){const t={requestStatus:1,requestTime:Date.now()};return{...e,authToken:t}}(g);return c=async function fetchAuthTokenFromServer(e,t){try{const c=await generateAuthTokenRequest(e,t),g={...t,authToken:c};return await set(e.appConfig,g),c}catch(c){if(!isServerError(c)||401!==c.customData.serverCode&&404!==c.customData.serverCode){const c={...t,authToken:{requestStatus:0}};await set(e.appConfig,c)}else await remove(e.appConfig);throw c}}(e,t),t}}));return c?await c:g.authToken}function updateAuthTokenRequest(e){return update(e,(e=>{if(!isEntryRegistered(e))throw Se.create("not-registered");return function hasAuthTokenRequestTimedOut(e){return 1===e.requestStatus&&e.requestTime+Te<Date.now()}(e.authToken)?{...e,authToken:{requestStatus:0}}:e}))}function isEntryRegistered(e){return void 0!==e&&2===e.registrationStatus}async function getToken(e,t=!1){const c=e;await async function completeInstallationRegistration(e){const{registrationPromise:t}=await getInstallationEntry(e);t&&await t}(c);return(await refreshAuthToken(c,t)).token}function getMissingValueError(e){return Se.create("missing-app-config-values",{valueName:e})}const Ce="installations",publicFactory=e=>{const t=e.getProvider("app").getImmediate(),c=function extractAppConfig(e){if(!e||!e.options)throw getMissingValueError("App Configuration");if(!e.name)throw getMissingValueError("App Name");const t=["projectId","apiKey","appId"];for(const c of t)if(!e.options[c])throw getMissingValueError(c);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:c,heartbeatServiceProvider:_getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},internalFactory=e=>{const t=e.getProvider("app").getImmediate(),c=_getProvider(t,Ce).getImmediate();return{getId:()=>async function getId(e){const t=e,{installationEntry:c,registrationPromise:g}=await getInstallationEntry(t);return g?g.catch(console.error):refreshAuthToken(t).catch(console.error),c.fid}(c),getToken:e=>getToken(c,e)}};!function registerInstallations(){t(new Component(Ce,publicFactory,"PUBLIC")),t(new Component("installations-internal",internalFactory,"PRIVATE"))}(),e(he,ve),e(he,ve,"esm2020");const Me="@firebase/performance",Re="0.7.9-canary.a09ef786f",Pe=Re,Le="FB-PERF-TRACE-MEASURE",Ne="_wt_",Oe="_fcp",De="_fid",Fe="_lcp",Be="_inp",qe="_cls",xe="@firebase/performance/config",Ue="@firebase/performance/configexpire",je="Performance",$e=new ErrorFactory("performance",je,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),He=new class Logger{constructor(e){this.name=e,this._logLevel=_,this._logHandler=defaultLogHandler,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in w))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?I[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new 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,w.DEBUG,...e),this._logHandler(this,w.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,w.VERBOSE,...e),this._logHandler(this,w.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,w.INFO,...e),this._logHandler(this,w.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,w.WARN,...e),this._logHandler(this,w.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,w.ERROR,...e),this._logHandler(this,w.ERROR,...e)}}(je);let Ve,ze,We,Ke;He.logLevel=w.INFO;class Api{constructor(e){if(this.window=e,!e)throw $e.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay),this.onLCP=ot,this.onINP=rt,this.onCLS=D}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,c){this.performance&&this.performance.measure&&this.performance.measure(e,t,c)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&function areCookiesEnabled(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}()?!!function isIndexedDBAvailable(){try{return"object"==typeof indexedDB}catch(e){return!1}}()||(He.info("IndexedDB is not supported by current browser"),!1):(He.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,t){if(!this.PerformanceObserver)return;new this.PerformanceObserver((e=>{for(const c of e.getEntries())t(c)})).observe({entryTypes:[e]})}static getInstance(){return void 0===Ve&&(Ve=new Api(ze)),Ve}}function getIid(){return We}function mergeStrings(e,t){const c=e.length-t.length;if(c<0||c>1)throw $e.create("invalid String merger input");const g=[];for(let c=0;c<e.length;c++)g.push(e.charAt(c)),t.length>c&&g.push(t.charAt(c));return g.join("")}class SettingsService{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=mergeStrings("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=mergeStrings("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12,this.logMaxFlushSize=40}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===Ke&&(Ke=new SettingsService),Ke}}var Ge;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.VISIBLE=1]="VISIBLE",e[e.HIDDEN=2]="HIDDEN"}(Ge||(Ge={}));const Je=["firebase_","google_","ga_"],Qe=new RegExp("^[a-zA-Z]\\w*$");function getServiceWorkerStatus(){const e=Api.getInstance().navigator;return e?.serviceWorker?e.serviceWorker.controller?2:3:1}function getVisibilityState(){switch(Api.getInstance().document.visibilityState){case"visible":return Ge.VISIBLE;case"hidden":return Ge.HIDDEN;default:return Ge.UNKNOWN}}function getEffectiveConnectionType(){const e=Api.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function getAppId(e){const t=e.options?.appId;if(!t)throw $e.create("no app id");return t}const Ze="0.0.1",Xe={loggingEnabled:!0},Ye="FIREBASE_INSTALLATIONS_AUTH";function getConfig(e,t){const c=function getStoredConfig(){const e=Api.getInstance().localStorage;if(!e)return;const t=e.getItem(Ue);if(!t||!function configValid(e){return Number(e)>Date.now()}(t))return;const c=e.getItem(xe);if(!c)return;try{return JSON.parse(c)}catch{return}}();return c?(processConfig(c),Promise.resolve()):function getRemoteConfig(e,t){return function getAuthTokenPromise(e){const t=e.getToken();return t.then((e=>{})),t}(e.installations).then((c=>{const g=function getProjectId(e){const t=e.options?.projectId;if(!t)throw $e.create("no project id");return t}(e.app),w=function getApiKey(e){const t=e.options?.apiKey;if(!t)throw $e.create("no api key");return t}(e.app),I=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${g}/namespaces/fireperf:fetch?key=${w}`,{method:"POST",headers:{Authorization:`${Ye} ${c}`},body:JSON.stringify({app_instance_id:t,app_instance_id_token:c,app_id:getAppId(e.app),app_version:Pe,sdk_version:Ze})});return fetch(I).then((e=>{if(e.ok)return e.json();throw $e.create("RC response not ok")}))})).catch((()=>{He.info(et)}))}(e,t).then(processConfig).then((e=>function storeConfig(e){const t=Api.getInstance().localStorage;if(!e||!t)return;t.setItem(xe,JSON.stringify(e)),t.setItem(Ue,String(Date.now()+60*SettingsService.getInstance().configTimeToLive*60*1e3))}(e)),(()=>{}))}const et="Could not fetch config, will use default configs";function processConfig(e){if(!e)return e;const t=SettingsService.getInstance(),c=e.entries||{};return void 0!==c.fpr_enabled?t.loggingEnabled="true"===String(c.fpr_enabled):t.loggingEnabled=Xe.loggingEnabled,c.fpr_log_source?t.logSource=Number(c.fpr_log_source):Xe.logSource&&(t.logSource=Xe.logSource),c.fpr_log_endpoint_url?t.logEndPointUrl=c.fpr_log_endpoint_url:Xe.logEndPointUrl&&(t.logEndPointUrl=Xe.logEndPointUrl),c.fpr_log_transport_key?t.transportKey=c.fpr_log_transport_key:Xe.transportKey&&(t.transportKey=Xe.transportKey),void 0!==c.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(c.fpr_vc_network_request_sampling_rate):void 0!==Xe.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=Xe.networkRequestsSamplingRate),void 0!==c.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(c.fpr_vc_trace_sampling_rate):void 0!==Xe.tracesSamplingRate&&(t.tracesSamplingRate=Xe.tracesSamplingRate),c.fpr_log_max_flush_size?t.logMaxFlushSize=Number(c.fpr_log_max_flush_size):Xe.logMaxFlushSize&&(t.logMaxFlushSize=Xe.logMaxFlushSize),t.logTraceAfterSampling=shouldLogAfterSampling(t.tracesSamplingRate),t.logNetworkAfterSampling=shouldLogAfterSampling(t.networkRequestsSamplingRate),e}function shouldLogAfterSampling(e){return Math.random()<=e}let tt,it=1;function getInitializationPromise(e){return it=2,tt=tt||function initializePerf(e){return function getDocumentReadyComplete(){const e=Api.getInstance().document;return new Promise((t=>{if(e&&"complete"!==e.readyState){const handler=()=>{"complete"===e.readyState&&(e.removeEventListener("readystatechange",handler),t())};e.addEventListener("readystatechange",handler)}else t()}))}().then((()=>function getIidPromise(e){const t=e.getId();return t.then((e=>{We=e})),t}(e.installations))).then((t=>getConfig(e,t))).then((()=>changeInitializationStatus()),(()=>changeInitializationStatus()))}(e),tt}function changeInitializationStatus(){it=3}const at=1e4,st=new TextEncoder;let ct,ut=3,lt=[],dt=!1;function processQueue(e){setTimeout((()=>{ut<=0||(lt.length>0&&function dispatchQueueEvents(){const e=lt.splice(0,1e3);(function postToFlEndpoint(e){const t=SettingsService.getInstance().getFlTransportFullUrl();return st.encode(e).length<=65536&&navigator.sendBeacon&&navigator.sendBeacon(t,e)?Promise.resolve():fetch(t,{method:"POST",body:e})})(buildPayload(e)).then((()=>{ut=3})).catch((()=>{lt=[...e,...lt],ut--,He.info(`Tries left: ${ut}.`),processQueue(at)}))}(),processQueue(at))}),e)}function buildPayload(e){const t=e.map((e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)}))),c={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:SettingsService.getInstance().logSource,log_event:t};return JSON.stringify(c)}function transportHandler(e){return(...t)=>{!function addToQueue(e){if(!e.eventTime||!e.message)throw $e.create("invalid cc log");lt=[...lt,e]}({message:e(...t),eventTime:Date.now()})}}function flushQueuedEvents(){const e=SettingsService.getInstance().getFlTransportFullUrl();for(;lt.length>0;){const t=lt.splice(-SettingsService.getInstance().logMaxFlushSize),c=buildPayload(t);if(!navigator.sendBeacon||!navigator.sendBeacon(e,c)){lt=[...lt,...t];break}}if(lt.length>0){const t=buildPayload(lt);fetch(e,{method:"POST",body:t}).catch((()=>{He.info("Failed flushing queued events.")}))}}function sendLog(e,t){ct||(ct={send:transportHandler(serializer),flush:flushQueuedEvents}),ct.send(e,t)}function logTrace(e){const t=SettingsService.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&Api.getInstance().requiredApisAvailable()&&(!function isPerfInitialized(){return 3===it}()?getInitializationPromise(e.performanceController).then((()=>sendTraceLog(e)),(()=>sendTraceLog(e))):sendTraceLog(e))}function sendTraceLog(e){if(!getIid())return;const t=SettingsService.getInstance();t.loggingEnabled&&t.logTraceAfterSampling&&sendLog(e,1)}function serializer(e,t){return 0===t?function serializeNetworkRequest(e){const t={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},c={application_info:getApplicationInfo(e.performanceController.app),network_request_metric:t};return JSON.stringify(c)}(e):function serializeTrace(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);const c=e.getAttributes();0!==Object.keys(c).length&&(t.custom_attributes=c);const g={application_info:getApplicationInfo(e.performanceController.app),trace_metric:t};return JSON.stringify(g)}(e)}function getApplicationInfo(e){return{google_app_id:getAppId(e),app_instance_id:getIid(),web_app_info:{sdk_version:Pe,page_url:Api.getInstance().getUrl(),service_worker_status:getServiceWorkerStatus(),visibility_state:getVisibilityState(),effective_connection_type:getEffectiveConnectionType()},application_process_state:0}}function createNetworkRequestEntry(e,t){const c=t;if(!c||void 0===c.responseStart)return;const g=Api.getInstance().getTimeOrigin(),w=Math.floor(1e3*(c.startTime+g)),I=c.responseStart?Math.floor(1e3*(c.responseStart-c.startTime)):void 0,_=Math.floor(1e3*(c.responseEnd-c.startTime));!function logNetworkRequest(e){const t=SettingsService.getInstance();if(!t.instrumentationEnabled)return;const c=e.url,g=t.logEndPointUrl.split("?")[0],w=t.flTransportEndpointUrl.split("?")[0];c!==g&&c!==w&&t.loggingEnabled&&t.logNetworkAfterSampling&&sendLog(e,0)}({performanceController:e,url:c.name&&c.name.split("?")[0],responsePayloadBytes:c.transferSize,startTimeUs:w,timeToResponseInitiatedUs:I,timeToResponseCompletedUs:_})}const ft=["_fp",Oe,De,Fe,qe,Be];class Trace{constructor(e,t,c=!1,g){this.performanceController=e,this.name=t,this.isAuto=c,this.state=1,this.customAttributes={},this.counters={},this.api=Api.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=g||`${Le}-${this.randomId}-${this.name}`,g&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw $e.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw $e.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),logTrace(this)}record(e,t,c){if(e<=0)throw $e.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw $e.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),c&&c.attributes&&(this.customAttributes={...c.attributes}),c&&c.metrics)for(const e of Object.keys(c.metrics))isNaN(Number(c.metrics[e]))||(this.counters[e]=Math.floor(Number(c.metrics[e])));logTrace(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(!function isValidMetricName(e,t){return!(0===e.length||e.length>100)&&(t&&t.startsWith(Ne)&&ft.indexOf(e)>-1||!e.startsWith("_"))}(e,this.name))throw $e.create("invalid custom metric name",{customMetricName:e});this.counters[e]=function convertMetricValueToInteger(e){const t=Math.floor(e);return t<e&&He.info(`Metric value should be an Integer, setting the value as : ${t}.`),t}(t??0)}getMetric(e){return this.counters[e]||0}putAttribute(e,t){const c=function isValidCustomAttributeName(e){return!(0===e.length||e.length>40)&&(!Je.some((t=>e.startsWith(t)))&&!!e.match(Qe))}(e),g=function isValidCustomAttributeValue(e){return 0!==e.length&&e.length<=100}(t);if(c&&g)this.customAttributes[e]=t;else{if(!c)throw $e.create("invalid attribute name",{attributeName:e});if(!g)throw $e.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return{...this.customAttributes}}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){const e=this.api.getEntriesByName(this.traceMeasure),t=e&&e[0];t&&(this.durationUs=Math.floor(1e3*t.duration),this.startTimeUs=Math.floor(1e3*(t.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,c,g,w){const I=Api.getInstance().getUrl();if(!I)return;const _=new Trace(e,Ne+I,!0),k=Math.floor(1e3*Api.getInstance().getTimeOrigin());_.setStartTime(k),t&&t[0]&&(_.setDuration(Math.floor(1e3*t[0].duration)),_.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),_.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),_.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));if(c){const e=c.find((e=>"first-paint"===e.name));e&&e.startTime&&_.putMetric("_fp",Math.floor(1e3*e.startTime));const t=c.find((e=>"first-contentful-paint"===e.name));t&&t.startTime&&_.putMetric(Oe,Math.floor(1e3*t.startTime)),w&&_.putMetric(De,Math.floor(1e3*w))}this.addWebVitalMetric(_,Fe,"lcp_element",g.lcp),this.addWebVitalMetric(_,qe,"cls_largestShiftTarget",g.cls),this.addWebVitalMetric(_,Be,"inp_interactionTarget",g.inp),logTrace(_),function flushLogs(){ct&&ct.flush()}()}static addWebVitalMetric(e,t,c,g){g&&(e.putMetric(t,Math.floor(1e3*g.value)),g.elementAttribution&&(g.elementAttribution.length>100?e.putAttribute(c,g.elementAttribution.substring(0,100)):e.putAttribute(c,g.elementAttribution)))}static createUserTimingTrace(e,t){logTrace(new Trace(e,t,!1,t))}}let pt,gt={},mt=!1;function setupOobResources(e){getIid()&&(setTimeout((()=>function setupOobTraces(e){const t=Api.getInstance();"onpagehide"in window?t.document.addEventListener("pagehide",(()=>sendOobTrace(e))):t.document.addEventListener("unload",(()=>sendOobTrace(e)));t.document.addEventListener("visibilitychange",(()=>{"hidden"===t.document.visibilityState&&sendOobTrace(e)})),t.onFirstInputDelay&&t.onFirstInputDelay((e=>{pt=e}));t.onLCP((e=>{gt.lcp={value:e.value,elementAttribution:e.attribution?.element}})),t.onCLS((e=>{gt.cls={value:e.value,elementAttribution:e.attribution?.largestShiftTarget}})),t.onINP((e=>{gt.inp={value:e.value,elementAttribution:e.attribution?.interactionTarget}}))}(e)),0),setTimeout((()=>function setupNetworkRequests(e){const t=Api.getInstance(),c=t.getEntriesByType("resource");for(const t of c)createNetworkRequestEntry(e,t);t.setupObserver("resource",(t=>createNetworkRequestEntry(e,t)))}(e)),0),setTimeout((()=>function setupUserTimingTraces(e){const t=Api.getInstance(),c=t.getEntriesByType("measure");for(const t of c)createUserTimingTrace(e,t);t.setupObserver("measure",(t=>createUserTimingTrace(e,t)))}(e)),0))}function createUserTimingTrace(e,t){const c=t.name;c.substring(0,21)!==Le&&Trace.createUserTimingTrace(e,c)}function sendOobTrace(e){if(!mt){mt=!0;const t=Api.getInstance(),c=t.getEntriesByType("navigation"),g=t.getEntriesByType("paint");setTimeout((()=>{Trace.createOobTrace(e,c,g,gt,pt)}),0)}}class PerformanceController{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==e?.dataCollectionEnabled&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==e?.instrumentationEnabled&&(this.instrumentationEnabled=e.instrumentationEnabled),Api.getInstance().requiredApisAvailable()?function validateIndexedDBOpenable(){return new Promise(((e,t)=>{try{let c=!0;const g="validate-browser-context-for-indexeddb-analytics-module",w=self.indexedDB.open(g);w.onsuccess=()=>{w.result.close(),c||self.indexedDB.deleteDatabase(g),e(!0)},w.onupgradeneeded=()=>{c=!1},w.onerror=()=>{t(w.error?.message||"")}}catch(e){t(e)}}))}().then((e=>{e&&(!function setupTransportService(){dt||(processQueue(5500),dt=!0)}(),getInitializationPromise(this).then((()=>setupOobResources(this)),(()=>setupOobResources(this))),this.initialized=!0)})).catch((e=>{He.info(`Environment doesn't support IndexedDB: ${e}`)})):He.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){SettingsService.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return SettingsService.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){SettingsService.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return SettingsService.getInstance().dataCollectionEnabled}}function getPerformance(e=c()){e=getModularInstance(e);return _getProvider(e,"performance").getImmediate()}function initializePerformance(e,t){e=getModularInstance(e);const c=_getProvider(e,"performance");if(c.isInitialized()){const e=c.getImmediate();if(deepEqual(c.getOptions(),t??{}))return e;throw $e.create("already initialized")}return c.initialize({options:t})}function trace(e,t){return e=getModularInstance(e),new Trace(e,t)}const factory=(e,{options:t})=>{const c=e.getProvider("app").getImmediate(),g=e.getProvider("installations-internal").getImmediate();if("[DEFAULT]"!==c.name)throw $e.create("FB not default");if("undefined"==typeof window)throw $e.create("no window");!function setupApi(e){ze=e}(window);const w=new PerformanceController(c,g);return w._init(t),w};!function registerPerformance(){t(new Component("performance",factory,"PUBLIC")),e(Me,Re),e(Me,Re,"esm2020")}();export{getPerformance,initializePerformance,trace};
2
2
 
3
3
  //# sourceMappingURL=firebase-performance.js.map
@@ -1,2 +1,2 @@
1
- ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(require("@firebase/app-compat"),require("@firebase/app")):"function"==typeof define&&define.amd?define(["@firebase/app-compat","@firebase/app"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).firebase,e.firebase.INTERNAL.modularAPIs)})(this,function(at,it){try{!(function(){function B(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e,t){if(!e)throw e=t,new Error("Firebase Database ("+H.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)}let O=B(at),H={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"};function u(){try{return"object"==typeof indexedDB}catch(e){}}class n extends Error{constructor(e,t,a){super(t),this.code=e,this.customData=a,this.name="FirebaseError",Object.setPrototypeOf(this,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,i.prototype.create)}}class i{constructor(e,t,a){this.service=e,this.serviceName=t,this.errors=a}create(e,...t){var i,a=t[0]||{},s=this.service+"/"+e,r=this.errors[e],r=r?(i=a,r.replace(j,(e,t)=>{var a=i[t];return null!=a?String(a):`<${t}?>`})):"Error",r=this.serviceName+`: ${r} (${s}).`;return new n(s,r,a)}}let j=/\{\$([^}]+)}/g;function o(e,t=1e3,a=2){var i=t*Math.pow(a,e),s=Math.round(.5*i*(Math.random()-.5)*2);return Math.min(144e5,i+s)}function r(e){return e&&e._delegate?e._delegate:e}class e{constructor(e,t,a){this.name=e,this.instanceFactory=t,this.type=a,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}}var d,s;(w=d=d||{})[w.DEBUG=0]="DEBUG",w[w.VERBOSE=1]="VERBOSE",w[w.INFO=2]="INFO",w[w.WARN=3]="WARN",w[w.ERROR=4]="ERROR",w[w.SILENT=5]="SILENT";let x={debug:d.DEBUG,verbose:d.VERBOSE,info:d.INFO,warn:d.WARN,error:d.ERROR,silent:d.SILENT},V=d.INFO,$={[d.DEBUG]:"log",[d.VERBOSE]:"log",[d.INFO]:"info",[d.WARN]:"warn",[d.ERROR]:"error"},U=(e,t,...a)=>{if(!(t<e.logLevel)){var i=(new Date).toISOString(),s=$[t];if(!s)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[s](`[${i}] ${e.name}:`,...a)}};class K{constructor(e){this.name=e,this._logLevel=V,this._logHandler=U,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in d))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?x[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new 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,d.DEBUG,...e),this._logHandler(this,d.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,d.VERBOSE,...e),this._logHandler(this,d.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,d.INFO,...e),this._logHandler(this,d.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,d.WARN,...e),this._logHandler(this,d.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,d.ERROR,...e),this._logHandler(this,d.ERROR,...e)}}let q=(t,e)=>e.some(e=>t instanceof e),c,z;let W=new WeakMap,l=new WeakMap,G=new WeakMap,g=new WeakMap,h=new WeakMap;let f={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return l.get(e);if("objectStoreNames"===t)return e.objectStoreNames||G.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return p(e[t])},set(e,t,a){return e[t]=a,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function J(i){return i!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(z=z||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(i)?function(...e){return i.apply(m(this),e),p(W.get(this))}:function(...e){return p(i.apply(m(this),e))}:function(e,...t){var a=i.call(m(this),e,...t);return G.set(a,e.sort?e.sort():[e]),p(a)}}function X(e){var r,t;return"function"==typeof e?J(e):(e instanceof IDBTransaction&&(r=e,l.has(r)||(t=new Promise((e,t)=>{let a=()=>{r.removeEventListener("complete",i),r.removeEventListener("error",s),r.removeEventListener("abort",s)},i=()=>{e(),a()},s=()=>{t(r.error||new DOMException("AbortError","AbortError")),a()};r.addEventListener("complete",i),r.addEventListener("error",s),r.addEventListener("abort",s)}),l.set(r,t))),q(e,c=c||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,f):e)}function p(e){var r,t;return e instanceof IDBRequest?(r=e,(t=new Promise((e,t)=>{let a=()=>{r.removeEventListener("success",i),r.removeEventListener("error",s)},i=()=>{e(p(r.result)),a()},s=()=>{t(r.error),a()};r.addEventListener("success",i),r.addEventListener("error",s)})).then(e=>{e instanceof IDBCursor&&W.set(e,r)}).catch(()=>{}),h.set(t,r),t):g.has(e)?g.get(e):((t=X(e))!==e&&(g.set(e,t),h.set(t,e)),t)}let m=e=>h.get(e);let Y=["get","getKey","getAll","getAllKeys","count"],Z=["put","add","delete","clear"],v=new Map;function Q(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(v.get(t))return v.get(t);let s=t.replace(/FromIndex$/,""),r=t!==s,n=Z.includes(s);var a;return s in(r?IDBIndex:IDBObjectStore).prototype&&(n||Y.includes(s))?(a=async function(e,...t){var a=this.transaction(e,n?"readwrite":"readonly");let i=a.store;return r&&(i=i.index(t.shift())),(await Promise.all([i[s](...t),n&&a.done]))[0]},v.set(t,a),a):void 0}}f={...s=f,get:(e,t,a)=>Q(e,t)||s.get(e,t,a),has:(e,t)=>!!Q(e,t)||s.has(e,t)};var ee="@firebase/installations",t="0.6.19-canary.60d1b18bd";let te=1e4,ae="w:"+t,ie="FIS_v2",se="https://firebaseinstallations.googleapis.com/v1",re=36e5;var w;let b=new i("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function ne(e){return e instanceof n&&e.code.includes("request-failed")}function oe({projectId:e}){return se+`/projects/${e}/installations`}function ce(e){return{token:e.token,requestStatus:2,expiresIn:Number(e.expiresIn.replace("s","000")),creationTime:Date.now()}}async function le(e,t){var a=(await t.json()).error;return b.create("request-failed",{requestName:e,serverCode:a.code,serverMessage:a.message,serverStatus:a.status})}function ge({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function he(e,{refreshToken:t}){var a=ge(e);return a.append("Authorization",(e=t,ie+" "+e)),a}async function ue(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function de(t){return new Promise(e=>{setTimeout(e,t)})}let fe=/^[cdef][\w-]{21}$/,y="";function pe(){try{var e=new Uint8Array(17),t=((self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16,(e=>btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_"))(e).substr(0,22));return fe.test(t)?t:y}catch{return y}}function C(e){return e.appName+"!"+e.appId}let me=new Map;function ve(e,t){var a=C(e),e=(we(a,t),a),a=(()=>(!E&&"BroadcastChannel"in self&&((E=new BroadcastChannel("[Firebase] FID Change")).onmessage=e=>{we(e.data.key,e.data.fid)}),E))();a&&a.postMessage({key:e,fid:t}),0===me.size&&E&&(E.close(),E=null)}function we(e,t){var a=me.get(e);if(a)for(var i of a)i(t)}let E=null;let be="firebase-installations-database",ye=1,S="firebase-installations-store",Ce=null;function _(){return Ce=Ce||((e,t,{blocked:a,upgrade:i,blocking:s,terminated:r})=>{let n=indexedDB.open(e,t);var o=p(n);return i&&n.addEventListener("upgradeneeded",e=>{i(p(n.result),e.oldVersion,e.newVersion,p(n.transaction),e)}),a&&n.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),o.then(e=>{r&&e.addEventListener("close",()=>r()),s&&e.addEventListener("versionchange",e=>s(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o})(be,ye,{upgrade:(e,t)=>{0===t&&e.createObjectStore(S)}})}async function I(e,t){var a=C(e),i=(await _()).transaction(S,"readwrite"),s=i.objectStore(S),r=await s.get(a);return await s.put(t,a),await i.done,r&&r.fid===t.fid||ve(e,t.fid),t}async function Ee(e){var t=C(e),a=(await _()).transaction(S,"readwrite");await a.objectStore(S).delete(t),await a.done}async function T(e,t){var a=C(e),i=(await _()).transaction(S,"readwrite"),s=i.objectStore(S),r=await s.get(a),n=t(r);return void 0===n?await s.delete(a):await s.put(n,a),await i.done,!n||r&&r.fid===n.fid||ve(e,n.fid),n}async function k(a){let i;var e=await T(a.appConfig,e=>{var t=_e(e||{fid:pe(),registrationStatus:0}),t=((e,t)=>{var a,i;return 0===t.registrationStatus?navigator.onLine?(a={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},i=(async(t,a)=>{try{var e=await(async({appConfig:e,heartbeatServiceProvider:t},{fid:a})=>{let i=oe(e);var s=ge(e),r=((r=t.getImmediate({optional:!0}))&&(r=await r.getHeartbeatsHeader())&&s.append("x-firebase-client",r),{fid:a,authVersion:ie,appId:e.appId,sdkVersion:ae});let n={method:"POST",headers:s,body:JSON.stringify(r)};if((s=await ue(()=>fetch(i,n))).ok)return{fid:(r=await s.json()).fid||a,registrationStatus:2,refreshToken:r.refreshToken,authToken:ce(r.authToken)};throw await le("Create Installation",s)})(t,a);return I(t.appConfig,e)}catch(e){throw ne(e)&&409===e.customData.serverCode?await Ee(t.appConfig):await I(t.appConfig,{fid:a.fid,registrationStatus:0}),e}})(e,a),{installationEntry:a,registrationPromise:i}):(a=Promise.reject(b.create("app-offline")),{installationEntry:t,registrationPromise:a}):1===t.registrationStatus?{installationEntry:t,registrationPromise:(async e=>{let t=await Se(e.appConfig);for(;1===t.registrationStatus;)await de(100),t=await Se(e.appConfig);var a,i;return 0!==t.registrationStatus?t:({installationEntry:a,registrationPromise:i}=await k(e),i||a)})(e)}:{installationEntry:t}})(a,t);return i=t.registrationPromise,t.installationEntry});return e.fid===y?{installationEntry:await i}:{installationEntry:e,registrationPromise:i}}function Se(e){return T(e,e=>{if(e)return _e(e);throw b.create("installation-not-found")})}function _e(e){var t;return 1===(t=e).registrationStatus&&t.registrationTime+te<Date.now()?{fid:e.fid,registrationStatus:0}:e}async function Ie({appConfig:e,heartbeatServiceProvider:t},a){[s,r]=[e,a.fid];let i=oe(s)+`/${r}/authTokens:generate`;var s,r,n=he(e,a),o=t.getImmediate({optional:!0}),o=(o&&(o=await o.getHeartbeatsHeader())&&n.append("x-firebase-client",o),{installation:{sdkVersion:ae,appId:e.appId}});let c={method:"POST",headers:n,body:JSON.stringify(o)};n=await ue(()=>fetch(i,c));if(n.ok)return ce(await n.json());throw await le("Generate Auth Token",n)}async function R(i,s=!1){let r;var e=await T(i.appConfig,e=>{if(!ke(e))throw b.create("not-registered");var t,a=e.authToken;if(s||2!==(t=a).requestStatus||(e=>{var t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+re})(t)){if(1===a.requestStatus)return r=(async(e,t)=>{let a=await Te(e.appConfig);for(;1===a.authToken.requestStatus;)await de(100),a=await Te(e.appConfig);var i=a.authToken;return 0===i.requestStatus?R(e,t):i})(i,s),e;if(navigator.onLine)return t=e,a={requestStatus:1,requestTime:Date.now()},a={...t,authToken:a},r=(async(t,a)=>{try{var e=await Ie(t,a),i={...a,authToken:e};return await I(t.appConfig,i),e}catch(e){var s;throw!ne(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(s={...a,authToken:{requestStatus:0}},await I(t.appConfig,s)):await Ee(t.appConfig),e}})(i,a),a;throw b.create("app-offline")}return e});return r?await r:e.authToken}function Te(e){return T(e,e=>{var t,a;if(ke(e))return t=e.authToken,1===(a=t).requestStatus&&a.requestTime+te<Date.now()?{...e,authToken:{requestStatus:0}}:e;throw b.create("not-registered")})}function ke(e){return void 0!==e&&2===e.registrationStatus}async function Re(e,t=!1){var a=e,i=(await(!(i=(await k(a)).registrationPromise)||!await i),await R(a,t));return i.token}function M(e){return b.create("missing-app-config-values",{valueName:e})}let Me="installations",Le=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:(e=>{if(!e||!e.options)throw M("App Configuration");if(!e.name)throw M("App Name");var t;for(t of["projectId","apiKey","appId"])if(!e.options[t])throw M(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}})(t),heartbeatServiceProvider:it._getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},Fe=e=>{var t=e.getProvider("app").getImmediate();let a=it._getProvider(t,Me).getImmediate();return{getId:()=>(async e=>{var t=e,{installationEntry:a,registrationPromise:i}=await k(t);return(i||R(t)).catch(console.error),a.fid})(a),getToken:e=>Re(a,e)}};it._registerComponent(new e(Me,Le,"PUBLIC")),it._registerComponent(new e("installations-internal",Fe,"PRIVATE")),it.registerVersion(ee,t),it.registerVersion(ee,t,"esm2020");let L="@firebase/remote-config",De="0.7.0-canary.60d1b18bd";class Ae{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}let F=new i("remoteconfig","Remote Config",{"already-initialized":"Remote Config already initialized","registration-window":"Undefined window object. This SDK only supports usage in a browser environment.","registration-project-id":"Undefined project identifier. Check Firebase app initialization.","registration-api-key":"Undefined API key. Check Firebase app initialization.","registration-app-id":"Undefined app identifier. Check Firebase app initialization.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","storage-delete":"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.","fetch-client-network":"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-timeout":'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',"fetch-throttle":'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',"fetch-client-parse":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","indexed-db-unavailable":"Indexed DB is not supported by current browser","custom-signal-max-allowed-signals":"Setting more than {$maxSignals} custom signals is not supported.","stream-error":"The stream was not able to connect to the backend: {$originalErrorMessage}.","realtime-unavailable":"The Realtime service is unavailable: {$originalErrorMessage}","update-message-invalid":"The stream invalidation message was unparsable: {$originalErrorMessage}","update-not-fetched":"Unable to fetch the latest config: {$originalErrorMessage}"});let Ne=["1","true","t","yes","y","on"];class D{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=Ne.indexOf(this._value.toLowerCase())}asNumber(){if("static"===this._source)return 0;let e=Number(this._value);return e=isNaN(e)?0:e}getSource(){return this._source}}async function Pe(e){var t=r(e),[a,i]=await Promise.all([t._storage.getLastSuccessfulFetchResponse(),t._storage.getActiveConfigEtag()]);return!!(a&&a.config&&a.eTag&&a.templateVersion&&a.eTag!==i)&&(await Promise.all([t._storageCache.setActiveConfig(a.config),t._storage.setActiveConfigEtag(a.eTag),t._storage.setActiveConfigTemplateVersion(a.templateVersion)]),!0)}function Be(e){let t=r(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function Oe(t){var a=r(t);let e=new Ae;setTimeout(async()=>{e.abort()},a.settings.fetchTimeoutMillis);var i,s=a._storageCache.getCustomSignals();s&&a._logger.debug("Fetching config with custom signals: "+JSON.stringify(s));try{await a._client.fetch({cacheMaxAgeMillis:a.settings.minimumFetchIntervalMillis,signal:e,customSignals:s}),await a._storageCache.setLastFetchStatus("success")}catch(e){t="fetch-throttle";s=(i=e)instanceof n&&-1!==i.code.indexOf(t)?"throttle":"failure";throw await a._storageCache.setLastFetchStatus(s),e}}function He(a){var e,t,i=r(a);return[e={},t={}]=[i._storageCache.getActiveConfig(),i.defaultConfig],Object.keys({...e,...t}).reduce((e,t)=>(e[t]=A(a,t),e),{})}function A(e,t){var a=r(e),i=(a._isInitializationComplete||a._logger.debug(`A value was requested for key "${t}" before SDK initialization completed.`+" Await on ensureInitialized if the intent was to get a previously activated value."),a._storageCache.getActiveConfig());return i&&void 0!==i[t]?new D("remote",i[t]):a.defaultConfig&&void 0!==a.defaultConfig[t]?new D("default",String(a.defaultConfig[t])):(a._logger.debug(`Returning static value for key "${t}".`+" Define a default or remote value if this is unintentional."),new D("static"))}class je{constructor(e,t,a,i){this.client=e,this.storage=t,this.storageCache=a,this.logger=i}isCachedDataFresh(e,t){var a;return t?(a=Date.now()-t,this.logger.debug("Config fetch cache check."+` Cache age millis: ${a}.`+` Cache max age millis (minimumFetchIntervalMillis setting): ${e}.`+` Is cache hit: ${a=a<=e}.`),a):(this.logger.debug("Config fetch cache check. Cache unpopulated."),!1)}async fetch(e){var[t,a]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(a&&this.isCachedDataFresh(e.cacheMaxAgeMillis,t))return a;e.eTag=a&&a.eTag;t=await this.client.fetch(e),a=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===t.status&&a.push(this.storage.setLastSuccessfulFetchResponse(t)),await Promise.all(a),t}}class xe{constructor(e,t,a,i,s,r){this.firebaseInstallations=e,this.sdkVersion=t,this.namespace=a,this.projectId=i,this.apiKey=s,this.appId=r}async fetch(a){var e,[t,i]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),s=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=`+this.apiKey,r={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":a.eTag||"*"},t={sdk_version:this.sdkVersion,app_instance_id:t,app_instance_id_token:i,app_id:this.appId,language_code:(e=navigator).languages&&e.languages[0]||e.language,custom_signals:a.customSignals},i={method:"POST",headers:r,body:JSON.stringify(t)},r=fetch(s,i),t=new Promise((e,t)=>{a.signal.addEventListener(()=>{var e=new Error("The operation was aborted.");e.name="AbortError",t(e)})});let n;try{await Promise.race([r,t]),n=await r}catch(e){let t="fetch-client-network";throw"AbortError"===e?.name&&(t="fetch-timeout"),F.create(t,{originalErrorMessage:e?.message})}let o=n.status;s=n.headers.get("ETag")||void 0;let c,l,g;if(200===n.status){let e;try{e=await n.json()}catch(e){throw F.create("fetch-client-parse",{originalErrorMessage:e?.message})}c=e.entries,l=e.state,g=e.templateVersion}if("INSTANCE_STATE_UNSPECIFIED"===l?o=500:"NO_CHANGE"===l?o=304:"NO_TEMPLATE"!==l&&"EMPTY_CONFIG"!==l||(c={}),304!==o&&200!==o)throw F.create("fetch-status",{httpStatus:o});return{status:o,eTag:s,config:c,templateVersion:g}}}class Ve{constructor(e,t){this.client=e,this.storage=t}async fetch(e){var t=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(e,t)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:a}){var s,r;s=t.signal,r=e,await new Promise((e,t)=>{var a=Math.max(r-Date.now(),0);let i=setTimeout(e,a);s.addEventListener(()=>{clearTimeout(i),t(F.create("fetch-throttle",{throttleEndTimeMillis:r}))})});try{var i=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),i}catch(e){if((e=>{var t;return e instanceof n&&e.customData&&(429===(t=Number(e.customData.httpStatus))||500===t||503===t||504===t)})(e))return i={throttleEndTimeMillis:Date.now()+o(a),backoffCount:a+1},await this.storage.setThrottleMetadata(i),this.attemptFetch(t,i);throw e}}}class $e{get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}constructor(e,t,a,i,s,r){this.app=e,this._client=t,this._storageCache=a,this._storage=i,this._logger=s,this._realtimeHandler=r,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:6e4,minimumFetchIntervalMillis:432e5},this.defaultConfig={}}}function N(e,t){var a=e.target.error||void 0;return F.create(t,{originalErrorMessage:a&&a?.message})}let P="app_namespace_store";class Ue{getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(e){return this.set("last_fetch_status",e)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(e){return this.set("last_successful_fetch_timestamp_millis",e)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(e){return this.set("last_successful_fetch_response",e)}getActiveConfig(){return this.get("active_config")}setActiveConfig(e){return this.set("active_config",e)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(e){return this.set("active_config_etag",e)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(e){return this.set("throttle_metadata",e)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}getCustomSignals(){return this.get("custom_signals")}getRealtimeBackoffMetadata(){return this.get("realtime_backoff_metadata")}setRealtimeBackoffMetadata(e){return this.set("realtime_backoff_metadata",e)}getActiveConfigTemplateVersion(){return this.get("last_known_template_version")}setActiveConfigTemplateVersion(e){return this.set("last_known_template_version",e)}}class Ke extends Ue{constructor(e,t,a,i=(()=>new Promise((t,a)=>{try{var e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{a(N(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{var t=e.target.result;0===e.oldVersion&&t.createObjectStore(P,{keyPath:"compositeKey"})}}catch(e){a(F.create("storage-open",{originalErrorMessage:e?.message}))}}))()){super(),this.appId=e,this.appName=t,this.namespace=a,this.openDbPromise=i}async setCustomSignals(e){var t=(await this.openDbPromise).transaction([P],"readwrite"),a=ze(e,await this.getWithTransaction("custom_signals",t)||{});return await this.setWithTransaction("custom_signals",a,t),a}async getWithTransaction(r,n){return new Promise((a,t)=>{var e=n.objectStore(P),i=this.createCompositeKey(r);try{var s=e.get(i);s.onerror=e=>{t(N(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;a(t?t.value:void 0)}}catch(e){t(F.create("storage-get",{originalErrorMessage:e?.message}))}})}async setWithTransaction(r,n,o){return new Promise((e,t)=>{var a=o.objectStore(P),i=this.createCompositeKey(r);try{var s=a.put({compositeKey:i,value:n});s.onerror=e=>{t(N(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(F.create("storage-set",{originalErrorMessage:e?.message}))}})}async get(e){var t=(await this.openDbPromise).transaction([P],"readonly");return this.getWithTransaction(e,t)}async set(e,t){var a=(await this.openDbPromise).transaction([P],"readwrite");return this.setWithTransaction(e,t,a)}async delete(r){let n=await this.openDbPromise;return new Promise((e,t)=>{var a=n.transaction([P],"readwrite").objectStore(P),i=this.createCompositeKey(r);try{var s=a.delete(i);s.onerror=e=>{t(N(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(F.create("storage-delete",{originalErrorMessage:e?.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class qe extends Ue{constructor(){super(...arguments),this.storage={}}async get(e){return Promise.resolve(this.storage[e])}async set(e,t){return this.storage[e]=t,Promise.resolve(void 0)}async delete(e){return this.storage[e]=void 0,Promise.resolve()}async setCustomSignals(e){var t=this.storage.custom_signals||{};return this.storage.custom_signals=ze(e,t),Promise.resolve(this.storage.custom_signals)}}function ze(e,t){var a={...t,...e},a=Object.fromEntries(Object.entries(a).filter(([,e])=>null!==e).map(([e,t])=>"number"==typeof t?[e,t.toString()]:[e,t]));if(100<Object.keys(a).length)throw F.create("custom-signal-max-allowed-signals",{maxSignals:100});return a}class We{constructor(e){this.storage=e}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}getCustomSignals(){return this.customSignals}async loadFromStorage(){var e=this.storage.getLastFetchStatus(),t=this.storage.getLastSuccessfulFetchTimestampMillis(),a=this.storage.getActiveConfig(),i=this.storage.getCustomSignals(),e=await e,e=(e&&(this.lastFetchStatus=e),await t),t=(e&&(this.lastSuccessfulFetchTimestampMillis=e),await a),e=(t&&(this.activeConfig=t),await i);e&&(this.customSignals=e)}setLastFetchStatus(e){return this.lastFetchStatus=e,this.storage.setLastFetchStatus(e)}setLastSuccessfulFetchTimestampMillis(e){return this.lastSuccessfulFetchTimestampMillis=e,this.storage.setLastSuccessfulFetchTimestampMillis(e)}setActiveConfig(e){return this.activeConfig=e,this.storage.setActiveConfig(e)}async setCustomSignals(e){this.customSignals=await this.storage.setCustomSignals(e)}}class Ge extends class{constructor(e){this.allowedEvents_=e,this.listeners_={},a(Array.isArray(e)&&0<e.length,"Requires a non-empty array")}trigger(t,...a){if(Array.isArray(this.listeners_[t])){var i=[...this.listeners_[t]];for(let e=0;e<i.length;e++)i[e].callback.apply(i[e].context,a)}}on(e,t,a){this.validateEventType_(e),this.listeners_[e]=this.listeners_[e]||[],this.listeners_[e].push({callback:t,context:a});var i=this.getInitialEvent(e);i&&t.apply(a,i)}off(e,t,a){this.validateEventType_(e);var i=this.listeners_[e]||[];for(let s=0;s<i.length;s++)if(i[s].callback===t&&(!a||a===i[s].context))return void i.splice(s,1)}validateEventType_(t){a(this.allowedEvents_.find(e=>e===t),"Unknown event: "+t)}}{static getInstance(){return new Ge}constructor(){super(["visible"]);let t,e;"undefined"!=typeof document&&void 0!==document.addEventListener&&(void 0!==document.hidden?(e="visibilitychange",t="hidden"):void 0!==document.mozHidden?(e="mozvisibilitychange",t="mozHidden"):void 0!==document.msHidden?(e="msvisibilitychange",t="msHidden"):void 0!==document.webkitHidden&&(e="webkitvisibilitychange",t="webkitHidden")),this.visible_=!0,e&&document.addEventListener(e,()=>{var e=!document[t];e!==this.visible_&&(this.visible_=e,this.trigger("visible",e))},!1)}getInitialEvent(e){return a("visible"===e,"Unknown event type: "+e),[this.visible_]}}let Je="featureDisabled",Xe="retryIntervalSeconds",Ye="latestTemplateVersionNumber";class Ze{constructor(e,t,a,i,s,r,n,o,c,l){this.firebaseInstallations=e,this.storage=t,this.sdkVersion=a,this.namespace=i,this.projectId=s,this.apiKey=r,this.appId=n,this.logger=o,this.storageCache=c,this.cachingClient=l,this.observers=new Set,this.isConnectionActive=!1,this.isRealtimeDisabled=!1,this.httpRetriesRemaining=8,this.isInBackground=!1,this.decoder=new TextDecoder("utf-8"),this.isClosingConnection=!1,this.propagateError=t=>this.observers.forEach(e=>e.error?.(t)),this.isStatusCodeRetryable=e=>!e||[408,429,502,503,504].includes(e),this.setRetriesRemaining(),Ge.getInstance().on("visible",this.onVisibilityChange,this)}async setRetriesRemaining(){var e=(await this.storage.getRealtimeBackoffMetadata())?.numFailedStreams||0;this.httpRetriesRemaining=Math.max(8-e,1)}async updateBackoffMetadataWithLastFailedStreamConnectionTime(e){var t=((await this.storage.getRealtimeBackoffMetadata())?.numFailedStreams||0)+1,a=o(t,6e4,2);await this.storage.setRealtimeBackoffMetadata({backoffEndTimeMillis:new Date(e.getTime()+a),numFailedStreams:t})}async updateBackoffMetadataWithRetryInterval(e){var t=Date.now(),t=new Date(t+1e3*e);await this.storage.setRealtimeBackoffMetadata({backoffEndTimeMillis:t,numFailedStreams:0}),await this.retryHttpConnectionWhenBackoffEnds()}async closeRealtimeHttpConnection(){if(!this.isClosingConnection){this.isClosingConnection=!0;try{this.reader&&await this.reader.cancel()}catch(e){this.logger.debug("Failed to cancel the reader, connection was lost.")}finally{this.reader=void 0}this.controller&&(await this.controller.abort(),this.controller=void 0),this.isClosingConnection=!1}}async resetRealtimeBackoff(){await this.storage.setRealtimeBackoffMetadata({backoffEndTimeMillis:new Date(-1),numFailedStreams:0})}resetRetryCount(){this.httpRetriesRemaining=8}async establishRealtimeConnection(e,t,a,i){var s=await this.storage.getActiveConfigEtag(),r=await this.storage.getActiveConfigTemplateVersion(),s={"X-Goog-Api-Key":this.apiKey,"X-Goog-Firebase-Installations-Auth":a,"Content-Type":"application/json",Accept:"application/json","If-None-Match":s||"*","Content-Encoding":"gzip"},r={project:this.projectId,namespace:this.namespace,lastKnownVersionNumber:r,appId:this.appId,sdkVersion:this.sdkVersion,appInstanceId:t};return await fetch(e,{method:"POST",headers:s,body:JSON.stringify(r),signal:i})}getRealtimeUrl(){var e=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfigrealtime.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:streamFetchInvalidations?key=`+this.apiKey;return new URL(e)}async createRealtimeConnection(){var[e,t]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken(!1)]),a=(this.controller=new AbortController,this.getRealtimeUrl());return await this.establishRealtimeConnection(a,e,t,this.controller.signal)}async retryHttpConnectionWhenBackoffEnds(){let e=await this.storage.getRealtimeBackoffMetadata();e=e||{backoffEndTimeMillis:new Date(-1),numFailedStreams:0};var t=new Date(e.backoffEndTimeMillis).getTime(),a=Date.now(),t=Math.max(0,t-a);await this.makeRealtimeHttpConnection(t)}setIsHttpConnectionRunning(e){this.isConnectionActive=e}checkAndSetHttpConnectionFlagIfNotRunning(){var e=this.canEstablishStreamConnection();return e&&this.setIsHttpConnectionRunning(!0),e}fetchResponseIsUpToDate(e,t){return null!=e.config&&e.templateVersion?e.templateVersion>=t:"success"===this.storageCache.getLastFetchStatus()}parseAndValidateConfigUpdateMessage(e){var t=e.indexOf("{"),a=e.indexOf("}",t);return t<0||a<0||a<=t?"":e.substring(t,a+1)}isEventListenersEmpty(){return 0===this.observers.size}getRandomInt(e){return Math.floor(Math.random()*e)}executeAllListenerCallbacks(t){this.observers.forEach(e=>e.next(t))}getChangedParams(e,t){var a,i,s=new Set,r=new Set(Object.keys(e||{})),n=new Set(Object.keys(t||{}));for(a of r)n.has(a)&&e[a]===t[a]||s.add(a);for(i of n)r.has(i)||s.add(i);return s}async fetchLatestConfig(e,a){var i=e-1,s=3-i,r=this.storageCache.getCustomSignals(),n=(r&&this.logger.debug("Fetching config with custom signals: "+JSON.stringify(r)),new Ae);try{var o,c={cacheMaxAgeMillis:0,signal:n,customSignals:r,fetchType:"REALTIME",fetchAttempt:s},l=await this.cachingClient.fetch(c);let t=await this.storage.getActiveConfig();if(this.fetchResponseIsUpToDate(l,a))if(null==l.config)this.logger.debug("The fetch succeeded, but the backend had no updates.");else{null==t&&(t={});let e=this.getChangedParams(l.config,t);0===e.size?this.logger.debug("Config was fetched, but no params changed."):(o={getUpdatedKeys(){return new Set(e)}},this.executeAllListenerCallbacks(o))}else this.logger.debug("Fetched template version is the same as SDK's current version. Retrying fetch."),await this.autoFetch(i,a)}catch(e){n=e instanceof Error?e.message:String(e),r=F.create("update-not-fetched",{originalErrorMessage:"Failed to auto-fetch config update: "+n});this.propagateError(r)}}async autoFetch(e,a){var t;if(0===e)t=F.create("update-not-fetched",{originalErrorMessage:"Unable to fetch the latest version of the template."}),this.propagateError(t);else{let t=1e3*this.getRandomInt(4);await new Promise(e=>setTimeout(e,t)),await this.fetchLatestConfig(e,a)}}async handleNotifications(e){let t="";for(;;){var{done:a,value:i}=await e.read();if(a)break;if(a=this.decoder.decode(i,{stream:!0}),t+=a,a.includes("}")&&0!==(t=this.parseAndValidateConfigUpdateMessage(t)).length){try{var s,r,n,o=JSON.parse(t);if(this.isEventListenersEmpty())break;if(Je in o&&!0===o[Je]){var c=F.create("realtime-unavailable",{originalErrorMessage:"The server is temporarily unavailable. Try again in a few minutes."});this.propagateError(c);break}Ye in o&&(s=await this.storage.getActiveConfigTemplateVersion(),r=Number(o[Ye]),s)&&s<r&&await this.autoFetch(3,r),Xe in o&&(n=Number(o[Xe]),await this.updateBackoffMetadataWithRetryInterval(n))}catch(e){this.logger.debug("Unable to parse latest config update message.",e);i=e instanceof Error?e.message:String(e);this.propagateError(F.create("update-message-invalid",{originalErrorMessage:i}))}t=""}}}async listenForNotifications(e){try{await this.handleNotifications(e)}catch(e){this.isInBackground||this.logger.debug("Real-time connection was closed due to an exception.")}}async prepareAndBeginRealtimeHttpStream(){if(this.checkAndSetHttpConnectionFlagIfNotRunning()){let e=await this.storage.getRealtimeBackoffMetadata();var a=(e=e||{backoffEndTimeMillis:new Date(-1),numFailedStreams:0}).backoffEndTimeMillis.getTime();if(Date.now()<a)await this.retryHttpConnectionWhenBackoffEnds();else{let e,t;try{e=await this.createRealtimeConnection(),t=e.status,e.ok&&e.body&&(this.resetRetryCount(),await this.resetRealtimeBackoff(),i=e.body.getReader(),this.reader=i,await this.listenForNotifications(i))}catch(e){this.isInBackground?this.resetRetryCount():this.logger.debug("Exception connecting to real-time RC backend. Retrying the connection...:",e)}finally{await this.closeRealtimeHttpConnection(),this.setIsHttpConnectionRunning(!1);var i,a=!this.isInBackground&&(void 0===t||this.isStatusCodeRetryable(t));a&&await this.updateBackoffMetadataWithLastFailedStreamConnectionTime(new Date),a||e?.ok?await this.retryHttpConnectionWhenBackoffEnds():(i="Unable to connect to the server. HTTP status code: "+t,a=F.create("stream-error",{originalErrorMessage:i}),this.propagateError(a))}}}}canEstablishStreamConnection(){var e=0<this.observers.size,t=!this.isRealtimeDisabled,a=!this.isConnectionActive,i=!this.isInBackground;return e&&t&&a&&i}async makeRealtimeHttpConnection(t){var e;this.canEstablishStreamConnection()&&(0<this.httpRetriesRemaining?(this.httpRetriesRemaining--,await new Promise(e=>setTimeout(e,t)),this.prepareAndBeginRealtimeHttpStream()):this.isInBackground||(e=F.create("stream-error",{originalErrorMessage:"Unable to connect to the server. Check your connection and try again."}),this.propagateError(e)))}async beginRealtime(){0<this.observers.size&&await this.makeRealtimeHttpConnection(0)}addObserver(e){this.observers.add(e),this.beginRealtime()}removeObserver(e){this.observers.has(e)&&this.observers.delete(e)}async onVisibilityChange(e){this.isInBackground=!e,e?await this.beginRealtime():await this.closeRealtimeHttpConnection()}}async function Qe(){if(!u())return!1;try{return await new Promise((i,s)=>{try{let e=!0,t="validate-browser-context-for-indexeddb-analytics-module",a=self.indexedDB.open(t);a.onsuccess=()=>{a.result.close(),e||self.indexedDB.deleteDatabase(t),i(!0)},a.onupgradeneeded=()=>{e=!1},a.onerror=()=>{s(a.error?.message||"")}}catch(e){s(e)}})}catch(e){return!1}}it._registerComponent(new e("remote-config",function(e,{options:t}){var a=e.getProvider("app").getImmediate(),i=e.getProvider("installations-internal").getImmediate(),{projectId:s,apiKey:r,appId:n}=a.options;if(!s)throw F.create("registration-project-id");if(!r)throw F.create("registration-api-key");if(!n)throw F.create("registration-app-id");var o=t?.templateId||"firebase",c=u()?new Ke(n,a.name,o):new qe,l=new We(c),g=new K(L),h=(g.logLevel=d.ERROR,new xe(i,it.SDK_VERSION,o,s,r,n)),h=new Ve(h,c),h=new je(h,c,l,g),i=new Ze(i,c,it.SDK_VERSION,o,s,r,n,g,l,h),o=new $e(a,h,l,c,g,i);return Be(o),o},"PUBLIC").setMultipleInstances(!0)),it.registerVersion(L,De),it.registerVersion(L,De,"esm2020");class et{constructor(e,t){this.app=e,this._delegate=t}get defaultConfig(){return this._delegate.defaultConfig}set defaultConfig(e){this._delegate.defaultConfig=e}get fetchTimeMillis(){return this._delegate.fetchTimeMillis}get lastFetchStatus(){return this._delegate.lastFetchStatus}get settings(){return this._delegate.settings}set settings(e){this._delegate.settings=e}activate(){return Pe(this._delegate)}ensureInitialized(){return Be(this._delegate)}fetch(){return Oe(this._delegate)}fetchAndActivate(){return(async e=>(await Oe(e=r(e)),Pe(e)))(this._delegate)}getAll(){return He(this._delegate)}getBoolean(e){return A(r(this._delegate),e).asBoolean()}getNumber(e){return A(r(this._delegate),e).asNumber()}getString(e){return A(r(this._delegate),e).asString()}getValue(e){return A(this._delegate,e)}setLogLevel(e){var t=this._delegate,a=r(t);switch(e){case"debug":a._logger.logLevel=d.DEBUG;break;case"silent":a._logger.logLevel=d.SILENT;break;default:a._logger.logLevel=d.ERROR}}}function tt(e,{instanceIdentifier:t}){var a=e.getProvider("app-compat").getImmediate(),i=e.getProvider("remote-config").getImmediate({identifier:t});return new et(a,i)}(w=O.default).INTERNAL.registerComponent(new e("remoteConfig-compat",tt,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:Qe})),w.registerVersion("@firebase/remote-config-compat","0.2.20-canary.60d1b18bd")}).apply(this,arguments)}catch(e){throw console.error(e),new Error("Cannot instantiate firebase-remote-config-compat.js - be sure to load firebase-app.js first.")}});
1
+ ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(require("@firebase/app-compat"),require("@firebase/app")):"function"==typeof define&&define.amd?define(["@firebase/app-compat","@firebase/app"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).firebase,e.firebase.INTERNAL.modularAPIs)})(this,function(at,it){try{!(function(){function B(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e,t){if(!e)throw e=t,new Error("Firebase Database ("+H.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)}let O=B(at),H={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"};function u(){try{return"object"==typeof indexedDB}catch(e){}}class n extends Error{constructor(e,t,a){super(t),this.code=e,this.customData=a,this.name="FirebaseError",Object.setPrototypeOf(this,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,i.prototype.create)}}class i{constructor(e,t,a){this.service=e,this.serviceName=t,this.errors=a}create(e,...t){var i,a=t[0]||{},s=this.service+"/"+e,r=this.errors[e],r=r?(i=a,r.replace(j,(e,t)=>{var a=i[t];return null!=a?String(a):`<${t}?>`})):"Error",r=this.serviceName+`: ${r} (${s}).`;return new n(s,r,a)}}let j=/\{\$([^}]+)}/g;function o(e,t=1e3,a=2){var i=t*Math.pow(a,e),s=Math.round(.5*i*(Math.random()-.5)*2);return Math.min(144e5,i+s)}function r(e){return e&&e._delegate?e._delegate:e}class e{constructor(e,t,a){this.name=e,this.instanceFactory=t,this.type=a,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}}var d,s;(w=d=d||{})[w.DEBUG=0]="DEBUG",w[w.VERBOSE=1]="VERBOSE",w[w.INFO=2]="INFO",w[w.WARN=3]="WARN",w[w.ERROR=4]="ERROR",w[w.SILENT=5]="SILENT";let x={debug:d.DEBUG,verbose:d.VERBOSE,info:d.INFO,warn:d.WARN,error:d.ERROR,silent:d.SILENT},V=d.INFO,$={[d.DEBUG]:"log",[d.VERBOSE]:"log",[d.INFO]:"info",[d.WARN]:"warn",[d.ERROR]:"error"},U=(e,t,...a)=>{if(!(t<e.logLevel)){var i=(new Date).toISOString(),s=$[t];if(!s)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[s](`[${i}] ${e.name}:`,...a)}};class K{constructor(e){this.name=e,this._logLevel=V,this._logHandler=U,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in d))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?x[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new 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,d.DEBUG,...e),this._logHandler(this,d.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,d.VERBOSE,...e),this._logHandler(this,d.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,d.INFO,...e),this._logHandler(this,d.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,d.WARN,...e),this._logHandler(this,d.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,d.ERROR,...e),this._logHandler(this,d.ERROR,...e)}}let q=(t,e)=>e.some(e=>t instanceof e),c,z;let W=new WeakMap,l=new WeakMap,G=new WeakMap,g=new WeakMap,h=new WeakMap;let f={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return l.get(e);if("objectStoreNames"===t)return e.objectStoreNames||G.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return p(e[t])},set(e,t,a){return e[t]=a,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function J(i){return i!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(z=z||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(i)?function(...e){return i.apply(m(this),e),p(W.get(this))}:function(...e){return p(i.apply(m(this),e))}:function(e,...t){var a=i.call(m(this),e,...t);return G.set(a,e.sort?e.sort():[e]),p(a)}}function X(e){var r,t;return"function"==typeof e?J(e):(e instanceof IDBTransaction&&(r=e,l.has(r)||(t=new Promise((e,t)=>{let a=()=>{r.removeEventListener("complete",i),r.removeEventListener("error",s),r.removeEventListener("abort",s)},i=()=>{e(),a()},s=()=>{t(r.error||new DOMException("AbortError","AbortError")),a()};r.addEventListener("complete",i),r.addEventListener("error",s),r.addEventListener("abort",s)}),l.set(r,t))),q(e,c=c||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,f):e)}function p(e){var r,t;return e instanceof IDBRequest?(r=e,(t=new Promise((e,t)=>{let a=()=>{r.removeEventListener("success",i),r.removeEventListener("error",s)},i=()=>{e(p(r.result)),a()},s=()=>{t(r.error),a()};r.addEventListener("success",i),r.addEventListener("error",s)})).then(e=>{e instanceof IDBCursor&&W.set(e,r)}).catch(()=>{}),h.set(t,r),t):g.has(e)?g.get(e):((t=X(e))!==e&&(g.set(e,t),h.set(t,e)),t)}let m=e=>h.get(e);let Y=["get","getKey","getAll","getAllKeys","count"],Z=["put","add","delete","clear"],v=new Map;function Q(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(v.get(t))return v.get(t);let s=t.replace(/FromIndex$/,""),r=t!==s,n=Z.includes(s);var a;return s in(r?IDBIndex:IDBObjectStore).prototype&&(n||Y.includes(s))?(a=async function(e,...t){var a=this.transaction(e,n?"readwrite":"readonly");let i=a.store;return r&&(i=i.index(t.shift())),(await Promise.all([i[s](...t),n&&a.done]))[0]},v.set(t,a),a):void 0}}f={...s=f,get:(e,t,a)=>Q(e,t)||s.get(e,t,a),has:(e,t)=>!!Q(e,t)||s.has(e,t)};var ee="@firebase/installations",t="0.6.19-canary.a09ef786f";let te=1e4,ae="w:"+t,ie="FIS_v2",se="https://firebaseinstallations.googleapis.com/v1",re=36e5;var w;let b=new i("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function ne(e){return e instanceof n&&e.code.includes("request-failed")}function oe({projectId:e}){return se+`/projects/${e}/installations`}function ce(e){return{token:e.token,requestStatus:2,expiresIn:Number(e.expiresIn.replace("s","000")),creationTime:Date.now()}}async function le(e,t){var a=(await t.json()).error;return b.create("request-failed",{requestName:e,serverCode:a.code,serverMessage:a.message,serverStatus:a.status})}function ge({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function he(e,{refreshToken:t}){var a=ge(e);return a.append("Authorization",(e=t,ie+" "+e)),a}async function ue(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function de(t){return new Promise(e=>{setTimeout(e,t)})}let fe=/^[cdef][\w-]{21}$/,y="";function pe(){try{var e=new Uint8Array(17),t=((self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16,(e=>btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_"))(e).substr(0,22));return fe.test(t)?t:y}catch{return y}}function C(e){return e.appName+"!"+e.appId}let me=new Map;function ve(e,t){var a=C(e),e=(we(a,t),a),a=(()=>(!E&&"BroadcastChannel"in self&&((E=new BroadcastChannel("[Firebase] FID Change")).onmessage=e=>{we(e.data.key,e.data.fid)}),E))();a&&a.postMessage({key:e,fid:t}),0===me.size&&E&&(E.close(),E=null)}function we(e,t){var a=me.get(e);if(a)for(var i of a)i(t)}let E=null;let be="firebase-installations-database",ye=1,S="firebase-installations-store",Ce=null;function _(){return Ce=Ce||((e,t,{blocked:a,upgrade:i,blocking:s,terminated:r})=>{let n=indexedDB.open(e,t);var o=p(n);return i&&n.addEventListener("upgradeneeded",e=>{i(p(n.result),e.oldVersion,e.newVersion,p(n.transaction),e)}),a&&n.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),o.then(e=>{r&&e.addEventListener("close",()=>r()),s&&e.addEventListener("versionchange",e=>s(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o})(be,ye,{upgrade:(e,t)=>{0===t&&e.createObjectStore(S)}})}async function I(e,t){var a=C(e),i=(await _()).transaction(S,"readwrite"),s=i.objectStore(S),r=await s.get(a);return await s.put(t,a),await i.done,r&&r.fid===t.fid||ve(e,t.fid),t}async function Ee(e){var t=C(e),a=(await _()).transaction(S,"readwrite");await a.objectStore(S).delete(t),await a.done}async function T(e,t){var a=C(e),i=(await _()).transaction(S,"readwrite"),s=i.objectStore(S),r=await s.get(a),n=t(r);return void 0===n?await s.delete(a):await s.put(n,a),await i.done,!n||r&&r.fid===n.fid||ve(e,n.fid),n}async function k(a){let i;var e=await T(a.appConfig,e=>{var t=_e(e||{fid:pe(),registrationStatus:0}),t=((e,t)=>{var a,i;return 0===t.registrationStatus?navigator.onLine?(a={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},i=(async(t,a)=>{try{var e=await(async({appConfig:e,heartbeatServiceProvider:t},{fid:a})=>{let i=oe(e);var s=ge(e),r=((r=t.getImmediate({optional:!0}))&&(r=await r.getHeartbeatsHeader())&&s.append("x-firebase-client",r),{fid:a,authVersion:ie,appId:e.appId,sdkVersion:ae});let n={method:"POST",headers:s,body:JSON.stringify(r)};if((s=await ue(()=>fetch(i,n))).ok)return{fid:(r=await s.json()).fid||a,registrationStatus:2,refreshToken:r.refreshToken,authToken:ce(r.authToken)};throw await le("Create Installation",s)})(t,a);return I(t.appConfig,e)}catch(e){throw ne(e)&&409===e.customData.serverCode?await Ee(t.appConfig):await I(t.appConfig,{fid:a.fid,registrationStatus:0}),e}})(e,a),{installationEntry:a,registrationPromise:i}):(a=Promise.reject(b.create("app-offline")),{installationEntry:t,registrationPromise:a}):1===t.registrationStatus?{installationEntry:t,registrationPromise:(async e=>{let t=await Se(e.appConfig);for(;1===t.registrationStatus;)await de(100),t=await Se(e.appConfig);var a,i;return 0!==t.registrationStatus?t:({installationEntry:a,registrationPromise:i}=await k(e),i||a)})(e)}:{installationEntry:t}})(a,t);return i=t.registrationPromise,t.installationEntry});return e.fid===y?{installationEntry:await i}:{installationEntry:e,registrationPromise:i}}function Se(e){return T(e,e=>{if(e)return _e(e);throw b.create("installation-not-found")})}function _e(e){var t;return 1===(t=e).registrationStatus&&t.registrationTime+te<Date.now()?{fid:e.fid,registrationStatus:0}:e}async function Ie({appConfig:e,heartbeatServiceProvider:t},a){[s,r]=[e,a.fid];let i=oe(s)+`/${r}/authTokens:generate`;var s,r,n=he(e,a),o=t.getImmediate({optional:!0}),o=(o&&(o=await o.getHeartbeatsHeader())&&n.append("x-firebase-client",o),{installation:{sdkVersion:ae,appId:e.appId}});let c={method:"POST",headers:n,body:JSON.stringify(o)};n=await ue(()=>fetch(i,c));if(n.ok)return ce(await n.json());throw await le("Generate Auth Token",n)}async function R(i,s=!1){let r;var e=await T(i.appConfig,e=>{if(!ke(e))throw b.create("not-registered");var t,a=e.authToken;if(s||2!==(t=a).requestStatus||(e=>{var t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+re})(t)){if(1===a.requestStatus)return r=(async(e,t)=>{let a=await Te(e.appConfig);for(;1===a.authToken.requestStatus;)await de(100),a=await Te(e.appConfig);var i=a.authToken;return 0===i.requestStatus?R(e,t):i})(i,s),e;if(navigator.onLine)return t=e,a={requestStatus:1,requestTime:Date.now()},a={...t,authToken:a},r=(async(t,a)=>{try{var e=await Ie(t,a),i={...a,authToken:e};return await I(t.appConfig,i),e}catch(e){var s;throw!ne(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(s={...a,authToken:{requestStatus:0}},await I(t.appConfig,s)):await Ee(t.appConfig),e}})(i,a),a;throw b.create("app-offline")}return e});return r?await r:e.authToken}function Te(e){return T(e,e=>{var t,a;if(ke(e))return t=e.authToken,1===(a=t).requestStatus&&a.requestTime+te<Date.now()?{...e,authToken:{requestStatus:0}}:e;throw b.create("not-registered")})}function ke(e){return void 0!==e&&2===e.registrationStatus}async function Re(e,t=!1){var a=e,i=(await(!(i=(await k(a)).registrationPromise)||!await i),await R(a,t));return i.token}function M(e){return b.create("missing-app-config-values",{valueName:e})}let Me="installations",Le=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:(e=>{if(!e||!e.options)throw M("App Configuration");if(!e.name)throw M("App Name");var t;for(t of["projectId","apiKey","appId"])if(!e.options[t])throw M(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}})(t),heartbeatServiceProvider:it._getProvider(t,"heartbeat"),_delete:()=>Promise.resolve()}},Fe=e=>{var t=e.getProvider("app").getImmediate();let a=it._getProvider(t,Me).getImmediate();return{getId:()=>(async e=>{var t=e,{installationEntry:a,registrationPromise:i}=await k(t);return(i||R(t)).catch(console.error),a.fid})(a),getToken:e=>Re(a,e)}};it._registerComponent(new e(Me,Le,"PUBLIC")),it._registerComponent(new e("installations-internal",Fe,"PRIVATE")),it.registerVersion(ee,t),it.registerVersion(ee,t,"esm2020");let L="@firebase/remote-config",De="0.7.0-canary.a09ef786f";class Ae{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}let F=new i("remoteconfig","Remote Config",{"already-initialized":"Remote Config already initialized","registration-window":"Undefined window object. This SDK only supports usage in a browser environment.","registration-project-id":"Undefined project identifier. Check Firebase app initialization.","registration-api-key":"Undefined API key. Check Firebase app initialization.","registration-app-id":"Undefined app identifier. Check Firebase app initialization.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","storage-delete":"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.","fetch-client-network":"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-timeout":'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',"fetch-throttle":'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',"fetch-client-parse":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","indexed-db-unavailable":"Indexed DB is not supported by current browser","custom-signal-max-allowed-signals":"Setting more than {$maxSignals} custom signals is not supported.","stream-error":"The stream was not able to connect to the backend: {$originalErrorMessage}.","realtime-unavailable":"The Realtime service is unavailable: {$originalErrorMessage}","update-message-invalid":"The stream invalidation message was unparsable: {$originalErrorMessage}","update-not-fetched":"Unable to fetch the latest config: {$originalErrorMessage}"});let Ne=["1","true","t","yes","y","on"];class D{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=Ne.indexOf(this._value.toLowerCase())}asNumber(){if("static"===this._source)return 0;let e=Number(this._value);return e=isNaN(e)?0:e}getSource(){return this._source}}async function Pe(e){var t=r(e),[a,i]=await Promise.all([t._storage.getLastSuccessfulFetchResponse(),t._storage.getActiveConfigEtag()]);return!!(a&&a.config&&a.eTag&&a.templateVersion&&a.eTag!==i)&&(await Promise.all([t._storageCache.setActiveConfig(a.config),t._storage.setActiveConfigEtag(a.eTag),t._storage.setActiveConfigTemplateVersion(a.templateVersion)]),!0)}function Be(e){let t=r(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function Oe(t){var a=r(t);let e=new Ae;setTimeout(async()=>{e.abort()},a.settings.fetchTimeoutMillis);var i,s=a._storageCache.getCustomSignals();s&&a._logger.debug("Fetching config with custom signals: "+JSON.stringify(s));try{await a._client.fetch({cacheMaxAgeMillis:a.settings.minimumFetchIntervalMillis,signal:e,customSignals:s}),await a._storageCache.setLastFetchStatus("success")}catch(e){t="fetch-throttle";s=(i=e)instanceof n&&-1!==i.code.indexOf(t)?"throttle":"failure";throw await a._storageCache.setLastFetchStatus(s),e}}function He(a){var e,t,i=r(a);return[e={},t={}]=[i._storageCache.getActiveConfig(),i.defaultConfig],Object.keys({...e,...t}).reduce((e,t)=>(e[t]=A(a,t),e),{})}function A(e,t){var a=r(e),i=(a._isInitializationComplete||a._logger.debug(`A value was requested for key "${t}" before SDK initialization completed.`+" Await on ensureInitialized if the intent was to get a previously activated value."),a._storageCache.getActiveConfig());return i&&void 0!==i[t]?new D("remote",i[t]):a.defaultConfig&&void 0!==a.defaultConfig[t]?new D("default",String(a.defaultConfig[t])):(a._logger.debug(`Returning static value for key "${t}".`+" Define a default or remote value if this is unintentional."),new D("static"))}class je{constructor(e,t,a,i){this.client=e,this.storage=t,this.storageCache=a,this.logger=i}isCachedDataFresh(e,t){var a;return t?(a=Date.now()-t,this.logger.debug("Config fetch cache check."+` Cache age millis: ${a}.`+` Cache max age millis (minimumFetchIntervalMillis setting): ${e}.`+` Is cache hit: ${a=a<=e}.`),a):(this.logger.debug("Config fetch cache check. Cache unpopulated."),!1)}async fetch(e){var[t,a]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(a&&this.isCachedDataFresh(e.cacheMaxAgeMillis,t))return a;e.eTag=a&&a.eTag;t=await this.client.fetch(e),a=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===t.status&&a.push(this.storage.setLastSuccessfulFetchResponse(t)),await Promise.all(a),t}}class xe{constructor(e,t,a,i,s,r){this.firebaseInstallations=e,this.sdkVersion=t,this.namespace=a,this.projectId=i,this.apiKey=s,this.appId=r}async fetch(a){var e,[t,i]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),s=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=`+this.apiKey,r={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":a.eTag||"*"},t={sdk_version:this.sdkVersion,app_instance_id:t,app_instance_id_token:i,app_id:this.appId,language_code:(e=navigator).languages&&e.languages[0]||e.language,custom_signals:a.customSignals},i={method:"POST",headers:r,body:JSON.stringify(t)},r=fetch(s,i),t=new Promise((e,t)=>{a.signal.addEventListener(()=>{var e=new Error("The operation was aborted.");e.name="AbortError",t(e)})});let n;try{await Promise.race([r,t]),n=await r}catch(e){let t="fetch-client-network";throw"AbortError"===e?.name&&(t="fetch-timeout"),F.create(t,{originalErrorMessage:e?.message})}let o=n.status;s=n.headers.get("ETag")||void 0;let c,l,g;if(200===n.status){let e;try{e=await n.json()}catch(e){throw F.create("fetch-client-parse",{originalErrorMessage:e?.message})}c=e.entries,l=e.state,g=e.templateVersion}if("INSTANCE_STATE_UNSPECIFIED"===l?o=500:"NO_CHANGE"===l?o=304:"NO_TEMPLATE"!==l&&"EMPTY_CONFIG"!==l||(c={}),304!==o&&200!==o)throw F.create("fetch-status",{httpStatus:o});return{status:o,eTag:s,config:c,templateVersion:g}}}class Ve{constructor(e,t){this.client=e,this.storage=t}async fetch(e){var t=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(e,t)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:a}){var s,r;s=t.signal,r=e,await new Promise((e,t)=>{var a=Math.max(r-Date.now(),0);let i=setTimeout(e,a);s.addEventListener(()=>{clearTimeout(i),t(F.create("fetch-throttle",{throttleEndTimeMillis:r}))})});try{var i=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),i}catch(e){if((e=>{var t;return e instanceof n&&e.customData&&(429===(t=Number(e.customData.httpStatus))||500===t||503===t||504===t)})(e))return i={throttleEndTimeMillis:Date.now()+o(a),backoffCount:a+1},await this.storage.setThrottleMetadata(i),this.attemptFetch(t,i);throw e}}}class $e{get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}constructor(e,t,a,i,s,r){this.app=e,this._client=t,this._storageCache=a,this._storage=i,this._logger=s,this._realtimeHandler=r,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:6e4,minimumFetchIntervalMillis:432e5},this.defaultConfig={}}}function N(e,t){var a=e.target.error||void 0;return F.create(t,{originalErrorMessage:a&&a?.message})}let P="app_namespace_store";class Ue{getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(e){return this.set("last_fetch_status",e)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(e){return this.set("last_successful_fetch_timestamp_millis",e)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(e){return this.set("last_successful_fetch_response",e)}getActiveConfig(){return this.get("active_config")}setActiveConfig(e){return this.set("active_config",e)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(e){return this.set("active_config_etag",e)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(e){return this.set("throttle_metadata",e)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}getCustomSignals(){return this.get("custom_signals")}getRealtimeBackoffMetadata(){return this.get("realtime_backoff_metadata")}setRealtimeBackoffMetadata(e){return this.set("realtime_backoff_metadata",e)}getActiveConfigTemplateVersion(){return this.get("last_known_template_version")}setActiveConfigTemplateVersion(e){return this.set("last_known_template_version",e)}}class Ke extends Ue{constructor(e,t,a,i=(()=>new Promise((t,a)=>{try{var e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{a(N(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{var t=e.target.result;0===e.oldVersion&&t.createObjectStore(P,{keyPath:"compositeKey"})}}catch(e){a(F.create("storage-open",{originalErrorMessage:e?.message}))}}))()){super(),this.appId=e,this.appName=t,this.namespace=a,this.openDbPromise=i}async setCustomSignals(e){var t=(await this.openDbPromise).transaction([P],"readwrite"),a=ze(e,await this.getWithTransaction("custom_signals",t)||{});return await this.setWithTransaction("custom_signals",a,t),a}async getWithTransaction(r,n){return new Promise((a,t)=>{var e=n.objectStore(P),i=this.createCompositeKey(r);try{var s=e.get(i);s.onerror=e=>{t(N(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;a(t?t.value:void 0)}}catch(e){t(F.create("storage-get",{originalErrorMessage:e?.message}))}})}async setWithTransaction(r,n,o){return new Promise((e,t)=>{var a=o.objectStore(P),i=this.createCompositeKey(r);try{var s=a.put({compositeKey:i,value:n});s.onerror=e=>{t(N(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(F.create("storage-set",{originalErrorMessage:e?.message}))}})}async get(e){var t=(await this.openDbPromise).transaction([P],"readonly");return this.getWithTransaction(e,t)}async set(e,t){var a=(await this.openDbPromise).transaction([P],"readwrite");return this.setWithTransaction(e,t,a)}async delete(r){let n=await this.openDbPromise;return new Promise((e,t)=>{var a=n.transaction([P],"readwrite").objectStore(P),i=this.createCompositeKey(r);try{var s=a.delete(i);s.onerror=e=>{t(N(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(F.create("storage-delete",{originalErrorMessage:e?.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class qe extends Ue{constructor(){super(...arguments),this.storage={}}async get(e){return Promise.resolve(this.storage[e])}async set(e,t){return this.storage[e]=t,Promise.resolve(void 0)}async delete(e){return this.storage[e]=void 0,Promise.resolve()}async setCustomSignals(e){var t=this.storage.custom_signals||{};return this.storage.custom_signals=ze(e,t),Promise.resolve(this.storage.custom_signals)}}function ze(e,t){var a={...t,...e},a=Object.fromEntries(Object.entries(a).filter(([,e])=>null!==e).map(([e,t])=>"number"==typeof t?[e,t.toString()]:[e,t]));if(100<Object.keys(a).length)throw F.create("custom-signal-max-allowed-signals",{maxSignals:100});return a}class We{constructor(e){this.storage=e}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}getCustomSignals(){return this.customSignals}async loadFromStorage(){var e=this.storage.getLastFetchStatus(),t=this.storage.getLastSuccessfulFetchTimestampMillis(),a=this.storage.getActiveConfig(),i=this.storage.getCustomSignals(),e=await e,e=(e&&(this.lastFetchStatus=e),await t),t=(e&&(this.lastSuccessfulFetchTimestampMillis=e),await a),e=(t&&(this.activeConfig=t),await i);e&&(this.customSignals=e)}setLastFetchStatus(e){return this.lastFetchStatus=e,this.storage.setLastFetchStatus(e)}setLastSuccessfulFetchTimestampMillis(e){return this.lastSuccessfulFetchTimestampMillis=e,this.storage.setLastSuccessfulFetchTimestampMillis(e)}setActiveConfig(e){return this.activeConfig=e,this.storage.setActiveConfig(e)}async setCustomSignals(e){this.customSignals=await this.storage.setCustomSignals(e)}}class Ge extends class{constructor(e){this.allowedEvents_=e,this.listeners_={},a(Array.isArray(e)&&0<e.length,"Requires a non-empty array")}trigger(t,...a){if(Array.isArray(this.listeners_[t])){var i=[...this.listeners_[t]];for(let e=0;e<i.length;e++)i[e].callback.apply(i[e].context,a)}}on(e,t,a){this.validateEventType_(e),this.listeners_[e]=this.listeners_[e]||[],this.listeners_[e].push({callback:t,context:a});var i=this.getInitialEvent(e);i&&t.apply(a,i)}off(e,t,a){this.validateEventType_(e);var i=this.listeners_[e]||[];for(let s=0;s<i.length;s++)if(i[s].callback===t&&(!a||a===i[s].context))return void i.splice(s,1)}validateEventType_(t){a(this.allowedEvents_.find(e=>e===t),"Unknown event: "+t)}}{static getInstance(){return new Ge}constructor(){super(["visible"]);let t,e;"undefined"!=typeof document&&void 0!==document.addEventListener&&(void 0!==document.hidden?(e="visibilitychange",t="hidden"):void 0!==document.mozHidden?(e="mozvisibilitychange",t="mozHidden"):void 0!==document.msHidden?(e="msvisibilitychange",t="msHidden"):void 0!==document.webkitHidden&&(e="webkitvisibilitychange",t="webkitHidden")),this.visible_=!0,e&&document.addEventListener(e,()=>{var e=!document[t];e!==this.visible_&&(this.visible_=e,this.trigger("visible",e))},!1)}getInitialEvent(e){return a("visible"===e,"Unknown event type: "+e),[this.visible_]}}let Je="featureDisabled",Xe="retryIntervalSeconds",Ye="latestTemplateVersionNumber";class Ze{constructor(e,t,a,i,s,r,n,o,c,l){this.firebaseInstallations=e,this.storage=t,this.sdkVersion=a,this.namespace=i,this.projectId=s,this.apiKey=r,this.appId=n,this.logger=o,this.storageCache=c,this.cachingClient=l,this.observers=new Set,this.isConnectionActive=!1,this.isRealtimeDisabled=!1,this.httpRetriesRemaining=8,this.isInBackground=!1,this.decoder=new TextDecoder("utf-8"),this.isClosingConnection=!1,this.propagateError=t=>this.observers.forEach(e=>e.error?.(t)),this.isStatusCodeRetryable=e=>!e||[408,429,502,503,504].includes(e),this.setRetriesRemaining(),Ge.getInstance().on("visible",this.onVisibilityChange,this)}async setRetriesRemaining(){var e=(await this.storage.getRealtimeBackoffMetadata())?.numFailedStreams||0;this.httpRetriesRemaining=Math.max(8-e,1)}async updateBackoffMetadataWithLastFailedStreamConnectionTime(e){var t=((await this.storage.getRealtimeBackoffMetadata())?.numFailedStreams||0)+1,a=o(t,6e4,2);await this.storage.setRealtimeBackoffMetadata({backoffEndTimeMillis:new Date(e.getTime()+a),numFailedStreams:t})}async updateBackoffMetadataWithRetryInterval(e){var t=Date.now(),t=new Date(t+1e3*e);await this.storage.setRealtimeBackoffMetadata({backoffEndTimeMillis:t,numFailedStreams:0}),await this.retryHttpConnectionWhenBackoffEnds()}async closeRealtimeHttpConnection(){if(!this.isClosingConnection){this.isClosingConnection=!0;try{this.reader&&await this.reader.cancel()}catch(e){this.logger.debug("Failed to cancel the reader, connection was lost.")}finally{this.reader=void 0}this.controller&&(await this.controller.abort(),this.controller=void 0),this.isClosingConnection=!1}}async resetRealtimeBackoff(){await this.storage.setRealtimeBackoffMetadata({backoffEndTimeMillis:new Date(-1),numFailedStreams:0})}resetRetryCount(){this.httpRetriesRemaining=8}async establishRealtimeConnection(e,t,a,i){var s=await this.storage.getActiveConfigEtag(),r=await this.storage.getActiveConfigTemplateVersion(),s={"X-Goog-Api-Key":this.apiKey,"X-Goog-Firebase-Installations-Auth":a,"Content-Type":"application/json",Accept:"application/json","If-None-Match":s||"*","Content-Encoding":"gzip"},r={project:this.projectId,namespace:this.namespace,lastKnownVersionNumber:r,appId:this.appId,sdkVersion:this.sdkVersion,appInstanceId:t};return await fetch(e,{method:"POST",headers:s,body:JSON.stringify(r),signal:i})}getRealtimeUrl(){var e=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfigrealtime.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:streamFetchInvalidations?key=`+this.apiKey;return new URL(e)}async createRealtimeConnection(){var[e,t]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken(!1)]),a=(this.controller=new AbortController,this.getRealtimeUrl());return await this.establishRealtimeConnection(a,e,t,this.controller.signal)}async retryHttpConnectionWhenBackoffEnds(){let e=await this.storage.getRealtimeBackoffMetadata();e=e||{backoffEndTimeMillis:new Date(-1),numFailedStreams:0};var t=new Date(e.backoffEndTimeMillis).getTime(),a=Date.now(),t=Math.max(0,t-a);await this.makeRealtimeHttpConnection(t)}setIsHttpConnectionRunning(e){this.isConnectionActive=e}checkAndSetHttpConnectionFlagIfNotRunning(){var e=this.canEstablishStreamConnection();return e&&this.setIsHttpConnectionRunning(!0),e}fetchResponseIsUpToDate(e,t){return null!=e.config&&e.templateVersion?e.templateVersion>=t:"success"===this.storageCache.getLastFetchStatus()}parseAndValidateConfigUpdateMessage(e){var t=e.indexOf("{"),a=e.indexOf("}",t);return t<0||a<0||a<=t?"":e.substring(t,a+1)}isEventListenersEmpty(){return 0===this.observers.size}getRandomInt(e){return Math.floor(Math.random()*e)}executeAllListenerCallbacks(t){this.observers.forEach(e=>e.next(t))}getChangedParams(e,t){var a,i,s=new Set,r=new Set(Object.keys(e||{})),n=new Set(Object.keys(t||{}));for(a of r)n.has(a)&&e[a]===t[a]||s.add(a);for(i of n)r.has(i)||s.add(i);return s}async fetchLatestConfig(e,a){var i=e-1,s=3-i,r=this.storageCache.getCustomSignals(),n=(r&&this.logger.debug("Fetching config with custom signals: "+JSON.stringify(r)),new Ae);try{var o,c={cacheMaxAgeMillis:0,signal:n,customSignals:r,fetchType:"REALTIME",fetchAttempt:s},l=await this.cachingClient.fetch(c);let t=await this.storage.getActiveConfig();if(this.fetchResponseIsUpToDate(l,a))if(null==l.config)this.logger.debug("The fetch succeeded, but the backend had no updates.");else{null==t&&(t={});let e=this.getChangedParams(l.config,t);0===e.size?this.logger.debug("Config was fetched, but no params changed."):(o={getUpdatedKeys(){return new Set(e)}},this.executeAllListenerCallbacks(o))}else this.logger.debug("Fetched template version is the same as SDK's current version. Retrying fetch."),await this.autoFetch(i,a)}catch(e){n=e instanceof Error?e.message:String(e),r=F.create("update-not-fetched",{originalErrorMessage:"Failed to auto-fetch config update: "+n});this.propagateError(r)}}async autoFetch(e,a){var t;if(0===e)t=F.create("update-not-fetched",{originalErrorMessage:"Unable to fetch the latest version of the template."}),this.propagateError(t);else{let t=1e3*this.getRandomInt(4);await new Promise(e=>setTimeout(e,t)),await this.fetchLatestConfig(e,a)}}async handleNotifications(e){let t="";for(;;){var{done:a,value:i}=await e.read();if(a)break;if(a=this.decoder.decode(i,{stream:!0}),t+=a,a.includes("}")&&0!==(t=this.parseAndValidateConfigUpdateMessage(t)).length){try{var s,r,n,o=JSON.parse(t);if(this.isEventListenersEmpty())break;if(Je in o&&!0===o[Je]){var c=F.create("realtime-unavailable",{originalErrorMessage:"The server is temporarily unavailable. Try again in a few minutes."});this.propagateError(c);break}Ye in o&&(s=await this.storage.getActiveConfigTemplateVersion(),r=Number(o[Ye]),s)&&s<r&&await this.autoFetch(3,r),Xe in o&&(n=Number(o[Xe]),await this.updateBackoffMetadataWithRetryInterval(n))}catch(e){this.logger.debug("Unable to parse latest config update message.",e);i=e instanceof Error?e.message:String(e);this.propagateError(F.create("update-message-invalid",{originalErrorMessage:i}))}t=""}}}async listenForNotifications(e){try{await this.handleNotifications(e)}catch(e){this.isInBackground||this.logger.debug("Real-time connection was closed due to an exception.")}}async prepareAndBeginRealtimeHttpStream(){if(this.checkAndSetHttpConnectionFlagIfNotRunning()){let e=await this.storage.getRealtimeBackoffMetadata();var a=(e=e||{backoffEndTimeMillis:new Date(-1),numFailedStreams:0}).backoffEndTimeMillis.getTime();if(Date.now()<a)await this.retryHttpConnectionWhenBackoffEnds();else{let e,t;try{e=await this.createRealtimeConnection(),t=e.status,e.ok&&e.body&&(this.resetRetryCount(),await this.resetRealtimeBackoff(),i=e.body.getReader(),this.reader=i,await this.listenForNotifications(i))}catch(e){this.isInBackground?this.resetRetryCount():this.logger.debug("Exception connecting to real-time RC backend. Retrying the connection...:",e)}finally{await this.closeRealtimeHttpConnection(),this.setIsHttpConnectionRunning(!1);var i,a=!this.isInBackground&&(void 0===t||this.isStatusCodeRetryable(t));a&&await this.updateBackoffMetadataWithLastFailedStreamConnectionTime(new Date),a||e?.ok?await this.retryHttpConnectionWhenBackoffEnds():(i="Unable to connect to the server. HTTP status code: "+t,a=F.create("stream-error",{originalErrorMessage:i}),this.propagateError(a))}}}}canEstablishStreamConnection(){var e=0<this.observers.size,t=!this.isRealtimeDisabled,a=!this.isConnectionActive,i=!this.isInBackground;return e&&t&&a&&i}async makeRealtimeHttpConnection(t){var e;this.canEstablishStreamConnection()&&(0<this.httpRetriesRemaining?(this.httpRetriesRemaining--,await new Promise(e=>setTimeout(e,t)),this.prepareAndBeginRealtimeHttpStream()):this.isInBackground||(e=F.create("stream-error",{originalErrorMessage:"Unable to connect to the server. Check your connection and try again."}),this.propagateError(e)))}async beginRealtime(){0<this.observers.size&&await this.makeRealtimeHttpConnection(0)}addObserver(e){this.observers.add(e),this.beginRealtime()}removeObserver(e){this.observers.has(e)&&this.observers.delete(e)}async onVisibilityChange(e){this.isInBackground=!e,e?await this.beginRealtime():await this.closeRealtimeHttpConnection()}}async function Qe(){if(!u())return!1;try{return await new Promise((i,s)=>{try{let e=!0,t="validate-browser-context-for-indexeddb-analytics-module",a=self.indexedDB.open(t);a.onsuccess=()=>{a.result.close(),e||self.indexedDB.deleteDatabase(t),i(!0)},a.onupgradeneeded=()=>{e=!1},a.onerror=()=>{s(a.error?.message||"")}}catch(e){s(e)}})}catch(e){return!1}}it._registerComponent(new e("remote-config",function(e,{options:t}){var a=e.getProvider("app").getImmediate(),i=e.getProvider("installations-internal").getImmediate(),{projectId:s,apiKey:r,appId:n}=a.options;if(!s)throw F.create("registration-project-id");if(!r)throw F.create("registration-api-key");if(!n)throw F.create("registration-app-id");var o=t?.templateId||"firebase",c=u()?new Ke(n,a.name,o):new qe,l=new We(c),g=new K(L),h=(g.logLevel=d.ERROR,new xe(i,it.SDK_VERSION,o,s,r,n)),h=new Ve(h,c),h=new je(h,c,l,g),i=new Ze(i,c,it.SDK_VERSION,o,s,r,n,g,l,h),o=new $e(a,h,l,c,g,i);return Be(o),o},"PUBLIC").setMultipleInstances(!0)),it.registerVersion(L,De),it.registerVersion(L,De,"esm2020");class et{constructor(e,t){this.app=e,this._delegate=t}get defaultConfig(){return this._delegate.defaultConfig}set defaultConfig(e){this._delegate.defaultConfig=e}get fetchTimeMillis(){return this._delegate.fetchTimeMillis}get lastFetchStatus(){return this._delegate.lastFetchStatus}get settings(){return this._delegate.settings}set settings(e){this._delegate.settings=e}activate(){return Pe(this._delegate)}ensureInitialized(){return Be(this._delegate)}fetch(){return Oe(this._delegate)}fetchAndActivate(){return(async e=>(await Oe(e=r(e)),Pe(e)))(this._delegate)}getAll(){return He(this._delegate)}getBoolean(e){return A(r(this._delegate),e).asBoolean()}getNumber(e){return A(r(this._delegate),e).asNumber()}getString(e){return A(r(this._delegate),e).asString()}getValue(e){return A(this._delegate,e)}setLogLevel(e){var t=this._delegate,a=r(t);switch(e){case"debug":a._logger.logLevel=d.DEBUG;break;case"silent":a._logger.logLevel=d.SILENT;break;default:a._logger.logLevel=d.ERROR}}}function tt(e,{instanceIdentifier:t}){var a=e.getProvider("app-compat").getImmediate(),i=e.getProvider("remote-config").getImmediate({identifier:t});return new et(a,i)}(w=O.default).INTERNAL.registerComponent(new e("remoteConfig-compat",tt,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:Qe})),w.registerVersion("@firebase/remote-config-compat","0.2.20-canary.a09ef786f")}).apply(this,arguments)}catch(e){throw console.error(e),new Error("Cannot instantiate firebase-remote-config-compat.js - be sure to load firebase-app.js first.")}});
2
2
  //# sourceMappingURL=firebase-remote-config-compat.js.map