@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
1 lines • 91.7 kB
JavaScript
var GrafanaFaroWebSdk=function(e){"use strict";class t{constructor(e,t){var i,n;this.signalBuffer=[],this.itemLimit=null!==(i=null==t?void 0:t.itemLimit)&&void 0!==i?i:50,this.sendTimeout=null!==(n=null==t?void 0:t.sendTimeout)&&void 0!==n?n:250,this.paused=(null==t?void 0:t.paused)||!1,this.sendFn=e,this.flushInterval=-1,this.paused||this.start(),document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flush()})}addItem(e){this.paused||(this.signalBuffer.push(e),this.signalBuffer.length>=this.itemLimit&&this.flush())}start(){this.paused=!1,this.sendTimeout>0&&(this.flushInterval=window.setInterval(()=>this.flush(),this.sendTimeout))}pause(){this.paused=!0,clearInterval(this.flushInterval)}groupItems(e){const t=new Map;return e.forEach(e=>{const i=JSON.stringify(e.meta);let n=t.get(i);n=void 0===n?[e]:[...n,e],t.set(i,n)}),Array.from(t.values())}flush(){if(this.paused||0===this.signalBuffer.length)return;this.groupItems(this.signalBuffer).forEach(this.sendFn),this.signalBuffer=[]}}var i;e.TransportItemType=void 0,(i=e.TransportItemType||(e.TransportItemType={})).EXCEPTION="exception",i.LOG="log",i.MEASUREMENT="measurement",i.TRACE="trace",i.EVENT="event";const n={[e.TransportItemType.EXCEPTION]:"exceptions",[e.TransportItemType.LOG]:"logs",[e.TransportItemType.MEASUREMENT]:"measurements",[e.TransportItemType.TRACE]:"traces",[e.TransportItemType.EVENT]:"events"};function s(e,i,n,s){var o;i.debug("Initializing transports");const a=[];let l=n.paused,u=[];const c=e=>{let t=e;for(const e of u){const i=t.map(e).filter(Boolean);if(0===i.length)return[];t=r(i,n)}return t},d=e=>{const t=c(e);if(0!==t.length)for(const e of a)i.debug(`Transporting item using ${e.name}\n`,t),e.isBatched()&&e.send(t)};let p;(null===(o=n.batching)||void 0===o?void 0:o.enabled)&&(p=new t(d,{sendTimeout:n.batching.sendTimeout,itemLimit:n.batching.itemLimit,paused:l}));return{add:(...t)=>{i.debug("Adding transports"),t.forEach(t=>{i.debug(`Adding "${t.name}" transport`);a.some(e=>e===t)?i.warn(`Transport ${t.name} is already added`):(t.unpatchedConsole=e,t.internalLogger=i,t.config=n,t.metas=s,a.push(t))})},addBeforeSendHooks:(...e)=>{i.debug("Adding beforeSendHooks\n",u),e.forEach(e=>{e&&u.push(e)})},getBeforeSendHooks:()=>[...u],execute:e=>{var t;l||((null===(t=n.batching)||void 0===t?void 0:t.enabled)&&(null==p||p.addItem(e)),(e=>{var t,s;if((null===(t=n.batching)||void 0===t?void 0:t.enabled)&&a.every(e=>e.isBatched()))return;const[r]=c([e]);if(void 0!==r)for(const e of a)i.debug(`Transporting item using ${e.name}\n`,r),e.isBatched()?(null===(s=n.batching)||void 0===s?void 0:s.enabled)||e.send([r]):e.send(r)})(e))},isPaused:()=>l,pause:()=>{i.debug("Pausing transports"),null==p||p.pause(),l=!0},remove:(...e)=>{i.debug("Removing transports"),e.forEach(e=>{i.debug(`Removing "${e.name}" transport`);const t=a.indexOf(e);-1!==t?a.splice(t,1):i.warn(`Transport "${e.name}" is not added`)})},removeBeforeSendHooks:(...e)=>{u.filter(t=>!e.includes(t))},get transports(){return[...a]},unpause:()=>{i.debug("Unpausing transports"),null==p||p.start(),l=!1}}}function r(t,i){if(i.preserveOriginalError)for(const i of t)i.type===e.TransportItemType.EXCEPTION&&delete i.payload.originalError;return t}function o(e,t){return typeof e===t}function a(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function l(e,t){try{return e instanceof t}catch(e){return!1}}const u=e=>o(e,"null"),c=e=>o(e,"string"),d=e=>o(e,"number")&&!isNaN(e)||o(e,"bigint"),p=e=>o(e,"boolean"),g=e=>!u(e)&&o(e,"object"),h=e=>o(e,"function"),m=e=>a(e,"Array"),f=e=>!g(e)&&!h(e),v="undefined"!=typeof Event,b=e=>v&&l(e,Event),w="undefined"!=typeof Error,y=e=>w&&l(e,Error),S=e=>a(e,"ErrorEvent"),T=e=>a(e,"DOMError"),E=e=>a(e,"DOMException"),I="undefined"!=typeof Element,k="undefined"!=typeof Map;function x(e){return null==e||(m(e)||c(e)?0===e.length:!!g(e)&&0===Object.keys(e).length)}function O(e,t){if(e===t)return!0;if(o(e,"number")&&isNaN(e))return o(t,"number")&&isNaN(t);const i=m(e),n=m(t);if(i!==n)return!1;if(i&&n){const i=e.length;if(i!==t.length)return!1;for(let n=i;0!==n--;)if(!O(e[n],t[n]))return!1;return!0}const s=g(e),r=g(t);if(s!==r)return!1;if(e&&t&&s&&r){const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return!1;for(let e of i)if(!n.includes(e))return!1;for(let n of i)if(!O(e[n],t[n]))return!1;return!0}return!1}function A(){return Date.now()}function L(){return(new Date).toISOString()}function _(e){return new Date(e).toISOString()}var U;e.LogLevel=void 0,(U=e.LogLevel||(e.LogLevel={})).TRACE="trace",U.DEBUG="debug",U.INFO="info",U.LOG="log",U.WARN="warn",U.ERROR="error";const C=e.LogLevel.LOG,j=[e.LogLevel.TRACE,e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.LOG,e.LogLevel.WARN,e.LogLevel.ERROR];function N(){}function M(e){const{size:t,concurrency:i}=e,n=[];let s=0;const r=()=>{if(s<i&&n.length){const{producer:e,resolve:t,reject:i}=n.shift();s++,e().then(e=>{s--,r(),t(e)},e=>{s--,r(),i(e)})}};return{add:e=>{if(n.length+s>=t)throw new Error("Task buffer full");return new Promise((t,i)=>{n.push({producer:e,resolve:t,reject:i}),r()})}}}const P="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";function D(e=10){return Array.from(Array(e)).map(()=>P[Math.floor(59*Math.random())]).join("")}const R="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:void 0;function z(e={}){return JSON.stringify(null!=e?e:{},function(){const e=new WeakSet;return function(t,i){if(g(i)&&null!==i){if(e.has(i))return null;e.add(i)}return i}}())}function B(e={}){const t={};for(const[i,n]of Object.entries(e))t[i]=g(n)&&null!==n?z(n):String(n);return t}class q{constructor(){this.subscribers=[]}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>this.unsubscribe(e)}}unsubscribe(e){this.subscribers=this.subscribers.filter(t=>t!==e)}notify(e){this.subscribers.forEach(t=>t(e))}first(){const e=new q,t=t=>{e.notify(t),i.unsubscribe()},i=this.subscribe(t),n=e.unsubscribe.bind(e);return this.withUnsubscribeOverride(e,n,t)}takeWhile(e){const t=new q,i=n=>{e(n)?t.notify(n):t.unsubscribe(i)};this.subscribe(i);const n=t.unsubscribe.bind(t);return this.withUnsubscribeOverride(t,n,i)}filter(e){const t=new q,i=i=>{e(i)&&t.notify(i)};this.subscribe(i);const n=t.unsubscribe.bind(t);return this.withUnsubscribeOverride(t,n,i)}merge(...e){const t=new q,i=[];e.forEach(e=>{const n=e.subscribe(e=>{t.notify(e)});i.push(n)});const n=t.unsubscribeAll.bind(t);return t.unsubscribe=()=>{i.forEach(e=>e.unsubscribe()),n()},t}withUnsubscribeOverride(e,t,i){return e.unsubscribe=e=>{t(e),this.unsubscribe(i)},e}unsubscribeAll(){this.subscribers=[]}}var F;e.InternalLoggerLevel=void 0,(F=e.InternalLoggerLevel||(e.InternalLoggerLevel={}))[F.OFF=0]="OFF",F[F.ERROR=1]="ERROR",F[F.WARN=2]="WARN",F[F.INFO=3]="INFO",F[F.VERBOSE=4]="VERBOSE";const V={debug:N,error:N,info:N,prefix:"Faro",warn:N},$=e.InternalLoggerLevel.ERROR,H=Object.assign({},console);let G=H;function W(e){var t;return G=null!==(t=e.unpatchedConsole)&&void 0!==t?t:G,G}function K(t=H,i=$){const n=V;return i>e.InternalLoggerLevel.OFF&&(n.error=i>=e.InternalLoggerLevel.ERROR?function(...e){t.error(`${n.prefix}\n`,...e)}:N,n.warn=i>=e.InternalLoggerLevel.WARN?function(...e){t.warn(`${n.prefix}\n`,...e)}:N,n.info=i>=e.InternalLoggerLevel.INFO?function(...e){t.info(`${n.prefix}\n`,...e)}:N,n.debug=i>=e.InternalLoggerLevel.VERBOSE?function(...e){t.debug(`${n.prefix}\n`,...e)}:N),n}let X=V;function J(e,t){return X=K(e,t.internalLoggerLevel),X}class Z{constructor(){this.unpatchedConsole=H,this.internalLogger=V,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}class Y extends Z{isBatched(){return!1}getIgnoreUrls(){return[]}}function Q(e,t){var i,n;if(void 0===t)return e;if(void 0===e)return{resourceSpans:t};const s=null===(i=e.resourceSpans)||void 0===i?void 0:i[0];if(void 0===s)return e;const r=(null==s?void 0:s.scopeSpans)||[],o=(null===(n=null==t?void 0:t[0])||void 0===n?void 0:n.scopeSpans)||[];return Object.assign(Object.assign({},e),{resourceSpans:[Object.assign(Object.assign({},s),{scopeSpans:[...r,...o]})]})}function ee(t){let i={meta:{}};return void 0!==t[0]&&(i.meta=t[0].meta),t.forEach(t=>{switch(t.type){case e.TransportItemType.LOG:case e.TransportItemType.EVENT:case e.TransportItemType.EXCEPTION:case e.TransportItemType.MEASUREMENT:{const e=n[t.type],s=i[e];i=Object.assign(Object.assign({},i),{[e]:void 0===s?[t.payload]:[...s,t.payload]});break}case e.TransportItemType.TRACE:i=Object.assign(Object.assign({},i),{traces:Q(i.traces,t.payload.resourceSpans)})}}),i}const te="normal";var ie;e.UserActionState=void 0,(ie=e.UserActionState||(e.UserActionState={}))[ie.Started=0]="Started",ie[ie.Halted=1]="Halted",ie[ie.Cancelled=2]="Cancelled",ie[ie.Ended=3]="Ended";class ne{constructor(){this.buffer=[]}addItem(e){this.buffer.push(e)}flushBuffer(e){if(h(e))for(const t of this.buffer)e(t);this.buffer.length=0}size(){return this.buffer.length}}class se extends q{constructor({name:t,parentId:i,trigger:n,transports:s,attributes:r,trackUserActionsExcludeItem:o,importance:a=te,pushEvent:l}){super(),this.name=t,this.attributes=r,this.id=D(),this.trigger=n,this.parentId=null!=i?i:this.id,this.trackUserActionsExcludeItem=o,this.importance=a,this._pushEvent=l,this._itemBuffer=new ne,this._transports=s,this._state=e.UserActionState.Started,this._start()}addItem(t){return this._state===e.UserActionState.Started&&(this._itemBuffer.addItem(t),!0)}_start(){this._state=e.UserActionState.Started,this._state===e.UserActionState.Started&&(this.startTime=A())}halt(){this._state===e.UserActionState.Started&&(this._state=e.UserActionState.Halted,this.notify(this._state))}cancel(){this._state===e.UserActionState.Started&&this._itemBuffer.flushBuffer(),this._state=e.UserActionState.Cancelled,this.notify(this._state)}end(){if(this._state===e.UserActionState.Cancelled)return;const t=A(),i=t-this.startTime;this._state=e.UserActionState.Ended,this._itemBuffer.flushBuffer(t=>{if(function(t,i){return(null==i?void 0:i(t))||t.type===e.TransportItemType.MEASUREMENT&&"web-vitals"===t.payload.type}(t,this.trackUserActionsExcludeItem))return void this._transports.execute(t);const i=Object.assign(Object.assign({},t),{payload:Object.assign(Object.assign({},t.payload),{action:{parentId:this.id,name:this.name}})});this._transports.execute(i)}),this._state=e.UserActionState.Ended,this.notify(this._state),this._pushEvent("faro.user.action",Object.assign({userActionName:this.name,userActionStartTime:this.startTime.toString(),userActionEndTime:t.toString(),userActionDuration:i.toString(),userActionTrigger:this.trigger,userActionImportance:this.importance},B(this.attributes)),void 0,{timestampOverwriteMs:this.startTime,customPayloadTransformer:e=>(e.action={id:this.id,name:this.name},e)})}getState(){return this._state}}const re=new q;function oe(t,i){if(!t)return!1;return(null==t?void 0:t.getState())===e.UserActionState.Started&&(t.addItem(i),!0)}const ae="Error",le=e=>e.map(e=>g(e)?z(e):String(e)).join(" ");let ue;function ce({internalLogger:t,config:i,metas:n,transports:s,tracesApi:r,userActionsApi:o}){var a;t.debug("Initializing exceptions API");let l=null;ue=null!==(a=i.parseStacktrace)&&void 0!==a?a:ue;const d=e=>{t.debug("Changing stacktrace parser"),ue=null!=e?e:ue},{ignoreErrors:p=[],preserveOriginalError:h}=i;return d(i.parseStacktrace),{changeStacktraceParser:d,getStacktraceParser:()=>ue,pushError:(a,{skipDedupe:d,stackFrames:f,type:v,context:b,spanContext:w,timestampOverwriteMs:S,originalError:T}={})=>{if(!function(e,t){const{message:i,name:n,stack:s}=t;return r=e,o=i+" "+n+" "+s,r.some(e=>c(e)?o.includes(e):!!o.match(e));var r,o}(p,null!=T?T:a))try{const c=B(Object.assign(Object.assign({},function(e){let t=e.cause;y(t)?t=e.cause.toString():null!==t&&(g(e.cause)||m(e.cause))?t=z(e.cause):null!=t&&(t=e.cause.toString());return null==t?{}:{cause:t}}(null!=T?T:a)),null!=b?b:{})),p={meta:n.value,payload:Object.assign(Object.assign({type:v||a.name||ae,value:a.message,timestamp:S?_(S):L(),trace:w?{trace_id:w.traceId,span_id:w.spanId}:r.getTraceContext()},x(c)?{}:{context:c}),h?{originalError:T}:{}),type:e.TransportItemType.EXCEPTION};(null==(f=null!=f?f:a.stack?null==ue?void 0:ue(a).frames:void 0)?void 0:f.length)&&(p.payload.stacktrace={frames:f});const E={type:p.payload.type,value:p.payload.value,stackTrace:p.payload.stacktrace,context:p.payload.context};if(!d&&i.dedupe&&!u(l)&&O(E,l))return void t.debug("Skipping error push because it is the same as the last one\n",p.payload);l=E,t.debug("Pushing exception\n",p),oe(o.getActiveUserAction(),p)||s.execute(p)}catch(e){t.error("Error pushing event",e)}}}}const de=e=>e.map(e=>{try{return String(e)}catch(e){return""}}).join(" ");function pe(t,i,n,s,r){i.debug("Initializing API");let o=null;const a=function({transports:t,internalLogger:i,config:n,pushEvent:s}){var r;const o=null===(r=n.userActionsInstrumentation)||void 0===r?void 0:r.excludeItem;let a;const l=()=>a,u={startUserAction:(n,r,u)=>{if(void 0===l()){const i=new se({name:n,transports:t,attributes:r,trigger:(null==u?void 0:u.triggerName)||"faroApiCall",importance:(null==u?void 0:u.importance)||te,trackUserActionsExcludeItem:o,pushEvent:s});return i.filter(t=>[e.UserActionState.Ended,e.UserActionState.Cancelled].includes(t)).first().subscribe(()=>{a=void 0}),re.notify({type:"user_action_start",userAction:i}),a=i,a}i.error("Attempted to create a new user action while one is already running. This is not possible.")},getActiveUserAction:l};return u}({transports:r,config:n,internalLogger:i,pushEvent:(e,t,n,s)=>{o?o(e,t,n,s):i.warn("pushEventImpl is not initialized. Event dropped:",{name:e,attributes:t,domain:n,options:s})}}),l=function(t,i,n,s,r){let o;return i.debug("Initializing traces API"),{getOTEL:()=>o,getTraceContext:()=>{const e=null==o?void 0:o.trace.getSpanContext(o.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,t)=>{i.debug("Initializing OpenTelemetry"),o={trace:e,context:t}},isOTELInitialized:()=>!!o,pushTraces:t=>{try{const n={type:e.TransportItemType.TRACE,payload:t,meta:s.value};i.debug("Pushing trace\n",n),r.execute(n)}catch(e){i.error("Error pushing trace\n",e)}}}}(0,i,0,s,r),d={internalLogger:i,userActionsApi:a,config:n,metas:s,transports:r,tracesApi:l},p=function({internalLogger:t,config:i,metas:n,transports:s,tracesApi:r,userActionsApi:o}){let a=null;return{pushEvent:(l,c,d,{skipDedupe:p,spanContext:g,timestampOverwriteMs:h,customPayloadTransformer:m=e=>e}={})=>{try{const f=B(c),v={meta:n.value,payload:m({name:l,domain:null!=d?d:i.eventDomain,attributes:x(f)?void 0:f,timestamp:h?_(h):L(),trace:g?{trace_id:g.traceId,span_id:g.spanId}:r.getTraceContext()}),type:e.TransportItemType.EVENT},b={name:v.payload.name,attributes:v.payload.attributes,domain:v.payload.domain};if(!p&&i.dedupe&&!u(a)&&O(b,a))return void t.debug("Skipping event push because it is the same as the last one\n",v.payload);a=b,t.debug("Pushing event\n",v),oe(o.getActiveUserAction(),v)||s.execute(v)}catch(e){t.error("Error pushing event",e)}}}}(d);return o=p.pushEvent,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},l),ce(d)),function({internalLogger:e,metas:t}){let i,n,s,r;e.debug("Initializing meta API");const o=e=>{n&&t.remove(n),n={user:e},t.add(n)},a=(e,n)=>{var s;const r=null==n?void 0:n.overrides,o=r?{overrides:Object.assign(Object.assign({},null===(s=null==i?void 0:i.session)||void 0===s?void 0:s.overrides),r)}:{};i&&t.remove(i),i={session:Object.assign(Object.assign({},x(e)?void 0:e),o)},t.add(i)},l=()=>t.value.session,u=()=>t.value.page;return{setUser:o,resetUser:o,setSession:a,resetSession:a,getSession:l,setView:(e,i)=>{var n;if((null==i?void 0:i.overrides)&&a(l(),{overrides:i.overrides}),(null===(n=null==s?void 0:s.view)||void 0===n?void 0:n.name)===(null==e?void 0:e.name))return;const r=s;s={view:e},t.add(s),r&&t.remove(r)},getView:()=>t.value.view,setPage:e=>{var i;const n=c(e)?Object.assign(Object.assign({},null!==(i=null==r?void 0:r.page)&&void 0!==i?i:u()),{id:e}):e;r&&t.remove(r),r={page:n},t.add(r)},getPage:u}}(d)),function({internalLogger:t,config:i,metas:n,transports:s,tracesApi:r,userActionsApi:o}){var a;t.debug("Initializing logs API");let l=null;const c=null!==(a=i.logArgsSerializer)&&void 0!==a?a:de;return{pushLog:(a,{context:d,level:p,skipDedupe:g,spanContext:h,timestampOverwriteMs:m}={})=>{try{const f=B(d),v={type:e.TransportItemType.LOG,payload:{message:c(a),level:null!=p?p:C,context:x(f)?void 0:f,timestamp:m?_(m):L(),trace:h?{trace_id:h.traceId,span_id:h.spanId}:r.getTraceContext()},meta:n.value},b={message:v.payload.message,level:v.payload.level,context:v.payload.context};if(!g&&i.dedupe&&!u(l)&&O(b,l))return void t.debug("Skipping log push because it is the same as the last one\n",v.payload);l=b,t.debug("Pushing log\n",v),oe(o.getActiveUserAction(),v)||s.execute(v)}catch(e){t.error("Error pushing log\n",e)}}}}(d)),function({internalLogger:t,config:i,metas:n,transports:s,tracesApi:r,userActionsApi:o}){t.debug("Initializing measurements API");let a=null;return{pushMeasurement:(l,{skipDedupe:c,context:d,spanContext:p,timestampOverwriteMs:g}={})=>{try{const h=B(d),m={type:e.TransportItemType.MEASUREMENT,payload:Object.assign(Object.assign({},l),{trace:p?{trace_id:p.traceId,span_id:p.spanId}:r.getTraceContext(),timestamp:g?_(g):L(),context:x(h)?void 0:h}),meta:n.value},f={type:m.payload.type,values:m.payload.values,context:m.payload.context};if(!c&&i.dedupe&&!u(a)&&O(f,a))return void t.debug("Skipping measurement push because it is the same as the last one\n",m.payload);a=f,t.debug("Pushing measurement\n",m),oe(o.getActiveUserAction(),m)||s.execute(m)}catch(e){t.error("Error pushing measurement\n",e)}}}}(d)),p),a)}class ge extends Z{constructor(){super(...arguments),this.api={},this.transports={}}}const he="2.1.0";const me="_faroInternal";function fe(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(R,me,{configurable:!1,enumerable:!1,writable:!1,value:e}))}function ve(){return me in R}function be(t,i,n,s,r,o,a){return i.debug("Initializing Faro"),e.faro={api:o,config:n,instrumentations:a,internalLogger:i,metas:s,pause:r.pause,transports:r,unpatchedConsole:t,unpause:r.unpause},fe(e.faro),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in R)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(R,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(e.faro),e.faro}function we(e){const t=W(e),i=J(t,e);if(ve()&&!e.isolate)return void i.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');i.debug("Initializing");const n=function(e,t){let i=[],n=[];const s=()=>i.reduce((e,t)=>Object.assign(e,h(t)?t():t),{}),r=()=>{if(n.length){const e=s();n.forEach(t=>t(e))}};return{add:(...e)=>{t.debug("Adding metas\n",e),i.push(...e),r()},remove:(...e)=>{t.debug("Removing metas\n",e),i=i.filter(t=>!e.includes(t)),r()},addListener:e=>{t.debug("Adding metas listener\n",e),n.push(e)},removeListener:e=>{t.debug("Removing metas listener\n",e),n=n.filter(t=>t!==e)},get value(){return s()}}}(0,i),r=s(t,i,e,n),o=pe(0,i,e,n,r),a=function(e,t,i,n,s,r){t.debug("Initializing instrumentations");const o=[];return{add:(...a)=>{t.debug("Adding instrumentations"),a.forEach(a=>{t.debug(`Adding "${a.name}" instrumentation`),o.some(e=>e.name===a.name)?t.warn(`Instrumentation ${a.name} is already added`):(a.unpatchedConsole=e,a.internalLogger=t,a.config=i,a.metas=n,a.transports=s,a.api=r,o.push(a),a.initialize())})},get instrumentations(){return[...o]},remove:(...e)=>{t.debug("Removing instrumentations"),e.forEach(e=>{var i,n;t.debug(`Removing "${e.name}" instrumentation`);const s=o.reduce((t,i,n)=>null===t&&i.name===e.name?n:null,null);null!==s?(null===(n=(i=o[s]).destroy)||void 0===n||n.call(i),o.splice(s,1)):t.warn(`Instrumentation "${e.name}" is not added`)})}}}(t,i,e,n,r,o),l=be(t,i,e,n,r,o,a);return function(e){var t,i;const n={sdk:{version:he},app:{bundleId:e.config.app.name&&(s=e.config.app.name,null==R?void 0:R[`__faroBundleId_${s}`])}};var s;const r=null===(t=e.config.sessionTracking)||void 0===t?void 0:t.session;r&&e.api.setSession(r),e.config.app&&(n.app=Object.assign(Object.assign({},e.config.app),n.app)),e.config.user&&(n.user=e.config.user),e.config.view&&(n.view=e.config.view),e.metas.add(n,...null!==(i=e.config.metas)&&void 0!==i?i:[])}(l),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend)}(l),function(e){e.instrumentations.add(...e.config.instrumentations)}(l),l}e.faro={};const ye="faro",Se={enabled:!0,sendTimeout:250,itemLimit:50},Te="view_changed",Ee="session_start",Ie="session_resume",ke="session_extend",xe="service_name_override",Oe="unknown";var Ae,Le={exports:{}};var _e,Ue,Ce=(Ae||(Ae=1,_e=Le,Ue=Le.exports,function(e,t){var i="function",n="undefined",s="object",r="string",o="major",a="model",l="name",u="type",c="vendor",d="version",p="architecture",g="console",h="mobile",m="tablet",f="smarttv",v="wearable",b="embedded",w="Amazon",y="Apple",S="ASUS",T="BlackBerry",E="Browser",I="Chrome",k="Firefox",x="Google",O="Honor",A="Huawei",L="LG",_="Microsoft",U="Motorola",C="Nvidia",j="OnePlus",N="Opera",M="OPPO",P="Samsung",D="Sharp",R="Sony",z="Xiaomi",B="Zebra",q="Facebook",F="Chromium OS",V="Mac OS",$=" Browser",H=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},G=function(e,t){return typeof e===r&&-1!==W(t).indexOf(W(e))},W=function(e){return e.toLowerCase()},K=function(e,t){if(typeof e===r)return e=e.replace(/^\s\s*/,""),typeof t===n?e:e.substring(0,500)},X=function(e,n){for(var r,o,a,l,u,c,d=0;d<n.length&&!u;){var p=n[d],g=n[d+1];for(r=o=0;r<p.length&&!u&&p[r];)if(u=p[r++].exec(e))for(a=0;a<g.length;a++)c=u[++o],typeof(l=g[a])===s&&l.length>0?2===l.length?typeof l[1]==i?this[l[0]]=l[1].call(this,c):this[l[0]]=l[1]:3===l.length?typeof l[1]!==i||l[1].exec&&l[1].test?this[l[0]]=c?c.replace(l[1],l[2]):t:this[l[0]]=c?l[1].call(this,c,l[2]):t:4===l.length&&(this[l[0]]=c?l[3].call(this,c.replace(l[1],l[2])):t):this[l]=c||t;d+=2}},J=function(e,i){for(var n in i)if(typeof i[n]===s&&i[n].length>0){for(var r=0;r<i[n].length;r++)if(G(i[n][r],e))return"?"===n?t:n}else if(G(i[n],e))return"?"===n?t:n;return i.hasOwnProperty("*")?i["*"]:e},Z={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Y={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[d,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[d,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,d],[/opios[\/ ]+([\w\.]+)/i],[d,[l,N+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[d,[l,N+" GX"]],[/\bopr\/([\w\.]+)/i],[d,[l,N]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[d,[l,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[d,[l,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,d],[/quark(?:pc)?\/([-\w\.]+)/i],[d,[l,"Quark"]],[/\bddg\/([\w\.]+)/i],[d,[l,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[d,[l,"UC"+E]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[d,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[d,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[d,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[d,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[d,[l,"Smart Lenovo "+E]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+E],d],[/\bfocus\/([\w\.]+)/i],[d,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[d,[l,N+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[d,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[d,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[d,[l,N+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[d,[l,"MIUI"+$]],[/fxios\/([\w\.-]+)/i],[d,[l,k]],[/\bqihoobrowser\/?([\w\.]*)/i],[d,[l,"360"]],[/\b(qq)\/([\w\.]+)/i],[[l,/(.+)/,"$1Browser"],d],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1"+$],d],[/samsungbrowser\/([\w\.]+)/i],[d,[l,P+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[d,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],d],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[l,d],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[l],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[d,l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,q],d],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,d],[/\bgsa\/([\w\.]+) .*safari\//i],[d,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[d,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[d,[l,I+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,I+" WebView"],d],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[d,[l,"Android "+E]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,d],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[d,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[d,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[d,J,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,d],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],d],[/(wolvic|librewolf)\/([\w\.]+)/i],[l,d],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[d,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[l,[d,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[l,[d,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[p,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[p,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[p,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[p,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[p,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[p,/ower/,"",W]],[/ sun4\w[;\)]/i],[[p,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[p,W]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[a,[c,P],[u,m]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[a,[c,P],[u,h]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[a,[c,y],[u,h]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[a,[c,y],[u,m]],[/(macintosh);/i],[a,[c,y]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[a,[c,D],[u,h]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[a,[c,O],[u,m]],[/honor([-\w ]+)[;\)]/i],[a,[c,O],[u,h]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[a,[c,A],[u,m]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[a,[c,A],[u,h]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[a,/_/g," "],[c,z],[u,m]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[a,/_/g," "],[c,z],[u,h]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[a,[c,M],[u,h]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[a,[c,J,{OnePlus:["304","403","203"],"*":M}],[u,m]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[a,[c,"Vivo"],[u,h]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[a,[c,"Realme"],[u,h]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[a,[c,U],[u,h]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[a,[c,U],[u,m]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[a,[c,L],[u,m]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[a,[c,L],[u,h]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[a,[c,"Lenovo"],[u,m]],[/(nokia) (t[12][01])/i],[c,a,[u,m]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[a,/_/g," "],[u,h],[c,"Nokia"]],[/(pixel (c|tablet))\b/i],[a,[c,x],[u,m]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[a,[c,x],[u,h]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[a,[c,R],[u,h]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[a,"Xperia Tablet"],[c,R],[u,m]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[a,[c,j],[u,h]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[a,[c,w],[u,m]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[a,/(.+)/g,"Fire Phone $1"],[c,w],[u,h]],[/(playbook);[-\w\),; ]+(rim)/i],[a,c,[u,m]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[a,[c,T],[u,h]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[a,[c,S],[u,m]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[a,[c,S],[u,h]],[/(nexus 9)/i],[a,[c,"HTC"],[u,m]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[c,[a,/_/g," "],[u,h]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[a,[c,"TCL"],[u,m]],[/(itel) ((\w+))/i],[[c,W],a,[u,J,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[a,[c,"Acer"],[u,m]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[a,[c,"Meizu"],[u,h]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[a,[c,"Ulefone"],[u,h]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[a,[c,"Energizer"],[u,h]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[a,[c,"Cat"],[u,h]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[a,[c,"Smartfren"],[u,h]],[/droid.+; (a(?:015|06[35]|142p?))/i],[a,[c,"Nothing"],[u,h]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[a,[c,"Archos"],[u,m]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[a,[c,"Archos"],[u,h]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[c,a,[u,m]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,/(oppo) ?([\w ]+) bui/i],[c,a,[u,h]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[c,a,[u,m]],[/(surface duo)/i],[a,[c,_],[u,m]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[a,[c,"Fairphone"],[u,h]],[/(u304aa)/i],[a,[c,"AT&T"],[u,h]],[/\bsie-(\w*)/i],[a,[c,"Siemens"],[u,h]],[/\b(rct\w+) b/i],[a,[c,"RCA"],[u,m]],[/\b(venue[\d ]{2,7}) b/i],[a,[c,"Dell"],[u,m]],[/\b(q(?:mv|ta)\w+) b/i],[a,[c,"Verizon"],[u,m]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[a,[c,"Barnes & Noble"],[u,m]],[/\b(tm\d{3}\w+) b/i],[a,[c,"NuVision"],[u,m]],[/\b(k88) b/i],[a,[c,"ZTE"],[u,m]],[/\b(nx\d{3}j) b/i],[a,[c,"ZTE"],[u,h]],[/\b(gen\d{3}) b.+49h/i],[a,[c,"Swiss"],[u,h]],[/\b(zur\d{3}) b/i],[a,[c,"Swiss"],[u,m]],[/\b((zeki)?tb.*\b) b/i],[a,[c,"Zeki"],[u,m]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[c,"Dragon Touch"],a,[u,m]],[/\b(ns-?\w{0,9}) b/i],[a,[c,"Insignia"],[u,m]],[/\b((nxa|next)-?\w{0,9}) b/i],[a,[c,"NextBook"],[u,m]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[c,"Voice"],a,[u,h]],[/\b(lvtel\-)?(v1[12]) b/i],[[c,"LvTel"],a,[u,h]],[/\b(ph-1) /i],[a,[c,"Essential"],[u,h]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[a,[c,"Envizen"],[u,m]],[/\b(trio[-\w\. ]+) b/i],[a,[c,"MachSpeed"],[u,m]],[/\btu_(1491) b/i],[a,[c,"Rotor"],[u,m]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[a,[c,C],[u,m]],[/(sprint) (\w+)/i],[c,a,[u,h]],[/(kin\.[onetw]{3})/i],[[a,/\./g," "],[c,_],[u,h]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[a,[c,B],[u,m]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[a,[c,B],[u,h]],[/smart-tv.+(samsung)/i],[c,[u,f]],[/hbbtv.+maple;(\d+)/i],[[a,/^/,"SmartTV"],[c,P],[u,f]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[c,L],[u,f]],[/(apple) ?tv/i],[c,[a,y+" TV"],[u,f]],[/crkey/i],[[a,I+"cast"],[c,x],[u,f]],[/droid.+aft(\w+)( bui|\))/i],[a,[c,w],[u,f]],[/(shield \w+ tv)/i],[a,[c,C],[u,f]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[a,[c,D],[u,f]],[/(bravia[\w ]+)( bui|\))/i],[a,[c,R],[u,f]],[/(mi(tv|box)-?\w+) bui/i],[a,[c,z],[u,f]],[/Hbbtv.*(technisat) (.*);/i],[c,a,[u,f]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[c,K],[a,K],[u,f]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[a,[u,f]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[u,f]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[c,a,[u,g]],[/droid.+; (shield)( bui|\))/i],[a,[c,C],[u,g]],[/(playstation \w+)/i],[a,[c,R],[u,g]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[a,[c,_],[u,g]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[a,[c,P],[u,v]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[c,a,[u,v]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[a,[c,M],[u,v]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[a,[c,y],[u,v]],[/(opwwe\d{3})/i],[a,[c,j],[u,v]],[/(moto 360)/i],[a,[c,U],[u,v]],[/(smartwatch 3)/i],[a,[c,R],[u,v]],[/(g watch r)/i],[a,[c,L],[u,v]],[/droid.+; (wt63?0{2,3})\)/i],[a,[c,B],[u,v]],[/droid.+; (glass) \d/i],[a,[c,x],[u,v]],[/(pico) (4|neo3(?: link|pro)?)/i],[c,a,[u,v]],[/; (quest( \d| pro)?)/i],[a,[c,q],[u,v]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[c,[u,b]],[/(aeobc)\b/i],[a,[c,w],[u,b]],[/(homepod).+mac os/i],[a,[c,y],[u,b]],[/windows iot/i],[[u,b]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[a,[u,h]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[a,[u,m]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[u,m]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[u,h]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[a,[c,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[d,[l,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[l,d],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[d,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,d],[/ladybird\//i],[[l,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[d,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,d],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[l,[d,J,Z]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[d,J,Z],[l,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[d,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,V],[d,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[d,l],[/(ubuntu) ([\w\.]+) like android/i],[[l,/(.+)/,"$1 Touch"],d],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[l,d],[/\(bb(10);/i],[d,[l,T]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[d,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[d,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[d,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[d,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[d,[l,I+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,F],d],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,d],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],d],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,d]]},Q=function(g,f){if(typeof g===s&&(f=g,g=t),!(this instanceof Q))return new Q(g,f).getResult();var v=typeof e!==n&&e.navigator?e.navigator:t,b=g||(v&&v.userAgent?v.userAgent:""),w=v&&v.userAgentData?v.userAgentData:t,y=f?function(e,t){var i={};for(var n in e)t[n]&&t[n].length%2==0?i[n]=t[n].concat(e[n]):i[n]=e[n];return i}(Y,f):Y,S=v&&v.userAgent==b;return this.getBrowser=function(){var e,n={};return n[l]=t,n[d]=t,X.call(n,b,y.browser),n[o]=typeof(e=n[d])===r?e.replace(/[^\d\.]/g,"").split(".")[0]:t,S&&v&&v.brave&&typeof v.brave.isBrave==i&&(n[l]="Brave"),n},this.getCPU=function(){var e={};return e[p]=t,X.call(e,b,y.cpu),e},this.getDevice=function(){var e={};return e[c]=t,e[a]=t,e[u]=t,X.call(e,b,y.device),S&&!e[u]&&w&&w.mobile&&(e[u]=h),S&&"Macintosh"==e[a]&&v&&typeof v.standalone!==n&&v.maxTouchPoints&&v.maxTouchPoints>2&&(e[a]="iPad",e[u]=m),e},this.getEngine=function(){var e={};return e[l]=t,e[d]=t,X.call(e,b,y.engine),e},this.getOS=function(){var e={};return e[l]=t,e[d]=t,X.call(e,b,y.os),S&&!e[l]&&w&&w.platform&&"Unknown"!=w.platform&&(e[l]=w.platform.replace(/chrome os/i,F).replace(/macos/i,V)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return b},this.setUA=function(e){return b=typeof e===r&&e.length>500?K(e,500):e,this},this.setUA(b),this};Q.VERSION="1.0.41",Q.BROWSER=H([l,d,o]),Q.CPU=H([p]),Q.DEVICE=H([a,c,u,g,h,f,m,v,b]),Q.ENGINE=Q.OS=H([l,d]),_e.exports&&(Ue=_e.exports=Q),Ue.UAParser=Q;var ee=typeof e!==n&&(e.jQuery||e.Zepto);if(ee&&!ee.ua){var te=new Q;ee.ua=te.getResult(),ee.ua.get=function(){return te.getUA()},ee.ua.set=function(e){te.setUA(e);var t=te.getResult();for(var i in t)ee.ua[i]=t[i]}}}("object"==typeof window?window:Le.exports)),Le.exports);const je=()=>{const e=new Ce.UAParser,{name:t,version:i}=e.getBrowser(),{name:n,version:s}=e.getOS(),r=e.getUA(),o=navigator.language,a=navigator.userAgent.includes("Mobi"),l=function(){if(!t||!i)return;if("userAgentData"in navigator&&navigator.userAgentData)return navigator.userAgentData.brands;return}();return{browser:{name:null!=t?t:Oe,version:null!=i?i:Oe,os:`${null!=n?n:Oe} ${null!=s?s:Oe}`,userAgent:null!=r?r:Oe,language:null!=o?o:Oe,mobile:a,brands:null!=l?l:Oe,viewportWidth:`${window.innerWidth}`,viewportHeight:`${window.innerHeight}`}}};function Ne(t){var i,n,s,r;return{id:null!==(r=null===(s=null===(n=null===(i=e.faro.config)||void 0===i?void 0:i.sessionTracking)||void 0===n?void 0:n.generateSessionId)||void 0===s?void 0:s.call(n))&&void 0!==r?r:D(),attributes:t}}const Me="sessionStorage",Pe="localStorage";function De(t){var i;try{let e;e=window[t];const i="__faro_storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(n){return null===(i=e.faro.internalLogger)||void 0===i||i.info(`Web storage of type ${t} is not available. Reason: ${n}`),!1}}function Re(e,t){return Ve(t)?window[t].getItem(e):null}function ze(e,t,i){if(Ve(i))try{window[i].setItem(e,t)}catch(e){}}function Be(e,t){Ve(t)&&window[t].removeItem(e)}const qe=De(Pe),Fe=De(Me);function Ve(e){return e===Pe?qe:e===Me&&Fe}function $e(e,t){let i,n=!1;const s=()=>{null!=i?(e(...i),i=null,setTimeout(s,t)):n=!1};return(...r)=>{n?i=r:(e(...r),n=!0,setTimeout(s,t))}}function He(){return e.faro.transports.transports.flatMap(e=>e.getIgnoreUrls())}function Ge(e=""){return He().some(t=>e&&null!=e.match(t))}function We(e){return c(e)?e:e instanceof URL?e.href:!x(e)&&h(null==e?void 0:e.toString)?e.toString():void 0}const Ke="com.grafana.faro.session",Xe=144e5,Je=9e5,Ze=Je,Ye={enabled:!0,persistent:!1,maxSessionPersistenceTime:Ze};function Qe(){var t,i,n;const s=e.faro.config.sessionTracking;let r=null!==(n=null!==(i=null===(t=null==s?void 0:s.sampler)||void 0===t?void 0:t.call(s,{metas:e.faro.metas.value}))&&void 0!==i?i:null==s?void 0:s.samplingRate)&&void 0!==n?n:1;if("number"!=typeof r){r=0}return Math.random()<r}function et({sessionId:t,started:i,lastActivity:n,isSampled:s=!0}={}){var r,o;const a=A(),l=null===(o=null===(r=e.faro.config)||void 0===r?void 0:r.sessionTracking)||void 0===o?void 0:o.generateSessionId;return null==t&&(t="function"==typeof l?l():D()),{sessionId:t,lastActivity:null!=n?n:a,started:null!=i?i:a,isSampled:s}}function tt(e){if(null==e)return!1;const t=A();if(!(t-e.started<Xe))return!1;return t-e.lastActivity<Je}function it({fetchUserSession:t,storeUserSession:i}){return function({forceSessionExtend:n}={forceSessionExtend:!1}){var s,r,o;if(!t||!i)return;const a=e.faro.config.sessionTracking,l=null==a?void 0:a.persistent;if(l&&!qe||!l&&!Fe)return;const u=t();if(!1===n&&tt(u))i(Object.assign(Object.assign({},u),{lastActivity:A()}));else{let t=nt(et({isSampled:Qe()}),u);i(t),null===(s=e.faro.api)||void 0===s||s.setSession(t.sessionMeta),null===(r=null==a?void 0:a.onSessionChange)||void 0===r||r.call(a,null!==(o=null==u?void 0:u.sessionMeta)&&void 0!==o?o:null,t.sessionMeta)}}}function nt(t,i){var n,s,r,o,a,l,u;const c=Object.assign(Object.assign({},t),{sessionMeta:{id:t.sessionId,attributes:Object.assign(Object.assign(Object.assign({},null===(s=null===(n=e.faro.config.sessionTracking)||void 0===n?void 0:n.session)||void 0===s?void 0:s.attributes),null!==(o=null===(r=e.faro.metas.value.session)||void 0===r?void 0:r.attributes)&&void 0!==o?o:{}),{isSampled:t.isSampled.toString()})}}),d=null!==(l=null===(a=e.faro.metas.value.session)||void 0===a?void 0:a.overrides)&&void 0!==l?l:null===(u=null==i?void 0:i.sessionMeta)||void 0===u?void 0:u.overrides;x(d)||(c.sessionMeta.overrides=d);const p=null==i?void 0:i.sessionId;return null!=p&&(c.sessionMeta.attributes.previousSession=p),c}function st({fetchUserSession:t,storeUserSession:i}){return function(n){const s=n.session,r=t();let o=null==s?void 0:s.id;const a=null==s?void 0:s.attributes,l=null==s?void 0:s.overrides,u=null==r?void 0:r.sessionMeta,c=null==u?void 0:u.overrides,d=!!l&&!O(l,c),p=!!a&&!O(a,null==u?void 0:u.attributes);if(!!s&&o!==(null==r?void 0:r.sessionId)||p||d){const t=nt(et({sessionId:o,isSampled:Qe()}),r);i(t),function(t,i={},n={}){var s,r,o;if(!t)return;const a=i.serviceName,l=null!==(o=null!==(s=n.serviceName)&&void 0!==s?s:null===(r=e.faro.metas.value.app)||void 0===r?void 0:r.name)&&void 0!==o?o:"";a&&a!==l&&e.faro.api.pushEvent(xe,{serviceName:a,previousServiceName:l})}(d,l,c),e.faro.api.setSession(t.sessionMeta)}}}class rt{constructor(){this.updateSession=$e(()=>this.updateUserSession(),1e3),this.updateUserSession=it({fetchUserSession:rt.fetchUserSession,storeUserSession:rt.storeUserSession}),this.init()}static removeUserSession(){Be(Ke,rt.storageTypeLocal)}static storeUserSession(e){ze(Ke,z(e),rt.storageTypeLocal)}static fetchUserSession(){const e=Re(Ke,rt.storageTypeLocal);return e?JSON.parse(e):null}init(){document.addEventListener("visibilitychange",()=>{"visible"===document.visibilityState&&this.updateSession()}),e.faro.metas.addListener(st({fetchUserSession:rt.fetchUserSession,storeUserSession:rt.storeUserSession}))}}rt.storageTypeLocal=Pe;class ot{constructor(){this.updateSession=$e(()=>this.updateUserSession(),1e3),this.updateUserSession=it({fetchUserSession:ot.fetchUserSession,storeUserSession:ot.storeUserSession}),this.init()}static removeUserSession(){Be(Ke,ot.storageTypeSession)}static storeUserSession(e){ze(Ke,z(e),ot.storageTypeSession)}static fetchUserSession(){const e=Re(Ke,ot.storageTypeSession);return e?JSON.parse(e):null}init(){document.addEventListener("visibilitychange",()=>{"visible"===document.visibilityState&&this.updateSession()}),e.faro.metas.addListener(st({fetchUserSession:ot.fetchUserSession,storeUserSession:ot.storeUserSession}))}}function at(e){return(null==e?void 0:e.persistent)?rt:ot}ot.storageTypeSession=Me;class lt extends ge{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-session",this.version=he}sendSessionStartEvent(e){var t,i;const n=e.session;if(n&&n.id!==(null===(t=this.notifiedSession)||void 0===t?void 0:t.id)){if(this.notifiedSession&&this.notifiedSession.id===(null===(i=n.attributes)||void 0===i?void 0:i.previousSession))return this.api.pushEvent(ke,{},void 0,{skipDedupe:!0}),void(this.notifiedSession=n);this.notifiedSession=n,this.api.pushEvent(Ee,{},void 0,{skipDedupe:!0})}}createInitialSession(e,t){var i,n,s,r,o,a;let l,u,c=e.fetchUserSession();if(t.persistent&&t.maxSessionPersistenceTime&&c){const e=A();c.lastActivity<e-t.maxSessionPersistenceTime&&(rt.removeUserSession(),c=null)}if(tt(c)){const e=null==c?void 0:c.sessionId;u=et({sessionId:e,isSampled:c.isSampled||!1,started:null==c?void 0:c.started});const s=null==c?void 0:c.sessionMeta,r=Object.assign(Object.assign({},null===(i=t.session)||void 0===i?void 0:i.overrides),null==s?void 0:s.overrides);u.sessionMeta=Object.assign(Object.assign({},t.session),{id:e,attributes:Object.assign(Object.assign(Object.assign({},null===(n=t.session)||void 0===n?void 0:n.attributes),null==s?void 0:s.attributes),{isSampled:u.isSampled.toString()}),overrides:r}),l=Ie}else{const e=null!==(r=null===(s=t.session)||void 0===s?void 0:s.id)&&void 0!==r?r:Ne().id;u=et({sessionId:e,isSampled:Qe()});const i=null===(o=t.session)||void 0===o?void 0:o.overrides;u.sessionMeta=Object.assign({id:e,attributes:Object.assign({isSampled:u.isSampled.toString()},null===(a=t.session)||void 0===a?void 0:a.attributes)},i?{overrides:i}:{}),l=Ee}return{initialSession:u,lifecycleType:l}}registerBeforeSendHook(e){var t;const{updateSession:i}=new e;null===(t=this.transports)||void 0===t||t.addBeforeSendHooks(e=>{var t,n,s;i();const r=null===(t=e.meta.session)||void 0===t?void 0:t.attributes;if(r&&"true"===(null==r?void 0:r.isSampled)){let t=JSON.parse(JSON.stringify(e));const i=null===(n=t.meta.session)||void 0===n?void 0:n.attributes;return null==i||delete i.isSampled,0===Object.keys(null!=i?i:{}).length&&(null===(s=t.meta.session)||void 0===s||delete s.attributes),t}return null})}initialize(){this.logDebug("init session instrumentation");const e=this.config.sessionTracking;if(null==e?void 0:e.enabled){const t=at(e);this.registerBeforeSendHook(t);const{initialSession:i,lifecycleType:n}=this.createInitialSession(t,e);t.storeUserSession(i);const s=i.sessionMeta;this.notifiedSession=s,this.api.setSession(s),n===Ee&&this.api.pushEvent(Ee,{},void 0,{skipDedupe:!0}),n===Ie&&this.api.pushEvent(Ie,{},void 0,{skipDedupe:!0})}this.metas.addListener(this.sendSessionStartEvent.bind(this))}}const ut=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;const ct=/^\s*at (?:(?![a-z]+:\/\/)([^(]+?) ?\((?:address at )?)?((?: