{ "version": 3, "sources": ["wpr-beacon.js"], "sourcesContent": ["(() => {\n // src/Utils.js\n var BeaconUtils = class {\n static getScreenWidth() {\n return window.innerWidth || document.documentElement.clientWidth;\n }\n static getScreenHeight() {\n return window.innerHeight || document.documentElement.clientHeight;\n }\n static isNotValidScreensize(is_mobile, threshold) {\n const screenWidth = this.getScreenWidth();\n const screenHeight = this.getScreenHeight();\n const isNotValidForMobile = is_mobile && (screenWidth > threshold.width || screenHeight > threshold.height);\n const isNotValidForDesktop = !is_mobile && (screenWidth < threshold.width || screenHeight < threshold.height);\n return isNotValidForMobile || isNotValidForDesktop;\n }\n static isPageCached() {\n const signature = document.documentElement.nextSibling && document.documentElement.nextSibling.data ? document.documentElement.nextSibling.data : \"\";\n return signature && signature.includes(\"Debug: cached\");\n }\n static isIntersecting(rect) {\n return rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth);\n }\n static isPageScrolled() {\n return window.pageYOffset > 0 || document.documentElement.scrollTop > 0;\n }\n };\n var Utils_default = BeaconUtils;\n\n // src/BeaconLcp.js\n var BeaconLcp = class {\n constructor(config, logger) {\n this.config = config;\n this.performanceImages = [];\n this.logger = logger;\n }\n async run() {\n try {\n const above_the_fold_images = this._generateLcpCandidates(Infinity);\n if (above_the_fold_images) {\n this._initWithFirstElementWithInfo(above_the_fold_images);\n this._fillATFWithoutDuplications(above_the_fold_images);\n }\n } catch (err) {\n this.errorCode = \"script_error\";\n this.logger.logMessage(\"Script Error: \" + err);\n }\n }\n _generateLcpCandidates(count) {\n const lcpElements = document.querySelectorAll(this.config.elements);\n if (lcpElements.length <= 0) {\n return [];\n }\n const potentialCandidates = Array.from(lcpElements);\n const topCandidates = potentialCandidates.map((element) => {\n if (\"img\" === element.nodeName.toLowerCase() && \"picture\" === element.parentElement.nodeName.toLowerCase()) {\n return null;\n }\n let rect;\n if (\"picture\" === element.nodeName.toLowerCase()) {\n const imgElement = element.querySelector(\"img\");\n if (imgElement) {\n rect = imgElement.getBoundingClientRect();\n } else {\n return null;\n }\n } else {\n rect = element.getBoundingClientRect();\n }\n return {\n element,\n rect\n };\n }).filter((item) => item !== null).filter((item) => {\n return item.rect.width > 0 && item.rect.height > 0 && Utils_default.isIntersecting(item.rect);\n }).map((item) => ({\n item,\n area: this._getElementArea(item.rect),\n elementInfo: this._getElementInfo(item.element)\n })).sort((a, b) => b.area - a.area).slice(0, count);\n return topCandidates.map((candidate) => ({\n element: candidate.item.element,\n elementInfo: candidate.elementInfo\n }));\n }\n _getElementArea(rect) {\n const visibleWidth = Math.min(rect.width, (window.innerWidth || document.documentElement.clientWidth) - rect.left);\n const visibleHeight = Math.min(rect.height, (window.innerHeight || document.documentElement.clientHeight) - rect.top);\n return visibleWidth * visibleHeight;\n }\n _getElementInfo(element) {\n const nodeName = element.nodeName.toLowerCase();\n const element_info = {\n type: \"\",\n src: \"\",\n srcset: \"\",\n sizes: \"\",\n sources: [],\n bg_set: [],\n current_src: \"\"\n };\n const css_bg_url_rgx = /url\\(\\s*?['\"]?\\s*?(.+?)\\s*?[\"']?\\s*?\\)/ig;\n if (nodeName === \"img\" && element.srcset) {\n element_info.type = \"img-srcset\";\n element_info.src = element.src;\n element_info.srcset = element.srcset;\n element_info.sizes = element.sizes;\n element_info.current_src = element.currentSrc;\n } else if (nodeName === \"img\") {\n element_info.type = \"img\";\n element_info.src = element.src;\n element_info.current_src = element.currentSrc;\n } else if (nodeName === \"video\") {\n element_info.type = \"img\";\n const source = element.querySelector(\"source\");\n element_info.src = element.poster || (source ? source.src : \"\");\n element_info.current_src = element_info.src;\n } else if (nodeName === \"svg\") {\n const imageElement = element.querySelector(\"image\");\n if (imageElement) {\n element_info.type = \"img\";\n element_info.src = imageElement.getAttribute(\"href\") || \"\";\n element_info.current_src = element_info.src;\n }\n } else if (nodeName === \"picture\") {\n element_info.type = \"picture\";\n const img = element.querySelector(\"img\");\n element_info.src = img ? img.src : \"\";\n element_info.sources = Array.from(element.querySelectorAll(\"source\")).map((source) => ({\n srcset: source.srcset || \"\",\n media: source.media || \"\",\n type: source.type || \"\",\n sizes: source.sizes || \"\"\n }));\n } else {\n const computed_style = window.getComputedStyle(element, null);\n const bg_props = [\n computed_style.getPropertyValue(\"background-image\"),\n getComputedStyle(element, \":after\").getPropertyValue(\"background-image\"),\n getComputedStyle(element, \":before\").getPropertyValue(\"background-image\")\n ].filter((prop) => prop !== \"none\");\n if (bg_props.length === 0) {\n return null;\n }\n const full_bg_prop = bg_props[0];\n element_info.type = \"bg-img\";\n if (full_bg_prop.includes(\"image-set(\")) {\n element_info.type = \"bg-img-set\";\n }\n if (!full_bg_prop || full_bg_prop === \"\" || full_bg_prop.includes(\"data:image\")) {\n return null;\n }\n const matches = [...full_bg_prop.matchAll(css_bg_url_rgx)];\n element_info.bg_set = matches.map((m) => m[1] ? { src: m[1].trim() + (m[2] ? \" \" + m[2].trim() : \"\") } : {});\n if (element_info.bg_set.every((item) => item.src === \"\")) {\n element_info.bg_set = matches.map((m) => m[1] ? { src: m[1].trim() } : {});\n }\n if (element_info.bg_set.length <= 0) {\n return null;\n }\n if (element_info.bg_set.length > 0) {\n element_info.src = element_info.bg_set[0].src;\n if (element_info.type === \"bg-img-set\") {\n element_info.src = element_info.bg_set;\n }\n }\n }\n return element_info;\n }\n _initWithFirstElementWithInfo(elements) {\n const firstElementWithInfo = elements.find((item) => {\n return item.elementInfo !== null && (item.elementInfo.src || item.elementInfo.srcset);\n });\n if (!firstElementWithInfo) {\n this.logger.logMessage(\"No LCP candidate found.\");\n this.performanceImages = [];\n return;\n }\n this.performanceImages = [{\n ...firstElementWithInfo.elementInfo,\n label: \"lcp\"\n }];\n }\n _fillATFWithoutDuplications(elements) {\n elements.forEach(({ element, elementInfo }) => {\n if (this._isDuplicateImage(element) || !elementInfo) {\n return;\n }\n this.performanceImages.push({ ...elementInfo, label: \"above-the-fold\" });\n });\n }\n _isDuplicateImage(image) {\n const elementInfo = this._getElementInfo(image);\n if (elementInfo === null) {\n return false;\n }\n const isImageOrVideo = elementInfo.type === \"img\" || elementInfo.type === \"img-srcset\" || elementInfo.type === \"video\";\n const isBgImageOrPicture = elementInfo.type === \"bg-img\" || elementInfo.type === \"bg-img-set\" || elementInfo.type === \"picture\";\n return (isImageOrVideo || isBgImageOrPicture) && this.performanceImages.some((item) => item.src === elementInfo.src);\n }\n getResults() {\n return this.performanceImages;\n }\n };\n var BeaconLcp_default = BeaconLcp;\n\n // src/BeaconLrc.js\n var BeaconLrc = class {\n constructor(config, logger) {\n this.config = config;\n this.logger = logger;\n this.lazyRenderElements = [];\n }\n async run() {\n try {\n const elementsInView = this._getLazyRenderElements();\n if (elementsInView) {\n this._processElements(elementsInView);\n }\n } catch (err) {\n this.errorCode = \"script_error\";\n this.logger.logMessage(\"Script Error: \" + err);\n }\n }\n _getLazyRenderElements() {\n const elements = document.querySelectorAll(\"[data-rocket-location-hash]\");\n const svgUseTargets = this._getSvgUseTargets();\n if (elements.length <= 0) {\n return [];\n }\n const validElements = Array.from(elements).filter((element) => {\n if (this._skipElement(element)) {\n return false;\n }\n if (svgUseTargets.includes(element)) {\n this.logger.logColoredMessage(`Element skipped because of SVG: ${element.tagName}`, \"orange\");\n return false;\n }\n return true;\n });\n return validElements.map((element) => ({\n element,\n depth: this._getElementDepth(element),\n distance: this._getElementDistance(element),\n hash: this._getLocationHash(element)\n }));\n }\n _getElementDepth(element) {\n let depth = 0;\n let parent = element.parentElement;\n while (parent) {\n depth++;\n parent = parent.parentElement;\n }\n return depth;\n }\n _getElementDistance(element) {\n const rect = element.getBoundingClientRect();\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return Math.max(0, rect.top + scrollTop - Utils_default.getScreenHeight());\n }\n _skipElement(element) {\n const skipStrings = this.config.skipStrings || [\"memex\"];\n if (!element || !element.id) return false;\n return skipStrings.some((str) => element.id.toLowerCase().includes(str.toLowerCase()));\n }\n _shouldSkipElement(element, exclusions) {\n if (!element) return false;\n for (let i = 0; i < exclusions.length; i++) {\n const [attribute, pattern] = exclusions[i];\n const attributeValue = element.getAttribute(attribute);\n if (attributeValue && new RegExp(pattern, \"i\").test(attributeValue)) {\n return true;\n }\n }\n return false;\n }\n _checkLcrConflict(element) {\n const conflictingElements = [];\n const computedStyle = window.getComputedStyle(element);\n const validMargins = [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"];\n const negativeMargins = validMargins.some((margin) => parseFloat(computedStyle[margin]) < 0);\n const currentElementConflicts = negativeMargins || computedStyle.contentVisibility === \"auto\" || computedStyle.contentVisibility === \"hidden\";\n if (currentElementConflicts) {\n conflictingElements.push({\n element,\n conflicts: [\n negativeMargins && \"negative margin\",\n computedStyle.contentVisibility === \"auto\" && \"content-visibility:auto\",\n computedStyle.contentVisibility === \"hidden\" && \"content-visibility:hidden\"\n ].filter(Boolean)\n });\n }\n Array.from(element.children).forEach((child) => {\n const childStyle = window.getComputedStyle(child);\n const validMargins2 = [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"];\n const childNegativeMargins = validMargins2.some((margin) => parseFloat(childStyle[margin]) < 0);\n const childConflicts = childNegativeMargins || childStyle.position === \"absolute\" || childStyle.position === \"fixed\";\n if (childConflicts) {\n conflictingElements.push({\n element: child,\n conflicts: [\n childNegativeMargins && \"negative margin\",\n childStyle.position === \"absolute\" && \"position:absolute\",\n childStyle.position === \"fixed\" && \"position:fixed\"\n ].filter(Boolean)\n });\n }\n });\n return conflictingElements;\n }\n _processElements(elements) {\n elements.forEach(({ element, depth, distance, hash }) => {\n if (this._shouldSkipElement(element, this.config.exclusions || [])) {\n return;\n }\n if (\"No hash detected\" === hash) {\n return;\n }\n const conflicts = this._checkLcrConflict(element);\n if (conflicts.length > 0) {\n this.logger.logMessage(\"Skipping element due to conflicts:\", conflicts);\n return;\n }\n const can_push_hash = element.parentElement && this._getElementDistance(element.parentElement) < this.config.lrc_threshold && distance >= this.config.lrc_threshold;\n const color = can_push_hash ? \"green\" : distance === 0 ? \"red\" : \"\";\n this.logger.logColoredMessage(`${\"\t\".repeat(depth)}${element.tagName} (Depth: ${depth}, Distance from viewport bottom: ${distance}px)`, color);\n this.logger.logColoredMessage(`${\"\t\".repeat(depth)}Location hash: ${hash}`, color);\n this.logger.logColoredMessage(`${\"\t\".repeat(depth)}Dimensions Client Height: ${element.clientHeight}`, color);\n if (can_push_hash) {\n this.lazyRenderElements.push(hash);\n this.logger.logMessage(`Element pushed with hash: ${hash}`);\n }\n });\n }\n _getXPath(element) {\n if (element && element.id !== \"\") {\n return `//*[@id=\"${element.id}\"]`;\n }\n return this._getElementXPath(element);\n }\n _getElementXPath(element) {\n if (element === document.body) {\n return \"/html/body\";\n }\n const position = this._getElementPosition(element);\n return `${this._getElementXPath(element.parentNode)}/${element.nodeName.toLowerCase()}[${position}]`;\n }\n _getElementPosition(element) {\n let pos = 1;\n let sibling = element.previousElementSibling;\n while (sibling) {\n if (sibling.nodeName === element.nodeName) {\n pos++;\n }\n sibling = sibling.previousElementSibling;\n }\n return pos;\n }\n _getLocationHash(element) {\n return element.hasAttribute(\"data-rocket-location-hash\") ? element.getAttribute(\"data-rocket-location-hash\") : \"No hash detected\";\n }\n _getSvgUseTargets() {\n const useElements = document.querySelectorAll(\"use\");\n const targets = /* @__PURE__ */ new Set();\n useElements.forEach((use) => {\n let parent = use.parentElement;\n while (parent && parent !== document.body) {\n targets.add(parent);\n parent = parent.parentElement;\n }\n });\n return Array.from(targets);\n }\n getResults() {\n return this.lazyRenderElements;\n }\n };\n var BeaconLrc_default = BeaconLrc;\n\n // src/Logger.js\n var Logger = class {\n constructor(enabled) {\n this.enabled = enabled;\n }\n logMessage(msg) {\n if (!this.enabled) {\n return;\n }\n console.log(msg);\n }\n logColoredMessage(msg, color = \"green\") {\n if (!this.enabled) {\n return;\n }\n console.log(`%c${msg}`, `color: ${color};`);\n }\n };\n var Logger_default = Logger;\n\n // src/BeaconManager.js\n var BeaconManager = class {\n constructor(config) {\n this.config = config;\n this.lcpBeacon = null;\n this.lrcBeacon = null;\n this.infiniteLoopId = null;\n this.errorCode = \"\";\n this.logger = new Logger_default(this.config.debug);\n }\n async init() {\n this.scriptTimer = /* @__PURE__ */ new Date();\n if (!await this._isValidPreconditions()) {\n this._finalize();\n return;\n }\n if (Utils_default.isPageScrolled()) {\n this.logger.logMessage(\"Bailing out because the page has been scrolled\");\n this._finalize();\n return;\n }\n this.infiniteLoopId = setTimeout(() => {\n this._handleInfiniteLoop();\n }, 1e4);\n const isGeneratedBefore = await this._getGeneratedBefore();\n const shouldGenerateLcp = this.config.status.atf && (isGeneratedBefore === false || isGeneratedBefore.lcp === false);\n const shouldGeneratelrc = this.config.status.lrc && (isGeneratedBefore === false || isGeneratedBefore.lrc === false);\n if (shouldGenerateLcp) {\n this.lcpBeacon = new BeaconLcp_default(this.config, this.logger);\n await this.lcpBeacon.run();\n } else {\n this.logger.logMessage(\"Not running BeaconLcp because data is already available or feature is disabled\");\n }\n if (shouldGeneratelrc) {\n this.lrcBeacon = new BeaconLrc_default(this.config, this.logger);\n await this.lrcBeacon.run();\n } else {\n this.logger.logMessage(\"Not running BeaconLrc because data is already available or feature is disabled\");\n }\n if (shouldGenerateLcp || shouldGeneratelrc) {\n this._saveFinalResultIntoDB();\n } else {\n this.logger.logMessage(\"Not saving results into DB as no beacon features ran.\");\n this._finalize();\n }\n }\n async _isValidPreconditions() {\n const threshold = {\n width: this.config.width_threshold,\n height: this.config.height_threshold\n };\n if (Utils_default.isNotValidScreensize(this.config.is_mobile, threshold)) {\n this.logger.logMessage(\"Bailing out because screen size is not acceptable\");\n return false;\n }\n return true;\n }\n async _getGeneratedBefore() {\n if (!Utils_default.isPageCached()) {\n return false;\n }\n let data_check = new FormData();\n data_check.append(\"action\", \"rocket_check_beacon\");\n data_check.append(\"rocket_beacon_nonce\", this.config.nonce);\n data_check.append(\"url\", this.config.url);\n data_check.append(\"is_mobile\", this.config.is_mobile);\n const beacon_data_response = await fetch(this.config.ajax_url, {\n method: \"POST\",\n credentials: \"same-origin\",\n body: data_check\n }).then((data) => data.json());\n return beacon_data_response.data;\n }\n _saveFinalResultIntoDB() {\n const results = {\n lcp: this.lcpBeacon ? this.lcpBeacon.getResults() : null,\n lrc: this.lrcBeacon ? this.lrcBeacon.getResults() : null\n };\n const data = new FormData();\n data.append(\"action\", \"rocket_beacon\");\n data.append(\"rocket_beacon_nonce\", this.config.nonce);\n data.append(\"url\", this.config.url);\n data.append(\"is_mobile\", this.config.is_mobile);\n data.append(\"status\", this._getFinalStatus());\n data.append(\"results\", JSON.stringify(results));\n fetch(this.config.ajax_url, {\n method: \"POST\",\n credentials: \"same-origin\",\n body: data,\n headers: {\n \"wpr-saas-no-intercept\": true\n }\n }).then((response) => response.json()).then((data2) => {\n this.logger.logMessage(data2.data.lcp);\n }).catch((error) => {\n this.logger.logMessage(error);\n }).finally(() => {\n this._finalize();\n });\n }\n _getFinalStatus() {\n if (\"\" !== this.errorCode) {\n return this.errorCode;\n }\n const scriptTime = (/* @__PURE__ */ new Date() - this.scriptTimer) / 1e3;\n if (10 <= scriptTime) {\n return \"timeout\";\n }\n return \"success\";\n }\n _handleInfiniteLoop() {\n this._saveFinalResultIntoDB();\n }\n _finalize() {\n const beaconscript = document.querySelector('[data-name=\"wpr-wpr-beacon\"]');\n beaconscript.setAttribute(\"beacon-completed\", \"true\");\n clearTimeout(this.infiniteLoopId);\n }\n };\n var BeaconManager_default = BeaconManager;\n\n // src/BeaconEntryPoint.js\n ((rocket_beacon_data) => {\n if (!rocket_beacon_data) {\n return;\n }\n const instance = new BeaconManager_default(rocket_beacon_data);\n if (document.readyState !== \"loading\") {\n setTimeout(() => {\n instance.init();\n }, rocket_beacon_data.delay);\n return;\n }\n document.addEventListener(\"DOMContentLoaded\", () => {\n setTimeout(() => {\n instance.init();\n }, rocket_beacon_data.delay);\n });\n })(window.rocket_beacon_data);\n var BeaconEntryPoint_default = BeaconManager_default;\n})();\n"], "mappings": "CAAC,IAAM,CAEL,IAAIA,EAAc,KAAM,CACtB,OAAO,gBAAiB,CACtB,OAAO,OAAO,YAAc,SAAS,gBAAgB,WACvD,CACA,OAAO,iBAAkB,CACvB,OAAO,OAAO,aAAe,SAAS,gBAAgB,YACxD,CACA,OAAO,qBAAqBC,EAAWC,EAAW,CAChD,MAAMC,EAAc,KAAK,eAAe,EAClCC,EAAe,KAAK,gBAAgB,EACpCC,EAAsBJ,IAAcE,EAAcD,EAAU,OAASE,EAAeF,EAAU,QAC9FI,EAAuB,CAACL,IAAcE,EAAcD,EAAU,OAASE,EAAeF,EAAU,QACtG,OAAOG,GAAuBC,CAChC,CACA,OAAO,cAAe,CACpB,MAAMC,EAAY,SAAS,gBAAgB,aAAe,SAAS,gBAAgB,YAAY,KAAO,SAAS,gBAAgB,YAAY,KAAO,GAClJ,OAAOA,GAAaA,EAAU,SAAS,eAAe,CACxD,CACA,OAAO,eAAeC,EAAM,CAC1B,OAAOA,EAAK,QAAU,GAAKA,EAAK,OAAS,GAAKA,EAAK,MAAQ,OAAO,aAAe,SAAS,gBAAgB,eAAiBA,EAAK,OAAS,OAAO,YAAc,SAAS,gBAAgB,YACzL,CACA,OAAO,gBAAiB,CACtB,OAAO,OAAO,YAAc,GAAK,SAAS,gBAAgB,UAAY,CACxE,CACF,EACIC,EAAgBT,EAGhBU,EAAY,KAAM,CACpB,YAAYC,EAAQC,EAAQ,CAC1B,KAAK,OAASD,EACd,KAAK,kBAAoB,CAAC,EAC1B,KAAK,OAASC,CAChB,CACA,MAAM,KAAM,CACV,GAAI,CACF,MAAMC,EAAwB,KAAK,uBAAuB,GAAQ,EAC9DA,IACF,KAAK,8BAA8BA,CAAqB,EACxD,KAAK,4BAA4BA,CAAqB,EAE1D,OAASC,EAAK,CACZ,KAAK,UAAY,eACjB,KAAK,OAAO,WAAW,iBAAmBA,CAAG,CAC/C,CACF,CACA,uBAAuBC,EAAO,CAC5B,MAAMC,EAAc,SAAS,iBAAiB,KAAK,OAAO,QAAQ,EAClE,OAAIA,EAAY,QAAU,EACjB,CAAC,EAEkB,MAAM,KAAKA,CAAW,EACR,IAAKC,GAAY,CACzD,GAAcA,EAAQ,SAAS,YAAY,IAAvC,OAA0DA,EAAQ,cAAc,SAAS,YAAY,IAAzD,UAC9C,OAAO,KAET,IAAIT,EACJ,GAAkBS,EAAQ,SAAS,YAAY,IAA3C,UAA8C,CAChD,MAAMC,EAAaD,EAAQ,cAAc,KAAK,EAC9C,GAAIC,EACFV,EAAOU,EAAW,sBAAsB,MAExC,QAAO,IAEX,MACEV,EAAOS,EAAQ,sBAAsB,EAEvC,MAAO,CACL,QAAAA,EACA,KAAAT,CACF,CACF,CAAC,EAAE,OAAQW,GAASA,IAAS,IAAI,EAAE,OAAQA,GAClCA,EAAK,KAAK,MAAQ,GAAKA,EAAK,KAAK,OAAS,GAAKV,EAAc,eAAeU,EAAK,IAAI,CAC7F,EAAE,IAAKA,IAAU,CAChB,KAAAA,EACA,KAAM,KAAK,gBAAgBA,EAAK,IAAI,EACpC,YAAa,KAAK,gBAAgBA,EAAK,OAAO,CAChD,EAAE,EAAE,KAAK,CAACC,EAAGC,IAAMA,EAAE,KAAOD,EAAE,IAAI,EAAE,MAAM,EAAGL,CAAK,EAC7B,IAAKO,IAAe,CACvC,QAASA,EAAU,KAAK,QACxB,YAAaA,EAAU,WACzB,EAAE,CACJ,CACA,gBAAgBd,EAAM,CACpB,MAAMe,EAAe,KAAK,IAAIf,EAAK,OAAQ,OAAO,YAAc,SAAS,gBAAgB,aAAeA,EAAK,IAAI,EAC3GgB,EAAgB,KAAK,IAAIhB,EAAK,QAAS,OAAO,aAAe,SAAS,gBAAgB,cAAgBA,EAAK,GAAG,EACpH,OAAOe,EAAeC,CACxB,CACA,gBAAgBP,EAAS,CACvB,MAAMQ,EAAWR,EAAQ,SAAS,YAAY,EACxCS,EAAe,CACnB,KAAM,GACN,IAAK,GACL,OAAQ,GACR,MAAO,GACP,QAAS,CAAC,EACV,OAAQ,CAAC,EACT,YAAa,EACf,EACMC,EAAiB,2CACvB,GAAIF,IAAa,OAASR,EAAQ,OAChCS,EAAa,KAAO,aACpBA,EAAa,IAAMT,EAAQ,IAC3BS,EAAa,OAAST,EAAQ,OAC9BS,EAAa,MAAQT,EAAQ,MAC7BS,EAAa,YAAcT,EAAQ,mBAC1BQ,IAAa,MACtBC,EAAa,KAAO,MACpBA,EAAa,IAAMT,EAAQ,IAC3BS,EAAa,YAAcT,EAAQ,mBAC1BQ,IAAa,QAAS,CAC/BC,EAAa,KAAO,MACpB,MAAME,EAASX,EAAQ,cAAc,QAAQ,EAC7CS,EAAa,IAAMT,EAAQ,SAAWW,EAASA,EAAO,IAAM,IAC5DF,EAAa,YAAcA,EAAa,GAC1C,SAAWD,IAAa,MAAO,CAC7B,MAAMI,EAAeZ,EAAQ,cAAc,OAAO,EAC9CY,IACFH,EAAa,KAAO,MACpBA,EAAa,IAAMG,EAAa,aAAa,MAAM,GAAK,GACxDH,EAAa,YAAcA,EAAa,IAE5C,SAAWD,IAAa,UAAW,CACjCC,EAAa,KAAO,UACpB,MAAMI,EAAMb,EAAQ,cAAc,KAAK,EACvCS,EAAa,IAAMI,EAAMA,EAAI,IAAM,GACnCJ,EAAa,QAAU,MAAM,KAAKT,EAAQ,iBAAiB,QAAQ,CAAC,EAAE,IAAKW,IAAY,CACrF,OAAQA,EAAO,QAAU,GACzB,MAAOA,EAAO,OAAS,GACvB,KAAMA,EAAO,MAAQ,GACrB,MAAOA,EAAO,OAAS,EACzB,EAAE,CACJ,KAAO,CAEL,MAAMG,EAAW,CADM,OAAO,iBAAiBd,EAAS,IAAI,EAE3C,iBAAiB,kBAAkB,EAClD,iBAAiBA,EAAS,QAAQ,EAAE,iBAAiB,kBAAkB,EACvE,iBAAiBA,EAAS,SAAS,EAAE,iBAAiB,kBAAkB,CAC1E,EAAE,OAAQe,GAASA,IAAS,MAAM,EAClC,GAAID,EAAS,SAAW,EACtB,OAAO,KAET,MAAME,EAAeF,EAAS,CAAC,EAK/B,GAJAL,EAAa,KAAO,SAChBO,EAAa,SAAS,YAAY,IACpCP,EAAa,KAAO,cAElB,CAACO,GAAgBA,IAAiB,IAAMA,EAAa,SAAS,YAAY,EAC5E,OAAO,KAET,MAAMC,EAAU,CAAC,GAAGD,EAAa,SAASN,CAAc,CAAC,EAKzD,GAJAD,EAAa,OAASQ,EAAQ,IAAKC,GAAMA,EAAE,CAAC,EAAI,CAAE,IAAKA,EAAE,CAAC,EAAE,KAAK,GAAKA,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAE,KAAK,EAAI,GAAI,EAAI,CAAC,CAAC,EACvGT,EAAa,OAAO,MAAOP,GAASA,EAAK,MAAQ,EAAE,IACrDO,EAAa,OAASQ,EAAQ,IAAKC,GAAMA,EAAE,CAAC,EAAI,CAAE,IAAKA,EAAE,CAAC,EAAE,KAAK,CAAE,EAAI,CAAC,CAAC,GAEvET,EAAa,OAAO,QAAU,EAChC,OAAO,KAELA,EAAa,OAAO,OAAS,IAC/BA,EAAa,IAAMA,EAAa,OAAO,CAAC,EAAE,IACtCA,EAAa,OAAS,eACxBA,EAAa,IAAMA,EAAa,QAGtC,CACA,OAAOA,CACT,CACA,8BAA8BU,EAAU,CACtC,MAAMC,EAAuBD,EAAS,KAAMjB,GACnCA,EAAK,cAAgB,OAASA,EAAK,YAAY,KAAOA,EAAK,YAAY,OAC/E,EACD,GAAI,CAACkB,EAAsB,CACzB,KAAK,OAAO,WAAW,yBAAyB,EAChD,KAAK,kBAAoB,CAAC,EAC1B,MACF,CACA,KAAK,kBAAoB,CAAC,CACxB,GAAGA,EAAqB,YACxB,MAAO,KACT,CAAC,CACH,CACA,4BAA4BD,EAAU,CACpCA,EAAS,QAAQ,CAAC,CAAE,QAAAnB,EAAS,YAAAqB,CAAY,IAAM,CACzC,KAAK,kBAAkBrB,CAAO,GAAK,CAACqB,GAGxC,KAAK,kBAAkB,KAAK,CAAE,GAAGA,EAAa,MAAO,gBAAiB,CAAC,CACzE,CAAC,CACH,CACA,kBAAkBC,EAAO,CACvB,MAAMD,EAAc,KAAK,gBAAgBC,CAAK,EAC9C,GAAID,IAAgB,KAClB,MAAO,GAET,MAAME,EAAiBF,EAAY,OAAS,OAASA,EAAY,OAAS,cAAgBA,EAAY,OAAS,QACzGG,EAAqBH,EAAY,OAAS,UAAYA,EAAY,OAAS,cAAgBA,EAAY,OAAS,UACtH,OAAQE,GAAkBC,IAAuB,KAAK,kBAAkB,KAAMtB,GAASA,EAAK,MAAQmB,EAAY,GAAG,CACrH,CACA,YAAa,CACX,OAAO,KAAK,iBACd,CACF,EACII,EAAoBhC,EAGpBiC,EAAY,KAAM,CACpB,YAAYhC,EAAQC,EAAQ,CAC1B,KAAK,OAASD,EACd,KAAK,OAASC,EACd,KAAK,mBAAqB,CAAC,CAC7B,CACA,MAAM,KAAM,CACV,GAAI,CACF,MAAMgC,EAAiB,KAAK,uBAAuB,EAC/CA,GACF,KAAK,iBAAiBA,CAAc,CAExC,OAAS9B,EAAK,CACZ,KAAK,UAAY,eACjB,KAAK,OAAO,WAAW,iBAAmBA,CAAG,CAC/C,CACF,CACA,wBAAyB,CACvB,MAAMsB,EAAW,SAAS,iBAAiB,6BAA6B,EAClES,EAAgB,KAAK,kBAAkB,EAC7C,OAAIT,EAAS,QAAU,EACd,CAAC,EAEY,MAAM,KAAKA,CAAQ,EAAE,OAAQnB,GAC7C,KAAK,aAAaA,CAAO,EACpB,GAEL4B,EAAc,SAAS5B,CAAO,GAChC,KAAK,OAAO,kBAAkB,mCAAmCA,EAAQ,OAAO,GAAI,QAAQ,EACrF,IAEF,EACR,EACoB,IAAKA,IAAa,CACrC,QAAAA,EACA,MAAO,KAAK,iBAAiBA,CAAO,EACpC,SAAU,KAAK,oBAAoBA,CAAO,EAC1C,KAAM,KAAK,iBAAiBA,CAAO,CACrC,EAAE,CACJ,CACA,iBAAiBA,EAAS,CACxB,IAAI6B,EAAQ,EACRC,EAAS9B,EAAQ,cACrB,KAAO8B,GACLD,IACAC,EAASA,EAAO,cAElB,OAAOD,CACT,CACA,oBAAoB7B,EAAS,CAC3B,MAAMT,EAAOS,EAAQ,sBAAsB,EACrC+B,EAAY,OAAO,aAAe,SAAS,gBAAgB,UACjE,OAAO,KAAK,IAAI,EAAGxC,EAAK,IAAMwC,EAAYvC,EAAc,gBAAgB,CAAC,CAC3E,CACA,aAAaQ,EAAS,CACpB,MAAMgC,EAAc,KAAK,OAAO,aAAe,CAAC,OAAO,EACvD,MAAI,CAAChC,GAAW,CAACA,EAAQ,GAAW,GAC7BgC,EAAY,KAAMC,GAAQjC,EAAQ,GAAG,YAAY,EAAE,SAASiC,EAAI,YAAY,CAAC,CAAC,CACvF,CACA,mBAAmBjC,EAASkC,EAAY,CACtC,GAAI,CAAClC,EAAS,MAAO,GACrB,QAASmC,EAAI,EAAGA,EAAID,EAAW,OAAQC,IAAK,CAC1C,KAAM,CAACC,EAAWC,CAAO,EAAIH,EAAWC,CAAC,EACnCG,EAAiBtC,EAAQ,aAAaoC,CAAS,EACrD,GAAIE,GAAkB,IAAI,OAAOD,EAAS,GAAG,EAAE,KAAKC,CAAc,EAChE,MAAO,EAEX,CACA,MAAO,EACT,CACA,kBAAkBtC,EAAS,CACzB,MAAMuC,EAAsB,CAAC,EACvBC,EAAgB,OAAO,iBAAiBxC,CAAO,EAE/CyC,EADe,CAAC,YAAa,cAAe,eAAgB,YAAY,EACzC,KAAMC,GAAW,WAAWF,EAAcE,CAAM,CAAC,EAAI,CAAC,EAE3F,OADgCD,GAAmBD,EAAc,oBAAsB,QAAUA,EAAc,oBAAsB,WAEnID,EAAoB,KAAK,CACvB,QAAAvC,EACA,UAAW,CACTyC,GAAmB,kBACnBD,EAAc,oBAAsB,QAAU,0BAC9CA,EAAc,oBAAsB,UAAY,2BAClD,EAAE,OAAO,OAAO,CAClB,CAAC,EAEH,MAAM,KAAKxC,EAAQ,QAAQ,EAAE,QAAS2C,GAAU,CAC9C,MAAMC,EAAa,OAAO,iBAAiBD,CAAK,EAE1CE,EADgB,CAAC,YAAa,cAAe,eAAgB,YAAY,EACpC,KAAMH,GAAW,WAAWE,EAAWF,CAAM,CAAC,EAAI,CAAC,GACvEG,GAAwBD,EAAW,WAAa,YAAcA,EAAW,WAAa,UAE3GL,EAAoB,KAAK,CACvB,QAASI,EACT,UAAW,CACTE,GAAwB,kBACxBD,EAAW,WAAa,YAAc,oBACtCA,EAAW,WAAa,SAAW,gBACrC,EAAE,OAAO,OAAO,CAClB,CAAC,CAEL,CAAC,EACML,CACT,CACA,iBAAiBpB,EAAU,CACzBA,EAAS,QAAQ,CAAC,CAAE,QAAAnB,EAAS,MAAA6B,EAAO,SAAAiB,EAAU,KAAAC,CAAK,IAAM,CAIvD,GAHI,KAAK,mBAAmB/C,EAAS,KAAK,OAAO,YAAc,CAAC,CAAC,GAGtC+C,IAAvB,mBACF,OAEF,MAAMC,EAAY,KAAK,kBAAkBhD,CAAO,EAChD,GAAIgD,EAAU,OAAS,EAAG,CACxB,KAAK,OAAO,WAAW,qCAAsCA,CAAS,EACtE,MACF,CACA,MAAMC,EAAgBjD,EAAQ,eAAiB,KAAK,oBAAoBA,EAAQ,aAAa,EAAI,KAAK,OAAO,eAAiB8C,GAAY,KAAK,OAAO,cAChJI,EAAQD,EAAgB,QAAUH,IAAa,EAAI,MAAQ,GACjE,KAAK,OAAO,kBAAkB,GAAG,IAAI,OAAOjB,CAAK,CAAC,GAAG7B,EAAQ,OAAO,YAAY6B,CAAK,oCAAoCiB,CAAQ,MAAOI,CAAK,EAC7I,KAAK,OAAO,kBAAkB,GAAG,IAAI,OAAOrB,CAAK,CAAC,kBAAkBkB,CAAI,GAAIG,CAAK,EACjF,KAAK,OAAO,kBAAkB,GAAG,IAAI,OAAOrB,CAAK,CAAC,6BAA6B7B,EAAQ,YAAY,GAAIkD,CAAK,EACxGD,IACF,KAAK,mBAAmB,KAAKF,CAAI,EACjC,KAAK,OAAO,WAAW,6BAA6BA,CAAI,EAAE,EAE9D,CAAC,CACH,CACA,UAAU/C,EAAS,CACjB,OAAIA,GAAWA,EAAQ,KAAO,GACrB,YAAYA,EAAQ,EAAE,KAExB,KAAK,iBAAiBA,CAAO,CACtC,CACA,iBAAiBA,EAAS,CACxB,GAAIA,IAAY,SAAS,KACvB,MAAO,aAET,MAAMmD,EAAW,KAAK,oBAAoBnD,CAAO,EACjD,MAAO,GAAG,KAAK,iBAAiBA,EAAQ,UAAU,CAAC,IAAIA,EAAQ,SAAS,YAAY,CAAC,IAAImD,CAAQ,GACnG,CACA,oBAAoBnD,EAAS,CAC3B,IAAIoD,EAAM,EACNC,EAAUrD,EAAQ,uBACtB,KAAOqD,GACDA,EAAQ,WAAarD,EAAQ,UAC/BoD,IAEFC,EAAUA,EAAQ,uBAEpB,OAAOD,CACT,CACA,iBAAiBpD,EAAS,CACxB,OAAOA,EAAQ,aAAa,2BAA2B,EAAIA,EAAQ,aAAa,2BAA2B,EAAI,kBACjH,CACA,mBAAoB,CAClB,MAAMsD,EAAc,SAAS,iBAAiB,KAAK,EAC7CC,EAA0B,IAAI,IACpC,OAAAD,EAAY,QAASE,GAAQ,CAC3B,IAAI1B,EAAS0B,EAAI,cACjB,KAAO1B,GAAUA,IAAW,SAAS,MACnCyB,EAAQ,IAAIzB,CAAM,EAClBA,EAASA,EAAO,aAEpB,CAAC,EACM,MAAM,KAAKyB,CAAO,CAC3B,CACA,YAAa,CACX,OAAO,KAAK,kBACd,CACF,EACIE,EAAoB/B,EAGpBgC,EAAS,KAAM,CACjB,YAAYC,EAAS,CACnB,KAAK,QAAUA,CACjB,CACA,WAAWC,EAAK,CACT,KAAK,SAGV,QAAQ,IAAIA,CAAG,CACjB,CACA,kBAAkBA,EAAKV,EAAQ,QAAS,CACjC,KAAK,SAGV,QAAQ,IAAI,KAAKU,CAAG,GAAI,UAAUV,CAAK,GAAG,CAC5C,CACF,EACIW,EAAiBH,EAGjBI,EAAgB,KAAM,CACxB,YAAYpE,EAAQ,CAClB,KAAK,OAASA,EACd,KAAK,UAAY,KACjB,KAAK,UAAY,KACjB,KAAK,eAAiB,KACtB,KAAK,UAAY,GACjB,KAAK,OAAS,IAAImE,EAAe,KAAK,OAAO,KAAK,CACpD,CACA,MAAM,MAAO,CAEX,GADA,KAAK,YAA8B,IAAI,KACnC,CAAC,MAAM,KAAK,sBAAsB,EAAG,CACvC,KAAK,UAAU,EACf,MACF,CACA,GAAIrE,EAAc,eAAe,EAAG,CAClC,KAAK,OAAO,WAAW,gDAAgD,EACvE,KAAK,UAAU,EACf,MACF,CACA,KAAK,eAAiB,WAAW,IAAM,CACrC,KAAK,oBAAoB,CAC3B,EAAG,GAAG,EACN,MAAMuE,EAAoB,MAAM,KAAK,oBAAoB,EACnDC,EAAoB,KAAK,OAAO,OAAO,MAAQD,IAAsB,IAASA,EAAkB,MAAQ,IACxGE,EAAoB,KAAK,OAAO,OAAO,MAAQF,IAAsB,IAASA,EAAkB,MAAQ,IAC1GC,GACF,KAAK,UAAY,IAAIvC,EAAkB,KAAK,OAAQ,KAAK,MAAM,EAC/D,MAAM,KAAK,UAAU,IAAI,GAEzB,KAAK,OAAO,WAAW,gFAAgF,EAErGwC,GACF,KAAK,UAAY,IAAIR,EAAkB,KAAK,OAAQ,KAAK,MAAM,EAC/D,MAAM,KAAK,UAAU,IAAI,GAEzB,KAAK,OAAO,WAAW,gFAAgF,EAErGO,GAAqBC,EACvB,KAAK,uBAAuB,GAE5B,KAAK,OAAO,WAAW,uDAAuD,EAC9E,KAAK,UAAU,EAEnB,CACA,MAAM,uBAAwB,CAC5B,MAAMhF,EAAY,CAChB,MAAO,KAAK,OAAO,gBACnB,OAAQ,KAAK,OAAO,gBACtB,EACA,OAAIO,EAAc,qBAAqB,KAAK,OAAO,UAAWP,CAAS,GACrE,KAAK,OAAO,WAAW,mDAAmD,EACnE,IAEF,EACT,CACA,MAAM,qBAAsB,CAC1B,GAAI,CAACO,EAAc,aAAa,EAC9B,MAAO,GAET,IAAI0E,EAAa,IAAI,SACrB,OAAAA,EAAW,OAAO,SAAU,qBAAqB,EACjDA,EAAW,OAAO,sBAAuB,KAAK,OAAO,KAAK,EAC1DA,EAAW,OAAO,MAAO,KAAK,OAAO,GAAG,EACxCA,EAAW,OAAO,YAAa,KAAK,OAAO,SAAS,GACvB,MAAM,MAAM,KAAK,OAAO,SAAU,CAC7D,OAAQ,OACR,YAAa,cACb,KAAMA,CACR,CAAC,EAAE,KAAMC,GAASA,EAAK,KAAK,CAAC,GACD,IAC9B,CACA,wBAAyB,CACvB,MAAMC,EAAU,CACd,IAAK,KAAK,UAAY,KAAK,UAAU,WAAW,EAAI,KACpD,IAAK,KAAK,UAAY,KAAK,UAAU,WAAW,EAAI,IACtD,EACMD,EAAO,IAAI,SACjBA,EAAK,OAAO,SAAU,eAAe,EACrCA,EAAK,OAAO,sBAAuB,KAAK,OAAO,KAAK,EACpDA,EAAK,OAAO,MAAO,KAAK,OAAO,GAAG,EAClCA,EAAK,OAAO,YAAa,KAAK,OAAO,SAAS,EAC9CA,EAAK,OAAO,SAAU,KAAK,gBAAgB,CAAC,EAC5CA,EAAK,OAAO,UAAW,KAAK,UAAUC,CAAO,CAAC,EAC9C,MAAM,KAAK,OAAO,SAAU,CAC1B,OAAQ,OACR,YAAa,cACb,KAAMD,EACN,QAAS,CACP,wBAAyB,EAC3B,CACF,CAAC,EAAE,KAAME,GAAaA,EAAS,KAAK,CAAC,EAAE,KAAMC,GAAU,CACrD,KAAK,OAAO,WAAWA,EAAM,KAAK,GAAG,CACvC,CAAC,EAAE,MAAOC,GAAU,CAClB,KAAK,OAAO,WAAWA,CAAK,CAC9B,CAAC,EAAE,QAAQ,IAAM,CACf,KAAK,UAAU,CACjB,CAAC,CACH,CACA,iBAAkB,CAChB,OAAW,KAAK,YAAZ,GACK,KAAK,UAGV,KADgC,IAAI,KAAS,KAAK,aAAe,IAE5D,UAEF,SACT,CACA,qBAAsB,CACpB,KAAK,uBAAuB,CAC9B,CACA,WAAY,CACW,SAAS,cAAc,8BAA8B,EAC7D,aAAa,mBAAoB,MAAM,EACpD,aAAa,KAAK,cAAc,CAClC,CACF,EACIC,EAAwBV,GAG1BW,GAAuB,CACvB,GAAI,CAACA,EACH,OAEF,MAAMC,EAAW,IAAIF,EAAsBC,CAAkB,EAC7D,GAAI,SAAS,aAAe,UAAW,CACrC,WAAW,IAAM,CACfC,EAAS,KAAK,CAChB,EAAGD,EAAmB,KAAK,EAC3B,MACF,CACA,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,WAAW,IAAM,CACfC,EAAS,KAAK,CAChB,EAAGD,EAAmB,KAAK,CAC7B,CAAC,CACH,GAAG,OAAO,kBAAkB,EAC5B,IAAIE,EAA2BH,CACjC,GAAG", "names": ["BeaconUtils", "is_mobile", "threshold", "screenWidth", "screenHeight", "isNotValidForMobile", "isNotValidForDesktop", "signature", "rect", "Utils_default", "BeaconLcp", "config", "logger", "above_the_fold_images", "err", "count", "lcpElements", "element", "imgElement", "item", "a", "b", "candidate", "visibleWidth", "visibleHeight", "nodeName", "element_info", "css_bg_url_rgx", "source", "imageElement", "img", "bg_props", "prop", "full_bg_prop", "matches", "m", "elements", "firstElementWithInfo", "elementInfo", "image", "isImageOrVideo", "isBgImageOrPicture", "BeaconLcp_default", "BeaconLrc", "elementsInView", "svgUseTargets", "depth", "parent", "scrollTop", "skipStrings", "str", "exclusions", "i", "attribute", "pattern", "attributeValue", "conflictingElements", "computedStyle", "negativeMargins", "margin", "child", "childStyle", "childNegativeMargins", "distance", "hash", "conflicts", "can_push_hash", "color", "position", "pos", "sibling", "useElements", "targets", "use", "BeaconLrc_default", "Logger", "enabled", "msg", "Logger_default", "BeaconManager", "isGeneratedBefore", "shouldGenerateLcp", "shouldGeneratelrc", "data_check", "data", "results", "response", "data2", "error", "BeaconManager_default", "rocket_beacon_data", "instance", "BeaconEntryPoint_default"] }