bw-frontend-sdk 1.0.12 → 1.0.13
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.
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).FrontendSDK={})}(this,function(e){"use strict";function t(e,t){return function(){return e.apply(t,arguments)}}const{toString:r}=Object.prototype,{getPrototypeOf:i}=Object,{iterator:n,toStringTag:o}=Symbol,s=(a=Object.create(null),e=>{const t=r.call(e);return a[t]||(a[t]=t.slice(8,-1).toLowerCase())});var a;const c=e=>(e=e.toLowerCase(),t=>s(t)===e),u=e=>t=>typeof t===e,{isArray:l}=Array,h=u("undefined");function d(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const p=c("ArrayBuffer");const g=u("string"),f=u("function"),m=u("number"),w=e=>null!==e&&"object"==typeof e,b=e=>{if("object"!==s(e))return!1;const t=i(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||o in e||n in e)},y=c("Date"),v=c("File"),T=c("Blob"),k=c("FileList"),S=c("URLSearchParams"),[E,P,x,R]=["ReadableStream","Request","Response","Headers"].map(c);function C(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),l(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{if(d(e))return;const n=r?Object.getOwnPropertyNames(e):Object.keys(e),o=n.length;let s;for(i=0;i<o;i++)s=n[i],t.call(null,e[s],s,e)}}function I(e,t){if(d(e))return null;t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,A=e=>!h(e)&&e!==O;const D=(N="undefined"!=typeof Uint8Array&&i(Uint8Array),e=>N&&e instanceof N);var N;const _=c("HTMLFormElement"),L=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),U=c("RegExp"),j=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};C(r,(r,n)=>{let o;!1!==(o=t(r,n,e))&&(i[n]=o||r)}),Object.defineProperties(e,i)};const F=c("AsyncFunction"),B=(M="function"==typeof setImmediate,z=f(O.postMessage),M?setImmediate:z?(K=`axios@${Math.random()}`,q=[],O.addEventListener("message",({source:e,data:t})=>{e===O&&t===K&&q.length&&q.shift()()},!1),e=>{q.push(e),O.postMessage(K,"*")}):e=>setTimeout(e));var M,z,K,q;const H="undefined"!=typeof queueMicrotask?queueMicrotask.bind(O):"undefined"!=typeof process&&process.nextTick||B;var V={isArray:l,isArrayBuffer:p,isBuffer:d,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=s(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:g,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:w,isPlainObject:b,isEmptyObject:e=>{if(!w(e)||d(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:E,isRequest:P,isResponse:x,isHeaders:R,isUndefined:h,isDate:y,isFile:v,isBlob:T,isRegExp:U,isFunction:f,isStream:e=>w(e)&&f(e.pipe),isURLSearchParams:S,isTypedArray:D,isFileList:k,forEach:C,merge:function e(){const{caseless:t}=A(this)&&this||{},r={},i=(i,n)=>{const o=t&&I(r,n)||n;b(r[o])&&b(i)?r[o]=e(r[o],i):b(i)?r[o]=e({},i):l(i)?r[o]=i.slice():r[o]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&C(arguments[e],i);return r},extend:(e,r,i,{allOwnKeys:n}={})=>(C(r,(r,n)=>{i&&f(r)?e[n]=t(r,i):e[n]=r},{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let o,s,a;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)a=o[s],n&&!n(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&i(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:c,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(l(e))return e;let t=e.length;if(!m(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[n]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:_,hasOwnProperty:L,hasOwnProp:L,reduceDescriptors:j,freezeMethods:e=>{j(e,(t,r)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];f(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))})},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach(e=>{r[e]=!0})};return l(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,r){return t.toUpperCase()+r}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:I,global:O,isContextDefined:A,isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[o]&&e[n])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(w(e)){if(t.indexOf(e)>=0)return;if(d(e))return e;if(!("toJSON"in e)){t[i]=e;const n=l(e)?[]:{};return C(e,(e,t)=>{const o=r(e,i+1);!h(o)&&(n[t]=o)}),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:F,isThenable:e=>e&&(w(e)||f(e))&&f(e.then)&&f(e.catch),setImmediate:B,asap:H,isIterable:e=>null!=e&&f(e[n])};function Q(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n,this.status=n.status?n.status:null)}V.inherits(Q,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:V.toJSONObject(this.config),code:this.code,status:this.status}}});const $=Q.prototype,W={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{W[e]={value:e}}),Object.defineProperties(Q,W),Object.defineProperty($,"isAxiosError",{value:!0}),Q.from=(e,t,r,i,n,o)=>{const s=Object.create($);return V.toFlatObject(e,s,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Q.call(s,e.message,t,r,i,n),s.cause=e,s.name=e.name,o&&Object.assign(s,o),s};function J(e){return V.isPlainObject(e)||V.isArray(e)}function X(e){return V.endsWith(e,"[]")?e.slice(0,-2):e}function G(e,t,r){return e?e.concat(t).map(function(e,t){return e=X(e),!r&&t?"["+e+"]":e}).join(r?".":""):t}const Y=V.toFlatObject(V,{},null,function(e){return/^is[A-Z]/.test(e)});function Z(e,t,r){if(!V.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=V.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!V.isUndefined(t[e])})).metaTokens,n=r.visitor||u,o=r.dots,s=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&V.isSpecCompliantForm(t);if(!V.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(V.isDate(e))return e.toISOString();if(V.isBoolean(e))return e.toString();if(!a&&V.isBlob(e))throw new Q("Blob is not supported. Use a Buffer instead.");return V.isArrayBuffer(e)||V.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,r,n){let a=e;if(e&&!n&&"object"==typeof e)if(V.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(V.isArray(e)&&function(e){return V.isArray(e)&&!e.some(J)}(e)||(V.isFileList(e)||V.endsWith(r,"[]"))&&(a=V.toArray(e)))return r=X(r),a.forEach(function(e,i){!V.isUndefined(e)&&null!==e&&t.append(!0===s?G([r],i,o):null===s?r:r+"[]",c(e))}),!1;return!!J(e)||(t.append(G(n,r,o),c(e)),!1)}const l=[],h=Object.assign(Y,{defaultVisitor:u,convertValue:c,isVisitable:J});if(!V.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!V.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),V.forEach(r,function(r,o){!0===(!(V.isUndefined(r)||null===r)&&n.call(t,r,V.isString(o)?o.trim():o,i,h))&&e(r,i?i.concat(o):[o])}),l.pop()}}(e),t}function ee(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function te(e,t){this._pairs=[],e&&Z(e,this,t)}const re=te.prototype;function ie(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ne(e,t,r){if(!t)return e;const i=r&&r.encode||ie;V.isFunction(r)&&(r={serialize:r});const n=r&&r.serialize;let o;if(o=n?n(t,r):V.isURLSearchParams(t)?t.toString():new te(t,r).toString(i),o){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}re.append=function(e,t){this._pairs.push([e,t])},re.toString=function(e){const t=e?function(t){return e.call(this,t,ee)}:ee;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var oe=class{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){V.forEach(this.handlers,function(t){null!==t&&e(t)})}},se={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ae={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const ce="undefined"!=typeof window&&"undefined"!=typeof document,ue="object"==typeof navigator&&navigator||void 0,le=ce&&(!ue||["ReactNative","NativeScript","NS"].indexOf(ue.product)<0),he="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,de=ce&&window.location.href||"http://localhost";var pe={...Object.freeze({__proto__:null,hasBrowserEnv:ce,hasStandardBrowserWebWorkerEnv:he,hasStandardBrowserEnv:le,navigator:ue,origin:de}),...ae};function ge(e){function t(e,r,i,n){let o=e[n++];if("__proto__"===o)return!0;const s=Number.isFinite(+o),a=n>=e.length;if(o=!o&&V.isArray(i)?i.length:o,a)return V.hasOwnProp(i,o)?i[o]=[i[o],r]:i[o]=r,!s;i[o]&&V.isObject(i[o])||(i[o]=[]);return t(e,r,i[o],n)&&V.isArray(i[o])&&(i[o]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let o;for(i=0;i<n;i++)o=r[i],t[o]=e[o];return t}(i[o])),!s}if(V.isFormData(e)&&V.isFunction(e.entries)){const r={};return V.forEachEntry(e,(e,i)=>{t(function(e){return V.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),i,r,0)}),r}return null}const fe={transitional:se,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=V.isObject(e);n&&V.isHTMLForm(e)&&(e=new FormData(e));if(V.isFormData(e))return i?JSON.stringify(ge(e)):e;if(V.isArrayBuffer(e)||V.isBuffer(e)||V.isStream(e)||V.isFile(e)||V.isBlob(e)||V.isReadableStream(e))return e;if(V.isArrayBufferView(e))return e.buffer;if(V.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Z(e,new pe.classes.URLSearchParams,{visitor:function(e,t,r,i){return pe.isNode&&V.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((o=V.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Z(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(V.isString(e))try{return(t||JSON.parse)(e),V.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||fe.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(V.isResponse(e)||V.isReadableStream(e))return e;if(e&&V.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw Q.from(e,Q.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pe.classes.FormData,Blob:pe.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};V.forEach(["delete","get","head","post","put","patch"],e=>{fe.headers[e]={}});var me=fe;const we=V.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const be=Symbol("internals");function ye(e){return e&&String(e).trim().toLowerCase()}function ve(e){return!1===e||null==e?e:V.isArray(e)?e.map(ve):String(e)}function Te(e,t,r,i,n){return V.isFunction(i)?i.call(this,t,r):(n&&(t=r),V.isString(t)?V.isString(i)?-1!==t.indexOf(i):V.isRegExp(i)?i.test(t):void 0:void 0)}class ke{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=ye(t);if(!n)throw new Error("header name must be a non-empty string");const o=V.findKey(i,n);(!o||void 0===i[o]||!0===r||void 0===r&&!1!==i[o])&&(i[o||t]=ve(e))}const o=(e,t)=>V.forEach(e,(e,r)=>n(e,r,t));if(V.isPlainObject(e)||e instanceof this.constructor)o(e,t);else if(V.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))o((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach(function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&we[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)}),t})(e),t);else if(V.isObject(e)&&V.isIterable(e)){let r,i,n={};for(const t of e){if(!V.isArray(t))throw TypeError("Object iterator must return a key-value pair");n[i=t[0]]=(r=n[i])?V.isArray(r)?[...r,t[1]]:[r,t[1]]:t[1]}o(n,t)}else null!=e&&n(t,e,r);return this}get(e,t){if(e=ye(e)){const r=V.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(V.isFunction(t))return t.call(this,e,r);if(V.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ye(e)){const r=V.findKey(this,e);return!(!r||void 0===this[r]||t&&!Te(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=ye(e)){const n=V.findKey(r,e);!n||t&&!Te(0,r[n],n,t)||(delete r[n],i=!0)}}return V.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!Te(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return V.forEach(this,(i,n)=>{const o=V.findKey(r,n);if(o)return t[o]=ve(i),void delete t[n];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,r)=>t.toUpperCase()+r)}(n):String(n).trim();s!==n&&delete t[n],t[s]=ve(i),r[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return V.forEach(this,(r,i)=>{null!=r&&!1!==r&&(t[i]=e&&V.isArray(r)?r.join(", "):r)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach(e=>r.set(e)),r}static accessor(e){const t=(this[be]=this[be]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=ye(e);t[i]||(!function(e,t){const r=V.toCamelCase(" "+t);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})})}(r,e),t[i]=!0)}return V.isArray(e)?e.forEach(i):i(e),this}}ke.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),V.reduceDescriptors(ke.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}}),V.freezeMethods(ke);var Se=ke;function Ee(e,t){const r=this||me,i=t||r,n=Se.from(i.headers);let o=i.data;return V.forEach(e,function(e){o=e.call(r,o,n.normalize(),t?t.status:void 0)}),n.normalize(),o}function Pe(e){return!(!e||!e.__CANCEL__)}function xe(e,t,r){Q.call(this,null==e?"canceled":e,Q.ERR_CANCELED,t,r),this.name="CanceledError"}function Re(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new Q("Request failed with status code "+r.status,[Q.ERR_BAD_REQUEST,Q.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}V.inherits(xe,Q,{__CANCEL__:!0});const Ce=(e,t,r=3)=>{let i=0;const n=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,o=0,s=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),u=i[s];n||(n=c),r[o]=a,i[o]=c;let l=s,h=0;for(;l!==o;)h+=r[l++],l%=e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),c-n<t)return;const d=u&&c-u;return d?Math.round(1e3*h/d):void 0}}(50,250);return function(e,t){let r,i,n=0,o=1e3/t;const s=(t,o=Date.now())=>{n=o,r=null,i&&(clearTimeout(i),i=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-n;a>=o?s(e,t):(r=e,i||(i=setTimeout(()=>{i=null,s(r)},o-a)))},()=>r&&s(r)]}(r=>{const o=r.loaded,s=r.lengthComputable?r.total:void 0,a=o-i,c=n(a);i=o;e({loaded:o,total:s,progress:s?o/s:void 0,bytes:a,rate:c||void 0,estimated:c&&s&&o<=s?(s-o)/c:void 0,event:r,lengthComputable:null!=s,[t?"download":"upload"]:!0})},r)},Ie=(e,t)=>{const r=null!=e;return[i=>t[0]({lengthComputable:r,total:e,loaded:i}),t[1]]},Oe=e=>(...t)=>V.asap(()=>e(...t));var Ae=pe.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,pe.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(pe.origin),pe.navigator&&/(msie|trident)/i.test(pe.navigator.userAgent)):()=>!0,De=pe.hasStandardBrowserEnv?{write(e,t,r,i,n,o){const s=[e+"="+encodeURIComponent(t)];V.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),V.isString(i)&&s.push("path="+i),V.isString(n)&&s.push("domain="+n),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Ne(e,t,r){let i=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(i||0==r)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const _e=e=>e instanceof Se?{...e}:e;function Le(e,t){t=t||{};const r={};function i(e,t,r,i){return V.isPlainObject(e)&&V.isPlainObject(t)?V.merge.call({caseless:i},e,t):V.isPlainObject(t)?V.merge({},t):V.isArray(t)?t.slice():t}function n(e,t,r,n){return V.isUndefined(t)?V.isUndefined(e)?void 0:i(void 0,e,0,n):i(e,t,0,n)}function o(e,t){if(!V.isUndefined(t))return i(void 0,t)}function s(e,t){return V.isUndefined(t)?V.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function a(r,n,o){return o in t?i(r,n):o in e?i(void 0,r):void 0}const c={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(e,t,r)=>n(_e(e),_e(t),0,!0)};return V.forEach(Object.keys({...e,...t}),function(i){const o=c[i]||n,s=o(e[i],t[i],i);V.isUndefined(s)&&o!==a||(r[i]=s)}),r}var Ue=e=>{const t=Le({},e);let r,{data:i,withXSRFToken:n,xsrfHeaderName:o,xsrfCookieName:s,headers:a,auth:c}=t;if(t.headers=a=Se.from(a),t.url=ne(Ne(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),V.isFormData(i))if(pe.hasStandardBrowserEnv||pe.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(r=a.getContentType())){const[e,...t]=r?r.split(";").map(e=>e.trim()).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...t].join("; "))}if(pe.hasStandardBrowserEnv&&(n&&V.isFunction(n)&&(n=n(t)),n||!1!==n&&Ae(t.url))){const e=o&&s&&De.read(s);e&&a.set(o,e)}return t};var je="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,r){const i=Ue(e);let n=i.data;const o=Se.from(i.headers).normalize();let s,a,c,u,l,{responseType:h,onUploadProgress:d,onDownloadProgress:p}=i;function g(){u&&u(),l&&l(),i.cancelToken&&i.cancelToken.unsubscribe(s),i.signal&&i.signal.removeEventListener("abort",s)}let f=new XMLHttpRequest;function m(){if(!f)return;const i=Se.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders());Re(function(e){t(e),g()},function(e){r(e),g()},{data:h&&"text"!==h&&"json"!==h?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:i,config:e,request:f}),f=null}f.open(i.method.toUpperCase(),i.url,!0),f.timeout=i.timeout,"onloadend"in f?f.onloadend=m:f.onreadystatechange=function(){f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))&&setTimeout(m)},f.onabort=function(){f&&(r(new Q("Request aborted",Q.ECONNABORTED,e,f)),f=null)},f.onerror=function(){r(new Q("Network Error",Q.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let t=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const n=i.transitional||se;i.timeoutErrorMessage&&(t=i.timeoutErrorMessage),r(new Q(t,n.clarifyTimeoutError?Q.ETIMEDOUT:Q.ECONNABORTED,e,f)),f=null},void 0===n&&o.setContentType(null),"setRequestHeader"in f&&V.forEach(o.toJSON(),function(e,t){f.setRequestHeader(t,e)}),V.isUndefined(i.withCredentials)||(f.withCredentials=!!i.withCredentials),h&&"json"!==h&&(f.responseType=i.responseType),p&&([c,l]=Ce(p,!0),f.addEventListener("progress",c)),d&&f.upload&&([a,u]=Ce(d),f.upload.addEventListener("progress",a),f.upload.addEventListener("loadend",u)),(i.cancelToken||i.signal)&&(s=t=>{f&&(r(!t||t.type?new xe(null,e,f):t),f.abort(),f=null)},i.cancelToken&&i.cancelToken.subscribe(s),i.signal&&(i.signal.aborted?s():i.signal.addEventListener("abort",s)));const w=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(i.url);w&&-1===pe.protocols.indexOf(w)?r(new Q("Unsupported protocol "+w+":",Q.ERR_BAD_REQUEST,e)):f.send(n||null)})};var Fe=(e,t)=>{const{length:r}=e=e?e.filter(Boolean):[];if(t||r){let r,i=new AbortController;const n=function(e){if(!r){r=!0,s();const t=e instanceof Error?e:this.reason;i.abort(t instanceof Q?t:new xe(t instanceof Error?t.message:t))}};let o=t&&setTimeout(()=>{o=null,n(new Q(`timeout ${t} of ms exceeded`,Q.ETIMEDOUT))},t);const s=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(n):e.removeEventListener("abort",n)}),e=null)};e.forEach(e=>e.addEventListener("abort",n));const{signal:a}=i;return a.unsubscribe=()=>V.asap(s),a}};const Be=function*(e,t){let r=e.byteLength;if(!t||r<t)return void(yield e);let i,n=0;for(;n<r;)i=n+t,yield e.slice(n,i),n=i},Me=async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:r}=await t.read();if(e)break;yield r}}finally{await t.cancel()}},ze=(e,t,r,i)=>{const n=async function*(e,t){for await(const r of Me(e))yield*Be(r,t)}(e,t);let o,s=0,a=e=>{o||(o=!0,i&&i(e))};return new ReadableStream({async pull(e){try{const{done:t,value:i}=await n.next();if(t)return a(),void e.close();let o=i.byteLength;if(r){let e=s+=o;r(e)}e.enqueue(new Uint8Array(i))}catch(e){throw a(e),e}},cancel:e=>(a(e),n.return())},{highWaterMark:2})},Ke="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,qe=Ke&&"function"==typeof ReadableStream,He=Ke&&("function"==typeof TextEncoder?(Ve=new TextEncoder,e=>Ve.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ve;const Qe=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},$e=qe&&Qe(()=>{let e=!1;const t=new Request(pe.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),We=qe&&Qe(()=>V.isReadableStream(new Response("").body)),Je={stream:We&&(e=>e.body)};var Xe;Ke&&(Xe=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Je[e]&&(Je[e]=V.isFunction(Xe[e])?t=>t[e]():(t,r)=>{throw new Q(`Response type '${e}' is not supported`,Q.ERR_NOT_SUPPORT,r)})}));const Ge=async(e,t)=>{const r=V.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(V.isBlob(e))return e.size;if(V.isSpecCompliantForm(e)){const t=new Request(pe.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return V.isArrayBufferView(e)||V.isArrayBuffer(e)?e.byteLength:(V.isURLSearchParams(e)&&(e+=""),V.isString(e)?(await He(e)).byteLength:void 0)})(t):r};const Ye={http:null,xhr:je,fetch:Ke&&(async e=>{let{url:t,method:r,data:i,signal:n,cancelToken:o,timeout:s,onDownloadProgress:a,onUploadProgress:c,responseType:u,headers:l,withCredentials:h="same-origin",fetchOptions:d}=Ue(e);u=u?(u+"").toLowerCase():"text";let p,g=Fe([n,o&&o.toAbortSignal()],s);const f=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let m;try{if(c&&$e&&"get"!==r&&"head"!==r&&0!==(m=await Ge(l,i))){let e,r=new Request(t,{method:"POST",body:i,duplex:"half"});if(V.isFormData(i)&&(e=r.headers.get("content-type"))&&l.setContentType(e),r.body){const[e,t]=Ie(m,Ce(Oe(c)));i=ze(r.body,65536,e,t)}}V.isString(h)||(h=h?"include":"omit");const n="credentials"in Request.prototype;p=new Request(t,{...d,signal:g,method:r.toUpperCase(),headers:l.normalize().toJSON(),body:i,duplex:"half",credentials:n?h:void 0});let o=await fetch(p,d);const s=We&&("stream"===u||"response"===u);if(We&&(a||s&&f)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=o[t]});const t=V.toFiniteNumber(o.headers.get("content-length")),[r,i]=a&&Ie(t,Ce(Oe(a),!0))||[];o=new Response(ze(o.body,65536,r,()=>{i&&i(),f&&f()}),e)}u=u||"text";let w=await Je[V.findKey(Je,u)||"text"](o,e);return!s&&f&&f(),await new Promise((t,r)=>{Re(t,r,{data:w,headers:Se.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:p})})}catch(t){if(f&&f(),t&&"TypeError"===t.name&&/Load failed|fetch/i.test(t.message))throw Object.assign(new Q("Network Error",Q.ERR_NETWORK,e,p),{cause:t.cause||t});throw Q.from(t,t&&t.code,e,p)}})};V.forEach(Ye,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Ze=e=>`- ${e}`,et=e=>V.isFunction(e)||null===e||!1===e;var tt=e=>{e=V.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let o=0;o<t;o++){let t;if(r=e[o],i=r,!et(r)&&(i=Ye[(t=String(r)).toLowerCase()],void 0===i))throw new Q(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+o]=i}if(!i){const e=Object.entries(n).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Q("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ze).join("\n"):" "+Ze(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function rt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new xe(null,e)}function it(e){rt(e),e.headers=Se.from(e.headers),e.data=Ee.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return tt(e.adapter||me.adapter)(e).then(function(t){return rt(e),t.data=Ee.call(e,e.transformResponse,t),t.headers=Se.from(t.headers),t},function(t){return Pe(t)||(rt(e),t&&t.response&&(t.response.data=Ee.call(e,e.transformResponse,t.response),t.response.headers=Se.from(t.response.headers))),Promise.reject(t)})}const nt="1.11.0",ot={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ot[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const st={};ot.transitional=function(e,t,r){function i(e,t){return"[Axios v"+nt+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,o)=>{if(!1===e)throw new Q(i(n," has been removed"+(t?" in "+t:"")),Q.ERR_DEPRECATED);return t&&!st[n]&&(st[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}},ot.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};var at={assertOptions:function(e,t,r){if("object"!=typeof e)throw new Q("options must be an object",Q.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const o=i[n],s=t[o];if(s){const t=e[o],r=void 0===t||s(t,o,e);if(!0!==r)throw new Q("option "+o+" must be "+r,Q.ERR_BAD_OPTION_VALUE);continue}if(!0!==r)throw new Q("Unknown option "+o,Q.ERR_BAD_OPTION)}},validators:ot};const ct=at.validators;class ut{constructor(e){this.defaults=e||{},this.interceptors={request:new oe,response:new oe}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Le(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&at.assertOptions(r,{silentJSONParsing:ct.transitional(ct.boolean),forcedJSONParsing:ct.transitional(ct.boolean),clarifyTimeoutError:ct.transitional(ct.boolean)},!1),null!=i&&(V.isFunction(i)?t.paramsSerializer={serialize:i}:at.assertOptions(i,{encode:ct.function,serialize:ct.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),at.assertOptions(t,{baseUrl:ct.spelling("baseURL"),withXsrfToken:ct.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let o=n&&V.merge(n.common,n[t.method]);n&&V.forEach(["delete","get","head","post","put","patch","common"],e=>{delete n[e]}),t.headers=Se.concat(o,n);const s=[];let a=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,s.unshift(e.fulfilled,e.rejected))});const c=[];let u;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,h=0;if(!a){const e=[it.bind(this),void 0];for(e.unshift(...s),e.push(...c),l=e.length,u=Promise.resolve(t);h<l;)u=u.then(e[h++],e[h++]);return u}l=s.length;let d=t;for(h=0;h<l;){const e=s[h++],t=s[h++];try{d=e(d)}catch(e){t.call(this,e);break}}try{u=it.call(this,d)}catch(e){return Promise.reject(e)}for(h=0,l=c.length;h<l;)u=u.then(c[h++],c[h++]);return u}getUri(e){return ne(Ne((e=Le(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}}V.forEach(["delete","get","head","options"],function(e){ut.prototype[e]=function(t,r){return this.request(Le(r||{},{method:e,url:t,data:(r||{}).data}))}}),V.forEach(["post","put","patch"],function(e){function t(t){return function(r,i,n){return this.request(Le(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}ut.prototype[e]=t(),ut.prototype[e+"Form"]=t(!0)});var lt=ut;class ht{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const r=this;this.promise.then(e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null}),this.promise.then=e=>{let t;const i=new Promise(e=>{r.subscribe(e),t=e}).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e(function(e,i,n){r.reason||(r.reason=new xe(e,i,n),t(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ht(function(t){e=t}),cancel:e}}}var dt=ht;const pt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(pt).forEach(([e,t])=>{pt[t]=e});var gt=pt;const ft=function e(r){const i=new lt(r),n=t(lt.prototype.request,i);return V.extend(n,lt.prototype,i,{allOwnKeys:!0}),V.extend(n,i,null,{allOwnKeys:!0}),n.create=function(t){return e(Le(r,t))},n}(me);ft.Axios=lt,ft.CanceledError=xe,ft.CancelToken=dt,ft.isCancel=Pe,ft.VERSION=nt,ft.toFormData=Z,ft.AxiosError=Q,ft.Cancel=ft.CanceledError,ft.all=function(e){return Promise.all(e)},ft.spread=function(e){return function(t){return e.apply(null,t)}},ft.isAxiosError=function(e){return V.isObject(e)&&!0===e.isAxiosError},ft.mergeConfig=Le,ft.AxiosHeaders=Se,ft.formToJSON=e=>ge(V.isHTMLForm(e)?new FormData(e):e),ft.getAdapter=tt,ft.HttpStatusCode=gt,ft.default=ft;const mt=ft.create({timeout:1e4,headers:{"Content-Type":"application/json"}});mt.interceptors.request.use(e=>e,e=>Promise.reject(e)),mt.interceptors.response.use(e=>e,e=>Promise.reject(e));var wt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},bt={exports:{}};!function(e,t){!function(r,i){var n="function",o="undefined",s="object",a="string",c="major",u="model",l="name",h="type",d="vendor",p="version",g="architecture",f="console",m="mobile",w="tablet",b="smarttv",y="wearable",v="embedded",T="Amazon",k="Apple",S="ASUS",E="BlackBerry",P="Browser",x="Chrome",R="Firefox",C="Google",I="Honor",O="Huawei",A="LG",D="Microsoft",N="Motorola",_="Nvidia",L="OnePlus",U="Opera",j="OPPO",F="Samsung",B="Sharp",M="Sony",z="Xiaomi",K="Zebra",q="Facebook",H="Chromium OS",V="Mac OS",Q=" Browser",$=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},W=function(e,t){return typeof e===a&&-1!==J(t).indexOf(J(e))},J=function(e){return e.toLowerCase()},X=function(e,t){if(typeof e===a)return e=e.replace(/^\s\s*/,""),typeof t===o?e:e.substring(0,500)},G=function(e,t){for(var r,o,a,c,u,l,h=0;h<t.length&&!u;){var d=t[h],p=t[h+1];for(r=o=0;r<d.length&&!u&&d[r];)if(u=d[r++].exec(e))for(a=0;a<p.length;a++)l=u[++o],typeof(c=p[a])===s&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;h+=2}},Y=function(e,t){for(var r in t)if(typeof t[r]===s&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(W(t[r][n],e))return"?"===r?i:r}else if(W(t[r],e))return"?"===r?i:r;return t.hasOwnProperty("*")?t["*"]: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"},ee={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,p],[/opios[\/ ]+([\w\.]+)/i],[p,[l,U+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[p,[l,U+" GX"]],[/\bopr\/([\w\.]+)/i],[p,[l,U]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[p,[l,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[p,[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,p],[/quark(?:pc)?\/([-\w\.]+)/i],[p,[l,"Quark"]],[/\bddg\/([\w\.]+)/i],[p,[l,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[l,"UC"+P]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[p,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[p,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[p,[l,"Smart Lenovo "+P]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+P],p],[/\bfocus\/([\w\.]+)/i],[p,[l,R+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[l,U+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[l,U+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[l,"MIUI"+Q]],[/fxios\/([\w\.-]+)/i],[p,[l,R]],[/\bqihoobrowser\/?([\w\.]*)/i],[p,[l,"360"]],[/\b(qq)\/([\w\.]+)/i],[[l,/(.+)/,"$1Browser"],p],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1"+Q],p],[/samsungbrowser\/([\w\.]+)/i],[p,[l,F+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[p,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[l,p],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[l],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[p,l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,q],p],[/(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,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[p,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[l,x+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,x+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[l,"Android "+P]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[p,Y,{"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,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],p],[/(wolvic|librewolf)\/([\w\.]+)/i],[l,p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[l,R+" 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,[p,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[l,[p,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[g,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[g,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[g,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[g,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[g,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[g,/ower/,"",J]],[/ sun4\w[;\)]/i],[[g,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[g,J]]],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],[u,[d,F],[h,w]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[u,[d,F],[h,m]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[u,[d,k],[h,m]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[u,[d,k],[h,w]],[/(macintosh);/i],[u,[d,k]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[u,[d,B],[h,m]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[u,[d,I],[h,w]],[/honor([-\w ]+)[;\)]/i],[u,[d,I],[h,m]],[/\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],[u,[d,O],[h,w]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[u,[d,O],[h,m]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[u,/_/g," "],[d,z],[h,w]],[/\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],[[u,/_/g," "],[d,z],[h,m]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[u,[d,j],[h,m]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[u,[d,Y,{OnePlus:["304","403","203"],"*":j}],[h,w]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[u,[d,"Vivo"],[h,m]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[u,[d,"Realme"],[h,m]],[/\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],[u,[d,N],[h,m]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[u,[d,N],[h,w]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[u,[d,A],[h,w]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[u,[d,A],[h,m]],[/(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],[u,[d,"Lenovo"],[h,w]],[/(nokia) (t[12][01])/i],[d,u,[h,w]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[u,/_/g," "],[h,m],[d,"Nokia"]],[/(pixel (c|tablet))\b/i],[u,[d,C],[h,w]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[u,[d,C],[h,m]],[/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],[u,[d,M],[h,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[u,"Xperia Tablet"],[d,M],[h,w]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[u,[d,L],[h,m]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[u,[d,T],[h,w]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[u,/(.+)/g,"Fire Phone $1"],[d,T],[h,m]],[/(playbook);[-\w\),; ]+(rim)/i],[u,d,[h,w]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[u,[d,E],[h,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[u,[d,S],[h,w]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[u,[d,S],[h,m]],[/(nexus 9)/i],[u,[d,"HTC"],[h,w]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[d,[u,/_/g," "],[h,m]],[/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],[u,[d,"TCL"],[h,w]],[/(itel) ((\w+))/i],[[d,J],u,[h,Y,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[u,[d,"Acer"],[h,w]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[u,[d,"Meizu"],[h,m]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[u,[d,"Ulefone"],[h,m]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[u,[d,"Energizer"],[h,m]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[u,[d,"Cat"],[h,m]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[u,[d,"Smartfren"],[h,m]],[/droid.+; (a(?:015|06[35]|142p?))/i],[u,[d,"Nothing"],[h,m]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[u,[d,"Archos"],[h,w]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[u,[d,"Archos"],[h,m]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[d,u,[h,w]],[/(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],[d,u,[h,m]],[/(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],[d,u,[h,w]],[/(surface duo)/i],[u,[d,D],[h,w]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[u,[d,"Fairphone"],[h,m]],[/(u304aa)/i],[u,[d,"AT&T"],[h,m]],[/\bsie-(\w*)/i],[u,[d,"Siemens"],[h,m]],[/\b(rct\w+) b/i],[u,[d,"RCA"],[h,w]],[/\b(venue[\d ]{2,7}) b/i],[u,[d,"Dell"],[h,w]],[/\b(q(?:mv|ta)\w+) b/i],[u,[d,"Verizon"],[h,w]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[u,[d,"Barnes & Noble"],[h,w]],[/\b(tm\d{3}\w+) b/i],[u,[d,"NuVision"],[h,w]],[/\b(k88) b/i],[u,[d,"ZTE"],[h,w]],[/\b(nx\d{3}j) b/i],[u,[d,"ZTE"],[h,m]],[/\b(gen\d{3}) b.+49h/i],[u,[d,"Swiss"],[h,m]],[/\b(zur\d{3}) b/i],[u,[d,"Swiss"],[h,w]],[/\b((zeki)?tb.*\b) b/i],[u,[d,"Zeki"],[h,w]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[d,"Dragon Touch"],u,[h,w]],[/\b(ns-?\w{0,9}) b/i],[u,[d,"Insignia"],[h,w]],[/\b((nxa|next)-?\w{0,9}) b/i],[u,[d,"NextBook"],[h,w]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[d,"Voice"],u,[h,m]],[/\b(lvtel\-)?(v1[12]) b/i],[[d,"LvTel"],u,[h,m]],[/\b(ph-1) /i],[u,[d,"Essential"],[h,m]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[u,[d,"Envizen"],[h,w]],[/\b(trio[-\w\. ]+) b/i],[u,[d,"MachSpeed"],[h,w]],[/\btu_(1491) b/i],[u,[d,"Rotor"],[h,w]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[u,[d,_],[h,w]],[/(sprint) (\w+)/i],[d,u,[h,m]],[/(kin\.[onetw]{3})/i],[[u,/\./g," "],[d,D],[h,m]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[u,[d,K],[h,w]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[u,[d,K],[h,m]],[/smart-tv.+(samsung)/i],[d,[h,b]],[/hbbtv.+maple;(\d+)/i],[[u,/^/,"SmartTV"],[d,F],[h,b]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[d,A],[h,b]],[/(apple) ?tv/i],[d,[u,k+" TV"],[h,b]],[/crkey/i],[[u,x+"cast"],[d,C],[h,b]],[/droid.+aft(\w+)( bui|\))/i],[u,[d,T],[h,b]],[/(shield \w+ tv)/i],[u,[d,_],[h,b]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[u,[d,B],[h,b]],[/(bravia[\w ]+)( bui|\))/i],[u,[d,M],[h,b]],[/(mi(tv|box)-?\w+) bui/i],[u,[d,z],[h,b]],[/Hbbtv.*(technisat) (.*);/i],[d,u,[h,b]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[d,X],[u,X],[h,b]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[u,[h,b]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[h,b]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[d,u,[h,f]],[/droid.+; (shield)( bui|\))/i],[u,[d,_],[h,f]],[/(playstation \w+)/i],[u,[d,M],[h,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[u,[d,D],[h,f]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[u,[d,F],[h,y]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[d,u,[h,y]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[u,[d,j],[h,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[u,[d,k],[h,y]],[/(opwwe\d{3})/i],[u,[d,L],[h,y]],[/(moto 360)/i],[u,[d,N],[h,y]],[/(smartwatch 3)/i],[u,[d,M],[h,y]],[/(g watch r)/i],[u,[d,A],[h,y]],[/droid.+; (wt63?0{2,3})\)/i],[u,[d,K],[h,y]],[/droid.+; (glass) \d/i],[u,[d,C],[h,y]],[/(pico) (4|neo3(?: link|pro)?)/i],[d,u,[h,y]],[/; (quest( \d| pro)?)/i],[u,[d,q],[h,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[d,[h,v]],[/(aeobc)\b/i],[u,[d,T],[h,v]],[/(homepod).+mac os/i],[u,[d,k],[h,v]],[/windows iot/i],[[h,v]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[u,[h,m]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[u,[h,w]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[h,w]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[h,m]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[u,[d,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[l,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[l,p],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[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,p],[/ladybird\//i],[[l,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,p],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[l,[p,Y,Z]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,Y,Z],[l,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,V],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,l],[/(ubuntu) ([\w\.]+) like android/i],[[l,/(.+)/,"$1 Touch"],p],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[l,p],[/\(bb(10);/i],[p,[l,E]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[p,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[l,R+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[p,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[p,[l,x+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,H],p],[/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,p],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,p]]},te=function(e,t){if(typeof e===s&&(t=e,e=i),!(this instanceof te))return new te(e,t).getResult();var f=typeof r!==o&&r.navigator?r.navigator:i,b=e||(f&&f.userAgent?f.userAgent:""),y=f&&f.userAgentData?f.userAgentData:i,v=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(ee,t):ee,T=f&&f.userAgent==b;return this.getBrowser=function(){var e,t={};return t[l]=i,t[p]=i,G.call(t,b,v.browser),t[c]=typeof(e=t[p])===a?e.replace(/[^\d\.]/g,"").split(".")[0]:i,T&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[g]=i,G.call(e,b,v.cpu),e},this.getDevice=function(){var e={};return e[d]=i,e[u]=i,e[h]=i,G.call(e,b,v.device),T&&!e[h]&&y&&y.mobile&&(e[h]=m),T&&"Macintosh"==e[u]&&f&&typeof f.standalone!==o&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[u]="iPad",e[h]=w),e},this.getEngine=function(){var e={};return e[l]=i,e[p]=i,G.call(e,b,v.engine),e},this.getOS=function(){var e={};return e[l]=i,e[p]=i,G.call(e,b,v.os),T&&!e[l]&&y&&y.platform&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,H).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===a&&e.length>500?X(e,500):e,this},this.setUA(b),this};te.VERSION="1.0.41",te.BROWSER=$([l,p,c]),te.CPU=$([g]),te.DEVICE=$([u,d,h,f,m,b,w,y,v]),te.ENGINE=te.OS=$([l,p]),e.exports&&(t=e.exports=te),t.UAParser=te;var re=typeof r!==o&&(r.jQuery||r.Zepto);if(re&&!re.ua){var ie=new te;re.ua=ie.getResult(),re.ua.get=function(){return ie.getUA()},re.ua.set=function(e){ie.setUA(e);var t=ie.getResult();for(var r in t)re.ua[r]=t[r]}}}("object"==typeof window?window:wt)}(bt,bt.exports);const yt="undefined"!=typeof performance&&"function"==typeof performance.now?()=>performance.now():()=>Date.now();function vt(e,t,r="0"){const i=String(e);if(i.length<t){let e=i;for(let n=0;n<t-i.length;n+=1)e=r+e;return e}return i}function Tt(){const e=new Date,t=parseInt(`${e.getFullYear()}${vt(e.getMonth()+1,2)}${vt(e.getDate(),2)}`,10).toString(16),r=parseInt(`${vt(e.getHours(),2)}${vt(e.getMinutes(),2)}${vt(e.getSeconds(),2)}${vt(e.getMilliseconds(),3)}`,10).toString(16);let i=t+r.length+r;for(;i.length<32;)i+=Math.floor(16*Math.random()).toString(16);return`${i.slice(0,8)}-${i.slice(8,16)}-${i.slice(16)}`}let kt=0;function St(){const e=Date.now().toString(36).slice(-8).padStart(8,"0");kt=(kt+1)%46656;const t=Math.floor(36*Math.random());return e+(kt.toString(36).padStart(2,"0")+t.toString(36)).padStart(4,"0").slice(-4)}const Et=()=>(()=>{if("undefined"!=typeof WeixinJSBridge)return!0;var e=navigator.userAgent.toLowerCase();return!(-1===e.indexOf("micromessenger")&&"micromessenger"!=e.match(/MicroMessenger/i))})()?"WECHAT":(()=>{const e=navigator.userAgent.toLowerCase();return!(-1===e.indexOf("alipay")&&"alipay"!=e.match(/Alipay/i))})()?"ALIPAY":"OTHER",Pt=e=>{const t=e.indexOf("#");if(-1===t)return"";return e.slice(t+1).replace(/^\//,"").split("?")[0]},xt=(e,t)=>["HONGSHUN"].includes(t)&&"chargeMoney"===e&&window.location.href.indexOf("showMoney=false")>-1?"EQUITY":{login:"LOGIN",buyPkgListNew:"BUY_LIST",cardDetailInfo:"CARD_DETAIL",flowSettle:"SETTLEMENT",chargeMoney:"WALLET",payOrderDetail:"ORDER_DETAIL"}[e]||e,Rt=()=>{const e=new UAParser(navigator.userAgent).getResult();return["iOS","Android"].includes(e?.os?.name)?e?.os?.name:"其他"};class Ct{constructor(e){this.config=e,this.isReporting=!1}async report(e,t){this.config.getConfig().debugSwitch&&console.log("report----------",e,t);try{const r=this.formatReportData(e,t);this.config.getConfig().customReport?await this.config.getConfig().customReport(e,r):await this.defaultReport(e,r)}catch(t){console.error("上报失败:",t),this.config.getConfig().debugSwitch&&console.error("上报失败详情:",{type:e,error:t.message,stack:t.stack})}}getDeviceInfo(){return{screen:{width:screen.width,height:screen.height,availWidth:screen.availWidth,availHeight:screen.availHeight,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth},viewport:{width:window.innerWidth,height:window.innerHeight},connection:navigator.connection?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,memory:navigator.memory?{usedJSHeapSize:navigator.memory.usedJSHeapSize,totalJSHeapSize:navigator.memory.totalJSHeapSize,jsHeapSizeLimit:navigator.memory.jsHeapSizeLimit}:null}}formatReportData(e,t){const r={sessionId:this.config.getConfig().sessionId||"",channel:Et(),uiVer:this.config.getConfig().uiVersion,osType:Rt(),screenWidth:screen.width,screenHeight:screen.height,windowInnerWidth:window.innerWidth,windowInnerHeight:window.innerHeight,netType:navigator.connection?navigator.connection.effectiveType:"",tags:{customerId:this.config.getConfig().customerId,deviceId:this.config.getConfig().deviceId,deviceNo:this.config.getConfig().deviceNo,userId:this.config.getConfig().userId}},i=Array.isArray(t)?t:[t];return i.forEach(e=>{const t=Object.assign({},r.tags||{},e&&e.tags||{});Object.assign(e,r),Object.keys(t).length>0&&(e.tags=t)}),i}async defaultReport(e,t){const r=this.config.getReportUrl(),i=this.config.getThirdPartyConfig();r&&await this.reportToBackend(r,t),i&&Object.keys(i).length>0&&await this.reportToThirdParty(i,t)}async reportToBackend(e,t){if(!navigator.sendBeacon||this.isObjectOverSizeLimit(t,60))return this.config.getConfig().debugSwitch&&console.warn("浏览器不支持 sendBeacon,使用 axios"),await this.reportViaAxios(e,t);{const r=new FormData;r.append("events",JSON.stringify(t));const i=navigator.sendBeacon(e,r);if(this.config.getConfig().debugSwitch&&console.log("上报数据:",e,t),!i)return await this.reportViaAxios(e,FormData)}}async reportViaAxios(e,t){try{return(await mt.post(e,t)).data}catch(e){console.error("后端上报失败:",e)}}async reportToThirdParty(e,t){const r=[];e.baidu&&window._hmt&&r.push(this.reportToBaidu(e.baidu,t)),e.umeng&&window._um&&r.push(this.reportToUmeng(e.umeng,t)),e.sensors&&window.sensors&&r.push(this.reportToSensors(e.sensors,t)),e.tencent&&window.MTA&&r.push(this.reportToTencent(e.tencent,t)),e.custom&&r.push(this.reportToCustom(e.custom,t));try{await Promise.allSettled(r)}catch(e){console.error("第三方上报失败:",e)}}async reportToBaidu(e,t){window._hmt&&window._hmt.push(["_trackEvent",t.type,JSON.stringify(t.data)])}async reportToUmeng(e,t){window._um&&window._um.push(["track",t.type,t.data])}async reportToSensors(e,t){window.sensors&&window.sensors.track(t.type,t.data[0]||{})}async reportToTencent(e,t){window.MTA&&window.MTA.Event.stat(t.type,t.data[0]||{})}async reportToCustom(e,t){"function"==typeof e.report&&await e.report(t)}isObjectOverSizeLimit(e,t){const r=JSON.stringify(e);return(new TextEncoder).encode(r).length/1024>t}}class It{constructor(e){this.config=e,this.reporter=new Ct(e),this.errorQueue=[],this.isInitialized=!1,this.reportTimer=null,this.errorCache=new Map,this.errorCacheTimeout=5e3,this.maxCacheSize=100,this.errorFingerprint=this.createErrorFingerprint.bind(this)}createErrorFingerprint(e,t){const r=e?.message||e?.toString()||e,i=e?.stack||t.stack;return`${t.type||"unknown"}:${r}:${window.location.href}:${i?i.split("\n")[0]:""}`}isDuplicateError(e,t){const r=this.errorFingerprint(e,t),i=Date.now();if(this.cleanupErrorCache(i),this.errorCache.has(r)){if(i-this.errorCache.get(r)<this.errorCacheTimeout)return!0}if(this.errorCache.set(r,i),this.errorCache.size>this.maxCacheSize){const e=this.errorCache.keys().next().value;this.errorCache.delete(e)}return!1}cleanupErrorCache(e){for(const[t,r]of this.errorCache.entries())e-r>this.errorCacheTimeout&&this.errorCache.delete(t)}init(){if(this.isInitialized)return;const e=this.config.getConfig();(e.enableErrorTracking||e.enableResourceError)&&this.setupErrorListener(),e.enableUnhandledRejection&&this.setupUnhandledRejectionListener(),e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushErrorQueue()},e))}setupErrorListener(){window.addEventListener("error",e=>{e.target&&e.target!==window?this.handleResourceError(e,null,null):this.handleJavaScriptError(e,null)},!0)}handleJavaScriptError(e,t){t&&clearTimeout(t),t=setTimeout(()=>{this.handleError(e.error||e.message,{type:"javascript",filename:e.filename,lineno:e.lineno,colno:e.colno,stack:e.error?.stack})},100)}handleResourceError(e,t,r){const i=`${e.target.tagName}:${e.target.src||e.target.href}`;r===i&&this.config.getConfig().debugSwitch?console.log("忽略重复的资源加载错误:",i):(r=i,t&&clearTimeout(t),t=setTimeout(()=>{this.handleError(`Resource load failed: ${e.target.src||e.target.href}`,{type:"resource",tagName:e.target.tagName,src:e.target.src,href:e.target.href}),setTimeout(()=>{r=null},2e3)},100))}setupUnhandledRejectionListener(){let e=null,t=null;window.addEventListener("unhandledrejection",r=>{const i=`${r.reason?.message||r.reason}:${r.reason?.stack||""}`;t===i&&this.config.getConfig().debugSwitch?console.log("忽略重复的 Promise 拒绝:",r.reason):(t=i,e&&clearTimeout(e),e=setTimeout(()=>{this.handleError(r.reason,{type:"unhandledrejection",stack:r.reason?.stack}),setTimeout(()=>{t=null},1e3)},100))})}handleError(e,t={}){if(this.isDuplicateError(e,t)&&this.config.getConfig().debugSwitch)return void console.log("忽略重复错误:",e?.message||e);const r=this.parseStack(e),i={message:e?.message||e?.toString()||e,stack:e?.stack||t.stack,type:t.type||"unknown",timestamp:Date.now(),url:window.location.href,userAgent:navigator.userAgent,fileName:r.fileName,lineNumber:r.lineNumber,columnNumber:r.columnNumber,functionName:r.functionName,stackFrames:r.stackFrames,...t};this.errorQueue.push(i),this.config.getConfig().debugSwitch&&console.log("errorInfo-----",i),0===this.config.getConfig().reportInterval?this.reporter.report("error",[i]):this.errorQueue.length>=this.config.getConfig().maxQueueSize&&this.flushErrorQueue()}parseStack(e){const t=e?.stack||"",r=e?.message||e?.toString()||"",i={errMessage:r,errStack:t,fileName:"",lineNumber:"",columnNumber:"",functionName:"",stackFrames:[]};if(!t)return i;try{const e=/^\s*at\s+([^(]+?)\s+\((.+?):(\d+):(\d+)\)$/,n=/^\s*at\s+(.+?):(\d+):(\d+)$/,o=/^\s*([^@]*)@(.+?):(\d+):(\d+)$/;let s=t;if(r&&t.startsWith(r))s=t.substring(r.length).replace(/^\n+/,"");else if(t.includes("\n")){const e=t.split("\n");!e[0]||e[0].trim().startsWith("at")||e[0].includes("@")||(s=e.slice(1).join("\n"))}const a=s.split("\n").filter(e=>e.trim()),c=[];for(const t of a){let r=null,i=t.match(e);i?r={functionName:i[1].trim(),fileName:i[2],lineNumber:parseInt(i[3]),columnNumber:parseInt(i[4])}:(i=t.match(n),i?r={functionName:"",fileName:i[1],lineNumber:parseInt(i[2]),columnNumber:parseInt(i[3])}:(i=t.match(o),i&&(r={functionName:i[1].trim(),fileName:i[2],lineNumber:parseInt(i[3]),columnNumber:parseInt(i[4])}))),r&&c.push(r)}if(c.length>0){const e=c[0];i.fileName=e.fileName,i.lineNumber=e.lineNumber,i.columnNumber=e.columnNumber,i.functionName=e.functionName}i.stackFrames=c}catch(e){this.config?.getConfig()?.debugSwitch&&console.warn("解析堆栈失败:",e)}return i}reportError(e,t={}){this.handleError(e,t)}flushErrorQueue(){this.errorQueue.length>0&&(this.reporter.report("error",[...this.errorQueue]),this.errorQueue=[])}destroy(){this.config.getConfig().reportInterval>0&&this.flushErrorQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.isInitialized=!1}}class Ot{constructor(e){this.config=e,this.reporter=new Ct(e),this.eventQueue=[],this.isInitialized=!1,this.clickListener=null,this.pageViewListener=null,this.reportTimer=null,this.originalPushState=null,this.originalReplaceState=null,this.pageHistory=[],this.currentPage=null,this.currentPageStartTime=Date.now(),this.previousPage=null,this.previousPageStayTime=0}init(){if(this.isInitialized)return;const e=this.config.getConfig();this.currentPage={url:window.location.href,title:document.title,enterTime:Date.now(),referrer:document.referrer},this.currentPageStartTime=Date.now(),e.enableClickTracking&&this.setupClickTracking(),e.enablePageViewTracking&&this.setupPageViewTracking(),window.addEventListener("beforeunload",()=>{this.handlePageUnload()}),document.addEventListener("visibilitychange",()=>{}),this.config.getConfig().reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}handlePageUnload(){if(this.currentPage){const e=Date.now()-this.currentPageStartTime;this.previousPage={...this.currentPage,stayTime:e,leaveTime:Date.now()},this.previousPageStayTime=e}}setupClickTracking(){this.clickListener=e=>{const t=e.target,r={type:"click",timestamp:Date.now(),url:window.location.href,element:{tagName:t.tagName,className:t.className,id:t.id,text:t.textContent?.substring(0,50)},position:{x:e.clientX,y:e.clientY}};this.handleEvent("click",r)},document.addEventListener("click",this.clickListener,!0)}setupPageViewTracking(){const e=this.config.getConfig().pageViewTracking||{};let t=window.location.href,r=Date.now();const i=e.debounce||100;this.pageViewListener=()=>{const e=window.location.href,n=Date.now();e===t&&n-r<i&&this.config.getConfig().debugSwitch?console.log("忽略重复的页面浏览事件:",e):(this.handlePageChange(e,n),t=e,r=n,this.handleEvent("pageview",{uuid:St(),timestamp:n,pageKey:xt(Pt(e),this.config.getConfig().uiVersion),pageUri:Pt(e),eventType:"VIEW"}))},!1!==e.listenPopstate&&window.addEventListener("popstate",this.pageViewListener),!1!==e.listenHistoryAPI&&(this.originalPushState=history.pushState,this.originalReplaceState=history.replaceState,history.pushState=function(...e){this.originalPushState.apply(history,e),setTimeout(()=>{this.pageViewListener()},0)}.bind(this),history.replaceState=function(...e){this.originalReplaceState.apply(history,e),setTimeout(()=>{this.pageViewListener()},0)}.bind(this)),e.vueRouterMode&&(this.config.getConfig().debugSwitch&&console.log("Vue Router 模式:页面浏览追踪已优化"),this.pageViewListener())}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushEventQueue()},e))}handlePageChange(e,t){if(this.currentPage){const r=t-this.currentPageStartTime;this.previousPage={...this.currentPage,stayTime:r,leaveTime:t},this.previousPageStayTime=r,this.pageHistory.push({...this.previousPage}),this.pageHistory.length>20&&this.pageHistory.shift(),this.config.getConfig().debugSwitch&&console.log(`页面切换: ${this.currentPage.url} → ${e},停留时间: ${r}ms`)}this.currentPage={url:e,title:document.title,enterTime:t,referrer:document.referrer},this.currentPageStartTime=t}getPreviousPageInfo(){return{previousPage:this.previousPage?{url:this.previousPage.url,title:this.previousPage.title,stayTime:this.previousPageStayTime}:null,previousPageStayTime:this.previousPageStayTime}}getCurrentPageStayTime(){return this.currentPageStartTime?Date.now()-this.currentPageStartTime:0}handleEvent(e,t){const r=this.getPreviousPageInfo(),i={...t,refer:Pt(r?.previousPage?.url),duration:r?.previousPageStayTime};this.eventQueue.push(i),this.config.getConfig().debugSwitch&&console.log("eventInfo----",i),0===this.config.getConfig().reportInterval?this.reporter.report("event",[i]):this.eventQueue.length>=this.config.getConfig().maxQueueSize&&this.flushEventQueue()}reportEvent(e,t={}){const r={uuid:St(),timestamp:Date.now(),actionKey:e,pageKey:xt(Pt(window.location.href),this.config.getConfig().uiVersion),pageUri:Pt(window.location.href),eventType:"CLICK",tags:t};this.handleEvent(e,r)}flushEventQueue(){this.eventQueue.length>0&&(this.reporter.report("event",[...this.eventQueue]),this.eventQueue=[])}destroy(){this.flushEventQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.clickListener&&(document.removeEventListener("click",this.clickListener,!0),this.clickListener=null),this.pageViewListener&&(window.removeEventListener("popstate",this.pageViewListener),this.pageViewListener=null),this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),this.originalReplaceState&&(history.replaceState=this.originalReplaceState,this.originalReplaceState=null),this.isInitialized=!1}}class At{constructor(e){this.config=e,this.reporter=new Ct(e),this.isInitialized=!1,this.pageStartTime=Date.now(),this.performanceQueue=[],this.thirdPartySDKs={},this.reportTimer=null,this.currentRoute=null,this.routeStartTime=Date.now(),this.routeHistory=[],this.vueRouter=null,this.metrics={fcp:0,lcp:0,fid:0,cls:0,ttfb:0,domLoad:0,windowLoad:0,resourceLoad:[],apiRequests:[],pageStayTime:0}}init(){if(this.isInitialized)return;const e=this.config.getConfig();e.enablePerformanceTracking&&this.setupPerformanceMonitoring(),e.enableResourceTracking&&this.setupResourceMonitoring(),e.enableInteractionTracking&&this.setupInteractionMonitoring(),this.initThirdPartySDKs(),e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushPerformanceQueue()},e))}setupVueRouterMonitoring(e){e&&!this.vueRouter&&(this.vueRouter=e,this.currentRoute=e.currentRoute.value,e.beforeEach((e,t,r)=>{t.name&&this.handleRouteLeave(t,e),r()}),e.afterEach((e,t)=>{this.handleRouteEnter(e,t)}),e.beforeResolve((e,t,r)=>{t.name&&this.calculateRouteStayTime(t),r()}),this.config?.config?.debugSwitch&&console.log("Vue Router 监控已设置"))}handleRouteLeave(e,t){const r=Date.now()-this.routeStartTime;this.recordRouteStayTime(e,r),this.currentRoute=e,this.routeStartTime=Date.now()}handleRouteEnter(e,t){this.routeStartTime=Date.now(),this.currentRoute=e,this.recordRouteEnter(e,t)}recordRouteStayTime(e,t){const r={name:e.name||"unknown",path:e.path,fullPath:e.fullPath,stayTime:t,enterTime:this.routeStartTime,leaveTime:Date.now(),params:e.params,query:e.query,meta:e.meta};this.routeHistory.push(r),this.metrics.pageStayTime=t,this.reportRouteStayTime(r),this.config?.config?.debugSwitch&&console.log("路由数据",r)}recordRouteEnter(e,t){e.name,e.path,e.fullPath,Date.now(),e.params,e.query,e.meta,t&&(t.name,t.path),this.config?.config?.debugSwitch&&console.log(`进入路由: ${e.name||e.path}`)}calculateRouteStayTime(e){if(!this.routeStartTime)return 0;return Date.now()-this.routeStartTime}reportRouteStayTime(e){const t={type:"route_stay_time",timestamp:Date.now(),route:e,user:this.config.getUser(),device:this.getDeviceInfo()};this.reporter.report("route_performance",[t])}getCurrentRoute(){return this.currentRoute}getRouteHistory(){return[...this.routeHistory]}getCurrentPageStayTime(){return this.routeStartTime?Date.now()-this.routeStartTime:0}getRoutePerformanceStats(){const e={totalRoutes:this.routeHistory.length,averageStayTime:0,routesByPath:new Map,totalStayTime:0};return this.routeHistory.length>0&&(this.routeHistory.forEach(t=>{e.totalStayTime+=t.stayTime,e.routesByPath.has(t.path)||e.routesByPath.set(t.path,{count:0,totalStayTime:0,averageStayTime:0});const r=e.routesByPath.get(t.path);r.count++,r.totalStayTime+=t.stayTime,r.averageStayTime=r.totalStayTime/r.count}),e.averageStayTime=e.totalStayTime/e.totalRoutes),e}setupPerformanceMonitoring(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.captureDOMLoadTime()}):this.captureDOMLoadTime(),window.addEventListener("load",()=>{this.captureWindowLoadTime(),this.captureWebVitals(),this.reportPerformanceMetrics()})}setupResourceMonitoring(){if("undefined"!=typeof window&&"PerformanceObserver"in window){const e=new PerformanceObserver(e=>{for(const t of e.getEntries())"resource"===t.entryType&&this.handleResourceLoad(t)});try{e.observe({entryTypes:["resource"]})}catch(e){this.setupResourceFallback()}}}setupInteractionMonitoring(){let e=0,t=0;const r=i=>{0===e&&(e=yt(),t=e-this.metrics.fcp,this.metrics.fid=t,document.removeEventListener("click",r,!0),document.removeEventListener("keydown",r,!0),document.removeEventListener("touchstart",r,!0))};document.addEventListener("click",r,!0),document.addEventListener("keydown",r,!0),document.addEventListener("touchstart",r,!0)}captureDOMLoadTime(){this.metrics.domLoad=yt()}captureWindowLoadTime(){this.metrics.windowLoad=yt()}captureWebVitals(){if("undefined"!=typeof window&&"PerformanceObserver"in window)try{new PerformanceObserver(e=>{for(const t of e.getEntries())"first-contentful-paint"===t.name&&(this.metrics.fcp=t.startTime,this.config?.config?.debugSwitch&&console.log("FCP:",t.startTime))}).observe({type:"paint",buffered:!0})}catch(e){console.warn("FCP监控失败:",e)}if("undefined"!=typeof window&&"PerformanceObserver"in window)try{new PerformanceObserver(e=>{for(const t of e.getEntries())this.metrics.lcp=t.startTime}).observe({entryTypes:["largest-contentful-paint"]})}catch(e){console.warn("LCP监控失败:",e)}if("undefined"!=typeof window&&"PerformanceObserver"in window)try{let e=0;new PerformanceObserver(t=>{for(const r of t.getEntries())r.hadRecentInput||(e+=r.value);this.metrics.cls=e}).observe({entryTypes:["layout-shift"]})}catch(e){console.warn("CLS监控失败:",e)}}handleResourceLoad(e){const t={name:e.name,type:e.initiatorType,duration:e.duration,size:e.transferSize,timestamp:Date.now()};this.metrics.resourceLoad.push(t),e.duration>3e3&&this.reportSlowResource(t)}handlePageHidden(){this.calculatePageStayTime()}handlePageVisible(){this.pageStartTime=Date.now()}calculatePageStayTime(){const e=Date.now()-this.pageStartTime;this.reportPageStayTime(e)}reportPerformanceMetrics(){const e={type:"performance",timestamp:Date.now(),url:window.location.href,userAgent:navigator.userAgent,metrics:this.metrics,user:this.config.getUser(),device:this.getDeviceInfo()};this.performanceQueue.push(e),this.config.getConfig().debugSwitch&&console.log("Performance Data:",e),0===this.config.getConfig().reportInterval?this.reporter.report("performance",[e]):this.performanceQueue.length>=this.config.getConfig().maxQueueSize&&this.flushPerformanceQueue()}reportSlowResource(e){this.reporter.report("slow_resource",[e])}reportSlowApi(e){this.reporter.report("slow_api",[e])}reportPageStayTime(e){const t={type:"page_stay",url:window.location.href,stayTime:e,timestamp:Date.now()};this.reporter.report("page_stay",[t])}getDeviceInfo(){return{screen:{width:screen.width,height:screen.height,availWidth:screen.availWidth,availHeight:screen.availHeight,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth},viewport:{width:window.innerWidth,height:window.innerHeight},connection:navigator.connection?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,memory:navigator.memory?{usedJSHeapSize:navigator.memory.usedJSHeapSize,totalJSHeapSize:navigator.memory.totalJSHeapSize,jsHeapSizeLimit:navigator.memory.jsHeapSizeLimit}:null}}initThirdPartySDKs(){const e=this.config.getThirdPartyConfig();e.baidu&&window._hmt&&(this.thirdPartySDKs.baidu=window._hmt),e.umeng&&window._um&&(this.thirdPartySDKs.umeng=window._um),e.sensors&&window.sensors&&(this.thirdPartySDKs.sensors=window.sensors),e.tencent&&window.MTA&&(this.thirdPartySDKs.tencent=window.MTA)}flushPerformanceQueue(){this.performanceQueue.length>0&&(this.reporter.report("performance",[...this.performanceQueue]),this.performanceQueue=[])}reportPerformance(e={}){const t={type:"custom_performance",timestamp:Date.now(),url:window.location.href,metrics:e,user:this.config.getUser()};this.reporter.report("performance",[t])}getCurrentMetrics(){return{...this.metrics}}destroy(){this.config.getConfig().reportInterval>0&&this.flushPerformanceQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.isInitialized=!1}}class Dt{constructor(e){this.config=e,this.reporter=new Ct(e),this.isInitialized=!1,this.behaviorQueue=[],this.sessionId=this.generateSessionId(),this.pageStartTime=Date.now(),this.scrollDepth=0,this.mouseMovements=[],this.keyStrokes=[],this.formInteractions=[],this.timeTracker=null,this.reportTimer=null,this.originalPushState=null,this.originalReplaceState=null,this.behaviors={pageViews:[],clicks:[],scrolls:[],formSubmissions:[],navigation:[],timeOnPage:0}}init(){if(this.isInitialized)return;const e=this.config.getConfig();e.enableUserInteractionTracking&&this.setupUserInteractionTracking(),e.enableFormTracking&&this.setupFormTracking(),e.enableScrollTracking&&this.setupScrollTracking(),e.enableMouseTracking&&this.setupMouseTracking(),e.enableKeyboardTracking&&this.setupKeyboardTracking(),this.setupTimeTracking(),e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushBehaviorQueue()},e))}setupUserInteractionTracking(){document.addEventListener("click",e=>{this.trackClick(e)},!0),document.addEventListener("dblclick",e=>{this.trackDoubleClick(e)},!0),document.addEventListener("contextmenu",e=>{this.trackRightClick(e)},!0),"ontouchstart"in window&&document.addEventListener("touchstart",e=>{this.trackTouch(e)},!0)}setupFormTracking(){document.addEventListener("submit",e=>{this.trackFormSubmission(e)},!0),document.addEventListener("change",e=>{"INPUT"!==e.target.tagName&&"SELECT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName||this.trackFormFieldChange(e)},!0),document.addEventListener("focus",e=>{"INPUT"!==e.target.tagName&&"SELECT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName||this.trackFormFieldFocus(e)},!0),document.addEventListener("blur",e=>{"INPUT"!==e.target.tagName&&"SELECT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName||this.trackFormFieldBlur(e)},!0)}setupScrollTracking(){let e;document.addEventListener("scroll",()=>{clearTimeout(e),e=setTimeout(()=>{const e=window.pageYOffset||document.documentElement.scrollTop,t=document.documentElement.scrollHeight,r=document.documentElement.clientHeight,i=Math.round(e/(t-r)*100);i>this.scrollDepth&&(this.scrollDepth=i,this.trackScroll(i,e))},100)},{passive:!0})}setupMouseTracking(){let e,t=[];document.addEventListener("mousemove",r=>{clearTimeout(e),t.push({x:r.clientX,y:r.clientY,timestamp:Date.now()}),t.length>100&&t.shift(),e=setTimeout(()=>{t.length>10&&(this.trackMouseMovement(t),t=[])},1e3)},{passive:!0})}setupKeyboardTracking(){document.addEventListener("keydown",e=>{"password"!==e.target.type&&this.trackKeyStroke(e)},!0)}setupTimeTracking(){this.timeTracker&&clearInterval(this.timeTracker),this.timeTracker=setInterval(()=>{this.behaviors.timeOnPage+=1},1e3),window.addEventListener("beforeunload",()=>{this.reportTimeOnPage()})}trackReferrer(){const e=document.referrer;if(e){const t={type:"referrer",url:e,domain:this.extractDomain(e),timestamp:Date.now()};this.config.getConfig().debugSwitch&&console.log("referrerData----",t),this.behaviors.navigation.push(t),this.reportBehavior("referrer",t)}}trackPageView(){const e={type:"pageview",url:window.location.href,title:document.title,timestamp:Date.now(),sessionId:this.sessionId,referrer:document.referrer};this.behaviors.pageViews.push(e),this.reportBehavior("pageview",e),this.pageStartTime=Date.now(),this.scrollDepth=0}trackClick(e){const t={type:"click",element:{tagName:e.target.tagName,className:e.target.className,id:e.target.id,text:e.target.textContent?.substring(0,50),href:e.target.href},position:{x:e.clientX,y:e.clientY,pageX:e.pageX,pageY:e.pageY},timestamp:Date.now(),sessionId:this.sessionId};this.behaviors.clicks.push(t),this.reportBehavior("click",t)}trackDoubleClick(e){const t={type:"doubleclick",element:{tagName:e.target.tagName,className:e.target.className,id:e.target.id},position:{x:e.clientX,y:e.clientY},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("doubleclick",t)}trackRightClick(e){const t={type:"rightclick",element:{tagName:e.target.tagName,className:e.target.className,id:e.target.id},position:{x:e.clientX,y:e.clientY},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("rightclick",t)}trackTouch(e){const t={type:"touch",touches:Array.from(e.touches).map(e=>({x:e.clientX,y:e.clientY,identifier:e.identifier})),timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("touch",t)}trackFormSubmission(e){const t={type:"form_submission",form:{action:e.target.action,method:e.target.method,id:e.target.id,className:e.target.className},fields:this.getFormFields(e.target),timestamp:Date.now(),sessionId:this.sessionId};this.behaviors.formSubmissions.push(t),this.reportBehavior("form_submission",t)}trackFormFieldChange(e){const t={type:"form_field_change",field:{name:e.target.name,type:e.target.type,value:"password"===e.target.type?"***":e.target.value,id:e.target.id},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("form_field_change",t)}trackFormFieldFocus(e){const t={type:"form_field_focus",field:{name:e.target.name,type:e.target.type,id:e.target.id},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("form_field_focus",t)}trackFormFieldBlur(e){const t={type:"form_field_blur",field:{name:e.target.name,type:e.target.type,id:e.target.id},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("form_field_blur",t)}trackScroll(e,t){const r={type:"scroll",depth:e,scrollTop:t,timestamp:Date.now(),sessionId:this.sessionId};this.config.getConfig().debugSwitch&&console.log("scrollData---",r),this.reportBehavior("scroll",r)}trackMouseMovement(e){const t={type:"mouse_movement",movements:e,timestamp:Date.now(),sessionId:this.sessionId};this.config.getConfig().debugSwitch&&console.log("mouse_movement---",t),this.reportBehavior("mouse_movement",t)}trackKeyStroke(e){const t={type:"keystroke",key:e.key,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,timestamp:Date.now(),sessionId:this.sessionId};this.config.getConfig().debugSwitch&&console.log("keystroke---",t),this.reportBehavior("keystroke",t)}reportBehavior(e,t){const r={type:e,data:t,user:this.config.getUser(),config:{appId:this.config.getConfig().appId,appVersion:this.config.getConfig().appVersion}};this.behaviorQueue.push(r),0===this.config.getConfig().reportInterval?this.reporter.report("behavior",[r]):this.behaviorQueue.length>=this.config.getConfig().maxQueueSize&&this.flushBehaviorQueue()}reportCustomBehavior(e,t={}){const r={type:"custom_behavior",eventName:e,...t,timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("custom_behavior",r)}flushBehaviorQueue(){this.behaviorQueue.length>0&&(this.reporter.report("behavior",[...this.behaviorQueue]),this.behaviorQueue=[])}getFormFields(e){const t=[],r=e.elements;for(let e=0;e<r.length;e++){const i=r[e];i.name&&t.push({name:i.name,type:i.type,value:"password"===i.type?"***":i.value})}return t}extractDomain(e){try{return new URL(e).hostname}catch(t){return e}}generateSessionId(){return"session_"+Date.now()+"_"+Math.random().toString(36).substr(2,9)}getCurrentBehaviors(){return{...this.behaviors}}getSessionId(){return this.sessionId}destroy(){this.config.getConfig().reportInterval>0&&this.flushBehaviorQueue(),this.reportTimeOnPage(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.timeTracker&&(clearInterval(this.timeTracker),this.timeTracker=null),this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),this.originalReplaceState&&(history.replaceState=this.originalReplaceState,this.originalReplaceState=null),this.isInitialized=!1}}class Nt{constructor(e,t=null){this.config=e,this.reporter=new Ct(e),this.eventTracker=t,this.isInitialized=!1,this.observer=null,this.trackedElements=new Map,this.exposureQueue=[],this.reportTimer=null,this.scrollTimer=null,this.useFallback=!1,this.lastReportTime=new Map,this.debounceTime=500,this.defaultOptions={threshold:.5,rootMargin:"0px",scrollThrottle:100}}init(){if(this.isInitialized)return;this.isIntersectionObserverSupported()?(this.createObserver(),this.useFallback=!1,this.config.getConfig().debugSwitch&&console.log("曝光追踪器初始化完成(使用 Intersection Observer API)")):(this.setupFallbackTracking(),this.useFallback=!0,this.config.getConfig().debugSwitch&&console.warn("浏览器不支持 Intersection Observer,使用降级方案(滚动事件追踪)"));const e=this.config.getConfig();e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0,e.debugSwitch&&console.log("曝光追踪器初始化完成")}isIntersectionObserverSupported(){return"undefined"!=typeof window&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype}createObserver(){const e={root:null,rootMargin:this.defaultOptions.rootMargin,threshold:[0,.5,1]};this.observer=new IntersectionObserver(e=>{e.forEach(e=>{this.handleIntersection(e)})},e)}handleIntersection(e){console.log("entry-------",e);const t=e.target,r=this.getElementId(t),i=this.getElementConfig(t),n=i.threshold||this.defaultOptions.threshold,o=e.intersectionRatio,s=o>=n;if(this.config.getConfig().debugSwitch&&console.log(`元素 ${r} 可见性检查:`,{visibleRatio:(100*o).toFixed(2)+"%",threshold:(100*n).toFixed(2)+"%",isThresholdMet:s}),s){this.trackedElements.has(r)||this.trackedElements.set(r,{element:t,config:i});const e=this.trackedElements.get(r),n=Date.now(),s=n-(this.lastReportTime.get(r)||0);s>=this.debounceTime?(this.lastReportTime.set(r,n),this.triggerExposure(t,r,e,o,0),this.config.getConfig().debugSwitch&&console.log(`元素 ${r} 进入可视区域,可见比例: ${(100*o).toFixed(2)}%,立即触发曝光`)):this.config.getConfig().debugSwitch&&console.log(`元素 ${r} 跳过上报(去重),距离上次上报 ${s}ms,需要间隔 ${this.debounceTime}ms`)}}triggerExposure(e,t,r,i,n){const o=this.extractProductInfo(e,r.config);let s={};this.eventTracker&&"function"==typeof this.eventTracker.getPreviousPageInfo&&(s=this.eventTracker.getPreviousPageInfo());const a=this.getElementConfig(e),c={uuid:St(),timestamp:Date.now(),pageKey:xt(Pt(window.location.href),this.config.getConfig().uiVersion),pageUri:Pt(window.location.href),eventType:"EXPOSE",actionKey:"",refer:Pt(s?.previousPage?.url),duration:s?.previousPageStayTime,viewParam:{...o},tags:{...a}};this.exposureQueue.push(c),this.config.getConfig().debugSwitch&&console.log("商品曝光事件:",c);0===this.config.getConfig().reportInterval?Promise.resolve().then(()=>{this.reporter.report("exposure",this.getReportData([c])).catch(e=>{console.error("曝光上报失败:",e),this.config.getConfig().debugSwitch&&console.error("曝光上报失败详情:",e)})}):this.exposureQueue.length>=this.config.getConfig().maxQueueSize&&this.flushExposureQueue()}setupFallbackTracking(){this.observer={observe:e=>{const t=this.getElementId(e);this.trackedElements.has(t)},unobserve:e=>{const t=this.getElementId(e);this.trackedElements.delete(t)},disconnect:()=>{this.trackedElements.clear(),this.removeScrollListener()}},this.addScrollListener(),setTimeout(()=>{this.checkAllElementsVisibility()},100)}addScrollListener(){if(this.scrollHandler)return;let e=0;const t=this.defaultOptions.scrollThrottle;this.scrollHandler=()=>{const r=Date.now();r-e>=t&&(e=r,this.checkAllElementsVisibility())},window.addEventListener("scroll",this.scrollHandler,{passive:!0}),window.addEventListener("touchmove",this.scrollHandler,{passive:!0}),window.addEventListener("resize",this.scrollHandler,{passive:!0})}removeScrollListener(){this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler),window.removeEventListener("touchmove",this.scrollHandler),window.removeEventListener("resize",this.scrollHandler),this.scrollHandler=null)}checkAllElementsVisibility(){if(!this.useFallback)return;const e=window.innerHeight,t=window.innerWidth;this.trackedElements.forEach((r,i)=>{const n=r.element;if(!n||!document.contains(n))return void this.trackedElements.delete(i);const o=r.config.threshold||this.defaultOptions.threshold,s=this.calculateVisibleRatio(n,0,e,0,t);if(s>=o){const e=Date.now(),t=e-(this.lastReportTime.get(i)||0);t>=this.debounceTime?(this.lastReportTime.set(i,e),this.triggerExposure(n,i,r,s,0),this.config.getConfig().debugSwitch&&console.log(`元素 ${i} 进入可视区域,可见比例: ${(100*s).toFixed(2)}%,立即触发曝光`)):this.config.getConfig().debugSwitch&&console.log(`元素 ${i} 跳过上报(去重),距离上次上报 ${t}ms,需要间隔 ${this.debounceTime}ms`)}})}calculateVisibleRatio(e,t,r,i,n){const o=e.getBoundingClientRect();if(o.bottom<t||o.top>r||o.right<i||o.left>n)return 0;const s=Math.max(o.top,t),a=Math.min(o.bottom,r),c=Math.max(o.left,i),u=Math.min(o.right,n),l=Math.max(0,u-c)*Math.max(0,a-s),h=o.width*o.height;return 0===h?0:l/h}trackProduct(e,t={}){if(!this.isInitialized)return void console.warn("曝光追踪器未初始化");if(!e||"object"!=typeof e||!e.nodeType)return void console.warn("无效的元素,无法追踪");const r=this.getElementId(e),i={...t};this.trackedElements.has(r)&&this.untrackProduct(e),e.setAttribute("data-exposure-tracked","true"),e.setAttribute("data-exposure-config",JSON.stringify(i)),this.trackedElements.set(r,{element:e,config:i}),this.observer&&this.observer.observe(e),this.useFallback&&setTimeout(()=>{this.checkAllElementsVisibility()},0),this.config.getConfig().debugSwitch&&console.log(`开始追踪商品元素: ${r}`,i)}trackProducts(e,t={}){if(!this.isInitialized||!this.observer)return void console.warn("曝光追踪器未初始化");let r=[];if("string"==typeof e)r=Array.from(document.querySelectorAll(e));else{if(!Array.isArray(e))return void console.warn("无效的选择器或元素列表");r=e}r.forEach((e,r)=>{const i=Array.isArray(t)?t[r]||{}:t;this.trackProduct(e,i)}),this.config.getConfig().debugSwitch&&console.log(`批量追踪了 ${r.length} 个商品元素`)}untrackProduct(e){if(!this.observer)return;const t=this.getElementId(e);this.observer.unobserve&&this.observer.unobserve(e),this.trackedElements.delete(t),this.lastReportTime.delete(t),e&&e.removeAttribute&&(e.removeAttribute("data-exposure-tracked"),e.removeAttribute("data-exposure-config")),this.config.getConfig().debugSwitch&&console.log(`取消追踪商品元素: ${t}`)}untrackAll(){this.observer&&(this.useFallback||this.trackedElements.forEach((e,t)=>{e.element&&this.observer.unobserve&&this.observer.unobserve(e.element)}),this.trackedElements.clear(),this.config.getConfig().debugSwitch&&console.log("已取消追踪所有商品元素"))}getElementId(e){if(e.getAttribute("data-exposure-id"))return e.getAttribute("data-exposure-id");if(e._exposureUniqueId)return e._exposureUniqueId;if(e.id)return`id_${e.id}`;if(e.getAttribute("data-product-id"))return`product_${e.getAttribute("data-product-id")}`;const t=St();return e._exposureUniqueId=t,t}getElementConfig(e){const t=e.getAttribute("data-exposure-config");if(t)try{return JSON.parse(t)}catch(e){return{}}return{}}extractProductInfo(e,t={}){const r={productId:t.productId||e.getAttribute("data-product-id")||null,productName:t.productName||e.getAttribute("data-product-name")||null,productPrice:t.productPrice||e.getAttribute("data-product-price")||null,productCategory:t.productCategory||e.getAttribute("data-product-category")||null,productImage:t.productImage||e.getAttribute("data-product-image")||null};return Object.keys(r).forEach(e=>{null===r[e]&&delete r[e]}),r}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushExposureQueue()},e))}getReportData(e){if(e.length>0){const r=e[0];return r.tags&&(r.tags.exposeContent=(t=e.map(e=>e.viewParam?.productId).filter(Boolean),Array.from(new Set(t)))),delete r.viewParam,r}var t;return null}flushExposureQueue(){if(this.exposureQueue.length>0){const e=[...this.exposureQueue];this.exposureQueue=[],Promise.resolve().then(()=>{this.reporter.report("exposure",this.getReportData(e)).catch(e=>{console.error("批量曝光上报失败:",e),this.config.getConfig().debugSwitch&&console.error("批量曝光上报失败详情:",e)})})}}reportExposure(e={}){let t={};this.eventTracker&&"function"==typeof this.eventTracker.getPreviousPageInfo&&(t=this.eventTracker.getPreviousPageInfo());const r={uuid:St(),timestamp:Date.now(),pageKey:xt(Pt(window.location.href),this.config.getConfig().uiVersion),pageUri:Pt(window.location.href),eventType:"EXPOSE",actionKey:"",refer:Pt(t?.previousPage?.url),duration:t?.previousPageStayTime,viewParam:{...e},tags:{...config}};Promise.resolve().then(()=>{this.reporter.report("exposure",this.getReportData(r)).catch(e=>{console.error("手动曝光上报失败:",e),this.config.getConfig().debugSwitch&&console.error("手动曝光上报失败详情:",e)})})}getTrackedElements(){return Array.from(this.trackedElements.keys())}getExposureQueue(){return[...this.exposureQueue]}destroy(){this.flushExposureQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.untrackAll(),this.observer&&(this.observer.disconnect&&this.observer.disconnect(),this.observer=null),this.removeScrollListener(),this.trackedElements.clear(),this.exposureQueue=[],this.lastReportTime.clear(),this.useFallback=!1,this.isInitialized=!1,this.config.getConfig().debugSwitch&&console.log("曝光追踪器已销毁")}}class _t{constructor(e){this.config=e,this.integratedSDKs={},this.isInitialized=!1}init(){if(this.isInitialized)return;const e=this.config.getThirdPartyConfig();e.baidu&&e.baidu.enabled&&this.initBaiduAnalytics(e.baidu),e.umeng&&e.umeng.enabled&&this.initUmengAnalytics(e.umeng),e.sensors&&e.sensors.enabled&&this.initSensorsAnalytics(e.sensors),e.tencent&&e.tencent.enabled&&this.initTencentAnalytics(e.tencent),e.google&&e.google.enabled&&this.initGoogleAnalytics(e.google),e.custom&&e.custom.enabled&&this.initCustomAnalytics(e.custom),this.isInitialized=!0}initBaiduAnalytics(e){try{window._hmt?(this.integratedSDKs.baidu={name:"baidu",instance:window._hmt,config:e},e.siteId&&window._hmt.push(["_setAccount",e.siteId]),!1!==e.autoPageview&&window._hmt.push(["_trackPageview"]),console.log("百度统计集成成功")):console.warn("百度统计未加载,请检查脚本是否正确引入")}catch(e){console.error("百度统计集成失败:",e)}}initUmengAnalytics(e){try{window._um?(this.integratedSDKs.umeng={name:"umeng",instance:window._um,config:e},e.siteId&&window._um.push(["setAccount",e.siteId]),!1!==e.autoPageview&&window._um.push(["trackPageview"]),console.log("友盟统计集成成功")):console.warn("友盟统计未加载,请检查脚本是否正确引入")}catch(e){console.error("友盟统计集成失败:",e)}}initSensorsAnalytics(e){try{window.sensors?(this.integratedSDKs.sensors={name:"sensors",instance:window.sensors,config:e},e.serverUrl&&window.sensors.setServerUrl(e.serverUrl),e.siteId&&window.sensors.setSiteId(e.siteId),!1!==e.autoPageview&&window.sensors.trackPageview(),console.log("神策数据集成成功")):console.warn("神策数据未加载,请检查脚本是否正确引入")}catch(e){console.error("神策数据集成失败:",e)}}initTencentAnalytics(e){try{window.MTA?(this.integratedSDKs.tencent={name:"tencent",instance:window.MTA,config:e},e.appId&&window.MTA.setAppId(e.appId),!1!==e.autoPageview&&window.MTA.trackPageview(),console.log("腾讯云分析集成成功")):console.warn("腾讯云分析未加载,请检查脚本是否正确引入")}catch(e){console.error("腾讯云分析集成失败:",e)}}initGoogleAnalytics(e){try{window.gtag?(this.integratedSDKs.google={name:"google",instance:window.gtag,config:e},e.measurementId&&window.gtag("config",e.measurementId,{page_title:document.title,page_location:window.location.href}),console.log("Google Analytics集成成功")):console.warn("Google Analytics未加载,请检查脚本是否正确引入")}catch(e){console.error("Google Analytics集成失败:",e)}}initCustomAnalytics(e){try{if("function"==typeof e.init){const t=e.init(e);this.integratedSDKs.custom={name:"custom",instance:t,config:e},console.log("自定义第三方集成成功")}else console.warn("自定义第三方配置缺少init函数")}catch(e){console.error("自定义第三方集成失败:",e)}}reportEvent(e,t={}){Object.values(this.integratedSDKs).forEach(r=>{try{this.reportToSDK(r,e,t)}catch(e){console.error(`上报事件到${r.name}失败:`,e)}})}reportPageView(e={}){Object.values(this.integratedSDKs).forEach(t=>{try{this.reportPageViewToSDK(t,e)}catch(e){console.error(`上报页面浏览到${t.name}失败:`,e)}})}reportUser(e={}){Object.values(this.integratedSDKs).forEach(t=>{try{this.reportUserToSDK(t,e)}catch(e){console.error(`上报用户信息到${t.name}失败:`,e)}})}reportPerformance(e={}){Object.values(this.integratedSDKs).forEach(t=>{try{this.reportPerformanceToSDK(t,e)}catch(e){console.error(`上报性能指标到${t.name}失败:`,e)}})}reportToSDK(e,t,r){switch(e.name){case"baidu":e.instance&&e.instance.push&&e.instance.push(["_trackEvent",t,JSON.stringify(r)]);break;case"umeng":e.instance&&e.instance.push&&e.instance.push(["track",t,r]);break;case"sensors":e.instance&&e.instance.track&&e.instance.track(t,r);break;case"tencent":e.instance&&e.instance.Event&&e.instance.Event.stat&&e.instance.Event.stat(t,r);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("event",t,r);break;case"custom":e.instance&&"function"==typeof e.instance.track&&e.instance.track(t,r);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}reportPageViewToSDK(e,t){switch(e.name){case"baidu":e.instance&&e.instance.push&&e.instance.push(["_trackPageview",t.url||window.location.href]);break;case"umeng":e.instance&&e.instance.push&&e.instance.push(["trackPageview",t.url||window.location.href]);break;case"sensors":e.instance&&e.instance.trackPageview&&e.instance.trackPageview(t);break;case"tencent":e.instance&&e.instance.trackPageview&&e.instance.trackPageview(t.url||window.location.href);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("config",e.config.measurementId,{page_title:t.title||document.title,page_location:t.url||window.location.href});break;case"custom":e.instance&&"function"==typeof e.instance.trackPageview&&e.instance.trackPageview(t);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}reportUserToSDK(e,t){switch(e.name){case"baidu":e.instance&&e.instance.push&&(e.instance.push(["_setUserTag","userId",t.userId]),e.instance.push(["_setUserTag","userType",t.userType]));break;case"umeng":e.instance&&e.instance.push&&(e.instance.push(["setUserTag","userId",t.userId]),e.instance.push(["setUserTag","userType",t.userType]));break;case"sensors":e.instance&&e.instance.setProfile&&e.instance.setProfile(t);break;case"tencent":e.instance&&e.instance.setUserInfo&&e.instance.setUserInfo(t);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("set","user_id",t.userId);break;case"custom":e.instance&&"function"==typeof e.instance.setUser&&e.instance.setUser(t);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}reportPerformanceToSDK(e,t){switch(e.name){case"baidu":e.instance&&e.instance.push&&e.instance.push(["_trackEvent","performance",JSON.stringify(t)]);break;case"umeng":e.instance&&e.instance.push&&e.instance.push(["track","performance",t]);break;case"sensors":e.instance&&e.instance.track&&e.instance.track("performance",t);break;case"tencent":e.instance&&e.instance.Event&&e.instance.Event.stat&&e.instance.Event.stat("performance",t);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("event","performance",t);break;case"custom":e.instance&&"function"==typeof e.instance.trackPerformance&&e.instance.trackPerformance(t);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}isSDKIntegrated(e){return!!this.integratedSDKs[e]}getIntegratedSDKs(){return Object.keys(this.integratedSDKs)}getSDKInstance(e){return this.integratedSDKs[e]?.instance||null}destroy(){Object.values(this.integratedSDKs).forEach(e=>{try{e.instance&&"function"==typeof e.instance.destroy&&e.instance.destroy()}catch(t){console.error(`销毁${e.name}失败:`,t)}}),this.integratedSDKs={},this.isInitialized=!1}}class Lt{constructor(e={}){this.config={appId:e.appId||"",appVersion:e.appVersion||"1.0.0",environment:e.environment||"production",debugSwitch:!0===e.debugSwitch,customerId:e.customerId||"",userId:e.userId||"",deviceNo:e.deviceNo||"",deviceId:e.userId||"",uiVersion:e.uiVersion||"",sessionId:Tt(),reportUrl:e.reportUrl||"",reportInterval:e.reportInterval||5e3,maxQueueSize:e.maxQueueSize||100,enableErrorTracking:!1!==e.enableErrorTracking,enableUnhandledRejection:!1!==e.enableUnhandledRejection,enableResourceError:!1!==e.enableResourceError,enableEventTracking:!1!==e.enableEventTracking,enableClickTracking:!1!==e.enableClickTracking,enablePageViewTracking:!1!==e.enablePageViewTracking,enablePerformanceTracking:!1!==e.enablePerformanceTracking,enableResourceTracking:!1!==e.enableResourceTracking,enableApiTracking:!1!==e.enableApiTracking,enableInteractionTracking:!1!==e.enableInteractionTracking,enableUserInteractionTracking:!1!==e.enableUserInteractionTracking,enableFormTracking:!1!==e.enableFormTracking,enableScrollTracking:!1!==e.enableScrollTracking,enableMouseTracking:!1!==e.enableMouseTracking,enableKeyboardTracking:!1!==e.enableKeyboardTracking,thirdPartyConfig:e.thirdPartyConfig||{},user:e.user||null,customReport:e.customReport||null},this.user=null}updateConfig(e){this.config={...this.config,...e}}setUser(e){this.user=e}getConfig(){return this.config}getUser(){return this.user}getReportUrl(){return this.config.reportUrl}getThirdPartyConfig(){return this.config.thirdPartyConfig}isErrorTrackingEnabled(){return this.config.enableErrorTracking}isEventTrackingEnabled(){return this.config.enableEventTracking}}"undefined"==typeof window||window?.axios||(window.axios=mt);e.default=class{constructor(e={}){this.config=new Lt(e),this.errorTracker=new It(this.config),this.eventTracker=new Ot(this.config),this.performanceTracker=new At(this.config),this.userBehaviorTracker=new Dt(this.config),this.exposureTracker=new Nt(this.config,this.eventTracker),this.thirdPartyIntegrator=new _t(this.config),this.init()}init(){this.eventTracker.init(),this.exposureTracker.init(),this.thirdPartyIntegrator.init(),console.log("Frontend SDK 初始化完成")}reportError(e,t={}){this.errorTracker.reportError(e,t)}reportEvent(e,t={}){this.eventTracker.reportEvent(e,t)}getPreviousPageInfo(){return this.eventTracker.getPreviousPageInfo()}getCurrentPageStayTime(){return this.eventTracker.getCurrentPageStayTime()}getPageHistory(){return this.eventTracker.pageHistory||[]}reportPerformance(e={}){this.performanceTracker.reportPerformance(e)}reportBehavior(e,t={}){this.userBehaviorTracker.reportCustomBehavior(e,t)}setUser(e){this.config.setUser(e),this.thirdPartyIntegrator.reportUser(e)}setConfig(e){this.config.updateConfig(e)}getPerformanceMetrics(){return this.performanceTracker.getCurrentMetrics()}getBehaviorData(){return this.userBehaviorTracker.getCurrentBehaviors()}getSessionId(){return this.userBehaviorTracker.getSessionId()}isThirdPartySDKIntegrated(e){return this.thirdPartyIntegrator.isSDKIntegrated(e)}getIntegratedThirdPartySDKs(){return this.thirdPartyIntegrator.getIntegratedSDKs()}setupVueRouterMonitoring(e){e?(this.performanceTracker.setupVueRouterMonitoring(e),console.log("Vue Router 监控已设置")):console.warn("Vue Router 实例未提供")}getCurrentRoute(){return this.performanceTracker.getCurrentRoute()}getRouteHistory(){return this.performanceTracker.getRouteHistory()}getCurrentRouteStayTime(){return this.performanceTracker.getCurrentPageStayTime()}getRoutePerformanceStats(){return this.performanceTracker.getRoutePerformanceStats()}trackProduct(e,t={}){return this.exposureTracker.trackProduct(e,t)}trackProducts(e,t={}){return this.exposureTracker.trackProducts(e,t)}untrackProduct(e){return this.exposureTracker.untrackProduct(e)}untrackAllProducts(){return this.exposureTracker.untrackAll()}reportExposure(e={}){return this.exposureTracker.reportExposure(e)}getTrackedProducts(){return this.exposureTracker.getTrackedElements()}getExposureQueue(){return this.exposureTracker.getExposureQueue()}flushExposureQueue(){return this.exposureTracker.flushExposureQueue()}destroy(){this.errorTracker.destroy(),this.eventTracker.destroy(),this.performanceTracker.destroy(),this.userBehaviorTracker.destroy(),this.exposureTracker.destroy(),this.thirdPartyIntegrator.destroy(),console.log("Frontend SDK 已销毁")}},e.performanceNow=yt,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).FrontendSDK={})}(this,function(e){"use strict";function t(e,t){return function(){return e.apply(t,arguments)}}const{toString:r}=Object.prototype,{getPrototypeOf:i}=Object,{iterator:n,toStringTag:o}=Symbol,s=(a=Object.create(null),e=>{const t=r.call(e);return a[t]||(a[t]=t.slice(8,-1).toLowerCase())});var a;const c=e=>(e=e.toLowerCase(),t=>s(t)===e),u=e=>t=>typeof t===e,{isArray:l}=Array,h=u("undefined");function d(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const p=c("ArrayBuffer");const g=u("string"),f=u("function"),m=u("number"),w=e=>null!==e&&"object"==typeof e,b=e=>{if("object"!==s(e))return!1;const t=i(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||o in e||n in e)},y=c("Date"),v=c("File"),T=c("Blob"),k=c("FileList"),S=c("URLSearchParams"),[E,P,R,x]=["ReadableStream","Request","Response","Headers"].map(c);function C(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),l(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{if(d(e))return;const n=r?Object.getOwnPropertyNames(e):Object.keys(e),o=n.length;let s;for(i=0;i<o;i++)s=n[i],t.call(null,e[s],s,e)}}function I(e,t){if(d(e))return null;t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,A=e=>!h(e)&&e!==O;const D=(N="undefined"!=typeof Uint8Array&&i(Uint8Array),e=>N&&e instanceof N);var N;const _=c("HTMLFormElement"),L=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),U=c("RegExp"),j=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};C(r,(r,n)=>{let o;!1!==(o=t(r,n,e))&&(i[n]=o||r)}),Object.defineProperties(e,i)};const F=c("AsyncFunction"),B=(M="function"==typeof setImmediate,z=f(O.postMessage),M?setImmediate:z?(K=`axios@${Math.random()}`,q=[],O.addEventListener("message",({source:e,data:t})=>{e===O&&t===K&&q.length&&q.shift()()},!1),e=>{q.push(e),O.postMessage(K,"*")}):e=>setTimeout(e));var M,z,K,q;const H="undefined"!=typeof queueMicrotask?queueMicrotask.bind(O):"undefined"!=typeof process&&process.nextTick||B;var V={isArray:l,isArrayBuffer:p,isBuffer:d,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=s(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:g,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:w,isPlainObject:b,isEmptyObject:e=>{if(!w(e)||d(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:E,isRequest:P,isResponse:R,isHeaders:x,isUndefined:h,isDate:y,isFile:v,isBlob:T,isRegExp:U,isFunction:f,isStream:e=>w(e)&&f(e.pipe),isURLSearchParams:S,isTypedArray:D,isFileList:k,forEach:C,merge:function e(){const{caseless:t}=A(this)&&this||{},r={},i=(i,n)=>{const o=t&&I(r,n)||n;b(r[o])&&b(i)?r[o]=e(r[o],i):b(i)?r[o]=e({},i):l(i)?r[o]=i.slice():r[o]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&C(arguments[e],i);return r},extend:(e,r,i,{allOwnKeys:n}={})=>(C(r,(r,n)=>{i&&f(r)?e[n]=t(r,i):e[n]=r},{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let o,s,a;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)a=o[s],n&&!n(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&i(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:c,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(l(e))return e;let t=e.length;if(!m(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[n]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:_,hasOwnProperty:L,hasOwnProp:L,reduceDescriptors:j,freezeMethods:e=>{j(e,(t,r)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];f(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))})},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach(e=>{r[e]=!0})};return l(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,r){return t.toUpperCase()+r}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:I,global:O,isContextDefined:A,isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[o]&&e[n])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(w(e)){if(t.indexOf(e)>=0)return;if(d(e))return e;if(!("toJSON"in e)){t[i]=e;const n=l(e)?[]:{};return C(e,(e,t)=>{const o=r(e,i+1);!h(o)&&(n[t]=o)}),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:F,isThenable:e=>e&&(w(e)||f(e))&&f(e.then)&&f(e.catch),setImmediate:B,asap:H,isIterable:e=>null!=e&&f(e[n])};function Q(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n,this.status=n.status?n.status:null)}V.inherits(Q,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:V.toJSONObject(this.config),code:this.code,status:this.status}}});const $=Q.prototype,W={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{W[e]={value:e}}),Object.defineProperties(Q,W),Object.defineProperty($,"isAxiosError",{value:!0}),Q.from=(e,t,r,i,n,o)=>{const s=Object.create($);return V.toFlatObject(e,s,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Q.call(s,e.message,t,r,i,n),s.cause=e,s.name=e.name,o&&Object.assign(s,o),s};function J(e){return V.isPlainObject(e)||V.isArray(e)}function X(e){return V.endsWith(e,"[]")?e.slice(0,-2):e}function G(e,t,r){return e?e.concat(t).map(function(e,t){return e=X(e),!r&&t?"["+e+"]":e}).join(r?".":""):t}const Y=V.toFlatObject(V,{},null,function(e){return/^is[A-Z]/.test(e)});function Z(e,t,r){if(!V.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=V.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!V.isUndefined(t[e])})).metaTokens,n=r.visitor||u,o=r.dots,s=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&V.isSpecCompliantForm(t);if(!V.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(V.isDate(e))return e.toISOString();if(V.isBoolean(e))return e.toString();if(!a&&V.isBlob(e))throw new Q("Blob is not supported. Use a Buffer instead.");return V.isArrayBuffer(e)||V.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,r,n){let a=e;if(e&&!n&&"object"==typeof e)if(V.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(V.isArray(e)&&function(e){return V.isArray(e)&&!e.some(J)}(e)||(V.isFileList(e)||V.endsWith(r,"[]"))&&(a=V.toArray(e)))return r=X(r),a.forEach(function(e,i){!V.isUndefined(e)&&null!==e&&t.append(!0===s?G([r],i,o):null===s?r:r+"[]",c(e))}),!1;return!!J(e)||(t.append(G(n,r,o),c(e)),!1)}const l=[],h=Object.assign(Y,{defaultVisitor:u,convertValue:c,isVisitable:J});if(!V.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!V.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),V.forEach(r,function(r,o){!0===(!(V.isUndefined(r)||null===r)&&n.call(t,r,V.isString(o)?o.trim():o,i,h))&&e(r,i?i.concat(o):[o])}),l.pop()}}(e),t}function ee(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function te(e,t){this._pairs=[],e&&Z(e,this,t)}const re=te.prototype;function ie(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ne(e,t,r){if(!t)return e;const i=r&&r.encode||ie;V.isFunction(r)&&(r={serialize:r});const n=r&&r.serialize;let o;if(o=n?n(t,r):V.isURLSearchParams(t)?t.toString():new te(t,r).toString(i),o){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}re.append=function(e,t){this._pairs.push([e,t])},re.toString=function(e){const t=e?function(t){return e.call(this,t,ee)}:ee;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var oe=class{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){V.forEach(this.handlers,function(t){null!==t&&e(t)})}},se={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ae={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const ce="undefined"!=typeof window&&"undefined"!=typeof document,ue="object"==typeof navigator&&navigator||void 0,le=ce&&(!ue||["ReactNative","NativeScript","NS"].indexOf(ue.product)<0),he="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,de=ce&&window.location.href||"http://localhost";var pe={...Object.freeze({__proto__:null,hasBrowserEnv:ce,hasStandardBrowserWebWorkerEnv:he,hasStandardBrowserEnv:le,navigator:ue,origin:de}),...ae};function ge(e){function t(e,r,i,n){let o=e[n++];if("__proto__"===o)return!0;const s=Number.isFinite(+o),a=n>=e.length;if(o=!o&&V.isArray(i)?i.length:o,a)return V.hasOwnProp(i,o)?i[o]=[i[o],r]:i[o]=r,!s;i[o]&&V.isObject(i[o])||(i[o]=[]);return t(e,r,i[o],n)&&V.isArray(i[o])&&(i[o]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let o;for(i=0;i<n;i++)o=r[i],t[o]=e[o];return t}(i[o])),!s}if(V.isFormData(e)&&V.isFunction(e.entries)){const r={};return V.forEachEntry(e,(e,i)=>{t(function(e){return V.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),i,r,0)}),r}return null}const fe={transitional:se,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=V.isObject(e);n&&V.isHTMLForm(e)&&(e=new FormData(e));if(V.isFormData(e))return i?JSON.stringify(ge(e)):e;if(V.isArrayBuffer(e)||V.isBuffer(e)||V.isStream(e)||V.isFile(e)||V.isBlob(e)||V.isReadableStream(e))return e;if(V.isArrayBufferView(e))return e.buffer;if(V.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Z(e,new pe.classes.URLSearchParams,{visitor:function(e,t,r,i){return pe.isNode&&V.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((o=V.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Z(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(V.isString(e))try{return(t||JSON.parse)(e),V.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||fe.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(V.isResponse(e)||V.isReadableStream(e))return e;if(e&&V.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw Q.from(e,Q.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pe.classes.FormData,Blob:pe.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};V.forEach(["delete","get","head","post","put","patch"],e=>{fe.headers[e]={}});var me=fe;const we=V.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const be=Symbol("internals");function ye(e){return e&&String(e).trim().toLowerCase()}function ve(e){return!1===e||null==e?e:V.isArray(e)?e.map(ve):String(e)}function Te(e,t,r,i,n){return V.isFunction(i)?i.call(this,t,r):(n&&(t=r),V.isString(t)?V.isString(i)?-1!==t.indexOf(i):V.isRegExp(i)?i.test(t):void 0:void 0)}class ke{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=ye(t);if(!n)throw new Error("header name must be a non-empty string");const o=V.findKey(i,n);(!o||void 0===i[o]||!0===r||void 0===r&&!1!==i[o])&&(i[o||t]=ve(e))}const o=(e,t)=>V.forEach(e,(e,r)=>n(e,r,t));if(V.isPlainObject(e)||e instanceof this.constructor)o(e,t);else if(V.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))o((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach(function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&we[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)}),t})(e),t);else if(V.isObject(e)&&V.isIterable(e)){let r,i,n={};for(const t of e){if(!V.isArray(t))throw TypeError("Object iterator must return a key-value pair");n[i=t[0]]=(r=n[i])?V.isArray(r)?[...r,t[1]]:[r,t[1]]:t[1]}o(n,t)}else null!=e&&n(t,e,r);return this}get(e,t){if(e=ye(e)){const r=V.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(V.isFunction(t))return t.call(this,e,r);if(V.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ye(e)){const r=V.findKey(this,e);return!(!r||void 0===this[r]||t&&!Te(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=ye(e)){const n=V.findKey(r,e);!n||t&&!Te(0,r[n],n,t)||(delete r[n],i=!0)}}return V.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!Te(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return V.forEach(this,(i,n)=>{const o=V.findKey(r,n);if(o)return t[o]=ve(i),void delete t[n];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,r)=>t.toUpperCase()+r)}(n):String(n).trim();s!==n&&delete t[n],t[s]=ve(i),r[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return V.forEach(this,(r,i)=>{null!=r&&!1!==r&&(t[i]=e&&V.isArray(r)?r.join(", "):r)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach(e=>r.set(e)),r}static accessor(e){const t=(this[be]=this[be]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=ye(e);t[i]||(!function(e,t){const r=V.toCamelCase(" "+t);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})})}(r,e),t[i]=!0)}return V.isArray(e)?e.forEach(i):i(e),this}}ke.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),V.reduceDescriptors(ke.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}}),V.freezeMethods(ke);var Se=ke;function Ee(e,t){const r=this||me,i=t||r,n=Se.from(i.headers);let o=i.data;return V.forEach(e,function(e){o=e.call(r,o,n.normalize(),t?t.status:void 0)}),n.normalize(),o}function Pe(e){return!(!e||!e.__CANCEL__)}function Re(e,t,r){Q.call(this,null==e?"canceled":e,Q.ERR_CANCELED,t,r),this.name="CanceledError"}function xe(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new Q("Request failed with status code "+r.status,[Q.ERR_BAD_REQUEST,Q.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}V.inherits(Re,Q,{__CANCEL__:!0});const Ce=(e,t,r=3)=>{let i=0;const n=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,o=0,s=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),u=i[s];n||(n=c),r[o]=a,i[o]=c;let l=s,h=0;for(;l!==o;)h+=r[l++],l%=e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),c-n<t)return;const d=u&&c-u;return d?Math.round(1e3*h/d):void 0}}(50,250);return function(e,t){let r,i,n=0,o=1e3/t;const s=(t,o=Date.now())=>{n=o,r=null,i&&(clearTimeout(i),i=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-n;a>=o?s(e,t):(r=e,i||(i=setTimeout(()=>{i=null,s(r)},o-a)))},()=>r&&s(r)]}(r=>{const o=r.loaded,s=r.lengthComputable?r.total:void 0,a=o-i,c=n(a);i=o;e({loaded:o,total:s,progress:s?o/s:void 0,bytes:a,rate:c||void 0,estimated:c&&s&&o<=s?(s-o)/c:void 0,event:r,lengthComputable:null!=s,[t?"download":"upload"]:!0})},r)},Ie=(e,t)=>{const r=null!=e;return[i=>t[0]({lengthComputable:r,total:e,loaded:i}),t[1]]},Oe=e=>(...t)=>V.asap(()=>e(...t));var Ae=pe.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,pe.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(pe.origin),pe.navigator&&/(msie|trident)/i.test(pe.navigator.userAgent)):()=>!0,De=pe.hasStandardBrowserEnv?{write(e,t,r,i,n,o){const s=[e+"="+encodeURIComponent(t)];V.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),V.isString(i)&&s.push("path="+i),V.isString(n)&&s.push("domain="+n),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Ne(e,t,r){let i=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(i||0==r)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const _e=e=>e instanceof Se?{...e}:e;function Le(e,t){t=t||{};const r={};function i(e,t,r,i){return V.isPlainObject(e)&&V.isPlainObject(t)?V.merge.call({caseless:i},e,t):V.isPlainObject(t)?V.merge({},t):V.isArray(t)?t.slice():t}function n(e,t,r,n){return V.isUndefined(t)?V.isUndefined(e)?void 0:i(void 0,e,0,n):i(e,t,0,n)}function o(e,t){if(!V.isUndefined(t))return i(void 0,t)}function s(e,t){return V.isUndefined(t)?V.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function a(r,n,o){return o in t?i(r,n):o in e?i(void 0,r):void 0}const c={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(e,t,r)=>n(_e(e),_e(t),0,!0)};return V.forEach(Object.keys({...e,...t}),function(i){const o=c[i]||n,s=o(e[i],t[i],i);V.isUndefined(s)&&o!==a||(r[i]=s)}),r}var Ue=e=>{const t=Le({},e);let r,{data:i,withXSRFToken:n,xsrfHeaderName:o,xsrfCookieName:s,headers:a,auth:c}=t;if(t.headers=a=Se.from(a),t.url=ne(Ne(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),V.isFormData(i))if(pe.hasStandardBrowserEnv||pe.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(r=a.getContentType())){const[e,...t]=r?r.split(";").map(e=>e.trim()).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...t].join("; "))}if(pe.hasStandardBrowserEnv&&(n&&V.isFunction(n)&&(n=n(t)),n||!1!==n&&Ae(t.url))){const e=o&&s&&De.read(s);e&&a.set(o,e)}return t};var je="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,r){const i=Ue(e);let n=i.data;const o=Se.from(i.headers).normalize();let s,a,c,u,l,{responseType:h,onUploadProgress:d,onDownloadProgress:p}=i;function g(){u&&u(),l&&l(),i.cancelToken&&i.cancelToken.unsubscribe(s),i.signal&&i.signal.removeEventListener("abort",s)}let f=new XMLHttpRequest;function m(){if(!f)return;const i=Se.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders());xe(function(e){t(e),g()},function(e){r(e),g()},{data:h&&"text"!==h&&"json"!==h?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:i,config:e,request:f}),f=null}f.open(i.method.toUpperCase(),i.url,!0),f.timeout=i.timeout,"onloadend"in f?f.onloadend=m:f.onreadystatechange=function(){f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))&&setTimeout(m)},f.onabort=function(){f&&(r(new Q("Request aborted",Q.ECONNABORTED,e,f)),f=null)},f.onerror=function(){r(new Q("Network Error",Q.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let t=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const n=i.transitional||se;i.timeoutErrorMessage&&(t=i.timeoutErrorMessage),r(new Q(t,n.clarifyTimeoutError?Q.ETIMEDOUT:Q.ECONNABORTED,e,f)),f=null},void 0===n&&o.setContentType(null),"setRequestHeader"in f&&V.forEach(o.toJSON(),function(e,t){f.setRequestHeader(t,e)}),V.isUndefined(i.withCredentials)||(f.withCredentials=!!i.withCredentials),h&&"json"!==h&&(f.responseType=i.responseType),p&&([c,l]=Ce(p,!0),f.addEventListener("progress",c)),d&&f.upload&&([a,u]=Ce(d),f.upload.addEventListener("progress",a),f.upload.addEventListener("loadend",u)),(i.cancelToken||i.signal)&&(s=t=>{f&&(r(!t||t.type?new Re(null,e,f):t),f.abort(),f=null)},i.cancelToken&&i.cancelToken.subscribe(s),i.signal&&(i.signal.aborted?s():i.signal.addEventListener("abort",s)));const w=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(i.url);w&&-1===pe.protocols.indexOf(w)?r(new Q("Unsupported protocol "+w+":",Q.ERR_BAD_REQUEST,e)):f.send(n||null)})};var Fe=(e,t)=>{const{length:r}=e=e?e.filter(Boolean):[];if(t||r){let r,i=new AbortController;const n=function(e){if(!r){r=!0,s();const t=e instanceof Error?e:this.reason;i.abort(t instanceof Q?t:new Re(t instanceof Error?t.message:t))}};let o=t&&setTimeout(()=>{o=null,n(new Q(`timeout ${t} of ms exceeded`,Q.ETIMEDOUT))},t);const s=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(n):e.removeEventListener("abort",n)}),e=null)};e.forEach(e=>e.addEventListener("abort",n));const{signal:a}=i;return a.unsubscribe=()=>V.asap(s),a}};const Be=function*(e,t){let r=e.byteLength;if(!t||r<t)return void(yield e);let i,n=0;for(;n<r;)i=n+t,yield e.slice(n,i),n=i},Me=async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:r}=await t.read();if(e)break;yield r}}finally{await t.cancel()}},ze=(e,t,r,i)=>{const n=async function*(e,t){for await(const r of Me(e))yield*Be(r,t)}(e,t);let o,s=0,a=e=>{o||(o=!0,i&&i(e))};return new ReadableStream({async pull(e){try{const{done:t,value:i}=await n.next();if(t)return a(),void e.close();let o=i.byteLength;if(r){let e=s+=o;r(e)}e.enqueue(new Uint8Array(i))}catch(e){throw a(e),e}},cancel:e=>(a(e),n.return())},{highWaterMark:2})},Ke="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,qe=Ke&&"function"==typeof ReadableStream,He=Ke&&("function"==typeof TextEncoder?(Ve=new TextEncoder,e=>Ve.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ve;const Qe=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},$e=qe&&Qe(()=>{let e=!1;const t=new Request(pe.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),We=qe&&Qe(()=>V.isReadableStream(new Response("").body)),Je={stream:We&&(e=>e.body)};var Xe;Ke&&(Xe=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Je[e]&&(Je[e]=V.isFunction(Xe[e])?t=>t[e]():(t,r)=>{throw new Q(`Response type '${e}' is not supported`,Q.ERR_NOT_SUPPORT,r)})}));const Ge=async(e,t)=>{const r=V.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(V.isBlob(e))return e.size;if(V.isSpecCompliantForm(e)){const t=new Request(pe.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return V.isArrayBufferView(e)||V.isArrayBuffer(e)?e.byteLength:(V.isURLSearchParams(e)&&(e+=""),V.isString(e)?(await He(e)).byteLength:void 0)})(t):r};const Ye={http:null,xhr:je,fetch:Ke&&(async e=>{let{url:t,method:r,data:i,signal:n,cancelToken:o,timeout:s,onDownloadProgress:a,onUploadProgress:c,responseType:u,headers:l,withCredentials:h="same-origin",fetchOptions:d}=Ue(e);u=u?(u+"").toLowerCase():"text";let p,g=Fe([n,o&&o.toAbortSignal()],s);const f=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let m;try{if(c&&$e&&"get"!==r&&"head"!==r&&0!==(m=await Ge(l,i))){let e,r=new Request(t,{method:"POST",body:i,duplex:"half"});if(V.isFormData(i)&&(e=r.headers.get("content-type"))&&l.setContentType(e),r.body){const[e,t]=Ie(m,Ce(Oe(c)));i=ze(r.body,65536,e,t)}}V.isString(h)||(h=h?"include":"omit");const n="credentials"in Request.prototype;p=new Request(t,{...d,signal:g,method:r.toUpperCase(),headers:l.normalize().toJSON(),body:i,duplex:"half",credentials:n?h:void 0});let o=await fetch(p,d);const s=We&&("stream"===u||"response"===u);if(We&&(a||s&&f)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=o[t]});const t=V.toFiniteNumber(o.headers.get("content-length")),[r,i]=a&&Ie(t,Ce(Oe(a),!0))||[];o=new Response(ze(o.body,65536,r,()=>{i&&i(),f&&f()}),e)}u=u||"text";let w=await Je[V.findKey(Je,u)||"text"](o,e);return!s&&f&&f(),await new Promise((t,r)=>{xe(t,r,{data:w,headers:Se.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:p})})}catch(t){if(f&&f(),t&&"TypeError"===t.name&&/Load failed|fetch/i.test(t.message))throw Object.assign(new Q("Network Error",Q.ERR_NETWORK,e,p),{cause:t.cause||t});throw Q.from(t,t&&t.code,e,p)}})};V.forEach(Ye,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Ze=e=>`- ${e}`,et=e=>V.isFunction(e)||null===e||!1===e;var tt=e=>{e=V.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let o=0;o<t;o++){let t;if(r=e[o],i=r,!et(r)&&(i=Ye[(t=String(r)).toLowerCase()],void 0===i))throw new Q(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+o]=i}if(!i){const e=Object.entries(n).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Q("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ze).join("\n"):" "+Ze(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function rt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Re(null,e)}function it(e){rt(e),e.headers=Se.from(e.headers),e.data=Ee.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return tt(e.adapter||me.adapter)(e).then(function(t){return rt(e),t.data=Ee.call(e,e.transformResponse,t),t.headers=Se.from(t.headers),t},function(t){return Pe(t)||(rt(e),t&&t.response&&(t.response.data=Ee.call(e,e.transformResponse,t.response),t.response.headers=Se.from(t.response.headers))),Promise.reject(t)})}const nt="1.11.0",ot={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ot[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const st={};ot.transitional=function(e,t,r){function i(e,t){return"[Axios v"+nt+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,o)=>{if(!1===e)throw new Q(i(n," has been removed"+(t?" in "+t:"")),Q.ERR_DEPRECATED);return t&&!st[n]&&(st[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}},ot.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};var at={assertOptions:function(e,t,r){if("object"!=typeof e)throw new Q("options must be an object",Q.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const o=i[n],s=t[o];if(s){const t=e[o],r=void 0===t||s(t,o,e);if(!0!==r)throw new Q("option "+o+" must be "+r,Q.ERR_BAD_OPTION_VALUE);continue}if(!0!==r)throw new Q("Unknown option "+o,Q.ERR_BAD_OPTION)}},validators:ot};const ct=at.validators;class ut{constructor(e){this.defaults=e||{},this.interceptors={request:new oe,response:new oe}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Le(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&at.assertOptions(r,{silentJSONParsing:ct.transitional(ct.boolean),forcedJSONParsing:ct.transitional(ct.boolean),clarifyTimeoutError:ct.transitional(ct.boolean)},!1),null!=i&&(V.isFunction(i)?t.paramsSerializer={serialize:i}:at.assertOptions(i,{encode:ct.function,serialize:ct.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),at.assertOptions(t,{baseUrl:ct.spelling("baseURL"),withXsrfToken:ct.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let o=n&&V.merge(n.common,n[t.method]);n&&V.forEach(["delete","get","head","post","put","patch","common"],e=>{delete n[e]}),t.headers=Se.concat(o,n);const s=[];let a=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,s.unshift(e.fulfilled,e.rejected))});const c=[];let u;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,h=0;if(!a){const e=[it.bind(this),void 0];for(e.unshift(...s),e.push(...c),l=e.length,u=Promise.resolve(t);h<l;)u=u.then(e[h++],e[h++]);return u}l=s.length;let d=t;for(h=0;h<l;){const e=s[h++],t=s[h++];try{d=e(d)}catch(e){t.call(this,e);break}}try{u=it.call(this,d)}catch(e){return Promise.reject(e)}for(h=0,l=c.length;h<l;)u=u.then(c[h++],c[h++]);return u}getUri(e){return ne(Ne((e=Le(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}}V.forEach(["delete","get","head","options"],function(e){ut.prototype[e]=function(t,r){return this.request(Le(r||{},{method:e,url:t,data:(r||{}).data}))}}),V.forEach(["post","put","patch"],function(e){function t(t){return function(r,i,n){return this.request(Le(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}ut.prototype[e]=t(),ut.prototype[e+"Form"]=t(!0)});var lt=ut;class ht{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const r=this;this.promise.then(e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null}),this.promise.then=e=>{let t;const i=new Promise(e=>{r.subscribe(e),t=e}).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e(function(e,i,n){r.reason||(r.reason=new Re(e,i,n),t(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ht(function(t){e=t}),cancel:e}}}var dt=ht;const pt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(pt).forEach(([e,t])=>{pt[t]=e});var gt=pt;const ft=function e(r){const i=new lt(r),n=t(lt.prototype.request,i);return V.extend(n,lt.prototype,i,{allOwnKeys:!0}),V.extend(n,i,null,{allOwnKeys:!0}),n.create=function(t){return e(Le(r,t))},n}(me);ft.Axios=lt,ft.CanceledError=Re,ft.CancelToken=dt,ft.isCancel=Pe,ft.VERSION=nt,ft.toFormData=Z,ft.AxiosError=Q,ft.Cancel=ft.CanceledError,ft.all=function(e){return Promise.all(e)},ft.spread=function(e){return function(t){return e.apply(null,t)}},ft.isAxiosError=function(e){return V.isObject(e)&&!0===e.isAxiosError},ft.mergeConfig=Le,ft.AxiosHeaders=Se,ft.formToJSON=e=>ge(V.isHTMLForm(e)?new FormData(e):e),ft.getAdapter=tt,ft.HttpStatusCode=gt,ft.default=ft;const mt=ft.create({timeout:1e4,headers:{"Content-Type":"application/json"}});mt.interceptors.request.use(e=>e,e=>Promise.reject(e)),mt.interceptors.response.use(e=>e,e=>Promise.reject(e));var wt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},bt={exports:{}};!function(e,t){!function(r,i){var n="function",o="undefined",s="object",a="string",c="major",u="model",l="name",h="type",d="vendor",p="version",g="architecture",f="console",m="mobile",w="tablet",b="smarttv",y="wearable",v="embedded",T="Amazon",k="Apple",S="ASUS",E="BlackBerry",P="Browser",R="Chrome",x="Firefox",C="Google",I="Honor",O="Huawei",A="LG",D="Microsoft",N="Motorola",_="Nvidia",L="OnePlus",U="Opera",j="OPPO",F="Samsung",B="Sharp",M="Sony",z="Xiaomi",K="Zebra",q="Facebook",H="Chromium OS",V="Mac OS",Q=" Browser",$=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},W=function(e,t){return typeof e===a&&-1!==J(t).indexOf(J(e))},J=function(e){return e.toLowerCase()},X=function(e,t){if(typeof e===a)return e=e.replace(/^\s\s*/,""),typeof t===o?e:e.substring(0,500)},G=function(e,t){for(var r,o,a,c,u,l,h=0;h<t.length&&!u;){var d=t[h],p=t[h+1];for(r=o=0;r<d.length&&!u&&d[r];)if(u=d[r++].exec(e))for(a=0;a<p.length;a++)l=u[++o],typeof(c=p[a])===s&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;h+=2}},Y=function(e,t){for(var r in t)if(typeof t[r]===s&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(W(t[r][n],e))return"?"===r?i:r}else if(W(t[r],e))return"?"===r?i:r;return t.hasOwnProperty("*")?t["*"]: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"},ee={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,p],[/opios[\/ ]+([\w\.]+)/i],[p,[l,U+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[p,[l,U+" GX"]],[/\bopr\/([\w\.]+)/i],[p,[l,U]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[p,[l,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[p,[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,p],[/quark(?:pc)?\/([-\w\.]+)/i],[p,[l,"Quark"]],[/\bddg\/([\w\.]+)/i],[p,[l,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[l,"UC"+P]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[p,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[p,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[p,[l,"Smart Lenovo "+P]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+P],p],[/\bfocus\/([\w\.]+)/i],[p,[l,x+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[l,U+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[l,U+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[l,"MIUI"+Q]],[/fxios\/([\w\.-]+)/i],[p,[l,x]],[/\bqihoobrowser\/?([\w\.]*)/i],[p,[l,"360"]],[/\b(qq)\/([\w\.]+)/i],[[l,/(.+)/,"$1Browser"],p],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1"+Q],p],[/samsungbrowser\/([\w\.]+)/i],[p,[l,F+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[p,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[l,p],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[l],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[p,l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,q],p],[/(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,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[p,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[l,R+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,R+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[l,"Android "+P]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[p,Y,{"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,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],p],[/(wolvic|librewolf)\/([\w\.]+)/i],[l,p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[l,x+" 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,[p,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[l,[p,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[g,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[g,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[g,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[g,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[g,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[g,/ower/,"",J]],[/ sun4\w[;\)]/i],[[g,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[g,J]]],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],[u,[d,F],[h,w]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[u,[d,F],[h,m]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[u,[d,k],[h,m]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[u,[d,k],[h,w]],[/(macintosh);/i],[u,[d,k]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[u,[d,B],[h,m]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[u,[d,I],[h,w]],[/honor([-\w ]+)[;\)]/i],[u,[d,I],[h,m]],[/\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],[u,[d,O],[h,w]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[u,[d,O],[h,m]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[u,/_/g," "],[d,z],[h,w]],[/\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],[[u,/_/g," "],[d,z],[h,m]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[u,[d,j],[h,m]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[u,[d,Y,{OnePlus:["304","403","203"],"*":j}],[h,w]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[u,[d,"Vivo"],[h,m]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[u,[d,"Realme"],[h,m]],[/\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],[u,[d,N],[h,m]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[u,[d,N],[h,w]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[u,[d,A],[h,w]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[u,[d,A],[h,m]],[/(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],[u,[d,"Lenovo"],[h,w]],[/(nokia) (t[12][01])/i],[d,u,[h,w]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[u,/_/g," "],[h,m],[d,"Nokia"]],[/(pixel (c|tablet))\b/i],[u,[d,C],[h,w]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[u,[d,C],[h,m]],[/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],[u,[d,M],[h,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[u,"Xperia Tablet"],[d,M],[h,w]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[u,[d,L],[h,m]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[u,[d,T],[h,w]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[u,/(.+)/g,"Fire Phone $1"],[d,T],[h,m]],[/(playbook);[-\w\),; ]+(rim)/i],[u,d,[h,w]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[u,[d,E],[h,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[u,[d,S],[h,w]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[u,[d,S],[h,m]],[/(nexus 9)/i],[u,[d,"HTC"],[h,w]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[d,[u,/_/g," "],[h,m]],[/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],[u,[d,"TCL"],[h,w]],[/(itel) ((\w+))/i],[[d,J],u,[h,Y,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[u,[d,"Acer"],[h,w]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[u,[d,"Meizu"],[h,m]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[u,[d,"Ulefone"],[h,m]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[u,[d,"Energizer"],[h,m]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[u,[d,"Cat"],[h,m]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[u,[d,"Smartfren"],[h,m]],[/droid.+; (a(?:015|06[35]|142p?))/i],[u,[d,"Nothing"],[h,m]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[u,[d,"Archos"],[h,w]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[u,[d,"Archos"],[h,m]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[d,u,[h,w]],[/(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],[d,u,[h,m]],[/(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],[d,u,[h,w]],[/(surface duo)/i],[u,[d,D],[h,w]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[u,[d,"Fairphone"],[h,m]],[/(u304aa)/i],[u,[d,"AT&T"],[h,m]],[/\bsie-(\w*)/i],[u,[d,"Siemens"],[h,m]],[/\b(rct\w+) b/i],[u,[d,"RCA"],[h,w]],[/\b(venue[\d ]{2,7}) b/i],[u,[d,"Dell"],[h,w]],[/\b(q(?:mv|ta)\w+) b/i],[u,[d,"Verizon"],[h,w]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[u,[d,"Barnes & Noble"],[h,w]],[/\b(tm\d{3}\w+) b/i],[u,[d,"NuVision"],[h,w]],[/\b(k88) b/i],[u,[d,"ZTE"],[h,w]],[/\b(nx\d{3}j) b/i],[u,[d,"ZTE"],[h,m]],[/\b(gen\d{3}) b.+49h/i],[u,[d,"Swiss"],[h,m]],[/\b(zur\d{3}) b/i],[u,[d,"Swiss"],[h,w]],[/\b((zeki)?tb.*\b) b/i],[u,[d,"Zeki"],[h,w]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[d,"Dragon Touch"],u,[h,w]],[/\b(ns-?\w{0,9}) b/i],[u,[d,"Insignia"],[h,w]],[/\b((nxa|next)-?\w{0,9}) b/i],[u,[d,"NextBook"],[h,w]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[d,"Voice"],u,[h,m]],[/\b(lvtel\-)?(v1[12]) b/i],[[d,"LvTel"],u,[h,m]],[/\b(ph-1) /i],[u,[d,"Essential"],[h,m]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[u,[d,"Envizen"],[h,w]],[/\b(trio[-\w\. ]+) b/i],[u,[d,"MachSpeed"],[h,w]],[/\btu_(1491) b/i],[u,[d,"Rotor"],[h,w]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[u,[d,_],[h,w]],[/(sprint) (\w+)/i],[d,u,[h,m]],[/(kin\.[onetw]{3})/i],[[u,/\./g," "],[d,D],[h,m]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[u,[d,K],[h,w]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[u,[d,K],[h,m]],[/smart-tv.+(samsung)/i],[d,[h,b]],[/hbbtv.+maple;(\d+)/i],[[u,/^/,"SmartTV"],[d,F],[h,b]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[d,A],[h,b]],[/(apple) ?tv/i],[d,[u,k+" TV"],[h,b]],[/crkey/i],[[u,R+"cast"],[d,C],[h,b]],[/droid.+aft(\w+)( bui|\))/i],[u,[d,T],[h,b]],[/(shield \w+ tv)/i],[u,[d,_],[h,b]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[u,[d,B],[h,b]],[/(bravia[\w ]+)( bui|\))/i],[u,[d,M],[h,b]],[/(mi(tv|box)-?\w+) bui/i],[u,[d,z],[h,b]],[/Hbbtv.*(technisat) (.*);/i],[d,u,[h,b]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[d,X],[u,X],[h,b]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[u,[h,b]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[h,b]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[d,u,[h,f]],[/droid.+; (shield)( bui|\))/i],[u,[d,_],[h,f]],[/(playstation \w+)/i],[u,[d,M],[h,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[u,[d,D],[h,f]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[u,[d,F],[h,y]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[d,u,[h,y]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[u,[d,j],[h,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[u,[d,k],[h,y]],[/(opwwe\d{3})/i],[u,[d,L],[h,y]],[/(moto 360)/i],[u,[d,N],[h,y]],[/(smartwatch 3)/i],[u,[d,M],[h,y]],[/(g watch r)/i],[u,[d,A],[h,y]],[/droid.+; (wt63?0{2,3})\)/i],[u,[d,K],[h,y]],[/droid.+; (glass) \d/i],[u,[d,C],[h,y]],[/(pico) (4|neo3(?: link|pro)?)/i],[d,u,[h,y]],[/; (quest( \d| pro)?)/i],[u,[d,q],[h,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[d,[h,v]],[/(aeobc)\b/i],[u,[d,T],[h,v]],[/(homepod).+mac os/i],[u,[d,k],[h,v]],[/windows iot/i],[[h,v]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[u,[h,m]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[u,[h,w]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[h,w]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[h,m]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[u,[d,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[l,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[l,p],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[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,p],[/ladybird\//i],[[l,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,p],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[l,[p,Y,Z]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,Y,Z],[l,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,V],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,l],[/(ubuntu) ([\w\.]+) like android/i],[[l,/(.+)/,"$1 Touch"],p],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[l,p],[/\(bb(10);/i],[p,[l,E]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[p,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[l,x+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[p,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[p,[l,R+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,H],p],[/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,p],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,p]]},te=function(e,t){if(typeof e===s&&(t=e,e=i),!(this instanceof te))return new te(e,t).getResult();var f=typeof r!==o&&r.navigator?r.navigator:i,b=e||(f&&f.userAgent?f.userAgent:""),y=f&&f.userAgentData?f.userAgentData:i,v=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(ee,t):ee,T=f&&f.userAgent==b;return this.getBrowser=function(){var e,t={};return t[l]=i,t[p]=i,G.call(t,b,v.browser),t[c]=typeof(e=t[p])===a?e.replace(/[^\d\.]/g,"").split(".")[0]:i,T&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[g]=i,G.call(e,b,v.cpu),e},this.getDevice=function(){var e={};return e[d]=i,e[u]=i,e[h]=i,G.call(e,b,v.device),T&&!e[h]&&y&&y.mobile&&(e[h]=m),T&&"Macintosh"==e[u]&&f&&typeof f.standalone!==o&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[u]="iPad",e[h]=w),e},this.getEngine=function(){var e={};return e[l]=i,e[p]=i,G.call(e,b,v.engine),e},this.getOS=function(){var e={};return e[l]=i,e[p]=i,G.call(e,b,v.os),T&&!e[l]&&y&&y.platform&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,H).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===a&&e.length>500?X(e,500):e,this},this.setUA(b),this};te.VERSION="1.0.41",te.BROWSER=$([l,p,c]),te.CPU=$([g]),te.DEVICE=$([u,d,h,f,m,b,w,y,v]),te.ENGINE=te.OS=$([l,p]),e.exports&&(t=e.exports=te),t.UAParser=te;var re=typeof r!==o&&(r.jQuery||r.Zepto);if(re&&!re.ua){var ie=new te;re.ua=ie.getResult(),re.ua.get=function(){return ie.getUA()},re.ua.set=function(e){ie.setUA(e);var t=ie.getResult();for(var r in t)re.ua[r]=t[r]}}}("object"==typeof window?window:wt)}(bt,bt.exports);const yt="undefined"!=typeof performance&&"function"==typeof performance.now?()=>performance.now():()=>Date.now();function vt(e,t,r="0"){const i=String(e);if(i.length<t){let e=i;for(let n=0;n<t-i.length;n+=1)e=r+e;return e}return i}function Tt(){const e=new Date,t=parseInt(`${e.getFullYear()}${vt(e.getMonth()+1,2)}${vt(e.getDate(),2)}`,10).toString(16),r=parseInt(`${vt(e.getHours(),2)}${vt(e.getMinutes(),2)}${vt(e.getSeconds(),2)}${vt(e.getMilliseconds(),3)}`,10).toString(16);let i=t+r.length+r;for(;i.length<32;)i+=Math.floor(16*Math.random()).toString(16);return`${i.slice(0,8)}-${i.slice(8,16)}-${i.slice(16)}`}let kt=0;function St(){const e=Date.now().toString(36).slice(-8).padStart(8,"0");kt=(kt+1)%46656;const t=Math.floor(36*Math.random());return e+(kt.toString(36).padStart(2,"0")+t.toString(36)).padStart(4,"0").slice(-4)}const Et=()=>(()=>{if("undefined"!=typeof WeixinJSBridge)return!0;var e=navigator.userAgent.toLowerCase();return!(-1===e.indexOf("micromessenger")&&"micromessenger"!=e.match(/MicroMessenger/i))})()?"WECHAT":(()=>{const e=navigator.userAgent.toLowerCase();return!(-1===e.indexOf("alipay")&&"alipay"!=e.match(/Alipay/i))})()?"ALIPAY":"OTHER",Pt=e=>{const t=e.indexOf("#");if(-1===t)return"";return e.slice(t+1).replace(/^\//,"").split("?")[0]},Rt=(e,t)=>["HONGSHUN"].includes(t)&&"chargeMoney"===e&&window.location.href.indexOf("showMoney=false")>-1?"EQUITY":{login:"LOGIN",buyPkgListNew:"BUY_LIST",cardDetailInfo:"CARD_DETAIL",flowSettle:"SETTLEMENT",chargeMoney:"WALLET",payOrderDetail:"ORDER_DETAIL"}[e]||e,xt=()=>{const e=(()=>{const e="undefined"!=typeof window?window.UAParser:null;return e?new e(navigator.userAgent).getResult():(console.warn("UAParser 未找到,请确保已正确引入 ua-parser.js"),{ua:navigator.userAgent,browser:{},engine:{},os:{},device:{},cpu:{}})})();return["iOS","Android"].includes(e?.os?.name)?e?.os?.name:"其他"};class Ct{constructor(e){this.config=e,this.isReporting=!1}async report(e,t){this.config.getConfig().debugSwitch&&console.log("report----------",e,t);try{const r=this.formatReportData(e,t);this.config.getConfig().customReport?await this.config.getConfig().customReport(e,r):await this.defaultReport(e,r)}catch(t){console.error("上报失败:",t),this.config.getConfig().debugSwitch&&console.error("上报失败详情:",{type:e,error:t.message,stack:t.stack})}}getDeviceInfo(){return{screen:{width:screen.width,height:screen.height,availWidth:screen.availWidth,availHeight:screen.availHeight,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth},viewport:{width:window.innerWidth,height:window.innerHeight},connection:navigator.connection?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,memory:navigator.memory?{usedJSHeapSize:navigator.memory.usedJSHeapSize,totalJSHeapSize:navigator.memory.totalJSHeapSize,jsHeapSizeLimit:navigator.memory.jsHeapSizeLimit}:null}}formatReportData(e,t){const r={sessionId:this.config.getConfig().sessionId||"",channel:Et(),uiVer:this.config.getConfig().uiVersion,osType:xt(),screenWidth:screen.width,screenHeight:screen.height,windowInnerWidth:window.innerWidth,windowInnerHeight:window.innerHeight,netType:navigator.connection?navigator.connection.effectiveType:"",tags:{customerId:this.config.getConfig().customerId,deviceId:this.config.getConfig().deviceId,deviceNo:this.config.getConfig().deviceNo,userId:this.config.getConfig().userId}},i=Array.isArray(t)?t:[t];return i.forEach(e=>{const t=Object.assign({},r.tags||{},e&&e.tags||{});Object.assign(e,r),Object.keys(t).length>0&&(e.tags=t)}),i}async defaultReport(e,t){const r=this.config.getReportUrl(),i=this.config.getThirdPartyConfig();r&&await this.reportToBackend(r,t),i&&Object.keys(i).length>0&&await this.reportToThirdParty(i,t)}async reportToBackend(e,t){if(!navigator.sendBeacon||this.isObjectOverSizeLimit(t,60))return this.config.getConfig().debugSwitch&&console.warn("浏览器不支持 sendBeacon,使用 axios"),await this.reportViaAxios(e,t);{const r=new FormData;r.append("events",JSON.stringify(t));const i=navigator.sendBeacon(e,r);if(this.config.getConfig().debugSwitch&&console.log("上报数据:",e,t),!i)return await this.reportViaAxios(e,FormData)}}async reportViaAxios(e,t){try{return(await mt.post(e,t)).data}catch(e){console.error("后端上报失败:",e)}}async reportToThirdParty(e,t){const r=[];e.baidu&&window._hmt&&r.push(this.reportToBaidu(e.baidu,t)),e.umeng&&window._um&&r.push(this.reportToUmeng(e.umeng,t)),e.sensors&&window.sensors&&r.push(this.reportToSensors(e.sensors,t)),e.tencent&&window.MTA&&r.push(this.reportToTencent(e.tencent,t)),e.custom&&r.push(this.reportToCustom(e.custom,t));try{await Promise.allSettled(r)}catch(e){console.error("第三方上报失败:",e)}}async reportToBaidu(e,t){window._hmt&&window._hmt.push(["_trackEvent",t.type,JSON.stringify(t.data)])}async reportToUmeng(e,t){window._um&&window._um.push(["track",t.type,t.data])}async reportToSensors(e,t){window.sensors&&window.sensors.track(t.type,t.data[0]||{})}async reportToTencent(e,t){window.MTA&&window.MTA.Event.stat(t.type,t.data[0]||{})}async reportToCustom(e,t){"function"==typeof e.report&&await e.report(t)}isObjectOverSizeLimit(e,t){const r=JSON.stringify(e);return(new TextEncoder).encode(r).length/1024>t}}class It{constructor(e){this.config=e,this.reporter=new Ct(e),this.errorQueue=[],this.isInitialized=!1,this.reportTimer=null,this.errorCache=new Map,this.errorCacheTimeout=5e3,this.maxCacheSize=100,this.errorFingerprint=this.createErrorFingerprint.bind(this),this.errorTimeout=null,this.resourceErrorTimeout=null,this.lastResourceError=null}createErrorFingerprint(e,t){const r=e?.message||e?.toString()||e,i=e?.stack||t.stack;return`${t.type||"unknown"}:${r}:${window.location.href}:${i?i.split("\n")[0]:""}`}isDuplicateError(e,t){const r=this.errorFingerprint(e,t),i=Date.now();if(this.cleanupErrorCache(i),this.errorCache.has(r)){if(i-this.errorCache.get(r)<this.errorCacheTimeout)return!0}if(this.errorCache.set(r,i),this.errorCache.size>this.maxCacheSize){const e=this.errorCache.keys().next().value;this.errorCache.delete(e)}return!1}cleanupErrorCache(e){for(const[t,r]of this.errorCache.entries())e-r>this.errorCacheTimeout&&this.errorCache.delete(t)}init(){if(this.isInitialized)return;const e=this.config.getConfig();(e.enableErrorTracking||e.enableResourceError)&&this.setupErrorListener(),e.enableUnhandledRejection&&this.setupUnhandledRejectionListener(),e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushErrorQueue()},e))}setupErrorListener(){window.addEventListener("error",e=>{e.target&&e.target!==window?this.handleResourceError(e):this.handleJavaScriptError(e)},!0)}handleJavaScriptError(e){this.errorTimeout&&clearTimeout(this.errorTimeout),this.errorTimeout=setTimeout(()=>{this.handleError(e.error||e.message,{type:"javascript",filename:e.filename,lineno:e.lineno,colno:e.colno,stack:e.error?.stack})},100)}handleResourceError(e){const t=`${e.target.tagName}:${e.target.src||e.target.href}`;this.lastResourceError!==t?(this.lastResourceError=t,this.resourceErrorTimeout&&clearTimeout(this.resourceErrorTimeout),this.resourceErrorTimeout=setTimeout(()=>{this.handleError(`Resource load failed: ${e.target.src||e.target.href}`,{type:"resource",tagName:e.target.tagName,src:e.target.src,href:e.target.href}),setTimeout(()=>{this.lastResourceError=null},2e3)},100)):this.config.getConfig().debugSwitch&&console.log("忽略重复的资源加载错误:",t)}setupUnhandledRejectionListener(){let e=null,t=null;window.addEventListener("unhandledrejection",r=>{const i=`${r.reason?.message||r.reason}:${r.reason?.stack||""}`;t!==i?(t=i,e&&clearTimeout(e),e=setTimeout(()=>{this.handleError(r.reason,{type:"unhandledrejection",stack:r.reason?.stack}),setTimeout(()=>{t=null},1e3)},100)):this.config.getConfig().debugSwitch&&console.log("忽略重复的 Promise 拒绝:",r.reason)})}handleError(e,t={}){if(this.isDuplicateError(e,t))return void(this.config.getConfig().debugSwitch&&console.log("忽略重复错误:",e?.message||e));const r=this.parseStack(e),i={message:e?.message||e?.toString()||e,stack:e?.stack||t.stack,type:t.type||"unknown",timestamp:Date.now(),url:window.location.href,userAgent:navigator.userAgent,fileName:r.fileName,lineNumber:r.lineNumber,columnNumber:r.columnNumber,functionName:r.functionName,stackFrames:r.stackFrames,...t};this.errorQueue.push(i),this.config.getConfig().debugSwitch&&console.log("errorInfo-----",i),0===this.config.getConfig().reportInterval?this.reporter.report("error",[i]):this.errorQueue.length>=this.config.getConfig().maxQueueSize&&this.flushErrorQueue()}parseStack(e){const t=e?.stack||"",r=e?.message||e?.toString()||"",i={errMessage:r,errStack:t,fileName:"",lineNumber:"",columnNumber:"",functionName:"",stackFrames:[]};if(!t)return i;try{const e=/^\s*at\s+([^(]+?)\s+\((.+?):(\d+):(\d+)\)$/,n=/^\s*at\s+(.+?):(\d+):(\d+)$/,o=/^\s*([^@]*)@(.+?):(\d+):(\d+)$/;let s=t;if(r&&t.startsWith(r))s=t.substring(r.length).replace(/^\n+/,"");else if(t.includes("\n")){const e=t.split("\n");!e[0]||e[0].trim().startsWith("at")||e[0].includes("@")||(s=e.slice(1).join("\n"))}const a=s.split("\n").filter(e=>e.trim()),c=[];for(const t of a){let r=null,i=t.match(e);i?r={functionName:i[1].trim(),fileName:i[2],lineNumber:parseInt(i[3]),columnNumber:parseInt(i[4])}:(i=t.match(n),i?r={functionName:"",fileName:i[1],lineNumber:parseInt(i[2]),columnNumber:parseInt(i[3])}:(i=t.match(o),i&&(r={functionName:i[1].trim(),fileName:i[2],lineNumber:parseInt(i[3]),columnNumber:parseInt(i[4])}))),r&&c.push(r)}if(c.length>0){const e=c[0];i.fileName=e.fileName,i.lineNumber=e.lineNumber,i.columnNumber=e.columnNumber,i.functionName=e.functionName}i.stackFrames=c}catch(e){this.config?.getConfig()?.debugSwitch&&console.warn("解析堆栈失败:",e)}return i}reportError(e,t={}){this.handleError(e,t)}flushErrorQueue(){this.errorQueue.length>0&&(this.reporter.report("error",[...this.errorQueue]),this.errorQueue=[])}destroy(){this.config.getConfig().reportInterval>0&&this.flushErrorQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.isInitialized=!1}}class Ot{constructor(e){this.config=e,this.reporter=new Ct(e),this.eventQueue=[],this.isInitialized=!1,this.clickListener=null,this.pageViewListener=null,this.reportTimer=null,this.originalPushState=null,this.originalReplaceState=null,this.pageHistory=[],this.currentPage=null,this.currentPageStartTime=Date.now(),this.previousPage=null,this.previousPageStayTime=0}init(){if(this.isInitialized)return;const e=this.config.getConfig();this.currentPage={url:window.location.href,title:document.title,enterTime:Date.now(),referrer:document.referrer},this.currentPageStartTime=Date.now(),e.enableClickTracking&&this.setupClickTracking(),e.enablePageViewTracking&&this.setupPageViewTracking(),window.addEventListener("beforeunload",()=>{this.handlePageUnload()}),document.addEventListener("visibilitychange",()=>{}),this.config.getConfig().reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}handlePageUnload(){if(this.currentPage){const e=Date.now()-this.currentPageStartTime;this.previousPage={...this.currentPage,stayTime:e,leaveTime:Date.now()},this.previousPageStayTime=e}}setupClickTracking(){this.clickListener=e=>{const t=e.target,r={type:"click",timestamp:Date.now(),url:window.location.href,element:{tagName:t.tagName,className:t.className,id:t.id,text:t.textContent?.substring(0,50)},position:{x:e.clientX,y:e.clientY}};this.handleEvent("click",r)},document.addEventListener("click",this.clickListener,!0)}setupPageViewTracking(){const e=this.config.getConfig().pageViewTracking||{};let t=window.location.href,r=Date.now();const i=e.debounce||100;this.pageViewListener=()=>{const e=window.location.href,n=Date.now();e===t&&n-r<i&&this.config.getConfig().debugSwitch?console.log("忽略重复的页面浏览事件:",e):(this.handlePageChange(e,n),t=e,r=n,this.handleEvent("pageview",{uuid:St(),timestamp:n,pageKey:Rt(Pt(e),this.config.getConfig().uiVersion),pageUri:Pt(e),eventType:"VIEW"}))},!1!==e.listenPopstate&&window.addEventListener("popstate",this.pageViewListener),!1!==e.listenHistoryAPI&&(this.originalPushState=history.pushState,this.originalReplaceState=history.replaceState,history.pushState=function(...e){this.originalPushState.apply(history,e),setTimeout(()=>{this.pageViewListener()},0)}.bind(this),history.replaceState=function(...e){this.originalReplaceState.apply(history,e),setTimeout(()=>{this.pageViewListener()},0)}.bind(this)),e.vueRouterMode&&(this.config.getConfig().debugSwitch&&console.log("Vue Router 模式:页面浏览追踪已优化"),this.pageViewListener())}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushEventQueue()},e))}handlePageChange(e,t){if(this.currentPage){const r=t-this.currentPageStartTime;this.previousPage={...this.currentPage,stayTime:r,leaveTime:t},this.previousPageStayTime=r,this.pageHistory.push({...this.previousPage}),this.pageHistory.length>20&&this.pageHistory.shift(),this.config.getConfig().debugSwitch&&console.log(`页面切换: ${this.currentPage.url} → ${e},停留时间: ${r}ms`)}this.currentPage={url:e,title:document.title,enterTime:t,referrer:document.referrer},this.currentPageStartTime=t}getPreviousPageInfo(){return{previousPage:this.previousPage?{url:this.previousPage.url,title:this.previousPage.title,stayTime:this.previousPageStayTime}:null,previousPageStayTime:this.previousPageStayTime}}getCurrentPageStayTime(){return this.currentPageStartTime?Date.now()-this.currentPageStartTime:0}handleEvent(e,t){const r=this.getPreviousPageInfo(),i={...t,refer:Pt(r?.previousPage?.url),duration:r?.previousPageStayTime};this.eventQueue.push(i),this.config.getConfig().debugSwitch&&console.log("eventInfo----",i),0===this.config.getConfig().reportInterval?this.reporter.report("event",[i]):this.eventQueue.length>=this.config.getConfig().maxQueueSize&&this.flushEventQueue()}reportEvent(e,t={}){const r={uuid:St(),timestamp:Date.now(),actionKey:e,pageKey:Rt(Pt(window.location.href),this.config.getConfig().uiVersion),pageUri:Pt(window.location.href),eventType:"CLICK",tags:t};this.handleEvent(e,r)}flushEventQueue(){this.eventQueue.length>0&&(this.reporter.report("event",[...this.eventQueue]),this.eventQueue=[])}destroy(){this.flushEventQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.clickListener&&(document.removeEventListener("click",this.clickListener,!0),this.clickListener=null),this.pageViewListener&&(window.removeEventListener("popstate",this.pageViewListener),this.pageViewListener=null),this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),this.originalReplaceState&&(history.replaceState=this.originalReplaceState,this.originalReplaceState=null),this.isInitialized=!1}}class At{constructor(e){this.config=e,this.reporter=new Ct(e),this.isInitialized=!1,this.pageStartTime=Date.now(),this.performanceQueue=[],this.thirdPartySDKs={},this.reportTimer=null,this.currentRoute=null,this.routeStartTime=Date.now(),this.routeHistory=[],this.vueRouter=null,this.metrics={fcp:0,lcp:0,fid:0,cls:0,ttfb:0,domLoad:0,windowLoad:0,resourceLoad:[],apiRequests:[],pageStayTime:0}}init(){if(this.isInitialized)return;const e=this.config.getConfig();e.enablePerformanceTracking&&this.setupPerformanceMonitoring(),e.enableResourceTracking&&this.setupResourceMonitoring(),e.enableInteractionTracking&&this.setupInteractionMonitoring(),this.initThirdPartySDKs(),e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushPerformanceQueue()},e))}setupVueRouterMonitoring(e){e&&!this.vueRouter&&(this.vueRouter=e,this.currentRoute=e.currentRoute.value,e.beforeEach((e,t,r)=>{t.name&&this.handleRouteLeave(t,e),r()}),e.afterEach((e,t)=>{this.handleRouteEnter(e,t)}),e.beforeResolve((e,t,r)=>{t.name&&this.calculateRouteStayTime(t),r()}),this.config?.config?.debugSwitch&&console.log("Vue Router 监控已设置"))}handleRouteLeave(e,t){const r=Date.now()-this.routeStartTime;this.recordRouteStayTime(e,r),this.currentRoute=e,this.routeStartTime=Date.now()}handleRouteEnter(e,t){this.routeStartTime=Date.now(),this.currentRoute=e,this.recordRouteEnter(e,t)}recordRouteStayTime(e,t){const r={name:e.name||"unknown",path:e.path,fullPath:e.fullPath,stayTime:t,enterTime:this.routeStartTime,leaveTime:Date.now(),params:e.params,query:e.query,meta:e.meta};this.routeHistory.push(r),this.metrics.pageStayTime=t,this.reportRouteStayTime(r),this.config?.config?.debugSwitch&&console.log("路由数据",r)}recordRouteEnter(e,t){e.name,e.path,e.fullPath,Date.now(),e.params,e.query,e.meta,t&&(t.name,t.path),this.config?.config?.debugSwitch&&console.log(`进入路由: ${e.name||e.path}`)}calculateRouteStayTime(e){if(!this.routeStartTime)return 0;return Date.now()-this.routeStartTime}reportRouteStayTime(e){const t={type:"route_stay_time",timestamp:Date.now(),route:e,user:this.config.getUser(),device:this.getDeviceInfo()};this.reporter.report("route_performance",[t])}getCurrentRoute(){return this.currentRoute}getRouteHistory(){return[...this.routeHistory]}getCurrentPageStayTime(){return this.routeStartTime?Date.now()-this.routeStartTime:0}getRoutePerformanceStats(){const e={totalRoutes:this.routeHistory.length,averageStayTime:0,routesByPath:new Map,totalStayTime:0};return this.routeHistory.length>0&&(this.routeHistory.forEach(t=>{e.totalStayTime+=t.stayTime,e.routesByPath.has(t.path)||e.routesByPath.set(t.path,{count:0,totalStayTime:0,averageStayTime:0});const r=e.routesByPath.get(t.path);r.count++,r.totalStayTime+=t.stayTime,r.averageStayTime=r.totalStayTime/r.count}),e.averageStayTime=e.totalStayTime/e.totalRoutes),e}setupPerformanceMonitoring(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.captureDOMLoadTime()}):this.captureDOMLoadTime(),window.addEventListener("load",()=>{this.captureWindowLoadTime(),this.captureWebVitals(),this.reportPerformanceMetrics()})}setupResourceMonitoring(){if("undefined"!=typeof window&&"PerformanceObserver"in window){const e=new PerformanceObserver(e=>{for(const t of e.getEntries())"resource"===t.entryType&&this.handleResourceLoad(t)});try{e.observe({entryTypes:["resource"]})}catch(e){this.setupResourceFallback()}}}setupInteractionMonitoring(){let e=0,t=0;const r=i=>{0===e&&(e=yt(),t=e-this.metrics.fcp,this.metrics.fid=t,document.removeEventListener("click",r,!0),document.removeEventListener("keydown",r,!0),document.removeEventListener("touchstart",r,!0))};document.addEventListener("click",r,!0),document.addEventListener("keydown",r,!0),document.addEventListener("touchstart",r,!0)}captureDOMLoadTime(){this.metrics.domLoad=yt()}captureWindowLoadTime(){this.metrics.windowLoad=yt()}captureWebVitals(){if("undefined"!=typeof window&&"PerformanceObserver"in window)try{new PerformanceObserver(e=>{for(const t of e.getEntries())"first-contentful-paint"===t.name&&(this.metrics.fcp=t.startTime,this.config?.config?.debugSwitch&&console.log("FCP:",t.startTime))}).observe({type:"paint",buffered:!0})}catch(e){console.warn("FCP监控失败:",e)}if("undefined"!=typeof window&&"PerformanceObserver"in window)try{new PerformanceObserver(e=>{for(const t of e.getEntries())this.metrics.lcp=t.startTime}).observe({entryTypes:["largest-contentful-paint"]})}catch(e){console.warn("LCP监控失败:",e)}if("undefined"!=typeof window&&"PerformanceObserver"in window)try{let e=0;new PerformanceObserver(t=>{for(const r of t.getEntries())r.hadRecentInput||(e+=r.value);this.metrics.cls=e}).observe({entryTypes:["layout-shift"]})}catch(e){console.warn("CLS监控失败:",e)}}handleResourceLoad(e){const t={name:e.name,type:e.initiatorType,duration:e.duration,size:e.transferSize,timestamp:Date.now()};this.metrics.resourceLoad.push(t),e.duration>3e3&&this.reportSlowResource(t)}handlePageHidden(){this.calculatePageStayTime()}handlePageVisible(){this.pageStartTime=Date.now()}calculatePageStayTime(){const e=Date.now()-this.pageStartTime;this.reportPageStayTime(e)}reportPerformanceMetrics(){const e={type:"performance",timestamp:Date.now(),url:window.location.href,userAgent:navigator.userAgent,metrics:this.metrics,user:this.config.getUser(),device:this.getDeviceInfo()};this.performanceQueue.push(e),this.config.getConfig().debugSwitch&&console.log("Performance Data:",e),0===this.config.getConfig().reportInterval?this.reporter.report("performance",[e]):this.performanceQueue.length>=this.config.getConfig().maxQueueSize&&this.flushPerformanceQueue()}reportSlowResource(e){this.reporter.report("slow_resource",[e])}reportSlowApi(e){this.reporter.report("slow_api",[e])}reportPageStayTime(e){const t={type:"page_stay",url:window.location.href,stayTime:e,timestamp:Date.now()};this.reporter.report("page_stay",[t])}getDeviceInfo(){return{screen:{width:screen.width,height:screen.height,availWidth:screen.availWidth,availHeight:screen.availHeight,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth},viewport:{width:window.innerWidth,height:window.innerHeight},connection:navigator.connection?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,memory:navigator.memory?{usedJSHeapSize:navigator.memory.usedJSHeapSize,totalJSHeapSize:navigator.memory.totalJSHeapSize,jsHeapSizeLimit:navigator.memory.jsHeapSizeLimit}:null}}initThirdPartySDKs(){const e=this.config.getThirdPartyConfig();e.baidu&&window._hmt&&(this.thirdPartySDKs.baidu=window._hmt),e.umeng&&window._um&&(this.thirdPartySDKs.umeng=window._um),e.sensors&&window.sensors&&(this.thirdPartySDKs.sensors=window.sensors),e.tencent&&window.MTA&&(this.thirdPartySDKs.tencent=window.MTA)}flushPerformanceQueue(){this.performanceQueue.length>0&&(this.reporter.report("performance",[...this.performanceQueue]),this.performanceQueue=[])}reportPerformance(e={}){const t={type:"custom_performance",timestamp:Date.now(),url:window.location.href,metrics:e,user:this.config.getUser()};this.reporter.report("performance",[t])}getCurrentMetrics(){return{...this.metrics}}destroy(){this.config.getConfig().reportInterval>0&&this.flushPerformanceQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.isInitialized=!1}}class Dt{constructor(e){this.config=e,this.reporter=new Ct(e),this.isInitialized=!1,this.behaviorQueue=[],this.sessionId=this.generateSessionId(),this.pageStartTime=Date.now(),this.scrollDepth=0,this.mouseMovements=[],this.keyStrokes=[],this.formInteractions=[],this.timeTracker=null,this.reportTimer=null,this.originalPushState=null,this.originalReplaceState=null,this.behaviors={pageViews:[],clicks:[],scrolls:[],formSubmissions:[],navigation:[],timeOnPage:0}}init(){if(this.isInitialized)return;const e=this.config.getConfig();e.enableUserInteractionTracking&&this.setupUserInteractionTracking(),e.enableFormTracking&&this.setupFormTracking(),e.enableScrollTracking&&this.setupScrollTracking(),e.enableMouseTracking&&this.setupMouseTracking(),e.enableKeyboardTracking&&this.setupKeyboardTracking(),this.setupTimeTracking(),e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushBehaviorQueue()},e))}setupUserInteractionTracking(){document.addEventListener("click",e=>{this.trackClick(e)},!0),document.addEventListener("dblclick",e=>{this.trackDoubleClick(e)},!0),document.addEventListener("contextmenu",e=>{this.trackRightClick(e)},!0),"ontouchstart"in window&&document.addEventListener("touchstart",e=>{this.trackTouch(e)},!0)}setupFormTracking(){document.addEventListener("submit",e=>{this.trackFormSubmission(e)},!0),document.addEventListener("change",e=>{"INPUT"!==e.target.tagName&&"SELECT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName||this.trackFormFieldChange(e)},!0),document.addEventListener("focus",e=>{"INPUT"!==e.target.tagName&&"SELECT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName||this.trackFormFieldFocus(e)},!0),document.addEventListener("blur",e=>{"INPUT"!==e.target.tagName&&"SELECT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName||this.trackFormFieldBlur(e)},!0)}setupScrollTracking(){let e;document.addEventListener("scroll",()=>{clearTimeout(e),e=setTimeout(()=>{const e=window.pageYOffset||document.documentElement.scrollTop,t=document.documentElement.scrollHeight,r=document.documentElement.clientHeight,i=Math.round(e/(t-r)*100);i>this.scrollDepth&&(this.scrollDepth=i,this.trackScroll(i,e))},100)},{passive:!0})}setupMouseTracking(){let e,t=[];document.addEventListener("mousemove",r=>{clearTimeout(e),t.push({x:r.clientX,y:r.clientY,timestamp:Date.now()}),t.length>100&&t.shift(),e=setTimeout(()=>{t.length>10&&(this.trackMouseMovement(t),t=[])},1e3)},{passive:!0})}setupKeyboardTracking(){document.addEventListener("keydown",e=>{"password"!==e.target.type&&this.trackKeyStroke(e)},!0)}setupTimeTracking(){this.timeTracker&&clearInterval(this.timeTracker),this.timeTracker=setInterval(()=>{this.behaviors.timeOnPage+=1},1e3),window.addEventListener("beforeunload",()=>{this.reportTimeOnPage()})}trackReferrer(){const e=document.referrer;if(e){const t={type:"referrer",url:e,domain:this.extractDomain(e),timestamp:Date.now()};this.config.getConfig().debugSwitch&&console.log("referrerData----",t),this.behaviors.navigation.push(t),this.reportBehavior("referrer",t)}}trackPageView(){const e={type:"pageview",url:window.location.href,title:document.title,timestamp:Date.now(),sessionId:this.sessionId,referrer:document.referrer};this.behaviors.pageViews.push(e),this.reportBehavior("pageview",e),this.pageStartTime=Date.now(),this.scrollDepth=0}trackClick(e){const t={type:"click",element:{tagName:e.target.tagName,className:e.target.className,id:e.target.id,text:e.target.textContent?.substring(0,50),href:e.target.href},position:{x:e.clientX,y:e.clientY,pageX:e.pageX,pageY:e.pageY},timestamp:Date.now(),sessionId:this.sessionId};this.behaviors.clicks.push(t),this.reportBehavior("click",t)}trackDoubleClick(e){const t={type:"doubleclick",element:{tagName:e.target.tagName,className:e.target.className,id:e.target.id},position:{x:e.clientX,y:e.clientY},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("doubleclick",t)}trackRightClick(e){const t={type:"rightclick",element:{tagName:e.target.tagName,className:e.target.className,id:e.target.id},position:{x:e.clientX,y:e.clientY},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("rightclick",t)}trackTouch(e){const t={type:"touch",touches:Array.from(e.touches).map(e=>({x:e.clientX,y:e.clientY,identifier:e.identifier})),timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("touch",t)}trackFormSubmission(e){const t={type:"form_submission",form:{action:e.target.action,method:e.target.method,id:e.target.id,className:e.target.className},fields:this.getFormFields(e.target),timestamp:Date.now(),sessionId:this.sessionId};this.behaviors.formSubmissions.push(t),this.reportBehavior("form_submission",t)}trackFormFieldChange(e){const t={type:"form_field_change",field:{name:e.target.name,type:e.target.type,value:"password"===e.target.type?"***":e.target.value,id:e.target.id},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("form_field_change",t)}trackFormFieldFocus(e){const t={type:"form_field_focus",field:{name:e.target.name,type:e.target.type,id:e.target.id},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("form_field_focus",t)}trackFormFieldBlur(e){const t={type:"form_field_blur",field:{name:e.target.name,type:e.target.type,id:e.target.id},timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("form_field_blur",t)}trackScroll(e,t){const r={type:"scroll",depth:e,scrollTop:t,timestamp:Date.now(),sessionId:this.sessionId};this.config.getConfig().debugSwitch&&console.log("scrollData---",r),this.reportBehavior("scroll",r)}trackMouseMovement(e){const t={type:"mouse_movement",movements:e,timestamp:Date.now(),sessionId:this.sessionId};this.config.getConfig().debugSwitch&&console.log("mouse_movement---",t),this.reportBehavior("mouse_movement",t)}trackKeyStroke(e){const t={type:"keystroke",key:e.key,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,timestamp:Date.now(),sessionId:this.sessionId};this.config.getConfig().debugSwitch&&console.log("keystroke---",t),this.reportBehavior("keystroke",t)}reportBehavior(e,t){const r={type:e,data:t,user:this.config.getUser(),config:{appId:this.config.getConfig().appId,appVersion:this.config.getConfig().appVersion}};this.behaviorQueue.push(r),0===this.config.getConfig().reportInterval?this.reporter.report("behavior",[r]):this.behaviorQueue.length>=this.config.getConfig().maxQueueSize&&this.flushBehaviorQueue()}reportCustomBehavior(e,t={}){const r={type:"custom_behavior",eventName:e,...t,timestamp:Date.now(),sessionId:this.sessionId};this.reportBehavior("custom_behavior",r)}flushBehaviorQueue(){this.behaviorQueue.length>0&&(this.reporter.report("behavior",[...this.behaviorQueue]),this.behaviorQueue=[])}getFormFields(e){const t=[],r=e.elements;for(let e=0;e<r.length;e++){const i=r[e];i.name&&t.push({name:i.name,type:i.type,value:"password"===i.type?"***":i.value})}return t}extractDomain(e){try{return new URL(e).hostname}catch(t){return e}}generateSessionId(){return"session_"+Date.now()+"_"+Math.random().toString(36).substr(2,9)}getCurrentBehaviors(){return{...this.behaviors}}getSessionId(){return this.sessionId}destroy(){this.config.getConfig().reportInterval>0&&this.flushBehaviorQueue(),this.reportTimeOnPage(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.timeTracker&&(clearInterval(this.timeTracker),this.timeTracker=null),this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),this.originalReplaceState&&(history.replaceState=this.originalReplaceState,this.originalReplaceState=null),this.isInitialized=!1}}class Nt{constructor(e,t=null){this.config=e,this.reporter=new Ct(e),this.eventTracker=t,this.isInitialized=!1,this.observer=null,this.trackedElements=new Map,this.exposureQueue=[],this.reportTimer=null,this.scrollTimer=null,this.useFallback=!1,this.lastReportTime=new Map,this.debounceTime=500,this.defaultOptions={threshold:.5,rootMargin:"0px",scrollThrottle:100}}init(){if(this.isInitialized)return;this.isIntersectionObserverSupported()?(this.createObserver(),this.useFallback=!1,this.config.getConfig().debugSwitch&&console.log("曝光追踪器初始化完成(使用 Intersection Observer API)")):(this.setupFallbackTracking(),this.useFallback=!0,this.config.getConfig().debugSwitch&&console.warn("浏览器不支持 Intersection Observer,使用降级方案(滚动事件追踪)"));const e=this.config.getConfig();e.reportInterval>0&&this.setupPeriodicReport(),this.isInitialized=!0,e.debugSwitch&&console.log("曝光追踪器初始化完成")}isIntersectionObserverSupported(){return"undefined"!=typeof window&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype}createObserver(){const e={root:null,rootMargin:this.defaultOptions.rootMargin,threshold:[0,.5,1]};this.observer=new IntersectionObserver(e=>{e.forEach(e=>{this.handleIntersection(e)})},e)}handleIntersection(e){console.log("entry-------",e);const t=e.target,r=this.getElementId(t),i=this.getElementConfig(t),n=i.threshold||this.defaultOptions.threshold,o=e.intersectionRatio,s=o>=n;if(this.config.getConfig().debugSwitch&&console.log(`元素 ${r} 可见性检查:`,{visibleRatio:(100*o).toFixed(2)+"%",threshold:(100*n).toFixed(2)+"%",isThresholdMet:s}),s){this.trackedElements.has(r)||this.trackedElements.set(r,{element:t,config:i});const e=this.trackedElements.get(r),n=Date.now(),s=n-(this.lastReportTime.get(r)||0);s>=this.debounceTime?(this.lastReportTime.set(r,n),this.triggerExposure(t,r,e,o,0),this.config.getConfig().debugSwitch&&console.log(`元素 ${r} 进入可视区域,可见比例: ${(100*o).toFixed(2)}%,立即触发曝光`)):this.config.getConfig().debugSwitch&&console.log(`元素 ${r} 跳过上报(去重),距离上次上报 ${s}ms,需要间隔 ${this.debounceTime}ms`)}}triggerExposure(e,t,r,i,n){const o=this.extractProductInfo(e,r.config);let s={};this.eventTracker&&"function"==typeof this.eventTracker.getPreviousPageInfo&&(s=this.eventTracker.getPreviousPageInfo());const a=this.getElementConfig(e),c={uuid:St(),timestamp:Date.now(),pageKey:Rt(Pt(window.location.href),this.config.getConfig().uiVersion),pageUri:Pt(window.location.href),eventType:"EXPOSE",actionKey:"",refer:Pt(s?.previousPage?.url),duration:s?.previousPageStayTime,viewParam:{...o},tags:{...a}};this.exposureQueue.push(c),this.config.getConfig().debugSwitch&&console.log("商品曝光事件:",c);0===this.config.getConfig().reportInterval?Promise.resolve().then(()=>{this.reporter.report("exposure",this.getReportData([c])).catch(e=>{console.error("曝光上报失败:",e),this.config.getConfig().debugSwitch&&console.error("曝光上报失败详情:",e)})}):this.exposureQueue.length>=this.config.getConfig().maxQueueSize&&this.flushExposureQueue()}setupFallbackTracking(){this.observer={observe:e=>{const t=this.getElementId(e);this.trackedElements.has(t)},unobserve:e=>{const t=this.getElementId(e);this.trackedElements.delete(t)},disconnect:()=>{this.trackedElements.clear(),this.removeScrollListener()}},this.addScrollListener(),setTimeout(()=>{this.checkAllElementsVisibility()},100)}addScrollListener(){if(this.scrollHandler)return;let e=0;const t=this.defaultOptions.scrollThrottle;this.scrollHandler=()=>{const r=Date.now();r-e>=t&&(e=r,this.checkAllElementsVisibility())},window.addEventListener("scroll",this.scrollHandler,{passive:!0}),window.addEventListener("touchmove",this.scrollHandler,{passive:!0}),window.addEventListener("resize",this.scrollHandler,{passive:!0})}removeScrollListener(){this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler),window.removeEventListener("touchmove",this.scrollHandler),window.removeEventListener("resize",this.scrollHandler),this.scrollHandler=null)}checkAllElementsVisibility(){if(!this.useFallback)return;const e=window.innerHeight,t=window.innerWidth;this.trackedElements.forEach((r,i)=>{const n=r.element;if(!n||!document.contains(n))return void this.trackedElements.delete(i);const o=r.config.threshold||this.defaultOptions.threshold,s=this.calculateVisibleRatio(n,0,e,0,t);if(s>=o){const e=Date.now(),t=e-(this.lastReportTime.get(i)||0);t>=this.debounceTime?(this.lastReportTime.set(i,e),this.triggerExposure(n,i,r,s,0),this.config.getConfig().debugSwitch&&console.log(`元素 ${i} 进入可视区域,可见比例: ${(100*s).toFixed(2)}%,立即触发曝光`)):this.config.getConfig().debugSwitch&&console.log(`元素 ${i} 跳过上报(去重),距离上次上报 ${t}ms,需要间隔 ${this.debounceTime}ms`)}})}calculateVisibleRatio(e,t,r,i,n){const o=e.getBoundingClientRect();if(o.bottom<t||o.top>r||o.right<i||o.left>n)return 0;const s=Math.max(o.top,t),a=Math.min(o.bottom,r),c=Math.max(o.left,i),u=Math.min(o.right,n),l=Math.max(0,u-c)*Math.max(0,a-s),h=o.width*o.height;return 0===h?0:l/h}trackProduct(e,t={}){if(!this.isInitialized)return void console.warn("曝光追踪器未初始化");if(!e||"object"!=typeof e||!e.nodeType)return void console.warn("无效的元素,无法追踪");const r=this.getElementId(e),i={...t};this.trackedElements.has(r)&&this.untrackProduct(e),e.setAttribute("data-exposure-tracked","true"),e.setAttribute("data-exposure-config",JSON.stringify(i)),this.trackedElements.set(r,{element:e,config:i}),this.observer&&this.observer.observe(e),this.useFallback&&setTimeout(()=>{this.checkAllElementsVisibility()},0),this.config.getConfig().debugSwitch&&console.log(`开始追踪商品元素: ${r}`,i)}trackProducts(e,t={}){if(!this.isInitialized||!this.observer)return void console.warn("曝光追踪器未初始化");let r=[];if("string"==typeof e)r=Array.from(document.querySelectorAll(e));else{if(!Array.isArray(e))return void console.warn("无效的选择器或元素列表");r=e}r.forEach((e,r)=>{const i=Array.isArray(t)?t[r]||{}:t;this.trackProduct(e,i)}),this.config.getConfig().debugSwitch&&console.log(`批量追踪了 ${r.length} 个商品元素`)}untrackProduct(e){if(!this.observer)return;const t=this.getElementId(e);this.observer.unobserve&&this.observer.unobserve(e),this.trackedElements.delete(t),this.lastReportTime.delete(t),e&&e.removeAttribute&&(e.removeAttribute("data-exposure-tracked"),e.removeAttribute("data-exposure-config")),this.config.getConfig().debugSwitch&&console.log(`取消追踪商品元素: ${t}`)}untrackAll(){this.observer&&(this.useFallback||this.trackedElements.forEach((e,t)=>{e.element&&this.observer.unobserve&&this.observer.unobserve(e.element)}),this.trackedElements.clear(),this.config.getConfig().debugSwitch&&console.log("已取消追踪所有商品元素"))}getElementId(e){if(e.getAttribute("data-exposure-id"))return e.getAttribute("data-exposure-id");if(e._exposureUniqueId)return e._exposureUniqueId;if(e.id)return`id_${e.id}`;if(e.getAttribute("data-product-id"))return`product_${e.getAttribute("data-product-id")}`;const t=St();return e._exposureUniqueId=t,t}getElementConfig(e){const t=e.getAttribute("data-exposure-config");if(t)try{return JSON.parse(t)}catch(e){return{}}return{}}extractProductInfo(e,t={}){const r={productId:t.productId||e.getAttribute("data-product-id")||null,productName:t.productName||e.getAttribute("data-product-name")||null,productPrice:t.productPrice||e.getAttribute("data-product-price")||null,productCategory:t.productCategory||e.getAttribute("data-product-category")||null,productImage:t.productImage||e.getAttribute("data-product-image")||null};return Object.keys(r).forEach(e=>{null===r[e]&&delete r[e]}),r}setupPeriodicReport(){const e=this.config.getConfig().reportInterval;e>0&&(this.reportTimer&&clearInterval(this.reportTimer),this.reportTimer=setInterval(()=>{this.flushExposureQueue()},e))}getReportData(e){if(e.length>0){const r=e[0];return r.tags&&(r.tags.exposeContent=(t=e.map(e=>e.viewParam?.productId).filter(Boolean),Array.from(new Set(t)))),delete r.viewParam,r}var t;return null}flushExposureQueue(){if(this.exposureQueue.length>0){const e=[...this.exposureQueue];this.exposureQueue=[],Promise.resolve().then(()=>{this.reporter.report("exposure",this.getReportData(e)).catch(e=>{console.error("批量曝光上报失败:",e),this.config.getConfig().debugSwitch&&console.error("批量曝光上报失败详情:",e)})})}}reportExposure(e={}){let t={};this.eventTracker&&"function"==typeof this.eventTracker.getPreviousPageInfo&&(t=this.eventTracker.getPreviousPageInfo());const r={uuid:St(),timestamp:Date.now(),pageKey:Rt(Pt(window.location.href),this.config.getConfig().uiVersion),pageUri:Pt(window.location.href),eventType:"EXPOSE",actionKey:"",refer:Pt(t?.previousPage?.url),duration:t?.previousPageStayTime,viewParam:{...e},tags:{...config}};Promise.resolve().then(()=>{this.reporter.report("exposure",this.getReportData(r)).catch(e=>{console.error("手动曝光上报失败:",e),this.config.getConfig().debugSwitch&&console.error("手动曝光上报失败详情:",e)})})}getTrackedElements(){return Array.from(this.trackedElements.keys())}getExposureQueue(){return[...this.exposureQueue]}destroy(){this.flushExposureQueue(),this.reportTimer&&(clearInterval(this.reportTimer),this.reportTimer=null),this.untrackAll(),this.observer&&(this.observer.disconnect&&this.observer.disconnect(),this.observer=null),this.removeScrollListener(),this.trackedElements.clear(),this.exposureQueue=[],this.lastReportTime.clear(),this.useFallback=!1,this.isInitialized=!1,this.config.getConfig().debugSwitch&&console.log("曝光追踪器已销毁")}}class _t{constructor(e){this.config=e,this.integratedSDKs={},this.isInitialized=!1}init(){if(this.isInitialized)return;const e=this.config.getThirdPartyConfig();e.baidu&&e.baidu.enabled&&this.initBaiduAnalytics(e.baidu),e.umeng&&e.umeng.enabled&&this.initUmengAnalytics(e.umeng),e.sensors&&e.sensors.enabled&&this.initSensorsAnalytics(e.sensors),e.tencent&&e.tencent.enabled&&this.initTencentAnalytics(e.tencent),e.google&&e.google.enabled&&this.initGoogleAnalytics(e.google),e.custom&&e.custom.enabled&&this.initCustomAnalytics(e.custom),this.isInitialized=!0}initBaiduAnalytics(e){try{window._hmt?(this.integratedSDKs.baidu={name:"baidu",instance:window._hmt,config:e},e.siteId&&window._hmt.push(["_setAccount",e.siteId]),!1!==e.autoPageview&&window._hmt.push(["_trackPageview"]),console.log("百度统计集成成功")):console.warn("百度统计未加载,请检查脚本是否正确引入")}catch(e){console.error("百度统计集成失败:",e)}}initUmengAnalytics(e){try{window._um?(this.integratedSDKs.umeng={name:"umeng",instance:window._um,config:e},e.siteId&&window._um.push(["setAccount",e.siteId]),!1!==e.autoPageview&&window._um.push(["trackPageview"]),console.log("友盟统计集成成功")):console.warn("友盟统计未加载,请检查脚本是否正确引入")}catch(e){console.error("友盟统计集成失败:",e)}}initSensorsAnalytics(e){try{window.sensors?(this.integratedSDKs.sensors={name:"sensors",instance:window.sensors,config:e},e.serverUrl&&window.sensors.setServerUrl(e.serverUrl),e.siteId&&window.sensors.setSiteId(e.siteId),!1!==e.autoPageview&&window.sensors.trackPageview(),console.log("神策数据集成成功")):console.warn("神策数据未加载,请检查脚本是否正确引入")}catch(e){console.error("神策数据集成失败:",e)}}initTencentAnalytics(e){try{window.MTA?(this.integratedSDKs.tencent={name:"tencent",instance:window.MTA,config:e},e.appId&&window.MTA.setAppId(e.appId),!1!==e.autoPageview&&window.MTA.trackPageview(),console.log("腾讯云分析集成成功")):console.warn("腾讯云分析未加载,请检查脚本是否正确引入")}catch(e){console.error("腾讯云分析集成失败:",e)}}initGoogleAnalytics(e){try{window.gtag?(this.integratedSDKs.google={name:"google",instance:window.gtag,config:e},e.measurementId&&window.gtag("config",e.measurementId,{page_title:document.title,page_location:window.location.href}),console.log("Google Analytics集成成功")):console.warn("Google Analytics未加载,请检查脚本是否正确引入")}catch(e){console.error("Google Analytics集成失败:",e)}}initCustomAnalytics(e){try{if("function"==typeof e.init){const t=e.init(e);this.integratedSDKs.custom={name:"custom",instance:t,config:e},console.log("自定义第三方集成成功")}else console.warn("自定义第三方配置缺少init函数")}catch(e){console.error("自定义第三方集成失败:",e)}}reportEvent(e,t={}){Object.values(this.integratedSDKs).forEach(r=>{try{this.reportToSDK(r,e,t)}catch(e){console.error(`上报事件到${r.name}失败:`,e)}})}reportPageView(e={}){Object.values(this.integratedSDKs).forEach(t=>{try{this.reportPageViewToSDK(t,e)}catch(e){console.error(`上报页面浏览到${t.name}失败:`,e)}})}reportUser(e={}){Object.values(this.integratedSDKs).forEach(t=>{try{this.reportUserToSDK(t,e)}catch(e){console.error(`上报用户信息到${t.name}失败:`,e)}})}reportPerformance(e={}){Object.values(this.integratedSDKs).forEach(t=>{try{this.reportPerformanceToSDK(t,e)}catch(e){console.error(`上报性能指标到${t.name}失败:`,e)}})}reportToSDK(e,t,r){switch(e.name){case"baidu":e.instance&&e.instance.push&&e.instance.push(["_trackEvent",t,JSON.stringify(r)]);break;case"umeng":e.instance&&e.instance.push&&e.instance.push(["track",t,r]);break;case"sensors":e.instance&&e.instance.track&&e.instance.track(t,r);break;case"tencent":e.instance&&e.instance.Event&&e.instance.Event.stat&&e.instance.Event.stat(t,r);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("event",t,r);break;case"custom":e.instance&&"function"==typeof e.instance.track&&e.instance.track(t,r);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}reportPageViewToSDK(e,t){switch(e.name){case"baidu":e.instance&&e.instance.push&&e.instance.push(["_trackPageview",t.url||window.location.href]);break;case"umeng":e.instance&&e.instance.push&&e.instance.push(["trackPageview",t.url||window.location.href]);break;case"sensors":e.instance&&e.instance.trackPageview&&e.instance.trackPageview(t);break;case"tencent":e.instance&&e.instance.trackPageview&&e.instance.trackPageview(t.url||window.location.href);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("config",e.config.measurementId,{page_title:t.title||document.title,page_location:t.url||window.location.href});break;case"custom":e.instance&&"function"==typeof e.instance.trackPageview&&e.instance.trackPageview(t);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}reportUserToSDK(e,t){switch(e.name){case"baidu":e.instance&&e.instance.push&&(e.instance.push(["_setUserTag","userId",t.userId]),e.instance.push(["_setUserTag","userType",t.userType]));break;case"umeng":e.instance&&e.instance.push&&(e.instance.push(["setUserTag","userId",t.userId]),e.instance.push(["setUserTag","userType",t.userType]));break;case"sensors":e.instance&&e.instance.setProfile&&e.instance.setProfile(t);break;case"tencent":e.instance&&e.instance.setUserInfo&&e.instance.setUserInfo(t);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("set","user_id",t.userId);break;case"custom":e.instance&&"function"==typeof e.instance.setUser&&e.instance.setUser(t);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}reportPerformanceToSDK(e,t){switch(e.name){case"baidu":e.instance&&e.instance.push&&e.instance.push(["_trackEvent","performance",JSON.stringify(t)]);break;case"umeng":e.instance&&e.instance.push&&e.instance.push(["track","performance",t]);break;case"sensors":e.instance&&e.instance.track&&e.instance.track("performance",t);break;case"tencent":e.instance&&e.instance.Event&&e.instance.Event.stat&&e.instance.Event.stat("performance",t);break;case"google":e.instance&&"function"==typeof e.instance&&e.instance("event","performance",t);break;case"custom":e.instance&&"function"==typeof e.instance.trackPerformance&&e.instance.trackPerformance(t);break;default:console.warn(`未知的SDK类型: ${e.name}`)}}isSDKIntegrated(e){return!!this.integratedSDKs[e]}getIntegratedSDKs(){return Object.keys(this.integratedSDKs)}getSDKInstance(e){return this.integratedSDKs[e]?.instance||null}destroy(){Object.values(this.integratedSDKs).forEach(e=>{try{e.instance&&"function"==typeof e.instance.destroy&&e.instance.destroy()}catch(t){console.error(`销毁${e.name}失败:`,t)}}),this.integratedSDKs={},this.isInitialized=!1}}class Lt{constructor(e={}){this.config={appId:e.appId||"",appVersion:e.appVersion||"1.0.0",environment:e.environment||"production",debugSwitch:!0===e.debugSwitch,customerId:e.customerId||"",userId:e.userId||"",deviceNo:e.deviceNo||"",deviceId:e.userId||"",uiVersion:e.uiVersion||"",sessionId:Tt(),reportUrl:e.reportUrl||"",reportInterval:e.reportInterval||5e3,maxQueueSize:e.maxQueueSize||100,enableErrorTracking:!1!==e.enableErrorTracking,enableUnhandledRejection:!1!==e.enableUnhandledRejection,enableResourceError:!1!==e.enableResourceError,enableEventTracking:!1!==e.enableEventTracking,enableClickTracking:!1!==e.enableClickTracking,enablePageViewTracking:!1!==e.enablePageViewTracking,enablePerformanceTracking:!1!==e.enablePerformanceTracking,enableResourceTracking:!1!==e.enableResourceTracking,enableApiTracking:!1!==e.enableApiTracking,enableInteractionTracking:!1!==e.enableInteractionTracking,enableUserInteractionTracking:!1!==e.enableUserInteractionTracking,enableFormTracking:!1!==e.enableFormTracking,enableScrollTracking:!1!==e.enableScrollTracking,enableMouseTracking:!1!==e.enableMouseTracking,enableKeyboardTracking:!1!==e.enableKeyboardTracking,thirdPartyConfig:e.thirdPartyConfig||{},user:e.user||null,customReport:e.customReport||null},this.user=null}updateConfig(e){this.config={...this.config,...e}}setUser(e){this.user=e}getConfig(){return this.config}getUser(){return this.user}getReportUrl(){return this.config.reportUrl}getThirdPartyConfig(){return this.config.thirdPartyConfig}isErrorTrackingEnabled(){return this.config.enableErrorTracking}isEventTrackingEnabled(){return this.config.enableEventTracking}}"undefined"==typeof window||window?.axios||(window.axios=mt);e.default=class{constructor(e={}){this.config=new Lt(e),this.errorTracker=new It(this.config),this.eventTracker=new Ot(this.config),this.performanceTracker=new At(this.config),this.userBehaviorTracker=new Dt(this.config),this.exposureTracker=new Nt(this.config,this.eventTracker),this.thirdPartyIntegrator=new _t(this.config),this.init()}init(){this.eventTracker.init(),this.exposureTracker.init(),this.thirdPartyIntegrator.init(),console.log("Frontend SDK 初始化完成")}reportError(e,t={}){this.errorTracker.reportError(e,t)}reportEvent(e,t={}){this.eventTracker.reportEvent(e,t)}getPreviousPageInfo(){return this.eventTracker.getPreviousPageInfo()}getCurrentPageStayTime(){return this.eventTracker.getCurrentPageStayTime()}getPageHistory(){return this.eventTracker.pageHistory||[]}reportPerformance(e={}){this.performanceTracker.reportPerformance(e)}reportBehavior(e,t={}){this.userBehaviorTracker.reportCustomBehavior(e,t)}setUser(e){this.config.setUser(e),this.thirdPartyIntegrator.reportUser(e)}setConfig(e){this.config.updateConfig(e)}getPerformanceMetrics(){return this.performanceTracker.getCurrentMetrics()}getBehaviorData(){return this.userBehaviorTracker.getCurrentBehaviors()}getSessionId(){return this.userBehaviorTracker.getSessionId()}isThirdPartySDKIntegrated(e){return this.thirdPartyIntegrator.isSDKIntegrated(e)}getIntegratedThirdPartySDKs(){return this.thirdPartyIntegrator.getIntegratedSDKs()}setupVueRouterMonitoring(e){e?(this.performanceTracker.setupVueRouterMonitoring(e),console.log("Vue Router 监控已设置")):console.warn("Vue Router 实例未提供")}getCurrentRoute(){return this.performanceTracker.getCurrentRoute()}getRouteHistory(){return this.performanceTracker.getRouteHistory()}getCurrentRouteStayTime(){return this.performanceTracker.getCurrentPageStayTime()}getRoutePerformanceStats(){return this.performanceTracker.getRoutePerformanceStats()}trackProduct(e,t={}){return this.exposureTracker.trackProduct(e,t)}trackProducts(e,t={}){return this.exposureTracker.trackProducts(e,t)}untrackProduct(e){return this.exposureTracker.untrackProduct(e)}untrackAllProducts(){return this.exposureTracker.untrackAll()}reportExposure(e={}){return this.exposureTracker.reportExposure(e)}getTrackedProducts(){return this.exposureTracker.getTrackedElements()}getExposureQueue(){return this.exposureTracker.getExposureQueue()}flushExposureQueue(){return this.exposureTracker.flushExposureQueue()}destroy(){this.errorTracker.destroy(),this.eventTracker.destroy(),this.performanceTracker.destroy(),this.userBehaviorTracker.destroy(),this.exposureTracker.destroy(),this.thirdPartyIntegrator.destroy(),console.log("Frontend SDK 已销毁")}},e.performanceNow=yt,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|