!function(e){!function(e){"use strict";var t,i,r,n,s,o,a,c,u,d,l,g,v,p,h,w,m,f,y,S,b,E,I,C,T,D,P,k,V,_,U,A,x,L,O,N,B,F,W,R,$,j=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)},M=(e,t,i)=>(j(e,t,"read from private field"),i?i.call(e):t.get(e)),z=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},J=(e,t,i,r)=>(j(e,t,"write to private field"),r?r.call(e,i):t.set(e,i),i),G=(e,t,i)=>(j(e,t,"access private method"),i);if(false){if("undefined"!=typeof navigator&&"ReactNative"===navigator.product&&"undefined"==typeof crypto)throw new Error("React Native does not have a built-in secure random generator. If you don’t need unpredictable IDs use `nanoid/non-secure`. For secure IDs, import `react-native-get-random-values` before Nano ID.");if("undefined"!=typeof msCrypto&&"undefined"==typeof crypto)throw new Error("Import file with `if (!window.crypto) window.crypto = window.msCrypto` before importing Nano ID to fix IE 11 support");if("undefined"==typeof crypto)throw new Error("Your browser does not have secure random generator. If you don’t need unpredictable IDs, you can use nanoid/non-secure.")}let H=(e=21)=>{let t="",i=crypto.getRandomValues(new Uint8Array(e));for(;e--;){let r=63&i[e];if(36>r)t+=r.toString(36);else if(62>r)t+=(r-26).toString(36).toUpperCase();else if(63>r)t+="_";else t+="-"}return t};const q="_grDebugMode",X=new class{isDebugEnabled(){return!!window.sessionStorage.getItem(q)}startDebug(){window.sessionStorage.setItem(q,"true")}},K=new class{get isLoggingEnabled(){return X.isDebugEnabled()}log(...e){this.displayLog("log",...e)}info(...e){this.displayLog("info",...e)}error(...e){if(e[0]instanceof Error)e.push(e[0].stack);this.displayLog("error",...e)}forceLogError(...e){if(e[0]instanceof Error)e.push(e[0].stack);console.error(...e)}warn(...e){this.displayLog("warn",...e)}displayLog(e,...t){if(this.isLoggingEnabled)console[e](...t)}};function Y(e){const t=document.cookie.match(new RegExp(`(^| )${e}=([^;]+)`));if(t)return t[2]}function Z(e,t,i=""){const r=new Date;r.setTime(r.getTime()+365*24*60*60*1e3),document.cookie=`${e}=${t}; expires=${r.toUTCString()}; path=/; ${i?`domain=${i}`:""}`}function Q(e){const t=new RegExp(`[?&]${e}=([^&#]*)`).exec(window.location.href);return t?decodeURI(t[1]):null}function ee(e){return!!e&&"object"==typeof e}function te(e,t){const i={...e};for(const r of Object.keys(t))if(e.hasOwnProperty(r)&&ee(e[r])&&ee(t[r])&&!Array.isArray(e[r]))i[r]=te(e[r],t[r]);else i[r]=t[r];return i}var ie=(e=>(e["SetDomain"]="setDomain",e["SetListToken"]="setListToken",e["SetUserId"]="setUserId",e["SetEvent"]="setEvent",e["SetCookie"]="setCookie",e["SetAutoFunnelData"]="setAutoFunnelData",e["Push"]="push",e["SetCustomServiceWorkerPath"]="setCustomSwPath",e["ViewItem"]="viewItem",e["ViewCategory"]="viewCategory",e["LikeItem"]="likeItem",e["UnlikeItem"]="unlikeItem",e["WishListItem"]="wishlistItem",e["Purchase"]="orderPlaced",e["CartUpdate"]="cartUpdate",e["ShopifyAbandonedCart"]="shopifyAbandonedCart",e["SaveEvent"]="saveEvent",e["FlushEvents"]="flushEvents",e["SetUserDevice"]="setUserDevice",e["SetUserLocation"]="setUserLocation",e["SetVisitUrlPath"]="setVisitUrlPath",e["SetLastActivityDate"]="setLastActivityDate",e["SetIsNewVisitor"]="setIsNewVisitor",e["SetHasUserVisitPage"]="setHasUserVisitPage",e["SetRawEvent"]="setRawEvent",e["ImportScript"]="importScript",e["DelayScript"]="delayScript",e["InitScript"]="initScript",e))(ie||{}),re=(e=>(e["UserEventSaved"]="userEventSaved",e["UserEventUpdated"]="userEventUpdated",e["UserECommerceEventMatchedByECommerceElement"]="userECommerceEventMatchedByElement",e["WebPushConsentAccepted"]="webPushConsentAccepted",e["WebPushCustomConsentRejected"]="webPushCustomConsentRejected",e["WebPushNativeConsentRejected"]="webPushNativeConsentRejected",e))(re||{});const ne=10;class se{constructor(){this._cvar=[]}setTrackerUrl(e){this.trackerUrl=e}markAsEnabled(e){this.isEnabled=e}setUserId(e){this.uid=e}setCustomVariable(e,t,i){if(!this._cvar[e])this._cvar[e]=[];this._cvar[e].push(t),this._cvar[e].push(i)}setGenerationTime(){var e;if(this.gt_ms)return;const t=null==(e=performance.getEntriesByType("navigation")[0])?void 0:e.toJSON();if(t)this.gt_ms=Math.floor(t.responseEnd-t.requestStart)}trackEvent(e,t,i,r){this.trackPageView(Object.assign({e_c:e,e_a:t,e_n:i,...r&&{e_v:r}}))}getCustomVariable(){return JSON.stringify(Object.assign({},this._cvar))}static getScreenResolution(){return`${screen.width??ne}x${screen.height??ne}`}static encodeUrlParam(e){return`${encodeURIComponent(e[0])}=${encodeURIComponent(e[1])}`}getFullTrackerUrl(e){const t=new Date;return Object.entries({...e,...document.referrer&&{urlRef:document.referrer},url:window.location.href,uid:this.uid,_cvar:this.getCustomVariable(),h:t.getHours(),m:t.getMinutes(),s:t.getSeconds(),res:se.getScreenResolution(),gt_ms:this.gt_ms}).reduce(((e,t)=>void 0===t[1]?e:`${e}&${se.encodeUrlParam(t)}`),this.trackerUrl)}trackPageView(e){if(e||this.isEnabled)if(this.setGenerationTime(),window.fetch)fetch(this.getFullTrackerUrl(e),{method:"GET",mode:"no-cors"}).catch((e=>{K.error("Error while sending tracking data:",e)}));else new Image(1,1).src=this.getFullTrackerUrl(e)}}var oe=(e=>(e["UuidHasBeenSet"]="grUuidHasBeenSet",e["PopupsRendererCustomUrl"]="grPopupsRendererCustomUrl",e))(oe||{});class ae{constructor(){z(this,t,new Proxy({},{get(e,t){if(t in e)return e[t];else return e[t]=[],e[t]}}))}addEvent(e,i){M(this,t)[e].push(i)}drainEvents(e){const i=M(this,t)[e];return M(this,t)[e]=[],i}getEvents(e){return M(this,t)[e]}hasDelayedEvents(e){return M(this,t)[e].length>0}}t=new WeakMap,i=new WeakMap,r=new WeakMap;const ce=new class{constructor(){z(this,i,{}),z(this,r,new ae)}publish(e,...t){var n;if(null==(n=M(this,i)[e])?void 0:n.length)M(this,i)[e].forEach((i=>{i(...t),K.log(`Event ${e} published with arguments'`,...t)}));else M(this,r).addEvent(e,t)}subscribe(e,t,n={}){const{preventEventDraining:s,ignoreQueuedEvents:o}=n;if(!M(this,i)[e])M(this,i)[e]=[];if(M(this,r).hasDelayedEvents(e)&&!o)if(s)M(this,r).getEvents(e).forEach((e=>t(...e)));else M(this,r).drainEvents(e).forEach((e=>t(...e)));if(n.signal)n.signal.addEventListener("abort",(()=>{this.unsubscribe(e,t)}),{once:true});M(this,i)[e].push(t)}unsubscribe(e,t){var r;const n=null==(r=M(this,i)[e])?void 0:r.indexOf(t);if(n>-1)M(this,i)[e].splice(n,1)}removeListeners(e){delete M(this,i)[e]}};var ue,de,le=(e=>(e["DeviceType"]="debug_device_type",e["Location"]="debug_location",e["VisitUrlPath"]="debug_visit_url_path",e["BrowserStorageLastActivityDate"]="debug_browser_storage_last_activity_date",e["NewVisitor"]="debug_new_visitor",e["HasUserVisitPage"]="debug_has_user_visit_page",e["Events"]="debug_events",e))(le||{});function ge(){const e=e=>{const t=sessionStorage.getItem(e);if(t){if([le.DeviceType,le.VisitUrlPath,le.Location].includes(e))return t;if(e===le.BrowserStorageLastActivityDate){const e=new Date(t);return isNaN(e.getTime())?void 0:e}if([le.NewVisitor,le.HasUserVisitPage,le.Events].includes(e))try{return JSON.parse(t)}catch(i){K.error(`Invalid debug data for: ${e}`)}}};return{enabled:true,data:{[le.DeviceType]:e(le.DeviceType),[le.BrowserStorageLastActivityDate]:e(le.BrowserStorageLastActivityDate),[le.Location]:e(le.Location),[le.NewVisitor]:e(le.NewVisitor),[le.VisitUrlPath]:e(le.VisitUrlPath),[le.HasUserVisitPage]:e(le.HasUserVisitPage),[le.Events]:e(le.Events)}}}function ve(e,t,i){const r=Me.debugObject;Me.debugObject={...r,data:{...null==r?void 0:r.data,[e]:t}},sessionStorage.setItem(e,i||String(t))}function pe(e){var t,i;return null==(i=null==(t=Me.debugObject)?void 0:t.data)?void 0:i[e]}function he(e,t){return Me.isDebug?t:e}(de=ue||(ue={}))["PageVisit"]="visit",de["Popup"]="popup",de["ViewItem"]="view_item",de["ViewCategory"]="view_category",de["WishlistItem"]="wishlist_item",de["LikeItem"]="like_item",de["UnlikeItem"]="unlike_item",de["OrderPlaced"]="order_placed",de["Cart"]="cart_update",void(de["ShopifyAbandonedCart"]="shopify_webhook_abandoned_cart");let we=class extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype),this.name=this.constructor.name}};class me extends we{constructor(e){super(e)}}const fe={cartToken:"string",urlToken:"string",visitorEmail:"string"},ye=["cartToken","urlToken"];var Se,be,Ee,Ie,Ce,Te,De,Pe,ke,Ve,_e,Ue,Ae,xe;(xe=Se||(Se={}))["Inline"]="inline",void(xe["Popup"]="popup"),(Ae=be||(be={}))["Hq"]="Hq",void(Ae["Us"]="Us"),void((Ee||(Ee={}))["UserAid"]="X-Aid"),(Ue=Ie||(Ie={}))[Ue["OneSecond"]=1e3]="OneSecond",Ue[Ue["OneMinute"]=6e4]="OneMinute",Ue[Ue["OneHour"]=36e5]="OneHour",Ue[Ue["OneDay"]=864e5]="OneDay",void(Ue[Ue["OneWeek"]=6048e5]="OneWeek"),(_e=Ce||(Ce={}))["Active"]="active",void(_e["Inactive"]="inactive"),(Ve=Te||(Te={}))["EveryTime"]="everyTime",void(Ve["OnceEveryAmountTime"]="onceEveryAmountTime"),void((De||(De={}))["RemoveLastTransitionNodeEnter"]="removeLastTransitionNodeEnter"),(ke=Pe||(Pe={}))["ReactSendWebPush"]="react_web_webpush",ke["ReactCollectWebPushConsent"]="react_web_collect_webpush_subscription",ke["ReactShowPopup"]="react_web_popup",ke["FilterWebUrl"]="filter_web_url",ke["FilterWebSubscribers"]="filter_web_subscriber",ke["FilterLocation"]="filter_web_geolocation",ke["FilterDevice"]="filter_web_device",ke["FilterReturningVisitor"]="filter_web_returning_visitor",ke["ConditionProductViewed"]="await_web_view_item_event",ke["ConditionCategoryViewed"]="await_web_view_category_event",ke["ConditionWebPushConsent"]="await_web_webpush_subscribe",ke["ConditionProductLiked"]="await_web_like_item_event",ke["ConditionWebAction"]="await_web_action",ke["TransferToBackend"]="react_backend_transfer",ke["AwaitScroll"]="await_scroll",void(ke["ShowPopup"]="react_popup"),n=new WeakMap;const Le=new class{constructor(){z(this,n,{[ue.LikeItem]:[],[ue.OrderPlaced]:[],[ue.UnlikeItem]:[],[ue.ViewCategory]:[],[ue.ViewItem]:[],[ue.WishlistItem]:[],[ue.PageVisit]:[],[ue.Popup]:[],[ue.Cart]:[]})}getEvents(e){return Promise.resolve(M(this,n)[e])}getAllEvents(){return Promise.resolve(Object.values(M(this,n)).flat(1))}getAllECommerceEvents(){return Promise.resolve([...M(this,n)[ue.ViewItem],...M(this,n)[ue.ViewCategory],...M(this,n)[ue.LikeItem],...M(this,n)[ue.UnlikeItem],...M(this,n)[ue.WishlistItem],...M(this,n)[ue.OrderPlaced],...M(this,n)[ue.Cart]])}getAllPopupEvents(){return Promise.resolve([...M(this,n)[ue.Popup]])}saveEvent(e){return M(this,n)[e.eventType].push(e),Promise.resolve()}};var Oe=(e=>(e["v2"]="v2",e["af"]="af",e["wp"]="wp",e["we"]="we",e["ec"]="ec",e))(Oe||{}),Ne=(e=>(e["v2"]="GRV2",e["af"]="GRAF",e["wp"]="GRWP",e["we"]="GRWE",e["ec"]="GREC",e))(Ne||{});const Be={[Oe.af]:"autoFunnel",[Oe.ec]:"ecommerce",[Oe.v2]:"tracking",[Oe.we]:"webEvents",[Oe.wp]:"webPush"};s=new WeakSet,o=e=>Be[e];const Fe=new class{constructor(){z(this,s)}setScriptInitialized(e){const t=G(this,s,o).call(this,e);window.__grIntegrationConfig[t].isModuleInitialized=true}isScriptInitialized(e){var t,i;const r=G(this,s,o).call(this,e);return(null==(i=null==(t=null==window?void 0:window.__grIntegrationConfig)?void 0:t[r])?void 0:i.isModuleInitialized)??false}};var We=(e=>(e["visitorUuid"]="gaVisitorUuid",e["visitorValuable"]="gaIsValuable",e["VisitorEmail"]="gaVisitorEId",e["VisitorResubscribed"]="gaVisitorResubscribed",e["NotificationConsentAcceptedFromPrompt"]="gaWpnConAcc",e["NotificationConsentCustomPromptRejectedDEPRECATED"]="gaWpnConRej-{promptId}",e["NotificationConsentCustomPromptRejected"]="gaWpnConRej-promptId",e))(We||{}),Re=(e=>(e[e["OneYear"]=31536e6]="OneYear",e[e["TwoWeeks"]=12096e5]="TwoWeeks",e[e["ThreeMonths"]=7776e6]="ThreeMonths",e))(Re||{});const $e=new class{constructor(){this.timer=Date.now()}getCurrentVisitOnPageTime(){return Date.now()-this.timer}resetTimer(){this.timer=Date.now()}};a=new WeakMap,c=new WeakMap,u=new WeakMap,d=new WeakSet,l=function(){if(!M(this,a))window.history.pushState=new Proxy(window.history.pushState,{apply:(e,t,i)=>{const r=e.apply(t,i);for(const s of Array.from(M(this,c)))try{s.apply(t,i)}catch(n){K.error("Push state callback error",n)}return r}}),window.history.replaceState=new Proxy(window.history.replaceState,{apply:(e,t,i)=>{const r=e.apply(t,i);for(const s of Array.from(M(this,u)))try{s.apply(t,i)}catch(n){K.error("Replace state callback error",n)}return r}}),J(this,a,true)};const je=new class{constructor(){z(this,d),z(this,a,false),z(this,c,new Set),z(this,u,new Set)}init(){G(this,d,l).call(this)}onPushState(e,t={}){var i;if(!(null==(i=t.signal)?void 0:i.aborted))if(M(this,c).add(e),t.signal)t.signal.addEventListener("abort",(()=>{this.removePushStateListener(e)}),{once:true})}onReplaceState(e,t={}){var i;if(!(null==(i=t.signal)?void 0:i.aborted))if(M(this,u).add(e),t.signal)t.signal.addEventListener("abort",(()=>{this.removeReplaceStateListener(e)}),{once:true})}removePushStateListener(e){M(this,c).delete(e)}removeReplaceStateListener(e){M(this,u).delete(e)}};je.init();const Me=new class{constructor(){this.scriptModuleManager=Fe}initialize(e){const{xsid:t,grid:i,clientLatestGrid:r,domain:n,aid:s,useNOStorage:o,useBetterSubscriberIdentification:a,isServedFromCustomDomain:c,scriptsDomain:u,scriptsVersion:d,tracking:l,isDebugMode:g,uuuid:v}=e;if(g)X.startDebug();window.__grIntegrationConfig=window.__grIntegrationConfig||{cData:{aid:s,grid:i,domain:n,useNOStorage:o,useBetterSubscriberIdentification:a,isServedFromCustomDomain:c,clientLatestGrid:r,uuuid:v},visitor:{email:null,eComId:null,xsid:t},tracking:{isModuleInitialized:false,isEnabled:l},webEvents:{isModuleInitialized:false,visitorApplicationEndpoint:null,automationJourneyGraphs:{},webPushActivePromptGraph:null,popupGraphs:{}},webPush:{isModuleInitialized:false,customSwPath:null,wpid:null,pushDomain:null,promptEndpoint:null},analyticsData:{scriptsDomain:u,scriptsVersion:d},ecommerce:{isModuleInitialized:false},autoFunnel:{isModuleInitialized:false},eventBus:ce,temporaryEventsStorage:Le,vts:$e,phs:je,debug:g?ge():void 0,delayedScripts:{},scriptTypesInitialized:new Set}}canUseBackendForSubscriberIdentification(){return window.__grIntegrationConfig.cData.useBetterSubscriberIdentification}getUserAid(){return window.__grIntegrationConfig.cData.aid}getClientLatestGrid(){return window.__grIntegrationConfig.cData.clientLatestGrid}getVisitorUuid(){return Y(We.visitorUuid)}getUserAnalyticsDomain(){return window.__grIntegrationConfig.cData.domain}getUserUuid(){return window.__grIntegrationConfig.cData.uuuid}enablePopupDevMode(){window.__grIntegrationConfig.setCustomPopupRendererUrl=e=>{window.sessionStorage.setItem(oe.PopupsRendererCustomUrl,e)}}getPopupRendererCustomUrl(){return window.sessionStorage.getItem(oe.PopupsRendererCustomUrl)}setCustomSwPath(e){if("string"!=typeof e)throw new Error("Path type must be string");if(!e.match(/gr_sw_main.js|service-worker\/service-worker.js$/))throw new Error("Invalid sw file name");window.__grIntegrationConfig.webPush.customSwPath=e}getCustomSwPath(){var e;return null==(e=window.__grIntegrationConfig)?void 0:e.webPush.customSwPath}isTrackingEnabled(){return window.__grIntegrationConfig.tracking.isEnabled}isTrackingScriptServedFromCustomDomain(){return window.__grIntegrationConfig.cData.isServedFromCustomDomain}set visitorEmail(e){window.__grIntegrationConfig.visitor.email=e}get visitorEmail(){return window.__grIntegrationConfig.visitor.email}get pushWpid(){return window.__grIntegrationConfig.webPush.wpid}set pushWpid(e){window.__grIntegrationConfig.webPush.wpid=e}set pushDomain(e){window.__grIntegrationConfig.webPush.pushDomain=e}get pushDomain(){return window.__grIntegrationConfig.webPush.pushDomain}set pushPromptEndpoint(e){window.__grIntegrationConfig.webPush.promptEndpoint=e}get pushPromptEndpoint(){return window.__grIntegrationConfig.webPush.promptEndpoint}get eventBus(){return window.__grIntegrationConfig.eventBus}get canUseBackendStorageForEvents(){return window.__grIntegrationConfig.cData.useNOStorage}get webConnectScriptCdnUrl(){return window.__grIntegrationConfig.analyticsData.scriptsDomain}get webConnectCurrentScriptsVersion(){return window.__grIntegrationConfig.analyticsData.scriptsVersion}get isDebug(){var e,t;return!!(null==(t=null==(e=window.__grIntegrationConfig)?void 0:e.debug)?void 0:t.enabled)}set debugObject(e){window.__grIntegrationConfig.debug=e}get debugObject(){var e;return null==(e=window.__grIntegrationConfig)?void 0:e.debug}get delayedScripts(){var e;return(null==(e=window.__grIntegrationConfig)?void 0:e.delayedScripts)||{}}set delayedScripts(e){window.__grIntegrationConfig.delayedScripts=e}set visitorApplicationEndpoint(e){window.__grIntegrationConfig.webEvents.visitorApplicationEndpoint=e}get visitorApplicationEndpoint(){return window.__grIntegrationConfig.webEvents.visitorApplicationEndpoint}get userEventsStorageApplicationUrl(){return window.__grIntegrationConfig.ecommerce.webEventsSearchApplicationEndpoint}set userEventsStorageApplicationUrl(e){window.__grIntegrationConfig.ecommerce.webEventsSearchApplicationEndpoint=e}get temporaryEventsStorage(){return window.__grIntegrationConfig.temporaryEventsStorage}get automationJourneyGraphs(){return window.__grIntegrationConfig.webEvents.automationJourneyGraphs}get webPushActivePromptGraph(){return window.__grIntegrationConfig.webEvents.webPushActivePromptGraph}set webPushActivePromptGraph(e){window.__grIntegrationConfig.webEvents.webPushActivePromptGraph=e}get popupGraphs(){return window.__grIntegrationConfig.webEvents.popupGraphs}get visitorXsid(){return window.__grIntegrationConfig.visitor.xsid}get visitorTimeService(){return window.__grIntegrationConfig.vts}get pageHistoryService(){return window.__grIntegrationConfig.phs}},ze=204;function Je(e,t){const i=e.isTextResponse??(null==t?void 0:t.isTextResponse);return fetch(e,{...t,headers:{...null==t?void 0:t.headers,...(null==t?void 0:t.omitAidHeader)?{}:{[Ee.UserAid]:Me.getUserAid()}}}).then((async e=>{if(e.ok){if(e.status===ze)return;return i?e.text():e.json()}const t=await e.text();return Promise.reject({statusCode:e.status,message:t})}))}const Ge=new class{retrieveXsid(){return Je(new URL("retrieveXsid",Me.getUserAnalyticsDomain()).href,{isTextResponse:true,omitAidHeader:true,credentials:"include"})}},He=Symbol("SessionService");class qe{constructor(e){if(new.target===qe&&e!==He)throw new Error(`Invalid ${new.target.name} constructor`)}hasUserVisitedPage(){return this.getSessionVisitData().count>1}saveUserVisit(){const e=this.getSessionVisitData()||{count:0};sessionStorage.setItem("gaUserPageSessionVisit",JSON.stringify({...e,count:e.count+1}))}getSessionVisitData(){return JSON.parse(sessionStorage.getItem("gaUserPageSessionVisit"))}}const Xe=new qe(He),Ke=Symbol("DebugSessionService");class Ye extends qe{constructor(e){if(super(),new.target===Ye&&e!==Ke)throw new Error(`Invalid ${new.target.name} constructor`)}hasUserVisitedPage(){const e=pe(le.HasUserVisitPage);if(void 0===e)return super.hasUserVisitedPage();else return e}setHasUserVisitedPage(e){ve(le.HasUserVisitPage,e)}}const Ze=new Ye(Ke);function Qe(){return he(Xe,Ze)}var et,tt,it,rt,nt,st,ot,at,ct,ut,dt,lt,gt,vt,pt,ht,wt,mt,ft,yt,St,bt,Et,It,Ct,Tt,Dt,Pt,kt,Vt,_t,Ut,At,xt,Lt,Ot,Nt,Bt,Ft,Wt;(Wt=et||(et={}))["ShowWhenCondition"]="showWhenCondition",Wt["VisitorsCondition"]="visitors",Wt["DeviceCondition"]="device",Wt["LocationCondition"]="location",Wt["ECommerceCondition"]="ecommerce",Wt["TriggerFrequency"]="frequency",Wt["PreventDisplay"]="preventDisplay",void(Wt["DateRange"]="dateRange"),(Ft=tt||(tt={}))["Mobile"]="mobile",Ft["Tablet"]="tablet",void(Ft["Desktop"]="desktop"),(Bt=it||(it={}))["All"]="all",Bt["New"]="new",void(Bt["Returning"]="returning"),void((rt||(rt={}))["All"]="all"),(Nt=nt||(nt={}))["ConditionsLogicSeparator"]="conditionsLogicSeparator",void(Nt["ECommerceConditions"]="ecommerceConditions"),(Ot=st||(st={}))["Amount"]="amount",void(Ot["Date"]="date"),(Lt=ot||(ot={}))["And"]="and",void(Lt["Or"]="or"),(xt=at||(at={}))["Exactly"]="exactly",xt["LessThan"]="lessThan",void(xt["MoreThan"]="moreThan"),(At=ct||(ct={}))["LastDays"]="lastDays",void(At["DateRange"]="dateRange"),(Ut=ut||(ut={}))["AnyProduct"]="any",Ut["AnyCategory"]="any",Ut["AnyProductLiked"]="any",Ut["AnyProductInPlacedOrder"]="any",Ut["AnyCategoryInPlacedOrder"]="any",Ut["AnyProductInUpdatedCart"]="any",void(Ut["AnyCategoryInUpdatedCart"]="any"),(_t=dt||(dt={}))["PastEvents"]="filter",void(_t["FutureEvents"]="await"),(Vt=lt||(lt={}))["Category"]="category",void(Vt["Product"]="product"),void((gt||(gt={}))["Product"]="product"),(kt=vt||(vt={}))["ViewProductOrCategory"]="productOrCategoryView",kt["LikeProduct"]="likeItem",kt["OrderPlaced"]="orderPlaced",void(kt["CartUpdated"]="cartUpdated"),(Pt=pt||(pt={}))["Percent"]="percent",void(Pt["Selector"]="selector"),(Dt=ht||(ht={}))["Instantly"]="instantly",Dt["Delay"]="delay",Dt["Exit"]="exit",Dt["Scroll"]="scroll",Dt["Inactivity"]="inactivity",void(Dt["Click"]="click"),(Tt=wt||(wt={}))["AfterSubmit"]="submit",Tt["AfterClose"]="close",void(Tt["AfterTimes"]="timesAmount"),(Ct=mt||(mt={}))["Always"]="always",Ct["Session"]="session",void(Ct["EveryDays"]="everyDays"),(It=ft||(ft={}))["Exactly"]="equal",It["LessThan"]="lessThan",void(It["MoreThan"]="moreThan"),(Et=yt||(yt={}))["Exactly"]="equal",Et["LessThan"]="lessThan",void(Et["MoreThan"]="moreThan"),(bt=St||(St={}))[bt["InvalidCssSelector"]=1]="InvalidCssSelector",bt[bt["EmptyCssSelector"]=2]="EmptyCssSelector",bt[bt["CssSelectorTooLong"]=3]="CssSelectorTooLong",bt[bt["CssInvalidType"]=4]="CssInvalidType",bt[bt["InvalidTimeoutProperty"]=5]="InvalidTimeoutProperty",bt[bt["ShowWhenScrollPercentInvalidValueType"]=6]="ShowWhenScrollPercentInvalidValueType",bt[bt["ShowWhenScrollPercentValueOutOfBound"]=7]="ShowWhenScrollPercentValueOutOfBound",bt[bt["VisitorTriggerEmpty"]=8]="VisitorTriggerEmpty",bt[bt["VisitorTriggerInvalidProperty"]=9]="VisitorTriggerInvalidProperty",bt[bt["DevicesTriggerEmpty"]=10]="DevicesTriggerEmpty",bt[bt["DevicesTriggerInvalidValue"]=11]="DevicesTriggerInvalidValue",bt[bt["FrequencyEmptyTrigger"]=12]="FrequencyEmptyTrigger",bt[bt["FrequencyTriggerInvalidName"]=13]="FrequencyTriggerInvalidName",bt[bt["FrequencyTriggerNDaysInvalidPropertyValue"]=14]="FrequencyTriggerNDaysInvalidPropertyValue",bt[bt["FrequencyTriggerNDaysEmptyValue"]=15]="FrequencyTriggerNDaysEmptyValue",bt[bt["PreventDisplayTriggerInvalidName"]=16]="PreventDisplayTriggerInvalidName",bt[bt["PreventDisplayTriggerAfterTimesNoValue"]=17]="PreventDisplayTriggerAfterTimesNoValue",bt[bt["PreventDisplayTriggerAfterTimesInvalidValue"]=18]="PreventDisplayTriggerAfterTimesInvalidValue",bt[bt["DateRangeInvalidFromDate"]=19]="DateRangeInvalidFromDate",bt[bt["DateRangeInvalidToDate"]=20]="DateRangeInvalidToDate",bt[bt["DateRangeDateFromAfterDateTo"]=21]="DateRangeDateFromAfterDateTo",bt[bt["LocationEmptyTrigger"]=22]="LocationEmptyTrigger",bt[bt["LocationInvalidType"]=23]="LocationInvalidType",bt[bt["LackOfLogicSeparator"]=24]="LackOfLogicSeparator",bt[bt["LackOfTriggerConditions"]=25]="LackOfTriggerConditions",bt[bt["InvalidTriggerConditions"]=26]="InvalidTriggerConditions",bt[bt["NoProductOrCategorySelected"]=27]="NoProductOrCategorySelected",bt[bt["ProductInvalidType"]=28]="ProductInvalidType",bt[bt["CategoryInvalidType"]=29]="CategoryInvalidType",bt[bt["AmountInvalidConditionName"]=30]="AmountInvalidConditionName",bt[bt["AmountInvalidConditionValueType"]=31]="AmountInvalidConditionValueType",bt[bt["DateInvalidConditionName"]=32]="DateInvalidConditionName",bt[bt["DateLastDaysInvalidConditionValue"]=33]="DateLastDaysInvalidConditionValue",bt[bt["DateDateRangeInvalidConditionValue"]=34]="DateDateRangeInvalidConditionValue",bt[bt["DateDateRangeFromInvalidValue"]=35]="DateDateRangeFromInvalidValue",bt[bt["DateDateRangeToInvalidValue"]=36]="DateDateRangeToInvalidValue",bt[bt["DateDateRangeDateFromAfterDateTo"]=37]="DateDateRangeDateFromAfterDateTo",bt[bt["PopupTriggerInvalidName"]=38]="PopupTriggerInvalidName",bt[bt["PopupTriggerLackOfValuesInLikeItemTrigger"]=39]="PopupTriggerLackOfValuesInLikeItemTrigger",bt[bt["PopupTriggerLikeItemInvalidValues"]=40]="PopupTriggerLikeItemInvalidValues",bt[bt["PopupTriggerOrderPlacedNoConditions"]=41]="PopupTriggerOrderPlacedNoConditions",bt[bt["PopupTriggerOrderPlacedInvalidProducts"]=42]="PopupTriggerOrderPlacedInvalidProducts",bt[bt["PopupTriggerOrderPlacedInvalidCategories"]=43]="PopupTriggerOrderPlacedInvalidCategories",bt[bt["PopupTriggerCartUpdatedNoConditions"]=44]="PopupTriggerCartUpdatedNoConditions",bt[bt["PopupTriggerCartUpdatedInvalidProducts"]=45]="PopupTriggerCartUpdatedInvalidProducts",bt[bt["PopupTriggerCartUpdatedInvalidCategories"]=46]="PopupTriggerCartUpdatedInvalidCategories",bt[bt["PopupTriggerPriceValueConditionInvalidComparator"]=47]="PopupTriggerPriceValueConditionInvalidComparator",bt[bt["PopupTriggerPriceValueConditionInvalidValue"]=48]="PopupTriggerPriceValueConditionInvalidValue",bt[bt["PopupTriggerProductsAmountValueConditionInvalidComparator"]=49]="PopupTriggerProductsAmountValueConditionInvalidComparator",bt[bt["PopupTriggerProductsAmountValueConditionInvalidValue"]=50]="PopupTriggerProductsAmountValueConditionInvalidValue",void(bt[bt["PopupTriggerInvalidTriggerType"]=51]="PopupTriggerInvalidTriggerType");var Rt=(e=>(e[e["Mobile"]=768]="Mobile",e[e["Tablet"]=1023]="Tablet",e))(Rt||{});const $t=Symbol("DeviceService");g=new WeakSet,v=()=>window.matchMedia("(any-pointer: coarse)").matches&&navigator.maxTouchPoints>0,p=new WeakSet,h=()=>window.matchMedia("(pointer: coarse)").matches&&navigator.maxTouchPoints>0;let jt=class e{constructor(t){if(z(this,g),z(this,p),new.target===e&&t!==$t)throw new Error(`Invalid ${new.target.name} constructor`)}detectDeviceTypeByScreenWidth(e){var t;const{availWidth:i,availHeight:r}=screen;let n=null==(t=screen.orientation)?void 0:t.type;if(!n)n=window.matchMedia("(orientation: landscape)").matches?"landscape":"portrait";const s=n.match(/landscape/)?r:i;if(Rt.Mobile>=s)return tt.Mobile;else if(s>Rt.Mobile&&Rt.Tablet>=s)return tt.Tablet;return e?tt.Tablet:tt.Desktop}isDesktopDevice(){return this.getDeviceType()===tt.Desktop}getDeviceType(){var e,t;const{userAgentData:i}=window.navigator;if(i){if(i.mobile)return tt.Mobile;else if((null==(e=i.platform)?void 0:e.toLowerCase().includes("android"))||(null==(t=i.platform)?void 0:t.toLowerCase().includes("ipad")))return tt.Tablet;else if(M(this,p,h))return tt.Tablet}else if(M(this,p,h))return this.detectDeviceTypeByScreenWidth(true);else if(M(this,g,v))return this.detectDeviceTypeByScreenWidth();return tt.Desktop}getBrowserLanguage(){const{language:e}=window.navigator;if(e.match(/\w{2}-\w{2}/))return e.split("-")[0].toLowerCase();else return e.toLowerCase()}getUserOs(){const{userAgentData:e}=window.navigator;if(e)return e.platform.toLowerCase();else return this.getOsFromUserAgent()}getOsFromUserAgent(){let e="unknown";const{userAgent:t}=navigator,i=t.toLowerCase();if(i.includes("win"))e="windows";if(i.includes("mac"))e="macos";if(i.includes("x11"))e="unix";if(i.includes("linux"))e="Linux";if(i.includes("android"))e="android";if(/iphone|ipad|ipod/.test(i))e="ios";return e}};const Mt=new jt($t),zt=Symbol("DebugDeviceService");class Jt extends jt{constructor(e){if(super(),new.target===Jt&&e!==zt)throw new Error(`Invalid ${new.target.name} constructor`)}getDeviceType(){const e=pe(le.DeviceType);if(!e)return super.getDeviceType();if(!Object.values(tt).includes(e))return K.error("Incorrect debug device type. Check if device is correct. Instead of that we will use normal values"),super.getDeviceType();else return e}setDeviceType(e){ve(le.DeviceType,e)}}const Gt=new Jt(zt),Ht=Symbol("LocationService");w=new WeakMap;let qt=class e{constructor(t){if(z(this,w,null),new.target===e&&t!==Ht)throw new Error(`Invalid ${new.target.name} constructor`)}async getVisitorCountryCode(){const{domain:e}=window.__grIntegrationConfig.cData;if(!M(this,w))J(this,w,await fetch(`${e}web-user-data/country`).then((e=>e.text())));return M(this,w)}};const Xt=new qt(Ht),Kt=Symbol("DebugLocationService");class Yt extends qt{constructor(e){if(super(),new.target===Yt&&e!==Kt)throw new Error(`Invalid ${new.target.name} constructor`)}getVisitorCountryCode(){const e=pe(le.Location);if(!e)return super.getVisitorCountryCode();else return Promise.resolve(e)}setVisitorCountryCode(e){if("string"!=typeof e)return K.error("Incorrect debug country code value"),null;ve(le.Location,e)}}const Zt=new Yt(Kt);class Qt{static sendJSON(e,t,i=true){const r=i?JSON.stringify({...JSON.parse(t),[Ee.UserAid]:Me.getUserAid()}):t;navigator.sendBeacon(e,new Blob([r],{type:"application/json"}))}}var ei=(e=>(e["Show"]="show",e["Close"]="close",e["Submit"]="submit",e))(ei||{}),ti=(e=>(e["One"]="1.0",e))(ti||{}),ii=(e=>(e["Web"]="web",e["Mobile"]="mobile",e))(ii||{});const ri=[ue.OrderPlaced,ue.Cart,ue.LikeItem,ue.UnlikeItem,ue.WishlistItem,ue.ViewItem,ue.ViewCategory],ni=[ue.Cart,ue.LikeItem,ue.UnlikeItem,ue.OrderPlaced,ue.ViewCategory,ue.ViewItem];m=new WeakSet,f=()=>new URL(`u/${Me.getUserUuid()}/e/${ii.Web}/handle/`,Me.userEventsStorageApplicationUrl).href;const si=new class{constructor(){z(this,m)}async addPopupEventToStorage(e){throw new Error("Not implemented")}async getPopupActivityData(e){throw new Error("Not implemented")}async saveEventsToStorage(e){if(Me.userEventsStorageApplicationUrl&&Me.getUserUuid()){const t=e.filter((e=>ri.includes(e.event.name)));if(t.length>0)Qt.sendJSON(G(this,m,f).call(this),JSON.stringify(t),false)}else K.error("Attempt to send web events to search was made without search application endpoint or uuuid!")}async sendEventsToMetricsInc(e){const t=e.filter((e=>ni.includes(e.event.name)));if(t.length>0){const e=JSON.stringify({events:t.map((e=>({eventType:e.event.name}))),url:window.location.origin}),i=new URL("/a/ue",Me.getUserAnalyticsDomain()).href;Qt.sendJSON(i,e)}}},oi=new class{encodeEmail(e){return btoa(e)}decode(e){return atob(e)}isEncodedString(e){try{return atob(e),true}catch{return false}}validateEmail(e){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(e)}};class ai extends Error{constructor(e){super(e)}static create(...[e,t]){switch(e){case"email":return new ai(`Provided string ${t} is not valid email address`);default:void K.error(`Unsupported value: ${e}`)}}}class ci{constructor({e}={}){if(e)this.e=oi.encodeEmail(e)}static createFromContextData(e){try{if(oi.isEncodedString(e.e))e.e=oi.decode(e.e);return ci.validate(e),new ci(e)}catch(t){if(t instanceof ai)return K.error(t),ci.createBlank();throw t}}static createBlank(){return new ci}static validate(e){if("e"in e&&!oi.validateEmail(e.e))throw ai.create("email",e.e)}toJSON(){return{...this}}}class ui{constructor(e){z(this,y,void 0),this.eventType=e,J(this,y,null),this.eventId=null,this.aid=Me.getUserAid(),this.grid=Me.getClientLatestGrid(),this.time=Me.visitorTimeService.getCurrentVisitOnPageTime(),this.context=ci.createBlank(),this.uuid=Me.getVisitorUuid(),this.url=window.location.href,this.occurredOn=new Date,this.tags=[]}get externalUid(){return M(this,y)}toJSON(){return{eventId:this.eventId,aid:this.aid,grid:this.aid,uuid:this.uuid,externalUid:this.externalUid,context:this.context.toJSON(),time:this.time,url:this.url,tags:this.tags,eventType:this.eventType,occurredOn:this.occurredOn.toUTCString()}}toString({normalized:e}={}){if(e)return JSON.stringify(this.normalizeForExternalStorage());else return JSON.stringify(this.toJSON())}normalize(){const{eventId:e,...t}=this.toJSON();return t}getBaseNormalizedEvent(){return{version:ti.One,user_uuid:Me.getUserUuid(),time:this.time,tags:this.tags,occurred_on:this.occurredOn.toISOString(),url:this.url,app:{lang:Mt.getBrowserLanguage(),device:Mt.getDeviceType(),os:Mt.getUserOs()},channel:ii.Web,visitor:{uuid:this.uuid,external_id:this.externalUid,xsid:Me.visitorXsid}}}}y=new WeakMap;class di extends ui{constructor(e,t,i=ci.createBlank()){super(ue.Popup),this.popupEvent=e,this.popupId=t,this.context=i}toJSON(){return{...super.toJSON(),popupId:this.popupId,popupEvent:this.popupEvent}}normalizeForExternalStorage(){return{...this.getBaseNormalizedEvent(),event:{version:"1.0",name:ue.Popup}}}}class li extends ui{toJSON(){return{...super.toJSON(),data:this.data}}normalizeForExternalStorage(){const e=this.getBaseNormalizedEvent();return{...e,event:{version:this.eventVersion,name:this.eventType,data:this.data},visitor:{uuid:e.visitor.uuid,external_id:e.visitor.external_id}}}}class gi extends ui{constructor(e){super(ue.ShopifyAbandonedCart),this.data=e}toJSON(){return{...super.toJSON(),data:this.data}}normalizeForExternalStorage(){return{...this.getBaseNormalizedEvent(),event:{version:"1.0",name:ue.ShopifyAbandonedCart,data:this.data}}}}const vi=class e{constructor(e){z(this,S,void 0),J(this,S,e)}static create(t){return new e(t)}validate(e){return Object.entries(M(this,S)).reduce(((t,[i,r])=>{if(false===t)return t;if(null==e[i]&&r._isOptional)return t;else return r.call(e,e[i])}),true)}stringifySchemaShape(){var t;return G(t=e,b,E).call(t,M(this,S))}trim(e,t=M(this,S)){var i;const r={};for(const[n,s]of Object.entries(e))if("object"==typeof s&&null!==s){if(n in t){const e=null==(i=t[n])?void 0:i.valueShape;if(Array.isArray(s))if(e)r[n]=s.map((t=>this.trim(t,e)));else r[n]=s;else r[n]=this.trim(s,e)}}else if(n in t)r[n]=s;return r}static string(){return hi((e=>"string"==typeof e),(()=>"string"))}static number(){return hi((e=>"number"==typeof e),(()=>"number"))}static boolean(){return hi((e=>"boolean"==typeof e),(()=>"boolean"))}static dateString(){return hi((e=>{if("string"!=typeof e)return false;else return!Number.isNaN(new Date(e).getTime())}),(()=>"date string"))}static object(t){return hi((i=>{if(!t||"object"!=typeof t)return false;else return e.create(t).validate(i)}),(()=>G(this,b,E).call(this,t)),t)}static array(t){return hi((i=>{if(!Array.isArray(i))return false;if("function"==typeof t)return i.every((e=>t(e)));const r=e.create(t);return i.every((e=>r.validate(e)))}),(()=>`[${G(this,b,E).call(this,t)}]`),"function"==typeof t?void 0:t)}};S=new WeakMap,b=new WeakSet,E=e=>{const t={};if("function"==typeof e)return e.getValueType();else for(const[i,r]of Object.entries(e))t[i]=r.getValueType();try{return JSON.stringify(t).replaceAll('\\"','"')}catch{return"Failed to parse validation shape"}},z(vi,b);let pi=vi;function hi(e,t,i){if(e.optional=()=>(e._isOptional=true,e),e.getValueType=t,i)e.valueShape=i;return e}const wi={id:pi.string(),sku:pi.string().optional(),name:pi.string().optional(),vendor:pi.string().optional(),price:pi.string().optional(),currency:pi.string().optional()},mi=pi.array({id:pi.string(),name:pi.string().optional()}).optional(),fi={id:pi.string()},yi={shop:pi.object({...fi}).optional(),product:pi.object({...wi}),categories:mi},Si={product:pi.object({...wi}),categories:mi,quantity:pi.number()},bi=pi.create({...yi}),Ei=pi.create({shop:pi.object({...fi}).optional(),id:pi.string(),name:pi.string().optional()}),Ii=pi.create({...yi}),Ci=pi.create({...yi}),Ti=pi.create({...yi}),Di=pi.create({orderId:pi.string(),cartId:pi.string().optional(),price:pi.number(),currency:pi.string(),products:pi.array(Si)}),Pi=pi.create({price:pi.number(),cartId:pi.string(),cartUrl:pi.string(),currency:pi.string(),products:pi.array(Si)});class ki extends Error{constructor(e){super(`Data doesn't match required schema: ${e}`)}}class Vi extends ui{constructor(e=ci.createBlank()){super(ue.PageVisit),this.context=e}normalizeForExternalStorage(){return{...this.getBaseNormalizedEvent(),event:{version:"1.0",name:this.eventType}}}}const _i={[ue.ViewItem]:bi,[ue.ViewCategory]:Ei,[ue.WishlistItem]:Ii,[ue.LikeItem]:Ci,[ue.UnlikeItem]:Ti,[ue.OrderPlaced]:Di,[ue.Cart]:Pi},Ui={[ue.ViewItem]:class extends li{constructor(e,t){super(ue.ViewItem),this.data=e,this.context=t,this.eventVersion="1.0"}normalizeForExternalStorage(){const e=super.normalizeForExternalStorage();return e.event.data.product.price=parseFloat(e.event.data.product.price),e.time=Me.visitorTimeService.getCurrentVisitOnPageTime(),e}},[ue.ViewCategory]:class extends li{constructor(e,t){super(ue.ViewCategory),this.data=e,this.context=t,this.eventVersion="1.0"}normalizeForExternalStorage(){const e=super.normalizeForExternalStorage();return e.time=Me.visitorTimeService.getCurrentVisitOnPageTime(),e}},[ue.WishlistItem]:class extends li{constructor(e,t){super(ue.WishlistItem),this.data=e,this.context=t,this.eventVersion="1.0"}},[ue.LikeItem]:class extends li{constructor(e,t){super(ue.LikeItem),this.data=e,this.context=t,this.eventVersion="1.0"}normalizeForExternalStorage(){const e=super.normalizeForExternalStorage();return e.event.data.product.price=parseFloat(e.event.data.product.price),e}},[ue.UnlikeItem]:class extends li{constructor(e,t){super(ue.UnlikeItem),this.data=e,this.context=t,this.eventVersion="1.0"}normalizeForExternalStorage(){const e=super.normalizeForExternalStorage();return e.event.data.product.price=parseFloat(e.event.data.product.price),e}},[ue.OrderPlaced]:class extends li{constructor(e,t){super(ue.OrderPlaced),this.data=e,this.context=t,this.eventVersion="1.0"}normalizeForExternalStorage(){const e=super.normalizeForExternalStorage();return e.event.data.products=e.event.data.products.map((e=>({...e,product:{...e.product,price:parseFloat(e.product.price)}}))),e}},[ue.Cart]:class extends li{constructor(e,t){super(ue.Cart),this.data=e,this.context=t,this.eventVersion="1.0"}normalizeForExternalStorage(){const e=super.normalizeForExternalStorage();return e.event.data.products=e.event.data.products.map((e=>({...e,product:{...e.product,price:parseFloat(e.product.price)}}))),e}}},Ai=class e{static getPageVisitEvent(){return new Vi}static getPopupEvent({popupId:e,popupEventName:t}){return new di(t,e)}static getPopupSubmitEvent(e){return new di(ei.Submit,e)}static getPopupShowEvent(e){return new di(ei.Show,e)}static getPopupCloseEvent(e){return new di(ei.Close,e)}static getViewItemEvent(t,i){var r;return G(r=e,I,C).call(r,ue.ViewItem,t,i)}static getWishlistItemEvent(t,i){var r;return G(r=e,I,C).call(r,ue.WishlistItem,t,i)}static getLikeItemEvent(t,i){var r;return G(r=e,I,C).call(r,ue.LikeItem,t,i)}static getUnlikeItemEvent(t,i){var r;return G(r=e,I,C).call(r,ue.UnlikeItem,t,i)}static getViewCategoryEvent(t,i){var r;return G(r=e,I,C).call(r,ue.ViewCategory,t,i)}static getOrderPlacedEvent(t,i){var r;return G(r=e,I,C).call(r,ue.OrderPlaced,t,i)}static getCartUpdateEvent(t,i){var r;return G(r=e,I,C).call(r,ue.Cart,t,i)}static getShopifyIntegrationAbandonedCartEvent(e){try{return(e=>{if("object"!=typeof e||null===e)throw new me("Invalid data parameter type");else{const t=Object.entries(fe),i=Object.keys(e);if(!ye.every((e=>i.includes(e))))throw new me("Lack of required parameters");if(!t.every((([t,i])=>!e[t]||typeof e[t]===i)))throw new me("Properties have invalid type")}return true})(e),new gi((t=e,i=Object.keys(fe),Object.entries(t).reduce(((e,[t,r])=>{if(i.includes(t))e[t]=r;return e}),{})))}catch(r){return K.error(r),null}var t,i}};I=new WeakSet,C=(e,t,i)=>{const r=_i[e],n=Ui[e];if(!r||!n)throw new Error("Event type not supported in event factory");if(!r.validate(t))throw new ki(r.stringifySchemaShape());return new n(r.trim(t),i)},z(Ai,I);let xi=Ai;var Li=(e=>(e["Events"]="gr_webconnect",e["VisitorJourneys"]="gr_visitor_journeys",e["ServiceWorkerCallbacks"]="gr_sw_callbacks",e))(Li||{});const Oi={gr_webconnect:1,gr_visitor_journeys:2,gr_sw_callbacks:1};var Ni=(e=>(e["UserActivityEvents"]="user_activity_events",e))(Ni||{}),Bi=(e=>(e["EventType"]="eventType",e["VisitorUuid"]="visitorUuid",e["EventTypeWithVisitor"]="eventType, visitorUuid",e))(Bi||{});let Fi,Wi;const Ri=new WeakMap,$i=new WeakMap,ji=new WeakMap,Mi=new WeakMap,zi=new WeakMap;let Ji={get(e,t,i){if(e instanceof IDBTransaction){if("done"===t)return $i.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ji.get(e);if("store"===t)return i.objectStoreNames[1]?void 0:i.objectStore(i.objectStoreNames[0])}return Hi(e[t])},set:(e,t,i)=>(e[t]=i,true),has(e,t){if(e instanceof IDBTransaction&&("done"===t||"store"===t))return true;else return t in e}};function Gi(e){if("function"==typeof e)return function(e){if(e===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype))return function(t,...i){const r=e.call(qi(this),t,...i);return ji.set(r,t.sort?t.sort():[t]),Hi(r)};if((Wi||(Wi=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e))return function(...t){return e.apply(qi(this),t),Hi(Ri.get(this))};else return function(...t){return Hi(e.apply(qi(this),t))}}(e);if(e instanceof IDBTransaction)!(e=>{if($i.has(e))return;const t=new Promise(((t,i)=>{const r=()=>{e.removeEventListener("complete",n),e.removeEventListener("error",s),e.removeEventListener("abort",s)},n=()=>{t(),r()},s=()=>{i(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",n),e.addEventListener("error",s),e.addEventListener("abort",s)}));$i.set(e,t)})(e);if(t=e,(Fi||(Fi=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((e=>t instanceof e)))return new Proxy(e,Ji);else return e;var t}function Hi(e){if(e instanceof IDBRequest)return(e=>{const t=new Promise(((t,i)=>{const r=()=>{e.removeEventListener("success",n),e.removeEventListener("error",s)},n=()=>{t(Hi(e.result)),r()},s=()=>{i(e.error),r()};e.addEventListener("success",n),e.addEventListener("error",s)}));return t.then((t=>{if(t instanceof IDBCursor)Ri.set(t,e)})).catch((()=>{})),zi.set(t,e),t})(e);if(Mi.has(e))return Mi.get(e);const t=Gi(e);if(t!==e)Mi.set(e,t),zi.set(t,e);return t}const qi=e=>zi.get(e),Xi=["get","getKey","getAll","getAllKeys","count"],Ki=["put","add","delete","clear"],Yi=new Map;function Zi(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t))return;if(Yi.get(t))return Yi.get(t);const i=t.replace(/FromIndex$/,""),r=t!==i,n=Ki.includes(i);if(!(i in(r?IDBIndex:IDBObjectStore).prototype)||!(n||Xi.includes(i)))return;const s=async function(e,...t){const s=this.transaction(e,n?"readwrite":"readonly");let o=s.store;if(r)o=o.index(t.shift());return(await Promise.all([o[i](...t),n&&s.done]))[0]};return Yi.set(t,s),s}var Qi;Qi=Ji,void(Ji={...Qi,get(e,t,i){return Zi(e,t)||Qi.get(e,t,i)},has(e,t){return!!Zi(e,t)||Qi.has(e,t)}});const er=new class{openEventsDatabaseConnection(e){return this.openConnection(Li.Events,Oi[Li.Events],e)}openAutomationJourneysDatabaseConnection(e){return this.openConnection(Li.VisitorJourneys,Oi[Li.VisitorJourneys],e)}openServiceWorkerCallbacksDatabaseConnection(e){return this.openConnection(Li.ServiceWorkerCallbacks,Oi[Li.ServiceWorkerCallbacks],e)}async openConnection(e,t,i){const r=await((e,t,{blocked:i,upgrade:r,blocking:n,terminated:s}={})=>{const o=indexedDB.open(e,t),a=Hi(o);if(r)o.addEventListener("upgradeneeded",(e=>{r(Hi(o.result),e.oldVersion,e.newVersion,Hi(o.transaction),e)}));if(i)o.addEventListener("blocked",(e=>i(e.oldVersion,e.newVersion,e)));return a.then((e=>{if(s)e.addEventListener("close",(()=>s()));if(n)e.addEventListener("versionchange",(e=>n(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a})(e,t,{blocked(e,t,i){K.error(`Connection to old db version: ${t} not closed. Version ${e} not available`,i)},upgrade(e,t,r){K.log(`New db version ${r} detected, upgrading from ${t}`),i(t,r,e)},terminated(){K.log("Closing db connection")},blocking(e,t,i){K.log(`Current connection od db version ${e} is blocking connection to version ${t}.`,i),r.close()}});return r}};er.openServiceWorkerCallbacksDatabaseConnection.bind(er),er.openAutomationJourneysDatabaseConnection.bind(er);const tr=Symbol("BrowserEventsStorageService");T=new WeakSet,D=(e,t,i)=>{!(e=>{if(!e.objectStoreNames.contains(Ni.UserActivityEvents))try{const t=e.createObjectStore(Ni.UserActivityEvents,{keyPath:"id",autoIncrement:true});t.createIndex(Bi.EventType,"eventType",{unique:false}),t.createIndex(Bi.VisitorUuid,"uuid",{unique:false}),t.createIndex(Bi.EventTypeWithVisitor,["eventType","uuid"])}catch(t){K.error("Error while initializing/upgrading database",t)}})(i)};let ir=class e{constructor(t){if(z(this,T),new.target===e&&t!==tr)throw new Error(`Invalid ${new.target.name} constructor`)}async saveEvent(e){const t=e instanceof ui?e.normalize():e;try{const e=(await er.openEventsDatabaseConnection(G(this,T,D))).transaction(Ni.UserActivityEvents,"readwrite"),i=e.objectStore(Ni.UserActivityEvents),r=await i.add(t);return await e.done,K.log(`Event with created id: ${r} saved to database`,t),r}catch(i){K.error("Error while saving event to database",i)}}async getEvents(e){const t=Y(We.visitorUuid);try{const i=(await er.openEventsDatabaseConnection(G(this,T,D))).transaction(Ni.UserActivityEvents,"readwrite"),r=i.objectStore(Ni.UserActivityEvents).index(Bi.EventTypeWithVisitor),n=await r.getAll([e,t]);return await i.done,n.map((e=>{const{id:t,...i}=e;return{...i,eventId:String(t)}}))}catch(i){K.error("Error while reading from database",i)}}async getEventById(e){const t=Y(We.visitorUuid);try{const i=(await er.openEventsDatabaseConnection(G(this,T,D))).transaction(Ni.UserActivityEvents,"readwrite"),r=i.objectStore(Ni.UserActivityEvents),n=await r.get(e);if(await i.done,n&&n.uuid===t)return{...n,eventId:String(e)};else return null}catch(i){K.error("Error while reading from database",i)}}async updateEvent(e,t){const i=(await er.openEventsDatabaseConnection(G(this,T,D))).transaction(Ni.UserActivityEvents,"readwrite").objectStore(Ni.UserActivityEvents),r=await i.get(e);if(r){const e=te(r,t);await i.put(e)}}async getPopupECommerceEvents(e){const t=Y(We.visitorUuid),i=(await er.openEventsDatabaseConnection(G(this,T,D))).transaction(Ni.UserActivityEvents,"readwrite").store.index(Bi.VisitorUuid),r=[];let n=await i.openCursor(IDBKeyRange.only(t));for(;n;){const{value:t}=n;if(e(t)){const{id:e,...i}=t;r.push({eventId:String(e),...i})}n=await n.continue()}return r}};const rr=new ir(tr),nr=Symbol("DebugBrowserEventsStorageService");class sr extends ir{constructor(e){if(super(),new.target===sr&&e!==nr)throw new Error(`Invalid ${new.target.name} constructor`)}async getPopupECommerceEvents(e){const t=pe(le.Events)||[];if(!t.length)return super.getPopupECommerceEvents(e);else return t.filter(e)}async getEvents(e){const t=Y(We.visitorUuid),i=pe(le.Events)||[];if(!i.length)return super.getEvents(e);else return i.filter((({eventType:i,uuid:r})=>i===e&&r===t))}async saveEvent(e){const t=e instanceof ui?e.toJSON():e,i=[...pe(le.Events)||[],t];try{const e=JSON.stringify(i);return ve(le.Events,i,e),Math.random()}catch(r){K.error(`Can't parse new debug events. Try again.`)}}}const or=new sr(nr);function ar(){return he(rr,or)}const cr={[ue.PageVisit]:xi.getPageVisitEvent,[ue.ViewItem]:xi.getViewItemEvent,[ue.WishlistItem]:xi.getWishlistItemEvent,[ue.LikeItem]:xi.getLikeItemEvent,[ue.UnlikeItem]:xi.getUnlikeItemEvent,[ue.ViewCategory]:xi.getViewCategoryEvent,[ue.OrderPlaced]:xi.getOrderPlacedEvent,[ue.Cart]:xi.getCartUpdateEvent,[ue.Popup]:xi.getPopupEvent},ur=2e3;P=new WeakMap,k=new WeakSet,V=(e,t,i)=>{const r=cr[e];try{return"function"==typeof r?r(t,ci.createFromContextData(i)):null}catch(n){K.error("Failed to create user event",n)}},_=new WeakSet,U=function(){M(this,P).forEach((([e,t])=>{if(e===ue.ViewCategory||e===ue.ViewItem)rr.updateEvent(t,{time:Me.visitorTimeService.getCurrentVisitOnPageTime()}).then((()=>{Me.eventBus.publish(re.UserEventUpdated,t)})).catch((e=>{K.error("Failed to update event data",e)}))}))},A=new WeakSet,x=e=>!!(null==e?void 0:e.uuid);const dr=new class{constructor(){z(this,k),z(this,_),z(this,A),z(this,P,void 0),this.eventToSend=[],J(this,P,[])}async push(e,t,...[i,r]){if(void 0===e.saveToLocal||e.saveToLocal){const n=G(this,k,V).call(this,i,r,t);if(n){const t=await ar().saveEvent(n);if(n.eventId=String(t),M(this,P).push([i,t]),Le.saveEvent(n),!e.preventRenotify)Me.eventBus.publish(re.UserEventSaved,n)}else return K.warn(`Invalid event params`,i,r),void 0}if(e.sendToBackend)this.eventToSend.push([i,r,Me.visitorTimeService.getCurrentVisitOnPageTime(),t])}flush(){if(this.eventToSend.length){const e=this.eventToSend.map((([e,t,i,r])=>{const n=G(this,k,V).call(this,e,t,r);if(G(this,A,x).call(this,n))return n.time=i,n.normalizeForExternalStorage();else return null})).filter(Boolean);if(e.length){if(Me.canUseBackendStorageForEvents)si.saveEventsToStorage(e);si.sendEventsToMetricsInc(e)}}this.eventToSend=[]}startUpdatingStoredEvents(){setInterval((()=>{G(this,_,U).call(this)}),ur)}resetEventsStoredInCurrentSession(){M(this,P).length=0}};class lr extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype),this.name=this.constructor.name}}class gr extends lr{constructor(){super("Failed to parse data from JSON string")}}const vr=Symbol("StorageService");class pr{constructor(e){if(new.target===pr&&e!==vr)throw new Error(`Invalid ${new.target.name} constructor`)}async isNewVisitor(){return!(await this.getLastActivityDate())}getLastActivityDate(){return this.getLastActivityDateFromBrowserStorage()}getUserActivityDataFromBrowserStorage(){const e=Y(We.visitorUuid),t=localStorage.getItem("gaLocalStorageVisitKey");let i;try{i=JSON.parse(t)}catch{throw new gr}if(null==i?void 0:i[e])return i[e];else return{lastActivity:null,totalCount:1}}async getLastActivityDateFromBrowserStorage(){const{lastActivity:e}=await this.getUserActivityDataFromBrowserStorage();if(e)return Promise.resolve(new Date(e));else return null}saveUserActivity(){Me.eventBus.publish(ie.SaveEvent,{sendToBackend:true,saveToLocal:false},ci.createBlank(),ue.PageVisit,null),this.saveUserActivityToBrowserStorage()}saveUserActivityToBrowserStorage(){const e=Y(We.visitorUuid),{totalCount:t}=this.getUserActivityDataFromBrowserStorage(),i={[e]:{lastActivity:xi.getPageVisitEvent().occurredOn.toUTCString(),totalCount:t+1}};try{window.localStorage.setItem("gaLocalStorageVisitKey",JSON.stringify(i))}catch{throw new gr}}}const hr=new pr(vr),wr=Symbol("DebugStorageService");class mr extends pr{constructor(e){if(super(),new.target===mr&&e!==wr)throw new Error(`Invalid ${new.target.name} constructor`)}getLastActivityDate(){var e;const t=pe(le.BrowserStorageLastActivityDate);if(isNaN(null==(e=null==t?void 0:t.getTime)?void 0:e.call(t)))return super.getLastActivityDate();else return Promise.resolve(t)}setLastActivityDate(e){const t=new Date(e);if(isNaN(t.getTime()))return K.error("Incorrect dateString for last activity date. Try again with isoString."),null;ve(le.BrowserStorageLastActivityDate,t,t.toISOString())}isNewVisitor(){const e=pe(le.NewVisitor);if(void 0===e)return super.isNewVisitor();else return Promise.resolve(e)}setIsNewVisitor(e){ve(le.NewVisitor,e,String(e))}}const fr=new mr(wr);function yr(){return he(hr,fr)}const Sr=new class{isScriptDelayed(e){return Object.keys(Me.delayedScripts).includes(e)}delay(e){if(!this.isScriptDelayed(e))Me.delayedScripts={...Me.delayedScripts,[e]:void 0}}storeDelayedScriptParams(e,t){if(this.isScriptDelayed(e))Me.delayedScripts={...Me.delayedScripts,[e]:t}}initScript(e){var t;const i=Me.delayedScripts[e];if(i){Me.delayedScripts=Object.fromEntries(Object.entries(Me.delayedScripts).filter((([t])=>t!==e)));const r=Ne[e];null==(t=null==window?void 0:window[r])?void 0:t.init(...i)}}},br=new class{setCookie({expiresIn:e,domain:t="",value:i,name:r}){const n=this.getExpirationTimeString(e);document.cookie=`${r}=${i}; expires=${n}; path=/; ${t?`domain=${t}`:""}`}getExpirationTimeString(e){if(e instanceof Date)return e.toUTCString();const t=new Date;return t.setTime(t.getTime()+e),t.toUTCString()}getCookie(e){const t=document.cookie.match(new RegExp(`(^| )${e}=([^;]+)`));if(t)return t[2]}removeUuidCookieSessionInfo(){window.sessionStorage.removeItem(oe.UuidHasBeenSet)}},Er=16,Ir="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.11.0/sha256.min.js",Cr=new class{async sha256(e){try{const t=(new TextEncoder).encode(e),i=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(i)).map((e=>e.toString(Er).padStart(2,"0"))).join("")}catch(i){K.error("Failed to encrypt visitor e, using fallback lib",i);try{return await(t=Ir,new Promise(((e,i)=>{const r=Object.assign(document.createElement("script"),{src:t});document.head.append(r),r.addEventListener("load",(()=>{e()}),{once:true}),r.addEventListener("error",(e=>{i(e)}),{once:true})}))),window.sha256(e)}catch(r){return K.error("Failed to encrypt visitor e with fallback lib",r),atob(e)}}var t}},Tr=new class{getVisitorData(){return Je(new URL(`visitors/${Me.getUserAid()}/${Y(We.visitorUuid)}`,Me.getUserAnalyticsDomain()).href)}};async function Dr(){let e="1"===Y("gaIsValuable");if(Me.canUseBackendForSubscriberIdentification())try{e=(await Tr.getVisitorData()).isConfirmedIdentifiedVisitor}catch(t){K.error("Failed to load subscriber data",t)}return e}const Pr=new Map,kr=(e,t)=>{if(!Array.isArray(e))switch(typeof e){case"string":e=[e];break;case"undefined":e=[];break;default:throw new TypeError(`Expected '${t}' to be a string or an array, but got a type of '${typeof e}'`)}return e.filter((e=>{if("string"!=typeof e){if(void 0===e)return false;throw new TypeError(`Expected '${t}' to be an array of strings, but found a type of '${typeof e}' in the array`)}return true}))};function Vr(e,t,i){return((e,t,i,r)=>{if(e=kr(e,"inputs"),0===(t=kr(t,"patterns")).length)return[];t=t.map((e=>((e,t)=>{t={caseSensitive:false,...t};const i=e+JSON.stringify(t);if(Pr.has(i))return Pr.get(i);const r="!"===e[0];if(r)e=e.slice(1);e=(e=>{if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})(e).replace(/\\\*/g,"[\\s\\S]*");const n=new RegExp(`^${e}$`,t.caseSensitive?"":"i");return n.negated=r,Pr.set(i,n),n})(e,i)));const{allPatterns:n}=i||{},s=[];for(const o of e){let e;const i=[...t].fill(false);for(const[r,n]of t.entries())if(n.test(o))if(i[r]=true,e=!n.negated,!e)break;if(!(false===e||void 0===e&&t.some((e=>!e.negated))||n&&i.some(((e,i)=>!e&&!t[i].negated))))if(s.push(o),r)break}return s})(e,t,i,true).length>0}var _r=(e=>(e["Always"]="always",e["OnceEveryDays"]="xDays",e["OncePerTimeAmount"]="xTimeAmount",e["Session"]="everySession",e["LessThanXTimes"]="lessThanXTimes",e["ExactlyXTimes"]="exactlyXTimes",e["MoreThanXTimes"]="moreThanXTimes",e))(_r||{});const Ur=1e3*60*60*24;L=new WeakSet,O=async(e,t=0)=>{if(e===_r.Session)return!Qe().hasUserVisitedPage();if(e===_r.OnceEveryDays){const e=await yr().getLastActivityDate();if(e)return((e,t)=>{const i=new Date(e+t*Ur),r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,0);return Date.now()>=Date.parse(r.toString())})(e.getTime(),t)}if(e===_r.OncePerTimeAmount){const e=await yr().getLastActivityDate();if(e)return i=e.getTime(),r=t,Date.now()>=i+r}var i,r;const{totalCount:n}=yr().getUserActivityDataFromBrowserStorage();if(e===_r.ExactlyXTimes)return t===n;if(e===_r.LessThanXTimes)return t>n;if(e===_r.MoreThanXTimes)return n>t;else return true},N=new WeakSet,B=async e=>{const t=await yr().isNewVisitor();switch(e){case it.New:return t;case it.Returning:return!t;default:return true}},F=new WeakSet,W=function(e="*"){const t=window.location.pathname;return G(this,R,$).call(this,e,t)},R=new WeakSet,$=(e,t)=>Vr(t,e);const Ar=new class{constructor(){z(this,L),z(this,N),z(this,F),z(this,R)}async validateVisitorVisits({frequency:e,visitorType:t,frequencyDaysNumber:i,urlPath:r}){if(!G(this,F,W).call(this,r))return false;const[n,s]=await Promise.all([G(this,L,O).call(this,e,i),G(this,N,B).call(this,t)]);return n&&s}},xr=new class{async saveVisitorEmail(e){const t=await Cr.sha256(e);br.setCookie({name:We.VisitorEmail,value:t,expiresIn:Re.OneYear})}async hasVisitorEmailBeenChanged(e){const t=await Cr.sha256(e),i=br.getCookie(We.VisitorEmail);if(!i)return false;else return t!==i}async getVisitorData(){const e=Me.getVisitorUuid(),[t,i]=await Promise.all([Dr(),Ar.validateVisitorVisits({frequency:_r.Always,visitorType:it.Returning})]);return{isVisitorSubscriber:t,visitorUUID:e,isVisitorReturning:i}}},Lr=4;class Or extends class{setDomain(e){if(!e||"auto"===e)this.cookieDomain=(()=>{const e=new Date,t=location.hostname.split(".").reverse(),i=[],r=`gaDomain-${H(6)}`,n=H(6);let s="";for(e.setTime(e.getTime()+60*1e3),i.push(t.shift());t.length>0;){if(s=i.reverse().join("."),document.cookie=`${r}=${n}; expires=${e.toUTCString()}; domain=.${s}; path=/`,Y(r)===n)return s;i.push(t.shift())}return location.hostname})();else this.cookieDomain=e}setListToken(e){this.listToken=e}}{constructor(e,t,i,r){super(),this.cookieDomain="",this.listToken="",this.email="",this.uuid=document.cookie.replace(/(?:(?:^|.*;\s*)gaVisitorUuid\s*\=\s*([^;]*).*$)|^.*$/,"$1")||"",this.valuable=Number(document.cookie.replace(/(?:(?:^|.*;\s*)gaIsValuable\s*\=\s*([^;]*).*$)|^.*$/,"$1")||0),this.gr_x=Q("gr_x")||"",this.gr_s=Q("gr_s")||"",this.gr_m=Q("gr_m")||"",this.gr_co=Q("gr_co")||"",this.tracking=new se,this.wasPageVisitEventSaved=false,this.onEventPush=(...[e,t,i,r])=>{dr.push(e,t,i,r)},this.onEventFlush=()=>{dr.resetEventsStoredInCurrentSession(),dr.flush()},this.onImportScript=async(e,...t)=>{if(Object.values(Oe).includes(e)){const{webConnectScriptCdnUrl:i,webConnectCurrentScriptsVersion:r}=Me,n=new URL(`${e}.${r}.umd.js`,i);import(n.href).then((()=>{window[Ne[e]].init(...t)}))}else K.error(`Invalid script name ${e}`)},this.onDomainSet=e=>{this.setDomain(e)},this.onListTokenSet=e=>{this.setListToken(e)},this.onSetUserId=async(e,t)=>{if("string"!=typeof e)throw new Error(`User email should be a string`);this.assureDomainIsSet(),this.assureUuidIsSet(),await this.setUserId(e,t)},this.onSetEvent=(e,t)=>{this.assureDomainIsSet(),this.assureUuidIsSet(),this.tracking.setUserId(this.serialize()),this.setEvent(e,t)},this.onSetCookie=(e,t)=>{Z(e,t,this.cookieDomain)},this.onPush=()=>{this.push()},this.onSetCustomServiceWorkerPath=e=>{Me.setCustomSwPath(e)},this.createDefaultEventsAndSave=()=>{if("hidden"===document.visibilityState){if(!this.wasPageVisitEventSaved)yr().saveUserActivity(),this.wasPageVisitEventSaved=true;Me.eventBus.publish(ie.FlushEvents)}},this.xsid=i||"",this.tracking.setCustomVariable(1,"grid",t),this.tracking.setCustomVariable(2,"aid",r),this.tracking.setTrackerUrl(`${e}index.php?ver=${Lr}`),this.tracking.markAsEnabled(Me.isTrackingEnabled()),this.tracking.setUserId(this.serialize())}async initialize(){if(!this.xsid&&!this.valuable&&Me.isTrackingScriptServedFromCustomDomain())this.xsid=await Ge.retrieveXsid();this.attachListeners(),dr.startUpdatingStoredEvents()}attachListeners(){const{eventBus:e}=Me;e.subscribe(ie.SetDomain,this.onDomainSet),e.subscribe(ie.SetListToken,this.onListTokenSet),e.subscribe(ie.SetUserId,this.onSetUserId),e.subscribe(ie.SetEvent,this.onSetEvent),e.subscribe(ie.SetCookie,this.onSetCookie),e.subscribe(ie.Push,this.onPush),e.subscribe(ie.SetCustomServiceWorkerPath,this.onSetCustomServiceWorkerPath),e.subscribe(ie.ImportScript,this.onImportScript),e.subscribe(ie.SetLastActivityDate,this.onSetLastActivityDate),e.subscribe(ie.SetIsNewVisitor,this.onSetIsNewVisitor),e.subscribe(ie.SetHasUserVisitPage,this.onSetHasUserVisitPage),e.subscribe(ie.SetUserDevice,this.onSetDevice),e.subscribe(ie.SetUserLocation,this.onSetUserLocation),e.subscribe(ie.SetRawEvent,this.onSetRawEvent),e.subscribe(ie.SaveEvent,this.onEventPush),e.subscribe(ie.FlushEvents,this.onEventFlush),e.subscribe(ie.DelayScript,this.onScriptDelay),e.subscribe(ie.InitScript,this.onScriptInit)}assureDomainIsSet(){if(!this.cookieDomain)this.onDomainSet("auto")}assureUuidIsSet(e=false){if(!this.uuid||e){const t=this.generateUuid(e);window.sessionStorage.setItem(oe.UuidHasBeenSet,"true"),this.uuid=t}}setValuability(){if(this.gr_x&&(this.gr_s||this.gr_co))this.setIsValuable();if(this.email||this.xsid)this.setIsValuable()}assureEventsAreCreatedAndSaved(){document.addEventListener("visibilitychange",this.createDefaultEventsAndSave)}generateUuid(e=false){let t=Y("gaVisitorUuid");if(!t||e)t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})),Z("gaVisitorUuid",t,this.cookieDomain);return t}async setUserId(e,t){if(e&&Me.isTrackingEnabled()){if(Me.visitorEmail=e,await xr.hasVisitorEmailBeenChanged(e))this.assureUuidIsSet(true);this.email=e,this.listToken=t||this.listToken,this.setIsValuable(),this.push(),await xr.saveVisitorEmail(e)}}setEvent(e,t){if(void 0===t)this.tracking.trackEvent("custom","fire",e);else this.tracking.trackEvent("custom","fire",e,JSON.stringify(t))}push(){this.tracking.setUserId(this.serialize()),this.tracking.trackPageView()}setIsValuable(){if(Me.isTrackingEnabled())this.valuable=1,Z("gaIsValuable","1",this.cookieDomain)}serialize(){return JSON.stringify({uuid:this.uuid,email:this.email,xsid:this.xsid,list_token:this.listToken,gr_x:this.gr_x,gr_s:this.gr_s,gr_co:this.gr_co,gr_m:this.gr_m,valuable:this.valuable,domain:this.cookieDomain})}onSetLastActivityDate(e){const t=yr();if(t instanceof mr)t.setLastActivityDate(e)}onSetIsNewVisitor(e){const t=yr();if(t instanceof mr)t.setIsNewVisitor(e)}onSetHasUserVisitPage(e){const t=Qe();if(t instanceof Ye)t.setHasUserVisitedPage(e)}onSetDevice(e){const t=he(Mt,Gt);if(t instanceof Jt)t.setDeviceType(e)}onSetUserLocation(e){const t=he(Xt,Zt);if(t instanceof Yt)t.setVisitorCountryCode(e)}onSetRawEvent(e){const t=ar();if(t instanceof sr)t.saveEvent(e)}onScriptDelay(e){Sr.delay(e)}onScriptInit(e){Sr.initScript(e)}}var Nr=(e=>(e["ExitIntend"]="exit-intend",e))(Nr||{});e.init=e=>{const t=JSON.parse(e),{grid:i,clientLatestGrid:r,aid:n,uuuid:s,xsid:o,isServedFromCustomDomain:a,scriptVersion:c,scriptDomain:u,useBackendSubscriberIdentification:d,useBackendStorage:l,trackingUrl:g,tracking:v,isDebugMode:p}=t,h=window["__GetResponseAnalyticsObject"]||"GrTracking";if((()=>{if([Array.from,"".endsWith,"".startsWith,[].entries].some((e=>!e.toString().includes("[native code]"))))K.warn("Modification of native JavaScript object/methods detected, WebConnect might not work correctly!")})(),Me.initialize({xsid:o,aid:n,grid:i,uuuid:s,clientLatestGrid:r,domain:g,useNOStorage:"true"===l,useBetterSubscriberIdentification:"true"===d,isServedFromCustomDomain:"true"===a,scriptsDomain:u,scriptsVersion:c,tracking:"true"===v,isDebugMode:"true"===p}),Me.scriptModuleManager.isScriptInitialized(Oe.v2))return;Me.scriptModuleManager.setScriptInitialized(Oe.v2);const w=new Or(g,i,o,n);function m(e,t){window[h](e,t)}Me.pageHistoryService.onPushState((e=>{if((null==e?void 0:e.gr)!==Nr.ExitIntend)Me.eventBus.publish(ie.FlushEvents),Me.visitorTimeService.resetTimer()})),Me.pageHistoryService.onReplaceState((()=>{Me.eventBus.publish(ie.FlushEvents),Me.visitorTimeService.resetTimer()})),window.addEventListener("popstate",(e=>{var t;if((null==(t=e.state)?void 0:t.gr)!==Nr.ExitIntend)Me.eventBus.publish(ie.FlushEvents),Me.visitorTimeService.resetTimer()})),w.initialize().then((()=>{var e;if(Array.isArray(null==(e=window[h])?void 0:e.q))window[h].q.forEach(((e,t)=>{if("push"!==e[0])Me.eventBus.publish(e[0],e[1],e[2]),delete window[h].q[t]}));window[h]=(e,t,i)=>{Me.eventBus.publish(e,t,i)},w.assureDomainIsSet(),w.assureUuidIsSet(),w.setValuability(),Me.eventBus.publish(ie.Push),w.assureEventsAreCreatedAndSaved(),window.dispatchEvent(new CustomEvent("GRV2Initialized"))})),window.gaSetUserId=e=>{m(ie.SetUserId,e)},window.gaPush=()=>{m(ie.Push)},window.getVisitorDetails=()=>xr.getVisitorData()},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}((e="undefined"!=typeof globalThis?globalThis:e||self).GRV2={})}(this);