/** * Fibr SDK Config */ var config={"urlCheck":false,"clientId":"6825b0c91488ce7a4532e112","campaignUrls":[],"campaignSelectors":{},"googleData":false,"country":"IN","region":"AP","observers":{"body":false,"elements":false},"reinitializeSdk":false,"auxillaryEvents":{},"validatedUrls":["https://www.ibeam.ai/general-contractor","https://www.ibeam.ai"],"googleAnalyticsEnabled":true}; /** * SDK Code */ var asyncElements=config?.campaignSelectors;let PAGELOAD_MODES={ASYNC:"async",SYNC:"sync"},fibrConfig={pageLoad:PAGELOAD_MODES.ASYNC},auxillaryEventsObj=config?.auxillaryEvents,validatedUrls=config?.validatedUrls,ENV_STAGE="staging",ENV_PROD="prod",ENV_PROD_IN="prod-in",ENV_UAT="uat",ENV="prod",allowedJourneyAuxillaryClientIds=["68513ceb018246d1d3b65682","68ca6ae3ec82a96d5ec07be0"],isDebugModeEnabled=!1,watchMutationObserverOnBody=config?.observers?.body??!1,watchMutationObserverOnElements=config?.observers?.elements??!1,areChangesGotApplied=!1,isBodyMutationObserverActivated=!1,changeLogsMapForObserver=new Map,changeLogsMapForElementsNotFound=new Map,FIBR_PROCESSING_FLAG="fibr-processing",FIBR_DATA_ATTRIBUTE="fibr-element-id",FIBR_HIDE_ID_ATTRIBUTE="fibr-hide-id",attributeElementMap=new Map,hiddenElementsMap=new Map,isFibrApplyingChanges=!1,FIBR_MULTI_ELEMENT_CHANGE_TYPE="editMultiEle",FIBR_MULTI_ELEMENT_SUB_TYPE={DISPLAY_BLOCK_ELE:"displayBlockEle",DISPLAY_NONE_ELE:"displayNoneEle"};function logger(...e){isDebugModeEnabled&&console.log(...e)}function validateCurrentUrl(t){var e=new URL(t),i=e.host;validatedUrls&&validatedUrls.includes(t)?logger("FPT URL already validated:",t):(e=e.protocol+"//"+i,validatedUrls&&validatedUrls.includes(e)?logger("FPT Domain already validated:",e):(i={clientId:config?.clientId,url:t},fetch(API_URL+"/client/sdk/validate",{method:"POST",body:JSON.stringify(i),headers:{"Content-type":"application/json"}}).then(e=>{if(e.ok)return e.json();throw new Error("URL validation failed: "+e.status)}).then(e=>{logger("FPT URL validation successful:",e),validatedUrls&&!validatedUrls.includes(t)&&validatedUrls.push(t)}).catch(e=>{logger("FPT URL validation error:",e)})))}window.addEventListener("DOMContentLoaded",function(){isDebugModeEnabled=localStorage.getItem("fibrDebugMode")||ENV===ENV_STAGE,config&&config.clientId&&"654374a78975d93f720400df"===config.clientId&&(isDebugModeEnabled=!0)}),logger("FPT enters",fibrConfig);var root=document.querySelector(":root");let currentUrl=getCurrentUrl(),isReloadFailed=determineIfReloadOnFailedEvent(),urlObject=new URL(currentUrl),currentDomain=urlObject.host,currentBaseUrl=(urlObject.origin+"/"+urlObject.pathname.split("/")[1])?.replace(/\/$/,""),currentUrlWithoutQuery=currentUrl.split("?")[0]?.replace(/\/$/,""),visitorDetails=(logger("FPT urls - ",currentUrl,currentBaseUrl,currentUrlWithoutQuery),{}),visitCount={},campaignDetails={},sessionDetails={},experienceId=(visitorDetails.locationDetails={},null),isRequestFromFibrEditor=determineRequestSourceIsEditor(),isRequestFromFibrEditorPreview=determineRequestSourceIsEditorPreview(),isHoldout=!1,noRuleSetMatch=!1,doNotTrack=!1,errorApplyingExperience=!1,areWidgetChangesApplied=!1,triggeredWidgetsInSession=new Set,triggeredWidgets=new Set,globalWidgetManager=null,region=config&&config?.region&&"NA"===config?.region?"NA":"AP",API_URL=`https://${ENV}-api.fibr.shop`,RESOLVER_PROD_API_URL="https://prod-l-rep.fibr.shop",RESOLVER_PROD_US_API_URL="https://prod-us-rep.fibr.shop",RESOLVER_PROD_IN_API_URL="https://prod-in-rep.fibr.shop",RESOLVER_OLD_URL=`https://${ENV}-apig.fibr.shop/resolver`,RESOLVER_API_URL=ENV===ENV_PROD?"NA"===region?RESOLVER_PROD_US_API_URL:RESOLVER_PROD_API_URL:ENV===ENV_PROD_IN?RESOLVER_PROD_IN_API_URL:RESOLVER_OLD_URL,ANALYTICS_API_US_URL=`https://${ENV}-apig.fibr.shop/fpt-event`,ANALYTICS_API_IN_URL=`https://${ENV}-apigw.fibr.shop/fpt-event`,ANALYTICS_API_URL=ENV===ENV_PROD_IN?ANALYTICS_API_IN_URL:ANALYTICS_API_US_URL;var pages=null,widgets=null,triggers=null;let expIgnoreListCookieName="fpt_ignoreExp",sdkVersion="v1.115",applyingChanges=!1,inViewportElements=[],hasHiddenElementsForAsync=!1,cachedElements=new Map,cachedNodes=new Map,hiding=null,changesApplying=null,loggerTimer=new Date,ignoreInvisbleElements=[],originalRootDocumentElement=null,start=null,end=null,isByPassResolver=byPassResolver(),hasFibrTimedOut=!1,multiElementMap=new Map,previousUrlForAuxillaryEvent="";try{validateCurrentUrl(currentUrlWithoutQuery)}catch(e){logger("FPT error in validateCurrentUrl",e)}let fibr_startTime=performance.now(),fibr_formatTimeDiff=e=>{try{return(e-fibr_startTime)?.toFixed(2)+"ms"}catch(e){return logger("Error formatting time difference:",e),"0.00ms"}},fibr_logEvent=t=>{try{var e=performance.now();logger(`fibr_logger ${t}: Time since start: ${fibr_formatTimeDiff(e)} Timestamp: `+(new Date).toISOString())}catch(e){logger(`fibr_logger ${t}:`,e)}},buildCleanUrl=i=>{try{var e,r,n=/^((?:(?:(?:https|http):\/\/)(?:[-a-zA-Z0-9]+)(?:\.[-a-zA-Z0-9.]+)?)\.(?:[a-zA-Z0-9]+)(?:\/[\w\-/.]*)?)$/;let t=i.trim();return t?(["http://","https://"].some(e=>t.startsWith(e))||(t="https://"+t),e=new URL(t),t=e.protocol+"//"+e.host+e.pathname,""+e.host&&(r=t.match(n))&&r?.[1]?t=t?.replace(/\/+$/,""):null):null}catch(e){return logger("(buildCleanUrl) - Error encountered while building clean url --\x3e "+i),""}};function setStyleImportant(e,t,i,r={}){try{var n,a,o;e?.style&&(n=i||"",{important:a=!1,camelCaseProperty:o}=r,a?e.style.setProperty(t,n,"important"):o&&(e.style[o]=n))}catch(e){console.error(`Error setting style property ${t}:`,e)}}function initializeDataAttributesForChangelogs(e){logger("FPT initializing data attributes for changelogs");let a=new Map;e?.forEach(i=>{var e,t,r,n;"rearrangeEle"===i?.type?(e=i?.properties?.rearrange)&&0<(n=Object.entries(e?.parent||{})).length&&([n,t]=n[0],a.has(n)?logger(`FPT Skipping ID assignment for parent ${n} and its children as already processed`):(a.set(n,t),(r=getElementByXpath(n))&&!r.hasAttribute(FIBR_DATA_ATTRIBUTE)&&(r.setAttribute(FIBR_PROCESSING_FLAG,"true"),r.setAttribute(FIBR_DATA_ATTRIBUTE,t),r.removeAttribute(FIBR_PROCESSING_FLAG),logger("FPT Applied data attribute to parent element: "+t),attributeElementMap.set(n,{attributeValue:t,changelog:i}),e?.childrenIDMap?.forEach(e=>{var t;e?.xpath&&e?.fibrId&&(t=getElementByXpath(e.xpath))&&!t.hasAttribute(FIBR_DATA_ATTRIBUTE)&&(t.setAttribute(FIBR_PROCESSING_FLAG,"true"),t.setAttribute(FIBR_DATA_ATTRIBUTE,e.fibrId),t.removeAttribute(FIBR_PROCESSING_FLAG),logger("FPT Applied data attribute to child element: "+e.fibrId),attributeElementMap.set(e.xpath,{attributeValue:e.fibrId,changelog:i}))})))):i?.attributes&&i?.attributes?.elementId&&i?.type!==FIBR_MULTI_ELEMENT_CHANGE_TYPE&&(r=i?.attributes?.elementId,attributeElementMap.set(i?.selectorPath,{attributeValue:r,changelog:i}),n=getElementByXpath(i?.selectorPath))&&!n.hasAttribute(FIBR_DATA_ATTRIBUTE)&&!n.hasAttribute(FIBR_PROCESSING_FLAG)&&(n.setAttribute(FIBR_PROCESSING_FLAG,"true"),n.setAttribute(FIBR_DATA_ATTRIBUTE,r),n.removeAttribute(FIBR_PROCESSING_FLAG),logger("FPT Applied data attribute to element: "+r))})}function initializeDataAttributesForGroups(e){logger("FPT initializing data attributes for groups"),e?.forEach(e=>{var t;e?.a&&(t=e?.a,attributeElementMap.set(e?.p,{attributeValue:t,group:e}),!(e=getElementByXpath(e?.p))||e.hasAttribute(FIBR_DATA_ATTRIBUTE)||e.hasAttribute(FIBR_PROCESSING_FLAG)||(e.setAttribute(FIBR_PROCESSING_FLAG,"true"),e.setAttribute(FIBR_DATA_ATTRIBUTE,t),e.removeAttribute(FIBR_PROCESSING_FLAG),logger("FPT Applied data attribute to element: "+t)))})}function convertPositionToResponsive(e){var t,i;return!e||"string"!=typeof e||(t=parseInt(e.replace("px","")),isNaN(t))?e:(i=window.innerWidth,Math.round(t*(i/1920))+"px")}function setCookieWithTtl(e,t,i){var r=new Date,i=(r.setTime(r.getTime()+60*i*60*1e3),"expires="+r.toUTCString());document.cookie=e+"="+t+"; "+i+"; path=/"}function setCookie(e,t){var i=new Date,t=(i.setTime(i.getTime()+24*t*60*60*1e3),"expires="+i.toUTCString());document.cookie=e+t+";path=/"}function setEncodedCookie(e,t,i=null){e=e+"="+encodeURIComponent(JSON.stringify(t));let r="";null===i||isNaN(new Date(i).getTime())||(r="expires="+i.toUTCString()+"; "),document.cookie=e+"; "+r+"path=/"}function getCookieExpiryDate(t){var i=document.cookie.split("; ");for(let e=0;e{r.test(e)&&(i[e]=t[e])}),i):(console.error("FPT unknown cookiesAllowedType: "+e),{})}function getCookies(){for(var e=document.cookie.split(";"),t={},i=0;ie.startsWith(t+"="));return e?(e=e.split("=")[1].replace(/expires=[^;]+;?\s*/i,""),decodeURIComponent(e)):null}let auxillaryCookieKey="__fibr_auxillary",TLD_PATTERNS=[/^[a-z]{2}$/,/^(com|edu|gov|org|net|ac|co|mil|int)\.[a-z]{2}$/,/^(com|edu|gov|org|net|co)\.[a-z]{2,4}$/];function fibr_getApexDomain(e){try{if(!e||"string"!=typeof e)return"";var i=/^https?:\/\//.test(e)?new URL(e).hostname:e,r=i.toLowerCase().split(".");if(r.length<=2)return"."+i;let t=r.slice(-2).join(".");var n=TLD_PATTERNS.some(e=>e.test(t));return"."+r.slice(n?-3:-2).join(".")}catch(e){return""}}let sendAuxillaryCookieEvent=n=>{if(n&&auxillaryEventsObj[n]&&Array.isArray(auxillaryEventsObj[n])&&auxillaryEventsObj[n]?.length){let r=buildCleanUrl(window?.frames?.top?.document?.referrer||previousUrlForAuxillaryEvent||"");(auxillaryEventsObj[n]||[]).forEach(e=>{var t=e?.en,e=e?.ru,i=r===e;t&&i&&(sendAuxillaryEvent({eventType:"SUCCESS_EVENT",path:n,name:t,timestamp:Date.now(),isAuxillaryEvent:!0,refererUrl:e,subType:"successMetrics"}),logger("FPT event auxillary fired event: "+t))})}},setFibrAuxillaryCookieData=()=>{var e={campaignDetails:campaignDetails,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails};let t=getCookieExpiryDate("fpt_ssid");null===t&&(t=new Date).setTime(t.getTime()+864e5);e=auxillaryCookieKey+"="+encodeURIComponent(JSON.stringify(e));let i="";null===t||isNaN(new Date(t).getTime())||(i="expires="+t.toUTCString()+"; ");var r=fibr_getApexDomain(location.hostname);document.cookie=e+"; "+i+`path=/; domain=${r}; SameSite=Lax; Secure`},getJourneyFromCookie=()=>{try{var e=(document.cookie||"").split(";").map(e=>e.trim()).find(e=>e.startsWith("__fibr_journey=")),t=e?JSON.parse(decodeURIComponent(e.split("=")[1])):null;return logger("FPT Journey: Get cookie result:",t),t}catch(e){return logger("FPT Journey: Get cookie error:",e),null}},setJourneyCookie=e=>{try{var t=fibr_getApexDomain(location.hostname),i=new Date(Date.now()+864e5);document.cookie=`__fibr_journey=${encodeURIComponent(JSON.stringify(e))}; expires=${i.toUTCString()}; path=/; domain=${t}; SameSite=Lax; Secure`,logger("FPT Journey: Set cookie:",e)}catch(e){logger("FPT Journey: Set cookie error:",e)}},clearJourneyCookie=()=>{try{var e=fibr_getApexDomain(location.hostname);document.cookie=`__fibr_journey=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${e}; SameSite=Lax; Secure`,logger("FPT Journey: Cookie cleared")}catch(e){logger("FPT Journey: Clear cookie error:",e)}},processJourneyTracking=e=>{try{if(logger("FPT Journey: Processing journey for URL:",e),e&&auxillaryEventsObj){let n=buildCleanUrl(e);if(n){logger("FPT Journey: Clean URL:",n);let e=!1;for(var t of Object.values(auxillaryEventsObj))if(Array.isArray(t)&&t.some(e=>e.ru===n)){e=!0;break}var i,a;if(logger("FPT Journey: Is source page:",e),e)logger("FPT Journey: Starting new journey:",i={source:n,started:Date.now(),visited:[n]}),setJourneyCookie(i);else{let r=getJourneyFromCookie();r?(logger("FPT Journey: Found existing journey:",r),r.visited.includes(n)?logger("FPT Journey: Page already visited:",n):(logger("FPT Journey: Adding new page to journey:",n),r.visited.push(n),setJourneyCookie(r)),a=auxillaryEventsObj[n],logger(`FPT Journey: Destination configs for ${n}:`,a),a&&Array.isArray(a)?a.forEach((e,t)=>{var{en:e,ru:i}=e;logger(`FPT Journey: Checking source ${t}:`,{sourceUrl:i,eventName:e,journeySource:r.source}),i===buildCleanUrl(r.source)?(logger("FPT Journey: MATCH FOUND! Firing event:",e),logger("FPT Journey: Event payload:",t={eventType:"SUCCESS_EVENT",path:n,name:e,timestamp:Date.now(),isAuxillaryEvent:!0,refererUrl:i,subType:"successMetrics",journeyObj:r}),sendAuxillaryEvent(t),clearJourneyCookie()):logger(`FPT Journey: No match - ${i} !== `+r.source)}):logger("FPT Journey: No destination configs found for:",n)):logger("FPT Journey: No existing journey found")}}else logger("FPT Journey: Early return - cleanUrl failed for:",e)}else logger(`FPT Journey: Early return - currentUrl:${!!e}, auxillaryEventsObj:`+!!auxillaryEventsObj)}catch(e){logger("FPT error in processJourneyTracking",e)}},handleUrlChange=()=>{try{var e=buildCleanUrl(getCurrentWindowUrl()),t=buildCleanUrl(getCurrentUrl());t!==e&&(previousUrlForAuxillaryEvent=t,sendAuxillaryCookieEvent(e))}catch(e){logger("FPT error in handleUrlChange",e)}},initSpaUrlChangeDetection=()=>{try{["pushState","replaceState"].forEach(e=>{let t=window.history[e];window.history[e]=(...e)=>{t.apply(window.history,e),setTimeout(handleUrlChange,50)}}),window.addEventListener("popstate",handleUrlChange)}catch(e){logger("FPT error in initSpaUrlChangeDetection",e)}};function fibr_initialHideFunction(){var e;(fibrConfig={pageLoad:window.fibrConfig?.pageLoad??PAGELOAD_MODES.ASYNC})?.pageLoad!==PAGELOAD_MODES.ASYNC||isByPassResolver?(logger("FPT fibrStyle",e=document.getElementById("fibr-style")),e&&document.head.removeChild(e),setTimeout(()=>{logger("FPT Time Taken img tag",new Date-loggerTimer);var e=document.getElementById("fibr-async-img-style");logger("POC FPT asynImgStyle",e),e&&document.head.removeChild(e)},300)):hasHiddenElementsForAsync||hasFibrTimedOut&&!isRequestFromFibrEditor||(logger("FPT asyncElements[currentBaseUrl]",asyncElements,fibrConfig),hideElementsForAsync(asyncElements[currentUrlWithoutQuery]??[]))}let OBSERVER_CONFIG={childList:!0,subtree:!0,attributes:!0,attributeFilter:["src",FIBR_DATA_ATTRIBUTE]};function matchesWildcardXPath(e,t){var i;return!!t&&!!e&&(t.includes("[*]")?(i=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\[\\\*\\\]/g,"\\[(\\d+)\\]"),new RegExp(`^${i}$`).test(e)):e===t)}let reapplyChangesOnElements=(r,e)=>{if(r&&e)try{if(!isFibrApplyingChanges&&!e?.nodeType!==Node.ELEMENT_NODE){let i=getXpath(e);i&&multiElementMap&&0!==multiElementMap.size&&multiElementMap?.forEach((e,t)=>{matchesWildcardXPath(i,t)&&(t=getElementByXpath(i))&&(r.disconnect(),applyWildcardChangesOnElement(t,{...e,selectorPath:i,attributes:{elementId:generateFibrId()}}),r.observe(document.body,OBSERVER_CONFIG))})}}catch(e){logger("FPT error in checkForPendingElements",e)}},checkForPendingElements=(i,r)=>{try{isFibrApplyingChanges||!r?.nodeType!==Node.ELEMENT_NODE&&changeLogsMapForObserver.forEach((e,t)=>{matchesXPath(r,t)&&(t=getElementBySelector(e))&&(i.disconnect(),applyChangesOnElement(t,e),i.observe(document.body,OBSERVER_CONFIG))})}catch(e){logger("FPT error in checkForPendingElements",e)}};function handleAttributeChange(e){try{var t,i,r;isFibrApplyingChanges||e&&e.hasAttribute(FIBR_PROCESSING_FLAG)||e.hasAttribute(FIBR_DATA_ATTRIBUTE)||0!==attributeElementMap.size&&(t=getXpath(e),i=attributeElementMap.get(t))&&(r=i.attributeValue,matchesXPath(e,t))&&r&&!e.hasAttribute(FIBR_DATA_ATTRIBUTE)&&(e.setAttribute(FIBR_PROCESSING_FLAG,"true"),e.setAttribute(FIBR_DATA_ATTRIBUTE,r),e.removeAttribute(FIBR_PROCESSING_FLAG),logger("FPT Reapplied data attribute to observed element"))}catch(e){logger("FPT error in handleAttributeChange",e)}}let initBodyObserver=()=>{if(logger("FPT BODY mutation observer attempted, current status :"+isBodyMutationObserverActivated),watchMutationObserverOnBody&&!isRequestFromFibrEditor)if(logger(`FPT BODY mutation observer initiated current status :${isBodyMutationObserverActivated} changelog to apply: `+changeLogsMapForObserver.size),"undefined"!=typeof document&&document.body)try{let s=new MutationObserver(e=>{if(!isFibrApplyingChanges){let t=[];for(var i of e)if(!i.target.hasAttribute(FIBR_PROCESSING_FLAG)){if("attributes"===i.type&&"src"===i.attributeName&&"IMG"===i.target.nodeName&&i.target){var r=getXpath(i.target);let t=null;if(t=i.target?.hasAttribute(FIBR_DATA_ATTRIBUTE)?getElementByFibrId(i.target?.getAttribute(FIBR_DATA_ATTRIBUTE)):getElementByXpath(r),0{s.observe(document.body,OBSERVER_CONFIG)},100))}}"attributes"===i.type&&i.target&&handleAttributeChange(i.target);for(var n of i.addedNodes){var a;n.nodeType===Node.ELEMENT_NODE&&"script"!==n.tagName?.toLowerCase()&&(a=getXpath(n),t.push(n),n.querySelectorAll("*").forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&"script"!==e.tagName?.toLowerCase()&&(t.push(e),multiElementMap)&&0{e.nodeType===Node.ELEMENT_NODE&&handleAttributeChange(e)}),0{var i=getElementBySelector(e);i&&(applyChangesOnElement(i,e),changeLogsMapForElementsNotFound.delete(t))}),s.observe(document.body,OBSERVER_CONFIG)}catch(e){logger("FPT error in checkForPendingElements",e)}}});s.observe(document.body,OBSERVER_CONFIG),isBodyMutationObserverActivated=!0}catch(e){console.error("(initBodyObserver) - Failed to initialize MutationObserver:",e)}else console.error("(initBodyObserver) - DOM not available for MutationObserver")};function checkSessionIdExpired(){var e,t=localStorage.getItem("__fibr_data_layer");if(t)return t=JSON.parse(t),e=getCookie("fpt_ssid"),logger("FPT checking sessionId expired",t.fibr_session_id,e),t.fibr_session_id!==e}async function copyDataLayerToWindow(){var e=checkSessionIdExpired();if(e)logger("FPT sessionId expired, removing data layer",e),localStorage.removeItem("__fibr_data_layer");else try{logger("FPT getting data layer from localStorage");var t,i=localStorage.getItem("__fibr_data_layer");logger("FPT dataLayer from localStorage:",i),i&&(logger("FPT parsing dataLayer JSON"),logger("FPT parsed dataLayerObj:",t=JSON.parse(i)),logger("FPT checking if window.dataLayer exists"),window.dataLayer||(logger("FPT initializing window.dataLayer"),window.dataLayer=[],logger("FPT window.dataLayer initialized")),logger("FPT pushing dataLayerObj to window.dataLayer"),window.dataLayer.push(t),logger("FPT pushed localStorage data layer to window.dataLayer")),logger("FPT finished processing dataLayer")}catch(e){logger("FPT Error pushing data layer to window.dataLayer: "+e)}}"loading"!==document.readyState?(fibr_logEvent("fibr_initialHideFunctioninsideloading"),fibr_initialHideFunction(),initBodyObserver()):document.addEventListener("DOMContentLoaded",e=>{fibr_logEvent("fibr_initialHideFunctioninsidedomcontentloaded"),fibr_initialHideFunction(),initBodyObserver()});let copyDataLayerAndSendEvent=()=>{try{copyDataLayerToWindow()}catch(e){logger("FPT Error in copyDataLayerToWindow: "+e)}try{sendCookieEvent()}catch(e){logger("FPT Error in sendCookieEvent: "+e)}};function init(){start=new Date;try{initSpaUrlChangeDetection(),sendAuxillaryCookieEvent(currentUrlWithoutQuery),config?.clientId&&allowedJourneyAuxillaryClientIds?.includes(config?.clientId)&&processJourneyTracking(getCurrentWindowUrl()),logger("FPT Auxillary event fired")}catch(e){logger("FPT Auxillary event fired err: "+e)}isReloadFailed?(logger("FPT failed event reloaded scenario"),localStorage.removeItem("__fibr_data_layer"),transitionFibrBlurEffect(),copyDataLayerAndSendEvent()):isRequestFromFibrEditor?(localStorage.removeItem("__fibr_data_layer"),getExperienceData(applyChanges)):isByPassResolver?(transitionFibrBlurEffect(),copyDataLayerAndSendEvent()):(logger("FPT init called 2"),getRequestParameters(applyChanges))}init();let resetAsyncElements=()=>{try{hasHiddenElementsForAsync=!1,unhideElementsForAsync(asyncElements[currentUrlWithoutQuery]??[]);var e=document.getElementById("fibr-style");logger("FPT fibrStyle",e),e&&document.head.removeChild(e),setTimeout(()=>{try{logger("FPT Time Taken img tag",new Date-loggerTimer);var e=document.getElementById("fibr-async-img-style");logger("POC FPT asynImgStyle",e),e&&document.head.removeChild(e)}catch(e){logger("FPT error in resetAsyncElements",e)}},300)}catch(e){logger("FPT error in resetAsyncElements",e)}};function transitionFibrBlurEffect(e=!1){if(!0!==e&&!areChangesGotApplied)return!1;hasHiddenElementsForAsync&&!isByPassResolver&&resetAsyncElements(),root.style.opacity=1,root.style.filter="blur(0px)";try{document.body.style.opacity="1";var t=document.getElementById("fibr-style");t&&t.parentNode&&t.parentNode.removeChild(t)}catch(e){logger("transitionFibrBlurEffect failed",e)}}function deepCloneElement(e){return e.cloneNode(!0)}function replaceDocumentRootElement(e){document.documentElement.replaceWith(e)}function hideElementsForAsync(e){logger("FPT hideElements",e),logger("FPT Time Taken hiding start",new Date-loggerTimer);let t=getDeviceType();e?.forEach(i=>{if("all"===i?.d?.toLowerCase()||i?.d?.toLowerCase()===t){let t=getElementByXpath(i?.p);try{if(t){var e=generateFibrId();if(t&&e)try{t.setAttribute(FIBR_PROCESSING_FLAG,"true"),hiddenElementsMap.set(i.p,{attributeValue:e,changelog:null}),t.setAttribute(FIBR_HIDE_ID_ATTRIBUTE,e),t.removeAttribute(FIBR_PROCESSING_FLAG),"A"===t?.tagName&&config&&"678fd37effb4d5a6b22f9c0c"===config?.clientId?requestAnimationFrame(()=>{t.style.setProperty("display","none","important")}):t.style.visibility="hidden",logger("FPT Successfully hid element with Fibr ID: "+e)}catch(e){logger("FPT Error in element hiding process:",e),t.hasAttribute(FIBR_PROCESSING_FLAG)&&t.removeAttribute(FIBR_PROCESSING_FLAG),hiddenElementsMap.has(i.p)&&hiddenElementsMap.delete(i.p)}else logger("FPT Error: Invalid element or hideElementId generation failed")}}catch(e){logger("FPT error in hideElementsForAsync",e)}}});e=document.getElementById("fibr-style");logger("FPT fibrStyle",e),e&&document.head.removeChild(e),setTimeout(()=>{logger("FPT Time Taken img tag",new Date-loggerTimer);var e=document.getElementById("fibr-async-img-style");logger("FPT asynImgStyle",e),e&&document.head.removeChild(e)},300),hasHiddenElementsForAsync=!0,logger("FPT Time Taken hiding end",new Date-loggerTimer)}function isInViewport(e){if(e)return logger("FPT isInViewport",e=e.getBoundingClientRect()),0<=e.top&&0<=e.left&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}function unhideChangeSelectorEntriesFunction(){try{hiddenElementsMap&&0!==hiddenElementsMap.size?hiddenElementsMap.forEach((e,t)=>{try{var i;e&&e.attributeValue?"hidden"===(i=document.querySelector(`[${FIBR_HIDE_ID_ATTRIBUTE}="${e.attributeValue}"]`))?.style?.visibility&&(i.style.visibility="visible",logger("FPT: Successfully restored visibility for element with hide ID: "+e.attributeValue)):logger("FPT: Invalid map entry for key: "+t)}catch(e){logger(`FPT: Error processing hidden element with key ${t}:`,e)}}):logger("FPT: No hidden elements to restore")}catch(e){logger("FPT: Error in unhideChangeSelectorEntriesFunction:",e)}}function unhideElementsForAsync(e){logger("FPT unhideElementsForAsync selectors",e);let n=getDeviceType();e?.forEach(t=>{try{if(("all"===t?.d?.toLowerCase()||t?.d?.toLowerCase()===n)&&!ignoreInvisbleElements.includes(t.p)){let e=null;var i,r=attributeElementMap?.get(t.p);r&&(i=r.attributeValue,i)&&(e=document.querySelector(`[${FIBR_DATA_ATTRIBUTE}="${i}"]`),logger("FPT element found by data attribute for unhide")),e||(e=getElementByXpath(t?.p),logger("FPT element found by xpath for unhide")),e&&("A"===e.tagName?config&&"678fd37effb4d5a6b22f9c0c"===config?.clientId?setTimeout(()=>{e.style.setProperty("display","inline-block","important")},100):setTimeout(()=>{e.style.visibility="visible"},100):e.style.visibility="visible")}}catch(e){logger("FPT error in unhideElements",e)}}),unhideChangeSelectorEntriesFunction(),logger("FPT Time Taken unhiding end",new Date-loggerTimer)}function getCampaignUrl(){return(currentUrl=resetAndGetCurrentUrl()).split(/[?#]/)[0].replace(/\/$/,"")}function byPassResolver(){var e=getCampaignUrl();return logger("FPT current and search url",currentUrl,e),"undefined"==typeof config?(logger("FPT cant byPassResolver as config undefined."),!1):!1===config?.urlCheck?(logger("FPT byPassing Resolver as urlCheck is false."),!0):config?.campaignUrls&&0===config?.campaignUrls?.length?(logger("FPT byPassing Resolver as config.campaignUrls is empty."),!0):config?.campaignUrls?.includes(e)?(logger("FPT cant byPass Resolver as config.campaignUrls contains urlToSearch.",config?.campaignUrls,e),!1):(logger("FPT byPassing Resolver as config.campaignUrls doesnt contain urlToSearch.",config?.campaignUrls,e),!0)}function getDeviceTypeForEditor(){var e;return isRequestFromFibrEditor&&window.location.href?.includes("deviceType=mobile")?(logger("FPT getDeviceTypeForEditor",window.location.href),"mobile"):(logger("FPT device type info",e=visitorDetails?.device??getDeviceType()),e)}async function getRequestParameters(e){var t=getCookies();logger("Fpt sdk myCookies"+JSON.stringify(t)),visitorDetails.visitorId=t._fibrId,null==visitorDetails?.visitorId&&(visitorDetails.visitorId=generateFibrId(),setCookie("_fibrId="+visitorDetails?.visitorId+";",20)),visitCount.domainVisitCount=t["_fibr_"+currentDomain]??0,logger("Fpt sdk domainVisitCount 3333",visitCount?.domainVisitCount),visitCount.domainVisitCount=parseInt(visitCount?.domainVisitCount)+1,setCookie("_fibr_"+currentDomain+"="+visitCount?.domainVisitCount+";",20),visitCount.pageVisitCount=t["_fibr_"+currentUrl]??0,logger("Fpt sdk urlVisitCount",visitCount?.pageVisitCount),visitCount.pageVisitCount=parseInt(visitCount?.pageVisitCount)+1,setCookie("_fibr_"+currentUrl+"="+visitCount?.pageVisitCount+";",20),visitCount.baseUrlVisitCount=t["_fibr_"+currentUrlWithoutQuery]??0,logger("Fpt sdk baseUrlVisitCount",visitCount?.baseUrlVisitCount),visitCount.baseUrlVisitCount=parseInt(visitCount?.baseUrlVisitCount)+1,setCookie("_fibr_"+currentUrlWithoutQuery+"="+visitCount?.baseUrlVisitCount+";",20),logger("Fpt sdk visitCount.baseUrlVisitCount",visitCount?.baseUrlVisitCount),visitorDetails.os=getOS(),logger("Fpt sdk visitorDetails.os",visitorDetails?.os),visitorDetails.device=getDeviceType(),visitorDetails.languages=getLanguages(),visitorDetails.browser=getBrowser(),sessionDetails.sessionId=handleSession(),await getPagesFromResolverV2(e),logger("Fpt sdk visitorDetails",visitorDetails),logger("Fpt sdk visitCount",visitCount),logger("Fpt sdk campaignDetails",campaignDetails);try{sendCookieEvent()}catch(e){logger("FPT Error in sendCookieEvent: "+e)}}function seedFibrGTMVariableValuesV2(){function e(){var e=(()=>{try{if(sessionDetails&&visitorDetails&&campaignDetails)return{event:"fibr_track_event",fibr_client_id:campaignDetails?.clientId,fibr_event:"fibr_track_event",fibr_session_id:sessionDetails?.sessionId,fibr_user_id:visitorDetails?.visitorId,fibr_workflow_id:campaignDetails?.workflowId,fibr_variation_id:campaignDetails?.experienceId,fibr_variation_name:campaignDetails?.experienceName,fibr_campaign_id:campaignDetails?.campaignId,fibr_campaign_name:campaignDetails?.campaignName,fibr_campaign_group_type:campaignDetails?.campaignGroupType,fibr_campaign_group_name:campaignDetails?.campaignGroupName,fibr_campaign_group_id:campaignDetails?.campaignGroupId,fibr_is_qualifed:!doNotTrack};throw new Error("FPT GTM Seeding required details are missing")}catch(e){return console.error("FPT Error in getDataLayerValuesObject ",e?.message),null}})();localStorage.setItem("__fibr_data_layer",JSON.stringify(e))}logger("FPT Setting GTM Variable values"),e(),copyDataLayerToWindow()}function seedFibrGTMVariableValues(){function e(){dataLayer=dataLayer||[];var e=localStorage.getItem("__fibr_data_layer"),e=e?JSON.parse(e):null;!areCampaignDetailsValid()||doNotTrack||noRuleSetMatch?e?(dataLayer.push(e),logger(`FPT ${areCampaignDetailsValid()?"Default":"No"} campaign rendered, previous data layer found.`)):logger(`FPT ${areCampaignDetailsValid()?"Default":"No"} campaign rendered, no previous data layer found. Not seeding GTM`):(e=(()=>{try{if(sessionDetails&&visitorDetails&&campaignDetails)return{event:"fibr_track_event",fibr_client_id:campaignDetails?.clientId,fibr_event:"fibr_track_event",fibr_session_id:sessionDetails?.sessionId,fibr_user_id:visitorDetails?.visitorId,fibr_workflow_id:campaignDetails?.workflowId,fibr_variation_id:campaignDetails?.experienceId,fibr_variation_name:campaignDetails?.experienceName,fibr_campaign_id:campaignDetails?.campaignId,fibr_campaign_name:campaignDetails?.campaignName,fibr_campaign_group_type:campaignDetails?.campaignGroupType,fibr_campaign_group_name:campaignDetails?.campaignGroupName,fibr_campaign_group_id:campaignDetails?.campaignGroupId,fibr_is_qualifed:!doNotTrack};throw new Error("FPT GTM Seeding required details are missing")}catch(e){return console.error("FPT Error in getDataLayerValuesObject ",e?.message),null}})())&&(dataLayer.push(e),localStorage.setItem("__fibr_data_layer",JSON.stringify(e))),logger("FPT GTM Variable Values pushed to dataLayer",JSON.stringify(dataLayer))}logger("FPT Setting GTM Variable values"),"undefined"!=typeof dataLayer&&dataLayer?logger("FPT DataLayer already exists"):(logger("FPT creating data layer"),window.dataLayer=[],logger("FPT does window.dataLayer exists",window.dataLayer),dataLayer=window.dataLayer),logger("FPT does dataLayer exists",dataLayer),e()}function hideUnhidePictureTag(e,t=!1){("IMG"===e?.nodeName&&"PICTURE"===e?.parentElement?.nodeName||"IMG"===e?.nodeName)&&(e.style.opacity=!0===t?0:1,logger("POC Hiding img tag or picture tag"))}function applyChangesOnElement(e,t){var i;if(hideUnhidePictureTag(e,!0),"editEle"==t?.type&&(t?.cssProperties?.visibility&&(setStyleImportant(e,"visibility",t.cssProperties.visibility,{important:t?.importantProperties?.visibility||!1,camelCaseProperty:"visibility"}),"hidden"===t.cssProperties.visibility)&&ignoreInvisbleElements.push(t?.selectorPath),t?.cssProperties?.opacity&&setStyleImportant(e,"opacity",t.cssProperties.opacity,{important:t?.importantProperties?.opacity||!1,camelCaseProperty:"opacity"}),t?.cssProperties?.bgImage&&(""===t?.cssProperties?.bgImage?e.style.backgroundImage="none":t?.cssProperties?.bgImage.startsWith("url")?e.style.backgroundImage=t?.cssProperties?.bgImage:e.style.backgroundImage="url("+t.cssProperties.bgImage+")"),t?.cssProperties?.bgColor&&setStyleImportant(e,"background-color",t.cssProperties.bgColor,{important:t?.importantProperties?.bgColor||!1,camelCaseProperty:"backgroundColor"}),t?.properties?.href&&(e.style.href=t.properties.href),t?.cssProperties?.fontSize&&setStyleImportant(e,"font-size",t.cssProperties.fontSize,{important:t?.importantProperties?.fontSize||!1,camelCaseProperty:"fontSize"}),t?.cssProperties?.fontWeight&&setStyleImportant(e,"font-weight",t.cssProperties.fontWeight,{important:t?.importantProperties?.fontWeight||!1,camelCaseProperty:"fontWeight"}),t?.cssProperties?.fontFamily&&setStyleImportant(e,"font-family",t.cssProperties.fontFamily,{important:t?.importantProperties?.fontFamily||!1,camelCaseProperty:"fontFamily"}),t?.cssProperties?.color&&setStyleImportant(e,"color",t.cssProperties.color,{important:t?.importantProperties?.color||!1,camelCaseProperty:"color"}),t?.cssProperties?.textAlign&&setStyleImportant(e,"text-align",t.cssProperties.textAlign,{important:t?.importantProperties?.textAlign||!1,camelCaseProperty:"textAlign"}),!t?.properties?.text&&""!==t?.properties?.text||(updateText(e,t.properties.text),logger("FPT text changes",e.textContent)),(t?.properties?.media||t?.properties?.alt||t?.properties?.width||t?.properties?.height||t?.properties?.fit||t?.properties?.picture||t?.properties?.srcset||t?.properties?.isPicture)&&(updateImage(e,t?.properties?.media,t?.properties?.alt,t?.properties?.width,t?.properties?.height,t?.properties?.fit,t?.properties?.picture,t?.properties?.srcset,t?.properties?.isPicture),logger("FPT image updated",e)),(t?.properties?.video||null!=t?.properties?.autoplay||null!=t?.properties?.muted||null!=t?.properties?.loop||t?.properties?.width||t?.properties?.height)&&(updateVideo(e,{videoUrl:t?.properties?.video,autoplay:t?.properties?.autoplay,muted:t?.properties?.muted,loop:t?.properties?.loop,width:t?.properties?.width,height:t?.properties?.height}),logger("FPT video updated",e)),t?.properties?.href&&(e.href=t?.properties?.href,logger("FPT href changes",e)),t?.properties?.svg)&&(updateSVG(e,{src:t?.properties?.svg,width:t?.properties?.width,height:t?.properties?.height,contains:t?.properties?.fit}),logger("FPT svg updated",e)),"hideEle"==t?.type&&(hideElement(e),logger("FPT hides element",e)),"deleteEle"==t?.type&&(deleteElement(e),logger("FPT deletes element",e)),"appendEle"==t?.type&&(addElement(e,t?.html),logger("FPT ele to be added",t?.html)),"editHtml"==t?.type&&(replaceElement(e,t?.html),logger("FPT ele to be edited",t.html)),"moveEle"==t?.type&&t?.properties&&t?.properties?.movePosition&&((i=t?.properties?.movePosition)?.position&&setStyleImportant(e,"position",i?.position,{important:!0,camelCaseProperty:"position"}),i?.top&&(c=i?.top)&&setStyleImportant(e,"top",c,{important:!0,camelCaseProperty:"top"}),i?.left&&(c=i?.left)&&setStyleImportant(e,"left",c,{important:!0,camelCaseProperty:"left"}),i?.zIndex)&&setStyleImportant(e,"z-index",i?.zIndex,{important:!0,camelCaseProperty:"zIndex"}),"resizeEle"==t?.type&&t?.properties&&t?.properties?.movePosition&&((c=t?.properties?.movePosition)?.height&&(i=c?.height)&&setStyleImportant(e,"height",i,{important:!0,camelCaseProperty:"height"}),c?.width)&&(i=c?.width)&&setStyleImportant(e,"width",i,{important:!0,camelCaseProperty:"width"}),"rearrangeEle"===t?.type)try{if(!t?.properties?.rearrange)return void logger("Missing rearrange data in changelog");var r=t.properties.rearrange,n=t.attributes.elementId,a=document.querySelector(`[${FIBR_DATA_ATTRIBUTE}="${n}"]`);if(!a)return void logger("Element to move not found with ID: "+n);var o=Object.values(r.parent)[0],s=document.querySelector(`[${FIBR_DATA_ATTRIBUTE}="${o}"]`);if(!s)return void logger("Parent element not found with ID: "+o);var{type:l,nextSiblingID:g}=r.position;let e=null;g&&(e=document.querySelector(`[${FIBR_DATA_ATTRIBUTE}="${g}"]`)),"before"===l&&e?s.insertBefore(a,e):s.appendChild(a),logger("Successfully moved element "+n)}catch(e){logger("Error applying rearrange changelog: "+e.message)}if("editEleChild"==t?.type)if(isNaN(t?.properties?.childIndex))logger("FPT Ignoring editEleChild for path, childIndex as Nan",t.selectorPath,t?.properties?.childIndex);else{let e=null;t?.attributes&&t?.attributes?.elementId?e=getElementBySelector(t):t?.selectorPath&&(e=getElementByXpath(t?.selectorPath)),logger("FPT editEleChild for path, childIndex",e?.childNodes,t?.properties?.childIndex,e?.childNodes?.[t?.properties?.childIndex]);var c=e?.childNodes?.[t?.properties?.childIndex];c?c.textContent=t?.properties?.childText:logger("FPT Ignoring editEleChild for path, childIndex, element not found at index",t.selectorPath,t?.properties?.childIndex)}hideUnhidePictureTag(e,!1)}function getAllElementsByWildcardXPath(i){if(!i)return[];try{isFibrApplyingChanges=!0;var r=i?.selectorPath;if(!r.includes("[*]"))return logger("FPT XPath doesn't contain wildcard: "+r),[];var n=[];let t=0;for(let e=1;e<=1e3&&!(0{if("all"===e?.applicableOnDevice?.toLowerCase()||e?.applicableOnDevice?.toLowerCase()===n?.toLowerCase())if(logger("Fpt changeLog",e),i=e?.selectorPath,r=t,e?.type===FIBR_MULTI_ELEMENT_CHANGE_TYPE)try{multiElementMap&&e?.selectorPath&&(multiElementMap.set(e?.selectorPath,e),getAllElementsByWildcardXPath(e))}catch(e){logger("FPT Error applying wildcard changes: "+e?.message)}else{t=getElementBySelector(e);logger("Fpt element",t,i),changeLogsMapForObserver.set(e?.selectorPath,e),null==t?(changeLogsMapForElementsNotFound.set(e?.selectorPath,e),errorApplyingExperience=!0,logger(`Fpt XPath Element not found... `+JSON.stringify(e)),sendChangelogFailureEvent(i,"Element not found for changelog, ",r,e?.attributes&&e?.attributes?.elementId?e?.attributes?.elementId:null).then(()=>{logger("FPT Could not find changelog changelog!")}).catch(e=>logger("FPT Facing error sending fail event!, "+e))):applyChangesOnElement(t,e)}else logger("Fpt Ignoring changelog based on Device and curreentDevice",e?.applicableOnDevice,n)}),logger("tansition applyChanges 2",areChangesGotApplied=!0,new Date-loggerTimer),transitionFibrBlurEffect(),logger("FPT Successfully done FPT Changes!!!"),logger("FPT time taken",(end=new Date)-start)}catch(e){logger("FPT Reverting FPT Changes due to error!!!",JSON.stringify(e)),errorApplyingExperience=!0;try{isRequestFromFibrEditor||addExperienceInIgnoreList(isRequestFromFibrEditor?experienceId:campaignDetails?.experienceId),sendChangelogFailureEvent(i,e?.message??"",r,changeLog?.attributes&&changeLog?.attributes?.elementId?changeLog?.attributes?.elementId:null).then(()=>{logger("FPT Successfully reverted changelog!",e),pageReloadOnFail()}).catch(e=>logger("FPT Facing error sending fail event!, "+e))}catch(e){logger("FPT Facing error in replacing document with original, "+e)}transitionFibrBlurEffect()}logger("FPT Time Taken changesApplying : applyChanges end",new Date-loggerTimer)}}function pageReloadOnFail(){logger("FPT pageReloadOnFail called"),isRequestFromFibrEditor?logger("FPT pageReloadOnFail called but igonring as request from editor"):logger("FPT pageReloadOnFail called"),transitionFibrBlurEffect()}function getElementByXpath(e){try{return document.evaluate(e,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue}catch(e){return logger("Fpt res error",e),null}}function getElementBySelector(e){let t=null;try{if(e?.attributes&&e?.attributes?.elementId){var i=e?.attributes?.elementId;if(t=document.querySelector(`[${FIBR_DATA_ATTRIBUTE}="${i}"]`))return logger("FPT element found by data attribute",e?.attributes?.elementId),t}e?.selectorPath&&(t=getElementByXpath(e?.selectorPath))&&e?.attributes&&e?.attributes?.elementId&&(t.setAttribute(FIBR_PROCESSING_FLAG,"true"),t.setAttribute(FIBR_DATA_ATTRIBUTE,e?.attributes?.elementId),t.removeAttribute(FIBR_PROCESSING_FLAG),logger("FPT applied data attribute to element found by xpath"))}catch(e){logger("FPT error getting element by selector",e)}return t}function getElementByFibrId(e){try{return document.querySelector(`[${FIBR_DATA_ATTRIBUTE}="${e}"]`)}catch(e){return logger("FPT error getting element by fibr id",e),null}}function getXpath(e){if(e&&e.tagName){for(var t="";e.parentNode;){if(e.id){t="//"+e.tagName.toLowerCase()+'[@id="'+e.id+'"]'+t;break}for(var i=1,r=e;r.previousElementSibling;)(r=r.previousElementSibling).tagName===e.tagName&&i++;t="/"+e.tagName.toLowerCase()+"["+i+"]"+t,e=e.parentNode}return t}return""}function matchesXPath(e,t){try{return document.evaluate(t,e,null,XPathResult.BOOLEAN_TYPE,null).booleanValue}catch(e){return!1}}function htmlToElements(e){var t=document.createElement("template");return t.innerHTML=e,1==t.content.childNodes.length?t.content.firstChild:t.content.childNodes}function updateText(e,t){t&&(e.textContent=t)}function isPicture(e){return logger("FPT ele.nodeName === IMG","IMG"===e.nodeName,e.parentElement.nodeName),"IMG"===e.nodeName&&"PICTURE"===e.parentElement.nodeName}function isVideoElement(e){return"VIDEO"===e.nodeName}function clearPictureElement(t){for(var e=t?.children?.length,i=[],r=0;rt.removeChild(e))}catch(e){logger("FPT picturetag remove child failed, ",e)}logger("FPT picturetag set selectedElement.current reseting last",t.children)}function checkLoadSuccess(e,t){logger("POC FPT Time Taken image loaded",new Date-loggerTimer),e.style.opacity=1,logger("POC FPT checkLoadSuccess",e.src,t)}function updateImage(t,i,e,r,n,a,o,s,l){if(i||l||s||o){if(!i||isPicture(t)||s||(t.setAttribute("src",i),logger("FPT Media changes for non-picture, non-srcset Img - case 1")),s&&!isPicture(t)&&(t.setAttribute("srcset",s.join(", ")),i&&t.setAttribute("src",i),logger("FPT Media changes for non-picture, srcset Img - case 2")),isPicture(t)&&l&&o){for(var g=t.parentElement,c=g?.children,d=o?.sources?.length,p=[],u=0,m=0;me?.getAttribute("data-fibr-id")===t)?logger("FPT Element with fibr-id already exists, skipping addition"):("prepend"===r.getAttribute("data-fibr-position")?e.prepend(r):e.appendChild(r),logger("FPT New element added successfully with id:",t),logger("FPT New element added successfully with id:",t)):logger("FPT Error: No data-fibr-id found in HTML string")}else logger("FPT Error: Could not parse HTML string")}else logger("FPT Error: Invalid HTML string");else logger("FPT Error: Invalid parent element")}catch(e){logger("FPT Critical error in addElement:",e)}}function replaceElement(e,t){try{if(e&&t)if(document.body.contains(e))try{watchMutationObserverOnBody&&!isRequestFromFibrEditor&&(isFibrApplyingChanges=!0);var i=htmlToElements(t);i?(e.replaceWith(i),logger("FPT Element replaced successfully")):logger("FPT Error: Could not create new element from HTML")}catch(e){logger("FPT Error replacing element:",e)}finally{watchMutationObserverOnBody&&!isRequestFromFibrEditor&&requestAnimationFrame(()=>{isFibrApplyingChanges=!1})}else logger("FPT Error: Target element not found in DOM");else logger("FPT Error: Invalid element or HTML string")}catch(e){logger("FPT Critical error in replaceElement:",e)}}function generateUUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function generateFibrId(){return"FIBR_"+"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})}function getOS(){var e=window.navigator.userAgent,t=window.navigator.platform,i=null;return-1!==["Macintosh","MacIntel","MacPPC","Mac68K"].indexOf(t)?i="MacOS":-1!==["iPhone","iPad","iPod"].indexOf(t)?i="iOS":-1!==["Win32","Win64","Windows","WinCE"].indexOf(t)?i="Windows":/Android/.test(e)?i="Android":!i&&/Linux/.test(t)&&(i="Linux"),i}function getDeviceType(){var e=navigator.userAgent.toLowerCase(),t=/iPhone|Android/i.test(navigator.userAgent),e=/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(e);return t?(logger("FPT Mobile"),"mobile"):e?"tablet":"desktop"}function getVisitorIp(){return fetch("https://api.ipify.org?format=json").then(e=>e.json()).then(e=>{logger("Fpt sdk",e.ip),visitorDetails.visitorIp=e.ip,getGeoLocation()}),null}function getLanguages(){return navigator.languages}function getBrowser(){return-1!=(navigator.userAgent.indexOf("Opera")||navigator.userAgent.indexOf("OPR"))?"opera":-1!=navigator.userAgent.indexOf("Edg")?"edge":-1!=navigator.userAgent.indexOf("Chrome")?"chrome":-1!=navigator.userAgent.indexOf("Safari")?"safari":-1!=navigator.userAgent.indexOf("Firefox")?"firefox":-1!=navigator.userAgent.indexOf("MSIE")||1==!!document.documentMode?"ie":null}function handleSession(){let e=getCookie("fpt_ssid");return e||setCookieWithTtl("fpt_ssid",e=generateUUID(),24),e}async function sendChangelogFailureEvent(e,t,i,r=null){e={eventType:"FAILED_EVENT",path:campaignDetails.url??currentUrl,timestamp:Date.now(),clientId:campaignDetails?.clientId??"",experienceId:campaignDetails?.experienceId??experienceId,xPath:""+e,fibrElementId:""+r,elemIndex:""+i,errorMsg:""+t,subType:"Experience_XPath"};logger("FPT firing failed event"),await sendEventAsync(e)}async function sendInfraFailureEvent(e,t,i,r,n){logger("FPT sending infra failed event");e={eventType:"INFRA_FAILED_EVENT_v2",path:currentUrl,timestamp:Date.now(),clientId:campaignDetails?.clientId??"",experienceId:campaignDetails?.experienceId??experienceId,errorMsg:""+e,stackTrace:""+n,sdkVersion:""+sdkVersion,isRequestFromEditor:""+isRequestFromFibrEditor,apiPath:t,apiResponse:r,requestBody:i};logger("FPT firing infra failed event"),await sendEventAsync(e)}function addExperienceInIgnoreList(e){var t=getCookie(expIgnoreListCookieName);let i=[];try{i=t?JSON.parse(t):[]}catch(e){i=[]}logger("FPT addExperienceInIgnoreList ",e),i.push(""+e),t=JSON.stringify(i),setCookieWithTtl(expIgnoreListCookieName,t,1)}function isExperienceInIgnoreList(e){var t=getCookie(expIgnoreListCookieName);let i=[];try{i=t?JSON.parse(t):[]}catch(e){i=[]}return logger("FPT isExperienceInIgnoreList ",e,i.includes(""+e)),i.includes(""+e)}async function getGeoLocation(){await getPagesFromResolverV2(applyChanges)}async function sendEventAsync(t){try{logger("Fpt event send",await(await fetch(ANALYTICS_API_URL+"/event-handler/event",{method:"POST",body:JSON.stringify({campaignDetails:campaignDetails,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails,event:t}),headers:{"Content-type":"text/plain"}})).json(),t)}catch(e){logger("FPT sendEvent failed for e",t)}}async function sendEvent(t){try{var e=getCookies();fetch(ANALYTICS_API_URL+"/event-handler/event",{method:"POST",body:JSON.stringify({campaignDetails:campaignDetails,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails,event:t,cookies:e}),headers:{"Content-type":"text/plain"}}).then(e=>e.json()).then(e=>logger("Fpt event send",e,t))}catch(e){logger("FPT sendEvent failed for e",t)}}function sendEventWithBeacon(e){try{var t=getCookies(),i={campaignDetails:campaignDetails,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails,event:e,cookies:t};navigator.sendBeacon(ANALYTICS_API_URL+"/event-handler/event",JSON.stringify(i))}catch(e){logger("FPT sendEventWithBeacon failed for e",e)}}async function sendEventWithFetchKeepAlive(t){try{var e=getCookies(),i={campaignDetails:campaignDetails,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails,event:t,cookies:e};fetch(ANALYTICS_API_URL+"/event-handler/event",{method:"POST",body:JSON.stringify(i),headers:{"Content-type":"text/plain"},keepalive:!0}).then(e=>e.json()).then(e=>logger("Fpt event send",e,t)).catch(e=>logger("FPT sendEventWithFetchKeepAlive fetch error",e))}catch(e){logger("FPT sendEventWithFetchKeepAlive failed for e",t,e)}}async function sendCookieEvent(){try{var t=getCookies();fetch(ANALYTICS_API_URL+"/event-handler/event",{method:"POST",body:JSON.stringify({campaignDetails:{...campaignDetails,clientId:campaignDetails?.clientId??config?.clientId},visitCount:visitCount,sessionDetails:{...sessionDetails,sessionId:sessionDetails?.sessionId??handleSession()},visitorDetails:visitorDetails,event:{eventType:"PAGE_VIEW_EVENT",flag:"COOKIE_EVENT",timestamp:Date.now(),doNotTrack:doNotTrack},cookies:t}),headers:{"Content-type":"text/plain"}}).then(e=>e.json()).then(e=>logger("(sendCookieEvent) FPT event send",e))}catch(t){logger("(sendCookieEvent) FPT sendEvent failed for e",e)}}async function sendAuxillaryEvent(t){var e=getDecodedCookie(auxillaryCookieKey);if(e)try{var i=JSON.parse(e||"{}"),r=getCookies(),n=JSON.stringify({...i||{},event:t,cookies:r});fetch(ANALYTICS_API_URL+"/event-handler/event",{method:"POST",body:n,headers:{"Content-type":"text/plain"}}).then(e=>e.json()).then(e=>logger("Fpt auxillary event send",e,t))}catch(e){logger("FPT auxillary sendEvent failed for e",t,e)}else logger("FPT auxillary cookie not found")}async function getPagesFromResolver(){logger("FPT getPagesFromResolver called");let e=JSON.stringify({url:getCurrentWindowUrl()||currentUrl,domain:currentDomain,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails});fetch(RESOLVER_API_URL+"/experience/page",{method:"POST",body:e,headers:{"Content-type":"text/plain"}}).then(e=>{if(e.ok)return e.json();throw new Error(`received error response from resolver, responseCode: ${e?.status}, responseError: `+JSON.stringify(e?.error??null))}).then(e=>{try{logger("Fpt sdk 1",e);var t=e?.data;enrichLocationDetails(t?.locationDetails),enrichCampaignDetails(t?.campaignDetails),pages=t?.experiencePages,triggers=pages?.[0]?.triggers??[],logger("FPT pages, triggers",pages,triggers),addApplyChangesHandler(),seedFibrGTMVariableValues()}catch(t){logger("FPT exception occurred while applying changelog!!",t);try{sendInfraFailureEvent("SDK error applying experience changelogs: "+t,null,null,JSON.stringify(e),t?.stack??null).then(()=>{logger("FPT infra error!!",t),pageReloadOnFail()})}catch(e){logger("FPT getPagesFromResolver FPT infra error!!, "+t),pageReloadOnFail()}}}).catch(t=>{logger("FPT exception occurred",t);try{logger("FPT getPagesFromResolver FPT infra error!, "+t),sendInfraFailureEvent(t,RESOLVER_API_URL+"/experience/page",e,null,t?.stack??null).then(()=>{logger('FPT infra error", '+t),pageReloadOnFail()})}catch(e){logger("FPT getPagesFromResolver FPT infra error!, "+t),pageReloadOnFail()}})}function enrichLocationDetails(e){config?.privacySettings&&!0===config?.privacySettings?.isLocationDetailsRestricted||(visitorDetails.locationDetails.country=e?.country,visitorDetails.locationDetails.city=e?.city,visitorDetails.locationDetails.province=e?.province,visitorDetails.locationDetails.timezone=e?.timezone,visitorDetails.locationDetails.countryCode=e?.countryCode)}function areCampaignDetailsValid(){return!!(campaignDetails.workflowId&&campaignDetails.campaignId&&campaignDetails.experienceId&&campaignDetails.ruleSetId&&campaignDetails.clientId)}function enrichCampaignDetails(e){campaignDetails.workflowId=e?.workflowId,campaignDetails.campaignId=e?.campaignId,campaignDetails.experienceId=e?.experienceId,campaignDetails.ruleSetId=e?.ruleSetId,campaignDetails.clientId=e?.clientId,campaignDetails.url=e?.url,campaignDetails.campaignName=e?.campaignName,campaignDetails.campaignGroupId=e?.campaignGroupId,campaignDetails.campaignGroupName=e?.campaignGroupName,campaignDetails.campaignGroupType=e?.campaignGroupType,campaignDetails.experienceName=e?.experienceName,isHoldout=e?.holdout??!1,noRuleSetMatch=e?.noRuleMatch??!1,doNotTrack=e?.doNotTrack??!1}async function getWidgetApi(e){if(e)try{var t=await fetch(API_URL+"/client/widgets/changelog/cached",{method:"POST",body:JSON.stringify({experienceId:e}),headers:{"Content-type":"application/json"}}),i=await t.json();t.ok&&applyWidgetChanges(i?.data)}catch(e){return logger("FPT getWidgetApi error",e),null}}async function callResolverPagesAPI(t,i=0){try{if(null==t||""===t)throw new Error("Request Body for resolver cannot be empty!");var e,r=await fetch(RESOLVER_API_URL+"/experience/page",{method:"POST",body:t,headers:{"Content-type":"text/plain"}});if(r.ok)return e=await r.json(),shouldApplyWidgets()&&getWidgetApi(e?.data?.campaignDetails?.experienceId),e;await sendInfraFailureEvent(`Received error response from resolver, responseCode: ${r?.status}, responseError: `+JSON.stringify(r?.error??null),RESOLVER_API_URL+"/experience/page",t,r.toString(),null),logger('FPT infra error", '+r),pageReloadOnFail()}catch(e){if(0===(i=i||0))return callResolverPagesAPI(t,1);try{var n=`FPT exception occurred - err: ${e} - errorMsg: `+e?.message;logger(n),await sendInfraFailureEvent(n,RESOLVER_API_URL+"/experience/page",t,null,e?.stack??null),pageReloadOnFail()}catch(e){logger("FPT failed to send infra failed event!, "+e),pageReloadOnFail()}}}function removeDataLayer(){try{localStorage.removeItem("__fibr_data_layer")}catch(e){logger("(removeDataLayer) FPT removeDataLayer error",e)}}async function getPagesFromResolverV2(){logger("getPagesFromResolverV2 called");var t=await callResolverPagesAPI(JSON.stringify({url:getCurrentWindowUrl()||currentUrl,domain:currentDomain,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails,clientId:config?.clientId}),0);try{logger("Fpt sdk v2",t);var e=t?.data;if(enrichLocationDetails(e?.locationDetails),enrichCampaignDetails(e?.campaignDetails),logger("(getPagesFromResolverV2) FPT campaignDetails?.experienceId",campaignDetails?.experienceId),logger("FPT pages, triggers 1 ",pages=e?.experiencePages,triggers),triggers=pages?.[0]?.triggers??[],logger("FPT pages, triggers",pages,triggers),addApplyChangesHandler(),seedFibrGTMVariableValuesV2(),config?.isFibrInlineGATrackingEnabled){logger("(GASCRIPT) Google Analytics Enabled...");try{if(logger("(GASCRIPT) Attempting to trigger Google Analytics tag..."),!sessionDetails||!visitorDetails||!campaignDetails)throw new Error("FPT GTM Seeding required details are missing");var i={event:"fibr_track_event",fibr_client_id:campaignDetails?.clientId,fibr_event:"fibr_track_event",fibr_session_id:sessionDetails?.sessionId,fibr_user_id:visitorDetails?.visitorId,fibr_workflow_id:campaignDetails?.workflowId,fibr_variation_id:campaignDetails?.experienceId,fibr_variation_name:campaignDetails?.experienceName,fibr_campaign_id:campaignDetails?.campaignId,fibr_campaign_name:campaignDetails?.campaignName,fibr_campaign_group_type:campaignDetails?.campaignGroupType,fibr_campaign_group_name:campaignDetails?.campaignGroupName,fibr_campaign_group_id:campaignDetails?.campaignGroupId,fibr_is_qualifed:"boolean"==typeof isHoldout&&!isHoldout},r=config?.measurementId;r?(window.gtag("event","fibr_impression_event",{...i,send_to:r}),logger("(GASCRIPT) GA4 event sent to measurement ID "+r)):(window.gtag("event","fibr_impression_event",i),logger("(GASCRIPT) GA4 event sent to default property")),logger("(GASCRIPT) Attempt successful to trigger Google Analytics tag...")}catch(e){logger("(GASCRIPT) Error Occurred in Google Analytics: "+e)}finally{logger("(GASCRIPT) Ending Google Analytics")}}else logger("(GASCRIPT) Google Analytics not enabled...")}catch(e){logger("FPT exception occurred while applying changelog!!",e);try{await sendInfraFailureEvent("SDK error applying experience changelogs: "+e,null,null,JSON.stringify(t),e?.stack??null),logger("FPT infra error!!",e),pageReloadOnFail()}catch(e){logger("FPT getPagesFromResolverV2 FPT infra error!!, "+e),pageReloadOnFail()}}}function determineRequestSourceIsEditor(){var e=new URLSearchParams(urlObject.search);return logger("Fpt experienceId",experienceId=e.get("expId")),null!=experienceId}function determineRequestSourceIsEditorPreview(){try{var e=new URLSearchParams(urlObject.search),t=(experienceId=e.get("expId"),e.get("editorMode"));return logger("Fpt experienceId",experienceId),"preview"===t&&null!=experienceId}catch(e){return logger("FPT determineRequestSourceIsEditorPreview error",e),!1}}function shouldApplyWidgets(){try{var e=determineRequestSourceIsEditor(),t=determineRequestSourceIsEditorPreview(),i=window.self!==window.top;return e?"true"===new URLSearchParams(urlObject.search).get("isWidgetPreview")?(logger("FPT Widget preview mode detected, skipping API calls"),!1):t&&i:!0}catch(e){return logger("FPT shouldApplyWidgets error",e),!0}}function determineIfReloadOnFailedEvent(){return!!currentUrl.includes("load")}function getCurrentUrl(){let e=localStorage.getItem("__fibr_current_url");return e||(e=getCurrentWindowUrl(),localStorage.setItem("__fibr_current_url",e)),e}function resetAndGetCurrentUrl(){var e=getCurrentWindowUrl();return localStorage.setItem("__fibr_current_url",e),e}function getCurrentWindowUrl(){return window.location.href}async function getExperienceData(){var e=API_URL+"/client/sdk/changelogs/"+experienceId;fetch(e,{method:"GET",headers:{"Content-type":"text/plain"}}).then(e=>e.json()).then(e=>{if(logger("Fpt from workflow",e),shouldApplyWidgets()&&getWidgetApi(experienceId),null!=e.data?.pages)pages=e.data?.pages,addApplyChangesHandler();else try{sendInfraFailureEvent(JSON.stringify(e),API_URL+"/client/sdk/changelogs/"+experienceId,null,JSON.stringify(e),null).then(()=>{logger("FPT infra error",e),pageReloadOnFail()})}catch(e){logger("FPT getExperienceData FPT infra error!, "+e),pageReloadOnFail()}}).catch(e=>{try{logger("FPT getExperienceData FPT infra error!, "+e),sendInfraFailureEvent(e,API_URL+"/client/sdk/changelogs/"+experienceId,null,null,e?.stack??null).then(()=>{pageReloadOnFail()})}catch(e){logger("FPT getExperienceData FPT infra error!, "+ex1),pageReloadOnFail()}})}function invokeApplyChanges(){if(applyChanges(pages),logger("tansition invokeApplyChanges",areChangesGotApplied,new Date-loggerTimer),transitionFibrBlurEffect(),logger("Fibr before events ",isRequestFromFibrEditor,doNotTrack),logger("Fibr before events doNotTrack",doNotTrack),!isRequestFromFibrEditor){logger("Fibr after events doNotTrack",doNotTrack);var e={eventType:"PAGE_VIEW_EVENT",path:campaignDetails?.url,timestamp:Date.now(),doNotTrack:doNotTrack};logger("FPT event e1"),sendEvent(e);try{setFibrAuxillaryCookieData(),logger("FPT auxillary cookie set")}catch(e){logger("FPT failed to set auxillary cookie err:"+e)}(triggers??[]).map(t=>{let r=null;t?.attributes&&t?.attributes?.elementId?r=getElementBySelector(t):t?.selectorPath&&(r=getElementByXpath(t?.selectorPath)),r&&t&&"successMetrics"===t?.type&&0{logger("FPT ele with event listener",r,e);var i={eventType:"SUCCESS_EVENT",path:campaignDetails?.url,timestamp:Date.now(),subType:t?.type??void 0,name:e?.name??void 0,triggerId:t?._id,successMetricId:e?.id,doNotTrack:doNotTrack};r.addEventListener(e?.action,function(e){if(e.timestamp=Date.now(),sendEventWithBeacon({...i,eventDispatchType:"beacon"}),sendEventWithFetchKeepAlive({...i,eventDispatchType:"fetchWithKeepAlive"}),config&&"678fd37effb4d5a6b22f9c0c"===config?.clientId&&"A"===e.target.tagName&&"_blank"!==e.target.target){e.preventDefault();let t=e.target.href;e=getCookies(),e={campaignDetails:campaignDetails,visitCount:visitCount,sessionDetails:sessionDetails,visitorDetails:visitorDetails,event:{...i,eventDispatchType:"navigationFetchRequest",navigationTarget:t,timestamp:Date.now()},cookies:e};fetch(ANALYTICS_API_URL+"/event-handler/event",{method:"POST",body:JSON.stringify(e),headers:{"Content-type":"text/plain"},keepalive:!0}).then(e=>{logger("FPT Navigation analytics sent successfully, navigating to:",t),window.location.href=t}).catch(e=>{logger("FPT Navigation analytics failed, navigating anyway:",e),window.location.href=t})}})})})}}function addFibrTimeout(){logger("Fpt fibr-timer: timer start"),setTimeout(()=>{logger("Fpt fibr-timer: fibr timedout"),applyingChanges||isRequestFromFibrEditor||(logger("Fpt fibr-timer: hasfibrtimedout set true"),hasFibrTimedOut=!0)},2e3)}function addApplyChangesHandler(){if("loading"==document.readyState||"interactive"==document.readyState){logger("Fpt document.readyState 1",document.readyState);var e=function(){logger("Fpt Web Page Completely Loaded"),addFibrTimeout();try{invokeApplyChanges(),initBodyObserver()}catch(e){transitionFibrBlurEffect(),logger("FPT Error in invokeApplyChanges ",e)}logger("tansition addApplyChangesHandler",areChangesGotApplied,new Date-loggerTimer),transitionFibrBlurEffect()};window.addEventListener("DOMContentLoaded",e),window.addEventListener("load",e)}else{logger("Fpt document.readyState 2",document.readyState),addFibrTimeout();try{invokeApplyChanges()}catch(e){transitionFibrBlurEffect(),logger("FPT Error in invokeApplyChanges ",e)}logger("tansition not interactive applyChangesHandler",areChangesGotApplied,new Date-loggerTimer),transitionFibrBlurEffect()}}function reinitializeVariables(){applyingChanges=!1,hasHiddenElementsForAsync=!1,hasFibrTimedOut=!1,isFibrApplyingChanges=!1,areChangesGotApplied=!1,isBodyMutationObserverActivated=!1,ignoreInvisbleElements=[],attributeElementMap=new Map,changeLogsMapForObserver=new Map,changeLogsMapForElementsNotFound=new Map,currentUrl=getCurrentWindowUrl(),errorApplyingExperience=!1,triggers=pages=null,loggerTimer=new Date}function performReinitialization(){try{fibr_initialHideFunction(),init(),initBodyObserver(),sendEvent({eventName:"fibr_sdk_reinitialized",eventType:"sdk",source:"browser_back_navigation",timestamp:Date.now(),url:getCurrentWindowUrl()})}catch(e){handleReinitializationError(e)}}function handleReinitializationError(e){logger("Error during SDK reinitialization:",e),sendInfraFailureEvent("SDK Reinitialization Error","browser_navigation",null,null,e?.stack),transitionFibrBlurEffect(!0)}document.addEventListener("load",function(){logger("tansition load",areChangesGotApplied,new Date-loggerTimer),transitionFibrBlurEffect()}),document.addEventListener("readystatechange",function(){logger("readystatechange fired",document.readyState),"complete"===document.readyState&&(logger("tansition readystatechange complete",areChangesGotApplied,new Date-loggerTimer),transitionFibrBlurEffect())}),setTimeout(()=>{logger("tansition endgame",areChangesGotApplied,new Date-loggerTimer),transitionFibrBlurEffect(!0)},5e3);let popstateTimeout=null;window.addEventListener("popstate",function(e){config&&config?.hasOwnProperty("reinitializeSdk")&&null!=config?.reinitializeSdk&&!0===config?.reinitializeSdk&&(console.log("Popstate event detected",e),popstateTimeout&&clearTimeout(popstateTimeout),popstateTimeout=setTimeout(()=>{try{var e,t,i=localStorage.getItem("__fibr_current_url"),r=getCurrentWindowUrl();i&&r?(e=buildCleanUrl(i),t=buildCleanUrl(r),e&&t&&e===t&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{performReinitialization()}):performReinitialization())):logger("Invalid URLs during navigation")}catch(e){logger("Error handling popstate event:",e),handleReinitializationError(e)}},50))});class WidgetValidator{static isValidEmail(e){return!!e&&"string"==typeof e&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}static isValidPhoneNumber(e){return!!e&&"string"==typeof e&&(e=e.replace(/\D/g,""),/^\d+$/.test(e))}static containsMaliciousCode(t){return"string"==typeof t&&[/<[^>]*script/i,/<[^>]*on\w+\s*=/i,/<[^>]*javascript:/i,/<[^>]*data:/i,/<[^>]*vbscript:/i,/\(\s*['"]*\s*[+,]\s*['"]*\s*\)/,/\[['"]*\s*[+,]\s*['"]*\]/,/\\x[0-9a-f]{2}/i,/\\u[0-9a-f]{4}/i,/&#x?[0-9a-f]+;?/i,/base64/i,/expression\s*\(.*\)/i,/url\s*\(.*\)/i,/