{"version":3,"file":"aem-analytics.js","sources":["../../src/js/utils/analytics-utils.js","../../src/js/cookie.js","../../src/js/utils/survey.js","../../src/js/utils/promo-tracking.js","../../src/js/aem-analytics.js"],"sourcesContent":["/**\r\n * Simulate negative lookbehind for RegEx\r\n * @param {string} text - string to be tested (text in normal order)\r\n * @param {RegExp} expression - negative look forward RegEx - text to test must be reversed\r\n * @return {Boolean} - Return true if match and false if not\r\n */\r\nfunction negativeLookBehind(text, expression) {\r\n 'use strict';\r\n return expression.test(text.split('').reverse().join(''));\r\n}\r\n\r\nfunction getCleanURL() {\r\n let cvURL = decodeURI(document.URL.toLowerCase());\r\n\r\n if ((parseUri(cvURL).queryKey['errors'] || '') === 'true') {\r\n cvURL = parseUri(cvURL).noquery.toLowerCase();\r\n }\r\n\r\n cvURL = cvURL.length ? cvURL.replace(/([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+/g, 'pii') : '';\r\n cvURL = cvURL.length ? cvURL.replace(/([a-zA-Z0-9_.+-])+\\%40(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+/g, 'pii') : '';\r\n cvURL = cvURL.length ? cvURL.replace(/@/g, '(at)') : '';\r\n\r\n // Add a trailing slash if no extension.\r\n if (!((/((\\.[a-z]{3,4})|(\\/))$/i.test(cvURL)) || (/[#\\?]/i.test(cvURL)))) {\r\n cvURL = `${cvURL}/`;\r\n }\r\n\r\n // If there's a query or hash without a preceding slash figure that stuff out.\r\n if (/[#\\?]/i.test(cvURL) && !(/((\\.[a-z]{3,4})(#|\\?))/i.test(cvURL))) {\r\n let cvURLtempSplit;\r\n if (!cvURL.includes(\"/#\") && !cvURL.includes(\"/?\")) {\r\n if (cvURL.includes(\"#\") && cvURL.includes(\"?\")) {\r\n // If hash follows the question mark add a slash to before the question mark.\r\n if (cvURL.indexOf(\"#\") > cvURL.indexOf(\"?\")) {\r\n cvURLtempSplit = cvURL.split(\"?\");\r\n cvURL = `${cvURLtempSplit[0]}/?${cvURLtempSplit[1]}`;\r\n } else {\r\n cvURLtempSplit = cvURL.split(\"#\");\r\n cvURL = `${cvURLtempSplit[0]}/#${cvURLtempSplit[1]}`;\r\n }\r\n } else if (cvURL.includes(\"#\")) {\r\n cvURLtempSplit = cvURL.split(\"#\");\r\n cvURL = `${cvURLtempSplit[0]}/#${cvURLtempSplit[1]}`;\r\n } else if (cvURL.includes(\"?\")) {\r\n cvURLtempSplit = cvURL.split(\"?\");\r\n cvURL = `${cvURLtempSplit[0]}/?${cvURLtempSplit[1]}`;\r\n }\r\n }\r\n }\r\n // Remove a hash if it's all alone at the end.\r\n cvURL = cvURL.replace(/#$/, '');\r\n\r\n cvURL = UpdateQueryString('spUserID', 'pii', cvURL);\r\n return UpdateQueryString('custtarg', 'pii', cvURL);\r\n}\r\n\r\n/**\r\n * Return an array of values for a specified field name in objects contained in an array\r\n * @param {Array} input - An array of objects for when we want to obtain the values for a specific field in all the objects\r\n * @param {string} field - Name of the fields we are looking for the value for\r\n * @return {Array} - An array of the values for the corresponding field name in each object - Objects that do not contain the specified field name do not add a value to the array\r\n */\r\nfunction getFields(input, field) {\r\n 'use strict';\r\n const output = [];\r\n const l = input.length;\r\n for (let i = 0; i < l; ++i) {\r\n const value = input[i][field];\r\n if (typeof value !== 'undefined') {\r\n output.push(value);\r\n }\r\n }\r\n return output;\r\n}\r\n\r\n/**\r\n * Create a style and attach it to the head.\r\n * @param {string} selector \r\n * @param {string} style \r\n * @returns \r\n */\r\nfunction createCSSSelector(selector, style) {\r\n if (!document.styleSheets) return;\r\n if (document.getElementsByTagName('head').length == 0) return;\r\n\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n const styleSheet = document.createElement('style');\r\n const css = `${selector} {${style};}`;\r\n if (styleSheet.styleSheet) {\r\n styleSheet.styleSheet.cssText = css;\r\n } else {\r\n styleSheet.appendChild(document.createTextNode(css));\r\n }\r\n head.appendChild(styleSheet);\r\n}\r\n\r\n/**\r\n * Add a querystring to a URL.\r\n * @param {string} key\r\n * @param {string} value\r\n * @param {string} url\r\n * @returns \r\n */\r\nfunction UpdateQueryString(key, value, url) {\r\n if (!url) url = window.location.href;\r\n const checkUrl = new RegExp(`${key}=`, 'gi');\r\n if (checkUrl.test(url)) {\r\n const re = new RegExp(`([?&])${key}=.*?(&|#|$)(.*)`, \"gi\");\r\n let hash;\r\n if (re.test(url)) {\r\n if (typeof value !== 'undefined' && value !== null) {\r\n return url.replace(re, `$1${key}=${value}$2$3`);\r\n }\r\n hash = url.split('#');\r\n url = hash[0].replace(re, '$1$3').replace(/[&\\?]$/, '');\r\n if (typeof hash[1] !== 'undefined' && hash[1] !== null) {\r\n url += `#${hash[1]}`;\r\n }\r\n }\r\n else if (typeof value !== 'undefined' && value !== null) {\r\n const separator = url.indexOf('?') !== -1 ? '&' : '?';\r\n hash = url.split('#');\r\n url = `${hash[0] + separator + key}=${value}`;\r\n if (typeof hash[1] !== 'undefined' && hash[1] !== null) {\r\n url += `#${hash[1]}`;\r\n }\r\n }\r\n }\r\n return url;\r\n}\r\n\r\n/**\r\n * \r\n * @param {string} str \r\n * @returns {Object} - Split URL.\r\n * // anchor: hashing\r\n * // authority: full domain plus port: www.amd.uk.com:80\r\n * // directory: /abc/def/xyz/\r\n * // domain: amd\r\n * // file: index.html\r\n * // host: full domain: www.amd.uk.com\r\n * // noquery: https://www.amd.uk.com:80/abc/def/xyz/index.html\r\n * // password: {{password}}\r\n * // path: /abc/def/xyz/index.html\r\n * // pathLevel: parseUri(uri).pathLevel[3]; (7 maximum)\r\n * // pathLevel[0]: www.amd.uk.com\r\n * // pathLevel[1]: www.amd.uk.com/abc\r\n * // pathLevel[2]: www.amd.uk.com/abc/def\r\n * // pathLevel[3]: www.amd.uk.com/abc/def/xyz\r\n * // pathLevel[4]: www.amd.uk.com/abc/def/xyz/index.html\r\n * // pathLevel[5]:\r\n * // pathLevel[6]:\r\n * // pathLevel[7]:\r\n * // port: 80\r\n * // protocol: https\r\n * // query: aaa=111&bbb=222\r\n * // queryKey: parseUri(uri).queryKey[\"query parameter\"];\r\n * // queryKey[\"aaa\"] = 111\r\n * // queryKey[\"bbb\"] = 222\r\n * // relative: /abc/def/xyz/index.html?aaa=111&bbb=222#hashing\r\n * // source: full URL: https://www.amd.uk.com:80/abc/def/xyz/index.html?aaa=111&bbb=222#hashing\r\n * // subdomain: www\r\n * // tld: uk.com\r\n */\r\nfunction parseUri(str) {\r\n\r\n if (typeof parseUri.options == 'undefined' || parseUri.options === null) {\r\n parseUri.options = {\r\n strictMode: false,\r\n key: ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'],\r\n q: {\r\n name: 'queryKey',\r\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g\r\n },\r\n parser: {\r\n strict: /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\r\n loose: /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/\r\n }\r\n };\r\n }\r\n const pu = parseUri.options;\r\n const m = pu.parser[pu.strictMode ? 'strict' : 'loose'].exec(str);\r\n const uri = {};\r\n let i = 14;\r\n while (i--) {\r\n uri[pu.key[i]] = m[i] || '';\r\n }\r\n uri[pu.q.name] = {};\r\n uri[pu.key[12]].replace(pu.q.parser, ($0, $1, $2) => {\r\n if ($1) {\r\n uri[pu.q.name][$1] = $2;\r\n }\r\n });\r\n uri.host = uri.host.replace(/^[.\\s]+|[.\\s]+$/g, \"\");\r\n const uriSplit = uri.host.split('.');\r\n switch (uriSplit.length) {\r\n case 2:\r\n uri.subdomain = null;\r\n uri.domain = uriSplit[0];\r\n uri.tld = uriSplit[1];\r\n break;\r\n case 3:\r\n uri.subdomain = uriSplit[0];\r\n uri.domain = uriSplit[1];\r\n uri.tld = uriSplit[2];\r\n break;\r\n case 4:\r\n uri.subdomain = uriSplit[0];\r\n uri.domain = uriSplit[1];\r\n uri.tld = `${uriSplit[2]}.${uriSplit[3]}`;\r\n break;\r\n default:\r\n uri.subdomain = uri.domain = uri.tld = null;\r\n }\r\n let pathSplit = uri.path.split('/');\r\n pathSplit[0] = uri.host;\r\n for (let p = 1; p < pathSplit.length; p++) {\r\n if (pathSplit[p]) {\r\n // Avoid extra entry with trailing slash\r\n pathSplit[p] = `${pathSplit[p - 1]}/${pathSplit[p]}`;\r\n }\r\n }\r\n if (pathSplit.length < 8) {\r\n for (let p = pathSplit.length; p < 8; p++) {\r\n pathSplit[p] = '';\r\n }\r\n }\r\n uri.pathLevel = pathSplit;\r\n uri.noquery = `${uri.protocol}://${uri.authority}${uri.path}`;\r\n return uri;\r\n}\r\n\r\n/**\r\n * Escapes a regular expression.\r\n * @param {String} regxpString \r\n * @returns {String}\r\n */\r\nfunction escapeRegExp(regxpString) {\r\n return regxpString.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\r\n}\r\n\r\n/**\r\n * Global search and replace in a string.\r\n * @param {String} regxpString \r\n * @param {String} find \r\n * @param {String} replace \r\n * @returns {String}\r\n */\r\nfunction replaceAll(regxpString, find, replace) {\r\n return regxpString.replace(new RegExp(escapeRegExp(find), 'g'), replace);\r\n}\r\n\r\nfunction getUTCDate() {\r\n const cvCurrentDT = new Date();\r\n return Date.UTC(cvCurrentDT.getUTCFullYear(), cvCurrentDT.getUTCMonth(), cvCurrentDT.getUTCDate(), cvCurrentDT.getUTCHours(), cvCurrentDT.getUTCMinutes(), cvCurrentDT.getUTCSeconds());\r\n}\r\n\r\n/**\r\n * \r\n * @param {string} url \r\n * @returns {string} URL without any identifying information.\r\n */\r\nfunction stripPii(url) {\r\n if (!url.length) {\r\n return '';\r\n }\r\n url = url.replace(/([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+/g, 'pii');\r\n url = url.replace(/([a-zA-Z0-9_.+-])+\\%40(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+/g, 'pii');\r\n return url.replace(/@/g, '(at)');\r\n}\r\n\r\n/**\r\n * \r\n * @param {string} url \r\n * @returns {string} URL with Link ID cleaned up.\r\n */\r\nfunction cleanLinkID(url) {\r\n url = url.replace('?', '&');\r\n url = url.replace('LinkID=', 'lid='); // fix for LinkID vs. lid\r\n url = url.replace('linkID=', 'lid='); // fix for LinkID vs. lid\r\n url = url.replace('LnkType=', 'lnktype=');\r\n url = url.replace('#lid=', '&lid=');\r\n url = url.replace('&lid=', '&lid='); // AR 2.3: fix for MOSS lid rewrite issue\r\n url = url.replace('#lnktype=', '&lnktype=');\r\n url = url.replace('&lnktype=', '&lnktype=');\r\n url = url.replace('&lpos=', '&lpos='); // AR 2.3: fix for MOSS lpos rewrite issue\r\n url = url.replace('#lpos=', '&lpos=');\r\n url = url.replace('Pro Graphics & Accelerators', 'Pro Graphics a-n-d Accelerators');\r\n return url.replace('pro graphics & accelerators', 'Pro Graphics a-n-d Accelerators');\r\n}\r\n\r\n/**\r\n *\r\n * @returns {string} User's language detected from the browser.\r\n */\r\nfunction cfDetectLanguage() {\r\n const sysLanguage = window.navigator.userLanguage || window.navigator.language || '';\r\n return sysLanguage.toLowerCase();\r\n}\r\n\r\nfunction removeHTMLTags(strInputCode) {\r\n if (strInputCode) {\r\n strInputCode = strInputCode.replace(/&(lt|gt);/g, (strMatch, p1) => {\r\n return (p1 == 'lt') ? '<' : '>';\r\n });\r\n return strInputCode.replace(/<\\/?[^>]+(>|$)/g, '');\r\n }\r\n}\r\n\r\nfunction documentNode(o) {\r\n let cvPTagName;\r\n let cvPPTagName;\r\n let cvPPClassName;\r\n let cvPPPTagName;\r\n let cvPPPClassName;\r\n if (typeof o.parentNode != 'undefined') {\r\n cvPTagName = o.parentNode.tagName.toLowerCase();\r\n if (typeof o.parentNode.parentNode != 'undefined' &&\r\n !cfIsNullOrWhitespace(o.parentNode.parentNode) &&\r\n o.parentNode.tagName.toLowerCase() != 'html') {\r\n if (typeof o.parentNode.parentNode.tagName != 'undefined') {\r\n cvPPTagName = o.parentNode.parentNode.tagName.toLowerCase();\r\n if (o.parentNode.parentNode.classList > 0) {\r\n cvPPClassName = o.parentNode.parentNode.classList.value.toLowerCase();\r\n }\r\n }\r\n if (typeof o.parentNode.parentNode.parentNode != 'undefined' &&\r\n !cfIsNullOrWhitespace(o.parentNode.parentNode.parentNode) &&\r\n o.parentNode.parentNode.tagName.toLowerCase() != 'html' && typeof o.parentNode.parentNode.parentNode.tagName != 'undefined') {\r\n cvPPPTagName = o.parentNode.parentNode.parentNode.tagName.toLowerCase();\r\n if (o.parentNode.parentNode.parentNode.classList > 0) {\r\n cvPPPClassName = o.parentNode.parentNode.parentNode.classList.value.toLowerCase();\r\n }\r\n }\r\n }\r\n }\r\n return { cvPTagName, cvPPTagName, cvPPClassName, cvPPPClassName, cvPPPTagName };\r\n}\r\n\r\nfunction _load_js(src, done) {\r\n const js = document.createElement('script');\r\n const head = document.getElementsByTagName('head')[0] || document.documentElement;\r\n let isDone = false;\r\n js.src = src;\r\n js.type = 'text/javascript';\r\n js.async = true;\r\n\r\n /**\r\n * Handle Script loading error.\r\n */\r\n\r\n js.onerror = () => {\r\n throw new Error(`Unable to load script: ${js.src}`);\r\n };\r\n\r\n /**\r\n * Handle Script loading success.\r\n */\r\n\r\n js.onload = js.onreadystatechange = function () {\r\n if (!isDone && (!this.readyState || (this.readyState === 'complete' || this.readyState === 'loaded' && this.nextSibling !== null))) {\r\n isDone = true;\r\n if (done) {\r\n done();\r\n }\r\n\r\n // Remove listeners.\r\n js.onload = js.onreadystatechange = null;\r\n }\r\n else if (this.readyState === 'loaded' && this.nextSibling === null) {\r\n throw new Error(`Unable to load script: ${js.src}`);\r\n }\r\n };\r\n\r\n head.appendChild(js);\r\n}\r\n\r\nfunction lsTest() {\r\n const test = 'test';\r\n try {\r\n localStorage.setItem(test, test);\r\n localStorage.removeItem(test);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nfunction ready(fn) {\r\n // Check whether the DOM is already ready.\r\n if (document.readyState === \"complete\" || document.readyState === \"interactive\") {\r\n // Call function on next available tick.\r\n setTimeout(fn, 1);\r\n } else {\r\n document.addEventListener(\"DOMContentLoaded\", fn);\r\n }\r\n}\r\n\r\nfunction cfIsNullOrWhitespace(value) { // Returns true if string value is empty or whitespace characters only.\r\n const re = /^\\s+$/; // Regular Expression for matching whitespace characters\r\n return (((typeof value === 'undefined') || (value === null) || (value.length === 0)) || re.test(value)); // Is value empty or whitespace?\r\n}\r\n\r\n\r\nfunction cfRight(str, n) {\r\n if (n <= 0) {\r\n return '';\r\n } else if (n > String(str).length) {\r\n return str;\r\n } else {\r\n const iLen = String(str).length;\r\n return String(str).substring(iLen, iLen - n);\r\n }\r\n}\r\n\r\nconst colorboxInit = () => {\r\n const cbInit = function () {\r\n const cssId = \"colorboxCss\";\r\n if (typeof jQuery !== \"undefined\" && !(typeof window.jQuery.colorbox !== 'undefined')) {\r\n if (window.jQuery(\"#\" + cssId).length <= 0) {\r\n const head = document.getElementsByTagName(\"head\")[0];\r\n const link = document.createElement(\"link\");\r\n link.id = cssId;\r\n link.rel = \"stylesheet\";\r\n link.type = \"text/css\";\r\n link.href = \"https://download.amd.com/css/colorbox.css\";\r\n link.media = \"all\";\r\n head.appendChild(link);\r\n }\r\n _load_js(\"https://download.amd.com/js/jquery.colorbox-min.js\");\r\n }\r\n };\r\n if (typeof jQuery !== \"undefined\") {\r\n cbInit();\r\n } else {\r\n _load_js(\"https://download.amd.com/js/jquery.min.3.2.1.js\", cbInit);\r\n }\r\n};\r\n\r\n\r\nexport {\r\n _load_js, documentNode, removeHTMLTags, cfDetectLanguage, cleanLinkID, stripPii, getUTCDate, replaceAll, ready, cfRight, colorboxInit,\r\n escapeRegExp, parseUri, UpdateQueryString, createCSSSelector, getFields, getCleanURL, negativeLookBehind, lsTest, cfIsNullOrWhitespace\r\n}","/* Last Update 08:21 EST 03/10/2025 */\r\nimport { parseUri, lsTest } from './utils/analytics-utils.js';\r\n\r\nfunction testOneTrust() {\r\n\treturn lsTest() && localStorage.getItem('testing') == 'true' ? true : false;\r\n}\r\n\r\n/**\r\n\t* Self-executing anonymous function to load Onetrust.\r\n\t*/\r\nfunction initOneTrust() {\r\n\tconst OneTrustURLBase = 'https://download.amd.com/OneTrust/';\r\n\tconst cdnOneTrust = parseUri(document.location.href.toLowerCase()).queryKey[\"otcdn\"] === \"on\";\r\n\tconst OneTrustURLVer = \"202501.1.0\";\r\n\tconst OneTrustURLTestVer = \"202501.1.0\";\r\n\tconst OneTrustURLEnd = '/scripttemplates/otSDKStub.js'\r\n\tlet OneTrustURL = OneTrustURLBase + OneTrustURLVer + OneTrustURLEnd;\r\n\tlet OneTrustTestURL = OneTrustURLBase + OneTrustURLTestVer + OneTrustURLEnd;\r\n\tif (cdnOneTrust) {\r\n OneTrustURL = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';\r\n OneTrustTestURL = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';\r\n }\r\n\tlet DataDomain = '';\r\n\tDataDomain = getOnetrustDataDomain(window.location.hostname);\r\n\tconst OneTrust_script = document.createElement('script');\r\n\tif (testOneTrust()) {\r\n\t\tOneTrust_script.setAttribute('src', OneTrustTestURL);\r\n\t}\r\n\telse {\r\n\t\tOneTrust_script.setAttribute('src', OneTrustURL);\r\n\t}\r\n\tOneTrust_script.setAttribute('data-document-language', 'true');\r\n\tOneTrust_script.setAttribute('charset', 'UTF-8');\r\n\tOneTrust_script.setAttribute('data-domain-script', DataDomain);\r\n\tdocument.head.appendChild(OneTrust_script);\r\n\tconst cookieEvent = new CustomEvent('cookiesUpdated');\r\n\twindow.OptanonWrapper = function () {\r\n\t\twindow.OneTrustLoaded = true;\r\n\t\twindow.dispatchEvent(cookieEvent);\r\n\t\t// setPardotCookieConsent();\r\n\t};\r\n\r\n\t/**\r\n\t\t* \r\n\t\t* @param {string} url window.location.hostname.\r\n\t\t*/\r\n\tfunction getOnetrustDataDomain(url) {\r\n\r\n\t\tlet testOneTrust = false;\r\n\t\tlet OTUrl = url.replace(/^[.\\s]+|[.\\s]+$/g, \"\").split('.');\r\n\t\tlet useDefaultUrl = false;\r\n\t\tlet DataDomain = '';\r\n\t\tOTUrl = OTUrl.slice(OTUrl.length - 2).join('.');\r\n\t\tif (OTUrl === \"amd.com\" || OTUrl === \"netexam.com\" || OTUrl === \"zoominsoftware.io\" || OTUrl === \"mybigcommerce.com\" || window.location.href.toLowerCase().includes(\"otcctest=on\")) {\r\n\t\t\t\t\t\tDataDomain = \"17a54836-920d-4fc2-a8f6-3f4c299371d1\";\r\n\t\t\t\t\t\tif (OTUrl === \"netexam.com\" || OTUrl === \"zoominsoftware.io\" || OTUrl === \"mybigcommerce.com\" || window.location.href.toLowerCase().includes(\"otcctest=on\")) {\r\n\t\t\t\t\t\t\t\tif (OTUrl === \"netexam.com\" || OTUrl === \"zoominsoftware.io\") {\r\n\t\t\t\t\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet subdomain = parseUri(window.location.href).subdomain;\r\n\t\t\t\t\t\tswitch (subdomain) {\r\n\t\t\t\t\t\t\t\tcase \"devwww\":\r\n\t\t\t\t\t\t\t\tcase \"testwww\":\r\n\t\t\t\t\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t} else if (OTUrl === \"amdfanstore.com\") {\r\n\t\t\t\t\t\tDataDomain = \"35d0f1f2-22c8-4cef-89aa-626a0779c3d9\";\r\n\t\t\t\t} else if (OTUrl === \"amdgaming.gg\") {\r\n\t\t\t\t\t\tDataDomain = \"83c030ab-1afd-482b-9e19-154919fb2c57\";\r\n\t\t\t\t} else if (OTUrl === \"amdhub.in\") {\r\n\t\t\t\t\t\tDataDomain = \"413405fd-908f-4621-8152-9641caac37c5\";\r\n\t\t\t\t} else if (OTUrl === \"amdrewards.com\" || OTUrl === \"qmo.io\") {\r\n\t\t\t\t\t\tDataDomain = \"71e61c46-fe07-4dfc-b0e8-b1bd1f19dcdd\";\r\n\t\t\t\t\t\tif (OTUrl === \"qmo.io\") {\r\n\t\t\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t} else if (OTUrl === \"amdpremium.com\" || OTUrl === \"webinarfries.com\") {\r\n\t\t\t\t\t\tDataDomain = \"70bfba52-5a1c-48b7-aba2-775e4ec4fae6\";\r\n\t\t\t\t\t\tif (OTUrl === \"webinarfries.com\") {\r\n\t\t\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t} else if (OTUrl === \"gpuopen.com\") {\r\n\t\t\t\t\t\tDataDomain = \"2e3b8678-f1a1-45d9-8102-60cd85fde4dc\";\r\n\t\t\t\t} else if (OTUrl === \"amd-heroes.jp\" || OTUrl === \"dads.tokyo\") {\r\n\t\t\t\t\t\tDataDomain = \"0d0420b7-652b-45a7-ae81-908fc8b58db8\";\r\n\t\t\t\t\t\tif (OTUrl === \"dads.tokyo\") {\r\n\t\t\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t} else if (OTUrl === \"amdsurveys.com\") {\r\n\t\t\t\t\t\tDataDomain = \"a407ceca-203f-446f-856f-27ad7a2bec73\";\r\n\t\t\t\t} else if (OTUrl.includes(\"localhost\") || OTUrl.includes(\"ahdev.cloud\")) {\r\n\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\tDataDomain = \"17a54836-920d-4fc2-a8f6-3f4c299371d1\";\r\n\t\t\t\t} else if (/^https?:\\/\\/login(dev|test|uat)?\\.xilinx\\.com/.test(document.location.href.toLowerCase())) {\r\n\t\t\t\t\t\tDataDomain = \"4dd7bad1-d824-48d7-ae1a-b9b51903fb1e\";\r\n\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\t\t\tif (/^https?:\\/\\/login(dev|test|uat)\\.xilinx\\.com/.test(document.location.href.toLowerCase())) {\r\n\t\t\t\t\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t} else if (/^https?:\\/\\/((china|japan|www)(\\.(test|dev|uat))?|wema\\-(test|dev|uat|prod))\\.xilinx\\.com/.test(document.location.href.toLowerCase())) {\r\n\t\t\t\t\t\tDataDomain = \"4dd7bad1-d824-48d7-ae1a-b9b51903fb1e\";\r\n\r\n\t\t\t\t\t\tif (/^https?:\\/\\/((china|japan|www)(\\.(test|dev|uat))|wema\\-(test|dev|uat|prod))\\.xilinx\\.com/.test(document.location.href.toLowerCase())) {\r\n\t\t\t\t\t\t\t\tuseDefaultUrl = true;\r\n\t\t\t\ttestOneTrust = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t/** If useDefaultUrl is true load Onetrust from cookielaw.org. */\r\n\t\tif (useDefaultUrl) {\r\n\t\t\tOneTrustURL = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';\r\n\t\t}\r\n\t\t/**\r\n\t\t\t* Add -test to the DataDomain if we're testing OneTrust.\r\n\t\t\t*/\r\n\t\tif (testOneTrust === true && DataDomain !== '' && DataDomain.indexOf('-test') < 0) {\r\n\t\t\tDataDomain = DataDomain + '-test';\r\n\t\t}\r\n\t\treturn DataDomain;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n\t* Methods for dealing with cookies.\r\n\t* @typedef {Object} Cookie\r\n\t* \r\n\t*/\r\nconst Cookie = {\r\n\t/**\r\n\t\t* Sets a cookie given parameters.\r\n\t\t* @param {string} c_name - Cookie name\r\n\t\t* @param {string} value - Cookie value\r\n\t\t* @param {number} expTime - Cookie Expiration\r\n\t\t* @param {string} path - Cookie path\r\n\t\t* @param {string} domain - Cookie domain\r\n\t\t* @param {string} samesite - Samesite\r\n\t\t* @param {boolean} secure - Secure\r\n\t\t*/\r\n\tSet: function (c_name, value, expTime, path, domain, samesite, secure) {\r\n\t\tlet e = '';\r\n\t\tlet d;\r\n\t\tlet s;\r\n\t\tif (expTime) {\r\n\t\t\td = new Date();\r\n\t\t\td.setTime(d.getTime() + (expTime));\r\n\t\t\te = `; expires=${d.toUTCString()}`;\r\n\t\t}\r\n\t\tif (!path) {\r\n\t\t\tpath = '/';\r\n\t\t}\r\n\t\tif (!domain) {\r\n\t\t\tconst tempURI = parseUri(document.URL);\r\n\t\t\tdomain = tempURI.domain + '.' + tempURI.tld;\r\n\t\t}\r\n\t\tif (!samesite) {\r\n\t\t\ts = shouldSendSameSiteNone(navigator.userAgent) ? ';SameSite=None;Secure' : '';\r\n\t\t}\r\n\t\telse if (samesite.toLowerCase() === 'lax') {\r\n\t\t\ts = ';SameSite=Lax';\r\n\t\t}\r\n\t\telse if (samesite.toLowerCase() === 'strict') {\r\n\t\t\ts = ';SameSite=Strict';\r\n\t\t}\r\n\t\telse if (samesite.toLowerCase() === 'none') {\r\n\t\t\ts = shouldSendSameSiteNone(navigator.userAgent) ? ';SameSite=None;Secure' : '';\r\n\t\t}\r\n\t\telse {\r\n\t\t\ts = '';\r\n\t\t}\r\n\t\tif (!!secure && s.toLowerCase().indexOf('samesite=none') < 0) {\r\n\t\t\ts = `${s};Secure`;\r\n\t\t}\r\n\t\tdocument.cookie = `${c_name}=${value}${e}; path=${path}; domain=${domain}${s}`;\r\n\t},\r\n\t/**\r\n\t\t* Gets a cookie.\r\n\t\t* @param {string} c_name - Name of the cookie to get.\r\n\t\t* @returns \r\n\t\t*/\r\n\tGet: function (c_name) {\r\n\t\tconst match = c_name + '=';\r\n\t\tlet c = '';\r\n\t\tconst ca = document.cookie.split(';');\r\n\t\tlet i;\r\n\t\tlet cl;\r\n\t\tfor (i = 0, cl = ca.length; i < cl; i++) {\r\n\t\t\tc = String(ca[i]).trim();\r\n\t\t\tif (c.indexOf(match) === 0) {\r\n\t\t\t\treturn c.substring(match.length, c.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\t/**\r\n\t\t* Unsets a cookie given name, path, and domain.\r\n\t\t* @param {string} c_name \r\n\t\t* @param {string} path \r\n\t\t* @param {string} domain \r\n\t\t*/\r\n\tUnset: function (c_name, path, domain) {\r\n\t\tthis.Set(c_name, '', -1, path, domain);\r\n\t},\r\n\t/**\r\n\t\t* \r\n\t\t* @returns {object} - All cookies.\r\n\t\t*/\r\n\tAll: function () {\r\n\t\tif (document.cookie === '') {\r\n\t\t\treturn {};\r\n\t\t}\r\n\r\n\t\tconst cookies = document.cookie.split('; ');\r\n\t\tconst result = {};\r\n\r\n\t\tfor (let ci = 0, cl = cookies.length; ci < cl; ci++) {\r\n\t\t\tconst item = cookies[ci].split('=');\r\n\t\t\tconst key = decodeURIComponent(item.shift());\r\n\t\t\tconst value = decodeURIComponent(item.join('='));\r\n\t\t\tresult[key] = value;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t},\r\n\t/**\r\n\t\t* Tests whether cookies are enabled.\r\n\t\t* @returns {boolean}\r\n\t\t*/\r\n\tEnabled: function () {\r\n\t\ttry {\r\n\t\t\tdocument.cookie = 'testcookie=1;SameSite=Lax';\r\n\t\t\tconst cookiesEnabled = document.cookie.includes('testcookie=');\r\n\t\t\tdocument.cookie = 'testcookie=1; expires=Thu, 01-Jan-1970 00:00:01 GMT;SameSite=Lax';\r\n\t\t\treturn cookiesEnabled;\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\r\n}\r\n\r\n/**\r\n\t* @function getCookieConsent - Gets cookie groups the user has consented to.\r\n\t* @returns { String } - Cookie groups separated by commas.\r\n\t*/\r\nfunction getCookieConsent() {\r\n\tif ('OnetrustActiveGroups' in window) {\r\n\t\treturn window.OnetrustActiveGroups || '';\r\n\t}\r\n\t// Test that URL should have onetrust cookies.\r\n\tif (/(www\\.)?amdfanstore\\.com/.test(document.location.href.toLowerCase()) && !(document.location.href.toLowerCase().indexOf(\"otcctest=on\") !== -1)) {\r\n\t\t\treturn \",C0001,C0002,C0003,C0004,C0005,\";\r\n\t}\r\n\tconst groupsArray = [];\r\n\tconst tempOptanonConsent = Cookie.Get(\"OptanonConsent\");\r\n\tif (tempOptanonConsent) {\r\n const cookieOptanonConsent = tempOptanonConsent\r\n\t\t.split(\"&\").reduce((res, c) => {\r\n const [key, val] = c.trim().split(\"=\").map(decodeURIComponent);\r\n try {\r\n return Object.assign(res, { [key]: JSON.parse(val) });\r\n } catch (e) {\r\n return Object.assign(res, { [key]: val });\r\n }\r\n }, {});\r\n cookieOptanonConsent[\"groups\"].split(\",\").map((c) => {\r\n const row = c.split(\":\");\r\n if (row[1] == \"1\") {\r\n groupsArray.push(row[0]);\r\n }\r\n });\r\n } else {\r\n groupsArray.push(\",C0001,\");\r\n }\r\n\treturn Cookie.Get(\"OptanonAlertBoxClosed\") ? groupsArray.join(\",\") : \",C0001,\";\r\n}\r\n\r\n\r\n/**\r\n\t* @typedef {Object} - Cookie expiration constants.\r\n\t*/\r\nconst CookieExpiryTime = {\r\n\tEND_OF_SESSION: 0,\r\n\tSECOND: 1000,\r\n\tMINUTE: 1000 * 60,\r\n\tHOUR: 1000 * 60 * 60,\r\n\tDAY: 1000 * 60 * 60 * 24,\r\n\tMONTH: 1000 * 60 * 60 * 24 * 30,\r\n\tYEAR: 1000 * 60 * 60 * 24 * 365,\r\n\tNEVER: 1000 * 60 * 60 * 24 * 365 * 20\r\n};\r\n\r\nconst shouldSendSameSiteNone = function (useragent) {\r\n\t'use strict';\r\n\treturn !isSameSiteNoneIncompatible(useragent);\r\n}\r\n\r\n// Classes of browsers known to be incompatible.\r\nconst isSameSiteNoneIncompatible = function (useragent) {\r\n\treturn hasWebKitSameSiteBug(useragent) || dropsUnrecognizedSameSiteCookies(useragent);\r\n}\r\n\r\nwindow.shouldSendSameSiteNone = shouldSendSameSiteNone;\r\nwindow.isSameSiteNoneIncompatible = isSameSiteNoneIncompatible;\r\n\r\nfunction hasWebKitSameSiteBug(useragent) {\r\n\treturn isIosVersion(12, useragent) || (isMacosxVersion(10, 14, useragent) && (isSafari(useragent) || isMacEmbeddedBrowser(useragent)));\r\n}\r\n\r\nfunction dropsUnrecognizedSameSiteCookies(useragent) {\r\n\tif (isUcBrowser(useragent)) {\r\n\t\treturn !isUcBrowserVersionAtLeast(12, 13, 2, useragent);\r\n\t}\r\n\treturn isChromiumBased(useragent) && isChromiumVersionAtLeast(51, useragent) && !isChromiumVersionAtLeast(67, useragent);\r\n}\r\n\r\n// Regex parsing of User-Agent string. (See note above!)\r\nfunction isIosVersion(major, useragent) {\r\n\tconst regex = /\\(iP.+; CPU .*OS (\\d+)[_\\d]*.*\\) AppleWebKit\\//;\r\n\t// Extract digits from first capturing group.\r\n\tconst tempDetails = useragent.match(regex);\r\n\treturn (tempDetails && tempDetails[1]) ? tempDetails[1] === major.toString() : false;\r\n}\r\n\r\nfunction isMacosxVersion(major, minor, useragent) {\r\n\tconst regex = /\\(Macintosh;.*Mac OS X (\\d+)_(\\d+)[_\\d]*.*\\) AppleWebKit\\//;\r\n\t// Extract digits from first and second capturing groups.\r\n\tconst tempDetails = useragent.match(regex);\r\n\treturn (tempDetails && tempDetails[1] && tempDetails[2]) ? (tempDetails[1] === major.toString()) && (tempDetails[2] === minor.toString()) : false;\r\n}\r\n\r\nfunction isSafari(useragent) {\r\n\tconst safari_regex = /Version\\/.* Safari\\//;\r\n\treturn safari_regex.test(useragent) && !isChromiumBased(useragent);\r\n}\r\n\r\nfunction isMacEmbeddedBrowser(useragent) {\r\n\tconst regex = /^Mozilla\\/[\\.\\d]+ \\(Macintosh;.*Mac OS X [_\\d]+\\) AppleWebKit\\/[\\.\\d]+ \\(KHTML, like Gecko\\)$/;\r\n\treturn regex.test(useragent);\r\n}\r\n\r\nfunction isChromiumBased(useragent) {\r\n\tconst regex = /Chrom(e|ium)/;\r\n\treturn regex.test(useragent);\r\n}\r\n\r\nfunction isChromiumVersionAtLeast(major, useragent) {\r\n\tconst regex = /Chrom[^ \\/]+\\/(\\d+)[\\.\\d]* /;\r\n\t// Extract digits from first capturing group.\r\n\tconst tempDetails = useragent.match(regex);\r\n\tconst version = (tempDetails && tempDetails[1]) ? parseInt(tempDetails[1], 10) : 0;\r\n\treturn version >= major;\r\n}\r\n\r\nfunction isUcBrowser(useragent) {\r\n\tconst regex = /UCBrowser\\//;\r\n\treturn regex.test(useragent);\r\n}\r\n\r\nfunction isUcBrowserVersionAtLeast(major, minor, build, useragent) {\r\n\tconst regex = /UCBrowser\\/(\\d+)\\.(\\d+)\\.(\\d+)[\\.\\d]* /;\r\n\t// Extract digits from three capturing groups.\r\n\tconst tempDetails = useragent.match(regex);\r\n\tconst major_version = (tempDetails && tempDetails[1]) ? parseInt(tempDetails[1], 10) : 0;\r\n\tconst minor_version = (tempDetails && tempDetails[2]) ? parseInt(tempDetails[2], 10) : 0;\r\n\tconst buildVersion = (tempDetails && tempDetails[3]) ? parseInt(tempDetails[3], 10) : 0;\r\n\tif (major_version !== major) {\r\n\t\treturn major_version > major;\r\n\t}\r\n\tif (minor_version !== minor) {\r\n\t\treturn minor_version > minor;\r\n\t}\r\n\treturn buildVersion >= build;\r\n}\r\n\r\nexport { Cookie, CookieExpiryTime, getCookieConsent, initOneTrust }\r\n","import { _load_js, colorboxInit } from \"../utils/analytics-utils.js\";\r\nimport { CookieExpiryTime, getCookieConsent, Cookie } from \"../cookie.js\";\r\n\r\n/*\r\n * Survey deployment and Device Type detection Script\r\n * Last Update 09:55 EST 03/15/2023\r\n */\r\n\r\nfunction FunctionLoad(percent_chance, survey_url, survey_onexit) {\r\n let random_number = Math.floor(Math.random() * 100 + 1);\r\n if (getCookieConsent().indexOf(\"C0003\") !== -1 && Cookie.Enabled()) {\r\n let sPageVisited = \"\";\r\n sPageVisited = Cookie.Get(\"sPageVisited2\");\r\n\r\n if (sPageVisited == null && random_number < percent_chance) {\r\n Cookie.Set(\"sPageVisited2\", \"true\", 90 * CookieExpiryTime.DAY, \"/\", null, \"Lax\", false);\r\n if (survey_onexit) {\r\n window.addEventListener(\"unload\", (event) => {\r\n window.open(survey_url, \"\", \"toolbar=no,toolbar=0,location=no,location=0,status=no,status=0,menubar=no,menubar=0,scrollbars=yes,scrollbars=1,resizable=yes,resizable=1,height=600,width=800\");\r\n });\r\n return;\r\n }\r\n let fallback = (surveyURL) => {\r\n window.open(surveyURL, \"\", \"toolbar=no,toolbar=0,location=no,location=0,status=no,status=0,menubar=no,menubar=0,scrollbars=yes,scrollbars=1,resizable=yes,resizable=1,height=600,width=800\");\r\n };\r\n if (!(typeof jQuery !== \"undefined\") && !window.isMobile()) {\r\n _load_js(\"https://download.amd.com/js/jquery.min.3.2.1.js\");\r\n }\r\n if (window.isMobile()) {\r\n fallback(survey_url);\r\n return;\r\n } else {\r\n let surveyModal = (surveyURL) => {\r\n let lightboxHTML =\r\n \"
\";\r\n window.jQuery(lightboxHTML).appendTo(\"body\");\r\n window.jQuery(\"#lightbox\").append(\"\");\r\n window.jQuery(\"#overlay\").css(\"opacity\", \"0.8\");\r\n window.jQuery(\"#popClose, #overlay\").click(function () {\r\n window.jQuery(\"#lightbox, #overlay\").remove();\r\n });\r\n window.jQuery(document).keyup(function (e) {\r\n if (e.keyCode === 27) window.jQuery(\"#lightbox, #overlay\").remove();\r\n });\r\n };\r\n let modalDelay = (method, count, fallbackURL) => {\r\n if (typeof jQuery !== \"undefined\") {\r\n method(fallbackURL);\r\n } else {\r\n let cntDown = count - 1;\r\n if (cntDown === 0) {\r\n fallbackURL(fallbackURL);\r\n } else {\r\n setTimeout(function () {\r\n modalDelay(method, cntDown, fallbackURL);\r\n }, 50);\r\n }\r\n }\r\n };\r\n modalDelay(surveyModal, 500, survey_url);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction ColorBoxDelay(method) {\r\n if (typeof jQuery !== 'undefined' && typeof window.jQuery.colorbox !== 'undefined') {\r\n method();\r\n } else {\r\n setTimeout(function () {\r\n ColorBoxDelay(method);\r\n }, 50);\r\n }\r\n}\r\n\r\nfunction FunctionLoadA(percent_chance, survey_url, survey_onexit, options, cookieName) {\r\n let random_number = Math.floor(Math.random() * 100 + 1);\r\n if (getCookieConsent().indexOf(\"C0003\") !== -1 && Cookie.Enabled()) {\r\n let sPageVisited = \"\";\r\n if (typeof cookieName === \"undefined\") {\r\n cookieName = \"sPageVisited2\";\r\n }\r\n sPageVisited = Cookie.Get(cookieName);\r\n\r\n if (sPageVisited == null && random_number < percent_chance) {\r\n Cookie.Set(cookieName, \"true\", 90 * CookieExpiryTime.DAY, \"/\", null, \"Lax\", false);\r\n colorboxInit();\r\n if (survey_onexit) {\r\n window.addEventListener(\"unload\", (event) => {\r\n window.open(survey_url, \"\", \"toolbar=no,toolbar=0,location=no,location=0,status=no,status=0,menubar=no,menubar=0,scrollbars=yes,scrollbars=1,resizable=yes,resizable=1,height=600,width=800\");\r\n });\r\n } else {\r\n let details = options || {};\r\n details.href = survey_url;\r\n details.className = \"PPLightBox\";\r\n details.open = true;\r\n details.closeButton = true;\r\n details.iframe = true;\r\n if (typeof details.width === \"undefined\") {\r\n details.width = \"500px\";\r\n }\r\n if (typeof details.height === \"undefined\") {\r\n details.height = \"500px\";\r\n }\r\n if (typeof details.fixed === \"undefined\") {\r\n details.fixed = true;\r\n }\r\n if (typeof details.reposition === \"undefined\") {\r\n details.reposition = true;\r\n }\r\n if (typeof details.escKey === \"undefined\") {\r\n details.escKey = false;\r\n }\r\n if (typeof details.overlayClose === \"undefined\") {\r\n details.overlayClose = false;\r\n }\r\n if (typeof details.opacity === \"undefined\") {\r\n details.opacity = 0;\r\n }\r\n ColorBoxDelay(function () {\r\n window.jQuery.colorbox(details);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction FunctionLoadB(percent_chance, survey_html, options, cookieName) {\r\n let random_number = Math.floor(Math.random() * 100 + 1);\r\n if (getCookieConsent().indexOf(\"C0003\") !== -1 && Cookie.Enabled()) {\r\n let sPageVisited = \"\";\r\n if (typeof cookieName === \"undefined\") {\r\n cookieName = \"sPageVisited2\";\r\n }\r\n sPageVisited = Cookie.Get(cookieName);\r\n\r\n if (sPageVisited == null && random_number < percent_chance) {\r\n Cookie.Set(cookieName, \"true\", 90 * CookieExpiryTime.DAY, \"/\", null, \"Lax\", false);\r\n colorboxInit();\r\n let details = options || {};\r\n details.html = survey_html;\r\n details.className = \"PPLightBox\";\r\n details.open = true;\r\n details.closeButton = true;\r\n details.iframe = false;\r\n if (typeof details.width === \"undefined\") {\r\n details.width = \"500px\";\r\n }\r\n if (typeof details.height === \"undefined\") {\r\n details.height = \"500px\";\r\n }\r\n if (typeof details.fixed === \"undefined\") {\r\n details.fixed = true;\r\n }\r\n if (typeof details.reposition === \"undefined\") {\r\n details.reposition = true;\r\n }\r\n if (typeof details.escKey === \"undefined\") {\r\n details.escKey = false;\r\n }\r\n if (typeof details.overlayClose === \"undefined\") {\r\n details.overlayClose = false;\r\n }\r\n if (typeof details.opacity === \"undefined\") {\r\n details.opacity = 0;\r\n }\r\n ColorBoxDelay(function () {\r\n window.jQuery.colorbox(details);\r\n });\r\n }\r\n }\r\n}\r\n\r\n\r\nexport { FunctionLoad, ColorBoxDelay, FunctionLoadA, FunctionLoadB };\r\n","import { parseUri, UpdateQueryString } from \"./analytics-utils.js\";\r\n\r\nfunction pollPromoVisibiliy() {/* */}\r\n\r\nfunction trackPromoInit() {\r\n const IPToptions = {\r\n root: null,\r\n rootMargin: \"0px\",\r\n threshold: [0.7,1],\r\n };\r\n const callback = (entries, observer) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && entry.target.dataset.impressed !== \"true\") {\r\n entry.target.dataset.impressed = \"false\";\r\n isPromoVisible(entry.target);\r\n }\r\n });\r\n };\r\n const observer = new IntersectionObserver(callback, IPToptions);\r\n\r\n document.querySelectorAll(\"div.content-wrapper a\").forEach((elmnt, ipIndex) => {\r\n const elAttributes = elmnt.attributes;\r\n if (\r\n (\"href\" in elAttributes && !(\"intpromo\" in elAttributes) && elmnt.href.toLowerCase().includes(\"promo\")) ||\r\n \"lpos\" in elAttributes ||\r\n elmnt.classList.contains(\"pointerFeatureContent\") ||\r\n elmnt.closest(\".glide__track\") ||\r\n elmnt.closest(\".promo-container\")\r\n ) {\r\n if (elmnt.closest(\".promo-container\")) {\r\n const dataLposTemp = elmnt.dataset(\"lpos\");\r\n let dropDownParent;\r\n let dropDownSubParent;\r\n let tmplpos;\r\n if (dataLposTemp === \"menu-promo\") {\r\n dropDownParent = elmnt.closest(\".dropdown\").querySelector(\".dropdown-toggle\").textContent;\r\n dropDownSubParent = elmnt.closest(\"li\").querySelector(\"a\").textContent;\r\n }\r\n const menuText = decodeURIComponent(elmnt.textContent);\r\n if (typeof dropDownParent !== \"undefined\" && dropDownParent !== \"\") {\r\n if (typeof dropDownSubParent !== \"undefined\" && dropDownSubParent !== \"\") {\r\n dropDownParent = `${dropDownParent}|${dropDownSubParent}`;\r\n }\r\n tmplpos = `${dataLposTemp}|${decodeURIComponent(dropDownParent)}|${menuText}`;\r\n }\r\n if (!elmnt.getAttribute(\"lpos\")) {\r\n elmnt.setAttribute(\"lpos\", tmplpos);\r\n }\r\n }\r\n\r\n elmnt.setAttribute(\"intpromo\", `IP${ipIndex + 1}`);\r\n observer.observe(elmnt);\r\n }\r\n });\r\n document.querySelectorAll(\".glide__track\").forEach((elmnt, car) => {\r\n elmnt.querySelectorAll(\".glide__slide:not(.glide__slide--clone)\").forEach((elmnt2, carpos) => {\r\n const link = elmnt2.querySelector(\"a\");\r\n link.dataset.carousel = `carousel${(car + 1)}-position${(carpos + 1)}`;\r\n });\r\n });\r\n}\r\n\r\nfunction isPromoVisible(promoObj, isClickPromo) {\r\n if (typeof promoObj.dataset !== \"undefined\" && typeof promoObj.dataset.impressed !== \"undefined\" && promoObj.dataset.impressed !== \"true\") {\r\n if (promoObj || (typeof isClickPromo != \"undefined\" && isClickPromo == 1)) {\r\n let cvPromoImageSRC = \"\";\r\n let cvPromoFoundChild;\r\n let cvPromoHTML;\r\n try {\r\n cvPromoFoundChild = promoObj.querySelector(\"img\");\r\n } catch (err) {\r\n // continue anyway\r\n }\r\n if (typeof cvPromoFoundChild != \"undefined\" && cvPromoFoundChild) {\r\n if (typeof cvPromoFoundChild.src !== \"undefined\" && cvPromoFoundChild.src) {\r\n cvPromoImageSRC = parseUri(cvPromoFoundChild.src).host + parseUri(cvPromoFoundChild.src).path;\r\n }\r\n } else {\r\n cvPromoHTML = unescape(promoObj.text.trim());\r\n }\r\n const cvPromoCreative = (cvPromoImageSRC ? cvPromoImageSRC : cvPromoHTML) || \"(not set)\";\r\n let cvPromoKName = parseUri(promoObj.getAttribute(\"href\")).queryKey[\"k\"] || \"(not set)\";\r\n const cvPromoPromoName = parseUri(promoObj.getAttribute(\"href\")).queryKey[\"promo\"] || \"(not set)\";\r\n let cvPromoiPromoName = parseUri(promoObj.getAttribute(\"href\")).queryKey[\"ipromo\"] || \"(not set)\";\r\n if (cvPromoKName == \"(not set)\" && cvPromoPromoName == \"(not set)\" && cvPromoiPromoName == \"(not set)\") {\r\n cvPromoKName = promoObj.getAttribute(\"href\") || \"(not set)\";\r\n if (cvPromoKName !== \"(not set)\") {\r\n if (!(cvPromoKName.startsWith('http') || cvPromoKName.startsWith('https')) && !cvPromoKName.startsWith(document.location.origin)) {\r\n cvPromoKName = `${document.location.origin}${cvPromoKName}`;\r\n }\r\n cvPromoKName = UpdateQueryString(\"webSyncID\", null, cvPromoKName);\r\n cvPromoKName = UpdateQueryString(\"sessionGUID\", null, cvPromoKName);\r\n }\r\n cvPromoiPromoName = cvPromoCreative;\r\n }\r\n let tmpPromoLPOS = promoObj.getAttribute(\"lpos\");\r\n if (typeof promoObj.dataset.carousel != \"undefined\" && promoObj.dataset.carousel) {\r\n const tmpcar = promoObj.dataset.carousel;\r\n tmpPromoLPOS = tmpPromoLPOS ? `${tmpcar}|${tmpPromoLPOS}` : tmpcar;\r\n }\r\n window.dataLayer.push({\r\n event: \"promotionView\",\r\n promoLPOS: tmpPromoLPOS || \"(not set)\",\r\n promoName: `${cvPromoiPromoName}|${cvPromoKName}`,\r\n ecommerce: {\r\n promoView: {\r\n promotions: [\r\n {\r\n id: `${cvPromoiPromoName}|${cvPromoKName}|${cvPromoCreative}`,\r\n name: `${cvPromoiPromoName}|${cvPromoKName}`,\r\n creative: cvPromoCreative,\r\n position: promoObj.getAttribute(\"intpromo\") || \"(not set)\",\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n promoObj.dataset.impressed = \"true\";\r\n }\r\n }\r\n}\r\n// End Internal Promo Tracking\r\n\r\nfunction initHPT() {\r\n if (/https?:\\/\\/(www\\.)?amd\\.com\\/(en|de|es|fr|ja|ko|pt|ru|tr|zh\\-(cn|tw))(\\.html)?(\\/?$|\\/?\\#|\\/?\\?)/i.test(document.location.href)) {\r\n const contentWrapper = document.querySelector(\".content-wrapper\");\r\n const returnRows = ({childElementCount, children}) => {\r\n return childElementCount > 1 ? children : returnRows(children[0]);\r\n };\r\n const contentRows = returnRows(contentWrapper);\r\n [...contentRows].forEach((row, index) => {\r\n const contentIndex = index;\r\n row.dataset.rowindex = index;\r\n const bsRows = row.querySelectorAll(\".row\");\r\n const bsRowsWithLinks = [...bsRows].filter((row) => row.querySelectorAll(\"a\").length > 0);\r\n // Happy path. There are .rows within this row and they even have links inside them to tag. Yippee.\r\n bsRowsWithLinks.forEach(({children}, bsRowIndex) => {\r\n const logicalBlocks = [...children].filter((child) => child.querySelector(\"a\") !== null);\r\n logicalBlocks.forEach((block, blockIndex) => {\r\n const links = block.querySelectorAll(\"a\");\r\n [...links].forEach((link, linkIndex) => {\r\n const pos = `Para${(contentIndex + 1)}|SubRow${(bsRowIndex + 1)}|Block${(blockIndex + 1)}|Link${(linkIndex + 1)}`;\r\n if (!link.hasAttribute(\"lpos\")) {\r\n link.setAttribute(\"lpos\", pos);\r\n }\r\n if (!link.hasAttribute(\"heropos\")) {\r\n link.setAttribute(\"heropos\", pos);\r\n }\r\n });\r\n });\r\n });\r\n // Unhappy path. There might not even be links within this row!\r\n const contentRowLinks = row.querySelectorAll(\"a\");\r\n if (contentRowLinks.length > 0) {\r\n // Huzzah! There are links within this content row. We have something to tag!\r\n const carousel = row.querySelector(\".glide__track\");\r\n if (carousel !== null) {\r\n const slides = carousel.firstElementChild.children;\r\n const realSlides = [...slides].filter(({classList}) => !classList.contains(\"glide__slide--clone\"));\r\n realSlides.forEach((slide, slideIndex) => {\r\n const links = slide.querySelectorAll(\"a\");\r\n links.forEach((link, linkIndex) => {\r\n const pos = `Para${(contentIndex + 1)}|Position${(slideIndex + 1)}|Link${(linkIndex + 1)}`;\r\n if (!link.hasAttribute(\"lpos\")) {\r\n link.setAttribute(\"lpos\", pos);\r\n }\r\n if (!link.hasAttribute(\"heropos\")) {\r\n link.setAttribute(\"heropos\", pos);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n \r\n setTimeout(() => {\r\n trackPromoInit();\r\n }, 15);\r\n}\r\n\r\nexport { pollPromoVisibiliy, isPromoVisible, trackPromoInit, initHPT };\r\n","import { _load_js, cfDetectLanguage, getUTCDate, parseUri, getCleanURL, negativeLookBehind, UpdateQueryString, ready, colorboxInit } from \"./utils/analytics-utils.js\";\r\nimport { CookieExpiryTime, getCookieConsent, Cookie, initOneTrust } from \"./cookie.js\";\r\nimport { FunctionLoad, ColorBoxDelay, FunctionLoadA, FunctionLoadB } from \"./utils/survey.js\";\r\nimport { pollPromoVisibiliy, isPromoVisible, trackPromoInit, initHPT } from \"./utils/promo-tracking.js\";\r\n\r\n/*\r\n * AEM Analytics Main Script\r\n * Last Update 03/10/2025 08:21 ET\r\n*/\r\n\r\n/**\r\n * Initialize the datalayer if it doesn't already exist.\r\n */\r\nwindow.dataLayer = window.dataLayer || [];\r\nwindow.getCookieConsent = getCookieConsent;\r\n/**\r\n * Initialize AMDAnalytics global object and set version number and last edited date.\r\n */\r\nwindow.AMDAnalytics = window.AMDAnalytics || {};\r\nconst { AMDAnalytics } = window;\r\nAMDAnalytics.version = \"AMD AEM V2.4.1 - 03/10/2025 08:21 ET\";\r\nAMDAnalytics.DataDomain = '';\r\nwindow.parseUri = parseUri;\r\nwindow._load_js = _load_js;\r\nwindow.colorboxInit = colorboxInit;\r\nwindow.Cookie = Cookie;\r\nwindow.CookieExpiryTime = CookieExpiryTime;\r\nwindow.getCookieConsent = getCookieConsent;\r\nwindow.FunctionLoad = FunctionLoad;\r\nwindow.ColorBoxDelay = ColorBoxDelay;\r\nwindow.FunctionLoadA = FunctionLoadA;\r\nwindow.FunctionLoadB = FunctionLoadB;\r\nwindow.UpdateQueryString = UpdateQueryString;\r\nwindow.pollPromoVisibiliy = pollPromoVisibiliy;\r\nwindow.isPromoVisible = isPromoVisible;\r\nwindow.trackPromoInit = trackPromoInit;\r\nwindow.initHPT = initHPT;\r\nAMDAnalytics.testOneTrust = parseUri(document.location.href.toLowerCase()).queryKey['otcctest'] === 'on';\r\nAMDAnalytics.OTUrl = window.location.hostname.replace(/^[.\\s]+|[.\\s]+$/g, \"\").split('.');\r\nAMDAnalytics.OTUrl = AMDAnalytics.OTUrl.slice(AMDAnalytics.OTUrl.length - 2).join('.');\r\nAMDAnalytics.cvLnkTrack = {};\r\nAMDAnalytics.sAA = {};\r\nAMDAnalytics.cvOldLinkClickObject = {};\r\nAMDAnalytics.cvSPwebtrack = 0;\r\nAMDAnalytics.cvURLCheck = window.cvSurveyURLCheck = window.location.href.toLowerCase();\r\nAMDAnalytics.sAA.eVar14 = '';\r\n\r\n/**\r\n * Global function used by GTM.\r\n */\r\nwindow.gtag = function () {\r\n window.dataLayer.push(arguments);\r\n}\r\nwindow.gtag('consent', 'default', { \r\n ad_storage:\"denied\",\r\n analytics_storage:\"denied\",\r\n functionality_storage:\"denied\",\r\n personalization_storage:\"denied\",\r\n ad_user_data:\"denied\",\r\n ad_personalization:\"denied\",\r\n security_storage: \"denied\", \r\n'wait_for_update': 500 \r\n \r\n}); \r\n\r\nconst errorCheck = parseUri(AMDAnalytics.cvURLCheck).queryKey['errors'];\r\nif ((errorCheck || '') === 'true') {\r\n AMDAnalytics.cvURLCheck = parseUri(AMDAnalytics.cvURLCheck).noquery.toLowerCase();\r\n}\r\n\r\nvoid function setConstants(amd) {\r\n amd.cvAddThis = 0;\r\n amd.cvAMDWebProperties = \",amd.com,amd.com.cn,amd.com.tw,amd.co.jp,amdcompare.com,amd.ru,ati.com,ati.de,graphics-scout.com,atiplus,amdassets.com,amdrewards.com,amdinfo.co.kr,amdsurveys.com,feedback.amd.com,seamicro.com,gpuopen.com,radeon.com,radeon.wpengine.com,ve.ga,amd.local\"; // AMD Web Properties\r\n amd.cvAMDWebProperties +=\r\n \",phx.corporate-ir.net,eloqua.com,flixfacts.co.uk,radeonramdisk.com,amd4u.com,radeonmemory.com,amd.mkt6303.com,www.pages03.net,gizmosphere.org,amdpromos.com,amdfanstore.com,amd-d2vienna.com,amd-ibcshow.com,amd-auvegas.com,amdhub.in,amdgaming.gg,cloudsolutions.amd.com,xilinx.com,test.xilinx.com,amd-heroes.jp,amdpremium.com,mybigcommerce.com,urgame,amdultimate.com,futurewithamd.com,xilinxcustomertraining.netexam.com,xilinxprod-catalog.netexam.com,xilinx.entitlenow.com,amd.entitlenow.com\"; // other properties\r\n amd.cvAMDWebProperties += \",amd-id.com,amd-malaysia.com,amd-ph.com,amdthailand.com,amdvietnam.com,amdvietnam.vn,futurewithamd.com,ryzen.co.kr,ryzen.pro,amdaward.com,why-ryzen.com\";\r\n // amd.cvAMDWebProperties += \",amd.onlinebrandstore.net,standupforfirepro.com,fireprographics.com,amd-ext.uat5.hosted.jivesoftware.com,amd3.c-3.com,amdimprovision.com.br,en25.com,amdryzenreviews.com,betterred.com,amdtaiwan.com,amd-member.com,outstart.com,amdvisionary.com,amd-site.com,amdchannel.com.cn,amdlivestrong.com,amdmotorsports.com,amdprocycling.com,amdsports.com,amdadvantage.com,atistickers.com,lookbeyond.de,x86-64.org,amdquizzes.com,amd64.org,amd-unleash.com,amd-bilder.de,entertainmentsimplified.com,marketbuilder3.com,ati.jp,accelerateresults.com,amd-firefly.com,amdtaiwan.com.tw,amd64.co.kr,amdathlon.com,amdlive.com,amd.com.hk,amd.jp,amd.de,atiplushp.com,atipluslenovo.com\"; //old domains\r\n amd.cvDNTDomains = '';\r\n amd.tmpDestination_LID = '';\r\n amd.ReportSuiteID = '';\r\n amd.cvRsid = '';\r\n amd.cvRsidVal = '';\r\n amd.Destination_URL_wParam = '';\r\n amd.Destination_Name = '';\r\n amd.Destination_LPOS = '';\r\n amd.Destination_LID = '';\r\n amd.Destination_ID = '';\r\n amd.nodesForm = '';\r\n amd.cvElqFormId = '';\r\n amd.cvFormName = '';\r\n amd.cvFormPassed = '';\r\n amd.cvElqAssetType = '';\r\n amd.cvTimedReading = '';\r\n amd.cvSearchKeywordLoop = 0;\r\n amd.cvVideoID = '';\r\n amd.cvURL_fragment = '';\r\n amd.cvSTL = 0;\r\n amd.cvGTMID = '';\r\n amd.cvCVAReferrerURL = '';\r\n amd.cvLinkedSearch = 0;\r\n amd.cvCookieDURL = '';\r\n amd.cvCookieRURL = '';\r\n amd.csTotalCounts = 0;\r\n amd.cvFFonPlayerReady = '';\r\n amd.cvGACheckSearchAjax = '';\r\n amd.cvSearchURL = '';\r\n amd.cvGASearchURL = '';\r\n amd.cvOSSEvents = '';\r\n amd.cvDestination_URL = '';\r\n amd.sAA.referrer = document.referrer.toLowerCase();\r\n amd.cvUTCdate = getUTCDate();\r\n amd.cvLang = cfDetectLanguage() || '';\r\n}(AMDAnalytics);\r\n\r\n// Google Tag Manager (GTM)\r\nif (/(www\\.)?amdfanstore\\.com/.test(document.location.href.toLowerCase()) && !(document.location.href.toLowerCase().indexOf(\"otcctest=on\") !== -1)) {\r\n window.cvGTMID = \"GTM-MZL4VS5\"; // AMD GTM v4 - Legacy\r\n} else {\r\n window.cvGTMID = \"GTM-58DFX4Z\"; // AMD GTM v4 'GTM-NLRQQLB' ; // OneTrust\r\n}\r\nif (/\\/forms\\/feedback\\/amd\\-site\\-feedback\\.html/.test(document.location.href.toLowerCase())) {\r\n window.cvGTMID = \"\";\r\n} \r\n\r\nif (typeof window.cfLnkClick !== \"function\") {\r\n window.cfLnkClick = function (evt) {};\r\n}\r\n\r\n(async () => {\r\n if (window.cvGTMID) {\r\n // Import module for side effects\r\n \r\n if (window.cvGTMID === 'GTM-58DFX4Z' && !(/^https?:\\/\\/(login(dev|test|uat)?\\.xilinx\\.com|(dev|test|uat)?(iga|account)\\.amd\\.com|(dev|test|uat)?www\\.amd\\.com\\/(en|es|de|fr|ja|ko|pl|pt|tr|zh\\-(han(s|t)|cn|tw))\\/registration\\/?)/.test(document.location.href.toLowerCase()))) {\r\n _load_js('https://download.amd.com/js/analytics/gtmpixel.js');\r\n }\r\n if (window.cvGTMID === \"GTM-58DFX4Z\") {\r\n _load_js(\"https://download.amd.com/js/analytics/gtm.js\", initOneTrust);\r\n } else {\r\n _load_js(\"https://download.amd.com/js/analytics/gtm.js\");\r\n }\r\n } // EOF GTM\r\n})();\r\n\r\nasync function getcfLnkClick() {\r\n await import(\"./cms/aem.js\").then((cms) => {\r\n document.body.addEventListener(\r\n \"click\",\r\n (evt) => {\r\n cms.cfLnkClick(evt);\r\n },\r\n true\r\n );\r\n window.cfLnkClick = cms.cfLnkClick;\r\n });\r\n}\r\n\r\ngetcfLnkClick();\r\n\r\n\r\n/**\r\n * Formerly GTMClickAttach. Formatted as iife\r\n */\r\nvoid function () {\r\n}();\r\n\r\n/**\r\n * Massively pared down report suite function.\r\n * @returns {object} Report suite, currency, URL, language, cmpid.\r\n */\r\n\r\nconst getReportSuite = () => {\r\n const cvURL = getCleanURL();\r\n const { parseUri } = window;\r\n let ReportSuiteID = '';\r\n let cvCurrency = 'USD';\r\n const cvLang = cfDetectLanguage() || '';\r\n const cvHostName = parseUri(cvURL).host;\r\n\r\n /* Adding AMD Regional Accounts */\r\n if (cvURL.includes(\"zh-hans\") || cvURL.includes(\"zh-cn\")) {\r\n ReportSuiteID = `amdvregions-cn,${ReportSuiteID}`; // AMD China\r\n cvCurrency = \"CNY\";\r\n } else if (cvURL.includes(\"zh-hant\") || cvURL.includes(\"zh-tw\")) {\r\n ReportSuiteID = `amdvregions-tw,${ReportSuiteID}`; // AMD Taiwan\r\n cvCurrency = \"TWD\";\r\n } else if (cvURL.includes(\"/ko/\")) {\r\n ReportSuiteID = `amdvmegaregion-apac,amdvregions-kr,${ReportSuiteID}`; // AMD Korea\r\n cvCurrency = \"KRW\";\r\n } else if (cvURL.includes(\"/ja/\")) {\r\n ReportSuiteID = `amdvmegaregion-apac,amdvregions-jp,${ReportSuiteID}`; // AMD Japan\r\n cvCurrency = \"JPY\";\r\n } else if (negativeLookBehind(cvURL, /\\/ni\\/(?!(pohs\\/))/) || cvHostName == \"amdhub.in\" || cvHostName == \"www.amdhub.in\") {\r\n ReportSuiteID = `amdvmegaregion-apac,amdvregions-in,${ReportSuiteID}`; // AMD India\r\n cvCurrency = \"INR\";\r\n } else if (cvURL.includes(\"/se/\")) {\r\n ReportSuiteID = `amdvmegaregion-emea,amdvregions-sv,${ReportSuiteID}`; // AMD Sweden\r\n cvCurrency = \"SEK\";\r\n } else if (negativeLookBehind(cvURL, /\\/ac\\/(?!(pohs\\/))/) || negativeLookBehind(cvURL, /\\/su\\/(?!(pohs\\/))/) || cvURL.includes(\"/en/\")) {\r\n ReportSuiteID = `amdvmegaregion-na,${ReportSuiteID}`; // AMD North America (English)\r\n } else if (negativeLookBehind(cvURL, /\\/se\\/(?!(pohs\\/))/) || cvURL.includes(\"/es/\")) {\r\n ReportSuiteID = `amdvmegaregion-la,amdvregions-la,${ReportSuiteID}`; // AMD Latin America (Espanol)\r\n } else if (negativeLookBehind(cvURL, /\\/rb\\/(?!(pohs\\/))/) || cvURL.includes(\"/pt/\")) {\r\n ReportSuiteID = `amdvmegaregion-la,amdvregions-br,${ReportSuiteID}`; // AMD Brazil (Portugues)\r\n cvCurrency = \"BRL\";\r\n } else if (cvURL.includes(\"/uk/\")) {\r\n ReportSuiteID = `amdvmegaregion-emea,amdvregions-uk,${ReportSuiteID}`; // AMD United Kingdom (English)\r\n cvCurrency = \"GBP\";\r\n } else if (negativeLookBehind(cvURL, /\\/rf\\/(?!(pohs\\/))/)) {\r\n ReportSuiteID = `amdvmegaregion-emea,amdvregions-fr,${ReportSuiteID}`; // AMD France (Francais)\r\n } else if (negativeLookBehind(cvURL, /\\/ed\\/(?!(pohs\\/))/)) {\r\n ReportSuiteID = `amdvmegaregion-emea,amdvregions-de,${ReportSuiteID}`; // AMD Germany\r\n }\r\n ReportSuiteID = ReportSuiteID ? ReportSuiteID.toLowerCase() : '';\r\n if ((ReportSuiteID.indexOf('amdvmegaregion-emea') != -1) && cvCurrency == 'USD') {\r\n cvCurrency = 'EUR';\r\n }\r\n if (!(/,$/i.test(ReportSuiteID))) {\r\n ReportSuiteID = `${ReportSuiteID},`;\r\n }\r\n\r\n ReportSuiteID = `${ReportSuiteID}amdvglobal`;\r\n return {\r\n ReportSuiteID: ReportSuiteID || '',\r\n cvCurrency: cvCurrency || '',\r\n cvURL: cvURL || '',\r\n cvURLnoQuery: parseUri(cvURL).noquery.toLowerCase() || '',\r\n cvLang: cvLang || '',\r\n VWO: AMDAnalytics.sAA.eVar14 || '',\r\n cmpid: parseUri(cvURL).queryKey['cmpid'] || ''\r\n };\r\n};\r\n\r\nwindow.cfCheckRSID = getReportSuite();\r\n\r\n// on-site search (OSS) BOF\r\n\r\n/**\r\n * Drupal-specific function to get list of facets.\r\n * @returns {String} - List of filters.\r\n */\r\nfunction getFacets() {\r\n 'use strict';\r\n let category;\r\n let setFacets = '';\r\n const filters = new Map();\r\n const facetValues = [];\r\n\r\n const facetBlocks = document.querySelectorAll('[data-drupal-facet-id]');\r\n\r\n facetBlocks.forEach(element => {\r\n if (!element.classList.contains('facet-hidden')) {\r\n category = element.dataset.drupalFacetId;\r\n setFacets = getFacetDetails(element);\r\n filters.set(category, setFacets);\r\n }\r\n });\r\n for (let [key, value] of filters) {\r\n facetValues.push(`${key} ${value}`);\r\n }\r\n return facetValues.join('|');\r\n}\r\n\r\n/**\r\n * Go through each facet item and process it.\r\n * @param {Object} facetBlock\r\n * @returns \r\n */\r\nfunction getFacetDetails(facetWidget) {\r\n 'use strict';\r\n if (facetWidget.classList.contains('facet-inactive') || facetWidget.classList.contains('facet-empty')) {\r\n return '(not set)';\r\n }\r\n else {\r\n let selectedFacets = facetWidget.querySelectorAll('.is-active');\r\n if (selectedFacets.length && selectedFacets.length > 0) {\r\n const facetText = [];\r\n selectedFacets.forEach(facet => facetText.push(\r\n `${facet.getAttribute('data-drupal-facet-item-value')} ${facet.getAttribute('data-drupal-facet-item-count')}`\r\n ));\r\n return facetText.join(',');\r\n }\r\n else {\r\n selectedFacets = facetWidget.querySelectorAll('[selected]');\r\n const facetText = [];\r\n selectedFacets.forEach(facet => {\r\n facetText.push(facet.text.trim());\r\n })\r\n return facetText.join(',');\r\n }\r\n }\r\n}\r\n\r\nfunction trackSearch(keyword) {\r\n const local = (keyword && keyword !== '(not set)') ? keyword.toLowerCase() : '';\r\n const cvURL = getCleanURL();\r\n const local2 = parseUri(cvURL).queryKey['keyword'].toLowerCase() || '';\r\n let csKeyword;\r\n if (local && local2) {\r\n csKeyword = local;\r\n }\r\n else if (local) {\r\n csKeyword = local;\r\n }\r\n else if (local2) {\r\n csKeyword = local2;\r\n }\r\n else {\r\n csKeyword = '(not set)';\r\n }\r\n let cvOSSEvents = '';\r\n if (typeof csKeyword === 'undefined') {\r\n csKeyword = '(not set)';\r\n }\r\n const propertyID = parseUri(cvURL).host; // Search Property ID\r\n let pageReferrer;\r\n if (typeof AMDAnalytics.sAA.referrer != 'undefined') {\r\n pageReferrer = AMDAnalytics.sAA.referrer;\r\n }\r\n const searchResults = document.querySelector('span#search-data');\r\n const csTotalCounts = searchResults.dataset.total; // Total Counts\r\n\r\n cvOSSEvents += ',event5'; // On-Site Search (Counter)\r\n let failedKeyword = '';\r\n if (csTotalCounts === 0) {\r\n failedKeyword = csKeyword; // Internal Search Failed Terms\r\n cvOSSEvents += ',event12'; // On-Site Search (Failed)\r\n }\r\n else {\r\n cvOSSEvents += ',event11'; // On-Site Search (Success)\r\n }\r\n\r\n const currentPage = searchResults.dataset['currentPage']; // Results Page Number\r\n const searchFacets = getFacets();\r\n // data layer event name is the GTM trigger event name\r\n if (window.cfCheckRSID.ReportSuiteID.includes('amdvoss')) {\r\n window.dataLayer.push({\r\n 'event': 'search',\r\n 'OSS-keyword': csKeyword || '',\r\n 'OSS-propertyID': propertyID || '',\r\n 'OSS-referrer': pageReferrer || '',\r\n 'OSS-totalCount': csTotalCounts || '0',\r\n 'OSS-events': cvOSSEvents || '',\r\n 'OSS-failedKeyword': failedKeyword || '',\r\n 'OSS-pageNumber': currentPage || '',\r\n 'OSS-facets': searchFacets || ''\r\n });\r\n }\r\n else if (window.cfCheckRSID.ReportSuiteID.includes('amdvshop')) {\r\n window.dataLayer.push({\r\n 'event': 'shopsearch',\r\n 'SS-keyword': csKeyword || '',\r\n 'SS-propertyID': propertyID || '',\r\n 'SS-referrer': pageReferrer || '',\r\n 'SS-totalCount': csTotalCounts || '0',\r\n 'SS-events': cvOSSEvents || '',\r\n 'SS-failedKeyword': failedKeyword || '',\r\n 'SS-pageNumber': currentPage || '',\r\n 'SS-facets': searchFacets || ''\r\n });\r\n }\r\n}\r\n\r\nfunction isSearchPage() {\r\n 'use strict';\r\n return document.querySelectorAll('span#search-data').length > 0;\r\n}\r\n\r\nready(() => {\r\n if (isSearchPage()) {\r\n trackSearch();\r\n }\r\n});\r\n\r\n/* Custom Functions for Responsive Web (RW) BOF */\r\n// http://blogs.adobe.com/digitalmarketing/digital-marketing/mobile/responsive-web-design-and-web-analytics/\r\n// userAgent assignment\r\nfunction getDeviceByUA() {\r\n let userAgent = '';\r\n if (navigator.userAgent) {\r\n userAgent = navigator.userAgent;\r\n }\r\n let platformCategory = '';\r\n\r\n const CATEGORIZE_TABLETS_AS_DESKTOPS = false;\r\n const CATEGORIZE_TVS_AS_DESKTOPS = false;\r\n // Check if user agent is Windows Desktop\r\n if (/Windows.(NT|XP|ME|9)/i.test(userAgent) && !(/Phone/i.test(userAgent)) || /Win(9|.9|NT)/i.test(userAgent)) {\r\n return 'desktop';\r\n }\r\n // Check if agent is Mac Desktop\r\n else if (/Macintosh|PowerPC/i.test(userAgent) && !(/Silk/i.test(userAgent))) {\r\n return 'desktop';\r\n }\r\n // Check if user agent is a Linux Desktop\r\n else if (/Linux/.test(userAgent) && /X11/i.test(userAgent)) {\r\n return 'desktop';\r\n }\r\n // Check if user agent is a Tablet\r\n else if (/iP(a|ro)d/i.test(userAgent) || /tablet/i.test(userAgent) && !(/RX-34/i.test(userAgent)) || /FOLIO/i.test(userAgent)) {\r\n platformCategory = 'tablet';\r\n }\r\n // Check if user agent is an Android Tablet\r\n else if (/Linux/i.test(userAgent) && /Android/i.test(userAgent) && !(/Fennec|mobi|HTC.Magic|HTCX06HT|Nexus.One|SC-02B|fone.945/i.test(userAgent))) {\r\n platformCategory = 'tablet';\r\n }\r\n // Check if user agent is a Kindle or Kindle Fire\r\n else if (/Kindle/i.test(userAgent) || /Mac.OS/i.test(userAgent) && /Silk/i.test(userAgent)) {\r\n platformCategory = 'tablet';\r\n }\r\n // Check if user agent is a pre Android 3.0 Tablet\r\n else if (/GT-P10|SC-01C|SHW-M180S|SGH-T849|SCH-I800|SHW-M180L|SPH-P100|SGH-I987|zt180|HTC(.Flyer|\\_Flyer)|Sprint.ATP51|ViewPad7|pandigital(sprnova|nova)|Ideos.S7|Dell.Streak.7|Advent.Vega|A101IT|A70BHT|MID7015|Next2|nook/i.test(userAgent) || /MB511/i.test(userAgent) && /RUTEM/i.test(userAgent)) {\r\n platformCategory = 'tablet';\r\n }\r\n // Check if user agent is unique Mobile User Agent\r\n else if (/BOLT|Fennec|Iris|Maemo|Minimo|Mobi|mowser|NetFront|Novarra|Prism|RX-34|Skyfire|Tear|XV6875|XV6975|Google.Wireless.Transcoder/i.test(userAgent)) {\r\n return 'mobile';\r\n }\r\n // Check if user agent is an odd Opera User Agent - http://goo.gl/nK90K\r\n else if (/Opera/.test(userAgent) && /Windows.NT.5/i.test(userAgent) && /HTC|Xda|Mini|Vario|SAMSUNG\\-GT\\-i8000|SAMSUNG\\-SGH\\-i9/i.test(userAgent)) {\r\n return 'mobile';\r\n }\r\n // Check if user agent is a smart TV - http://goo.gl/FocDk\r\n else if (/GoogleTV|SmartTV|Internet.TV|NetCast|NETTV|AppleTV|boxee|Kylo|Roku|DLNADOC|CE\\-HTML/i.test(userAgent)) {\r\n platformCategory = 'tv';\r\n }\r\n // Check if user agent is a Solaris, SunOS, BSD Desktop\r\n else if (/Solaris|SunOS|BSD/i.test(userAgent)) {\r\n return 'desktop';\r\n }\r\n // Check if user agent is a TV Based Gaming Console\r\n else if (/Xbox|PLAYSTATION.3|Wii/i.test(userAgent)) {\r\n return 'gaming console';\r\n }\r\n // Check if user agent is a Desktop BOT/Crawler/Spider\r\n else if (/Bot|Crawler|Spider|Yahoo|ia_archiver|Covario-IDS|findlinks|DataparkSearch|larbin|Mediapartners-Google|NG-Search|Snappy|Teoma|Jeeves|TinEye/i.test(userAgent) && !(/Mobile/i.test(userAgent))) {\r\n platformCategory = 'bot/crawler/spider';\r\n } else if (!userAgent) {\r\n return 'NoUA';\r\n }\r\n // Otherwise assume it is a Mobile Device\r\n else {\r\n return 'mobile';\r\n }\r\n // Categorize Tablets as desktops\r\n if (CATEGORIZE_TABLETS_AS_DESKTOPS && platformCategory == 'tablet') {\r\n return 'desktop';\r\n }\r\n // Categorize TVs as desktops\r\n if (CATEGORIZE_TVS_AS_DESKTOPS && platformCategory == 'tv') {\r\n return 'desktop';\r\n }\r\n return platformCategory;\r\n} // End cfDeviceByUA function\r\n\r\n// Returns true if desktop user agent is detected\r\nwindow.isDesktop = () => {\r\n return getDeviceByUA() == 'desktop';\r\n}\r\n\r\n// Returns true if tablet user agent is detected\r\nwindow.isTablet = () => {\r\n return getDeviceByUA() == 'tablet';\r\n}\r\n\r\n// Returns true if tablet user agent is detected\r\nwindow.isTV = () => {\r\n return getDeviceByUA() == 'tv';\r\n}\r\n\r\n// Returns true if mobile user agent is detected\r\nwindow.isMobile = () => {\r\n return getDeviceByUA() == 'mobile';\r\n}\r\n\r\n"],"names":["negativeLookBehind","text","expression","test","split","reverse","join","getCleanURL","cvURL","decodeURI","document","URL","toLowerCase","parseUri","queryKey","noquery","length","replace","cvURLtempSplit","includes","indexOf","UpdateQueryString","key","value","url","window","location","href","checkUrl","RegExp","re","hash","separator","str","options","strictMode","q","name","parser","strict","loose","pu","m","exec","uri","i","$0","$1","$2","host","uriSplit","subdomain","domain","tld","pathSplit","path","p","pathLevel","protocol","authority","getUTCDate","cvCurrentDT","Date","UTC","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","stripPii","cleanLinkID","cfDetectLanguage","sysLanguage","navigator","userLanguage","language","removeHTMLTags","strInputCode","strMatch","p1","documentNode","o","cvPTagName","cvPPTagName","cvPPClassName","cvPPPTagName","cvPPPClassName","parentNode","tagName","cfIsNullOrWhitespace","classList","_load_js","src","done","js","createElement","head","getElementsByTagName","documentElement","isDone","type","async","onerror","Error","onload","onreadystatechange","this","readyState","nextSibling","appendChild","lsTest","localStorage","setItem","removeItem","e","ready","fn","setTimeout","addEventListener","cfRight","n","String","iLen","substring","colorboxInit","cbInit","cssId","jQuery","colorbox","link","id","rel","media","testOneTrust","getItem","initOneTrust","OneTrustURLBase","cdnOneTrust","OneTrustURLVer","OneTrustURLTestVer","OneTrustURLEnd","OneTrustURL","OneTrustTestURL","DataDomain","getOnetrustDataDomain","hostname","OneTrust_script","setAttribute","cookieEvent","CustomEvent","OptanonWrapper","OneTrustLoaded","dispatchEvent","OTUrl","useDefaultUrl","slice","Cookie","Set","c_name","expTime","samesite","secure","d","s","setTime","getTime","toUTCString","tempURI","shouldSendSameSiteNone","userAgent","cookie","Get","match","c","ca","cl","trim","Unset","All","cookies","result","ci","item","decodeURIComponent","shift","Enabled","cookiesEnabled","getCookieConsent","OnetrustActiveGroups","groupsArray","tempOptanonConsent","cookieOptanonConsent","reduce","res","val","map","Object","assign","JSON","parse","row","push","CookieExpiryTime","END_OF_SESSION","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","NEVER","useragent","isSameSiteNoneIncompatible","hasWebKitSameSiteBug","dropsUnrecognizedSameSiteCookies","isIosVersion","isMacosxVersion","isSafari","isMacEmbeddedBrowser","isUcBrowser","isUcBrowserVersionAtLeast","isChromiumBased","isChromiumVersionAtLeast","major","regex","tempDetails","toString","minor","safari_regex","version","parseInt","build","major_version","minor_version","buildVersion","FunctionLoad","percent_chance","survey_url","survey_onexit","random_number","Math","floor","random","sPageVisited","event","open","fallback","surveyURL","isMobile","surveyModal","lightboxHTML","appendTo","append","css","click","remove","keyup","keyCode","modalDelay","method","count","fallbackURL","cntDown","ColorBoxDelay","FunctionLoadA","cookieName","details","className","closeButton","iframe","width","height","fixed","reposition","escKey","overlayClose","opacity","FunctionLoadB","survey_html","html","pollPromoVisibiliy","trackPromoInit","IPToptions","root","rootMargin","threshold","callback","entries","observer","forEach","entry","isIntersecting","target","dataset","impressed","isPromoVisible","IntersectionObserver","querySelectorAll","elmnt","ipIndex","elAttributes","attributes","contains","closest","dataLposTemp","dropDownParent","dropDownSubParent","tmplpos","querySelector","textContent","menuText","getAttribute","observe","car","elmnt2","carpos","carousel","promoObj","isClickPromo","cvPromoImageSRC","cvPromoFoundChild","cvPromoHTML","err","unescape","cvPromoCreative","cvPromoKName","cvPromoPromoName","cvPromoiPromoName","startsWith","origin","tmpPromoLPOS","tmpcar","dataLayer","promoLPOS","promoName","ecommerce","promoView","promotions","creative","position","initHPT","contentWrapper","returnRows","childElementCount","children","contentRows","index","contentIndex","rowindex","bsRows","bsRowsWithLinks","filter","bsRowIndex","logicalBlocks","child","block","blockIndex","links","linkIndex","pos","hasAttribute","contentRowLinks","slides","firstElementChild","realSlides","slide","slideIndex","AMDAnalytics","cvLnkTrack","sAA","cvOldLinkClickObject","cvSPwebtrack","cvURLCheck","cvSurveyURLCheck","eVar14","gtag","arguments","ad_storage","analytics_storage","functionality_storage","personalization_storage","ad_user_data","ad_personalization","security_storage","wait_for_update","errorCheck","setConstants","amd","cvAddThis","cvAMDWebProperties","cvDNTDomains","tmpDestination_LID","ReportSuiteID","cvRsid","cvRsidVal","Destination_URL_wParam","Destination_Name","Destination_LPOS","Destination_LID","Destination_ID","nodesForm","cvElqFormId","cvFormName","cvFormPassed","cvElqAssetType","cvTimedReading","cvSearchKeywordLoop","cvVideoID","cvURL_fragment","cvSTL","cvGTMID","cvCVAReferrerURL","cvLinkedSearch","cvCookieDURL","cvCookieRURL","csTotalCounts","cvFFonPlayerReady","cvGACheckSearchAjax","cvSearchURL","cvGASearchURL","cvOSSEvents","cvDestination_URL","referrer","cvUTCdate","cvLang","cfLnkClick","evt","getcfLnkClick","import","then","cms","body","getReportSuite","cvCurrency","cvHostName","cvURLnoQuery","VWO","cmpid","cfCheckRSID","getFacets","category","setFacets","filters","Map","facetValues","facetBlocks","element","drupalFacetId","getFacetDetails","set","facetWidget","selectedFacets","facetText","facet","trackSearch","keyword","local","local2","csKeyword","propertyID","pageReferrer","searchResults","total","failedKeyword","currentPage","searchFacets","isSearchPage","getDeviceByUA","platformCategory","isDesktop","isTablet","isTV"],"mappings":"AAMA,SAASA,EAAmBC,EAAMC,GAE9B,OAAOA,EAAWC,KAAKF,EAAKG,MAAM,IAAIC,UAAUC,KAAK,IACzD,CAEA,SAASC,IACL,IAAIC,EAAQC,UAAUC,SAASC,IAAIC,eAEnC,IAAKC,EAASL,GAAOM,SAAS,WAAa,MAAQ,OAAQ,CACvDN,EAAQK,EAASL,GAAOO,QAAQH,aACnC,CAEDJ,EAAQA,EAAMQ,OAASR,EAAMS,QAAQ,+DAAgE,OAAS,GAC9GT,EAAQA,EAAMQ,OAASR,EAAMS,QAAQ,iEAAkE,OAAS,GAChHT,EAAQA,EAAMQ,OAASR,EAAMS,QAAQ,KAAM,QAAU,GAGrD,KAAO,0BAA0Bd,KAAKK,IAAY,SAASL,KAAKK,IAAU,CACtEA,EAAQ,GAAGA,IACd,CAGD,GAAI,SAASL,KAAKK,KAAY,0BAA0BL,KAAKK,GAAS,CACpE,IAAIU,EACJ,IAAKV,EAAMW,SAAS,QAAUX,EAAMW,SAAS,MAAO,CAClD,GAAIX,EAAMW,SAAS,MAAQX,EAAMW,SAAS,KAAM,CAE9C,GAAIX,EAAMY,QAAQ,KAAOZ,EAAMY,QAAQ,KAAM,CAC3CF,EAAiBV,EAAMJ,MAAM,KAC7BI,EAAQ,GAAGU,EAAe,OAAOA,EAAe,IAC5D,KAAiB,CACLA,EAAiBV,EAAMJ,MAAM,KAC7BI,EAAQ,GAAGU,EAAe,OAAOA,EAAe,IACjD,CACF,MAAM,GAAIV,EAAMW,SAAS,KAAM,CAC9BD,EAAiBV,EAAMJ,MAAM,KAC7BI,EAAQ,GAAGU,EAAe,OAAOA,EAAe,IACjD,MAAM,GAAIV,EAAMW,SAAS,KAAM,CAC9BD,EAAiBV,EAAMJ,MAAM,KAC7BI,EAAQ,GAAGU,EAAe,OAAOA,EAAe,IACjD,CACF,CACF,CAEDV,EAAQA,EAAMS,QAAQ,KAAM,IAE5BT,EAAQa,EAAkB,WAAY,MAAOb,GAC7C,OAAOa,EAAkB,WAAY,MAAOb,EAChD,CAiDA,SAASa,EAAkBC,EAAKC,EAAOC,GACnC,IAAKA,EAAKA,EAAMC,OAAOC,SAASC,KAChC,MAAMC,EAAW,IAAIC,OAAO,GAAGP,KAAQ,MACvC,GAAIM,EAASzB,KAAKqB,GAAM,CACpB,MAAMM,EAAK,IAAID,OAAO,SAASP,mBAAsB,MACrD,IAAIS,EACJ,GAAID,EAAG3B,KAAKqB,GAAM,CACd,UAAWD,IAAU,aAAeA,IAAU,KAAM,CAChD,OAAOC,EAAIP,QAAQa,EAAI,KAAKR,KAAOC,QACtC,CACDQ,EAAOP,EAAIpB,MAAM,KACjBoB,EAAMO,EAAK,GAAGd,QAAQa,EAAI,QAAQb,QAAQ,SAAU,IACpD,UAAWc,EAAK,KAAO,aAAeA,EAAK,KAAO,KAAM,CACpDP,GAAO,IAAIO,EAAK,IACnB,CACJ,MACI,UAAWR,IAAU,aAAeA,IAAU,KAAM,CACrD,MAAMS,EAAYR,EAAIJ,QAAQ,QAAU,EAAI,IAAM,IAClDW,EAAOP,EAAIpB,MAAM,KACjBoB,EAAM,GAAGO,EAAK,GAAKC,EAAYV,KAAOC,IACtC,UAAWQ,EAAK,KAAO,aAAeA,EAAK,KAAO,KAAM,CACpDP,GAAO,IAAIO,EAAK,IACnB,CACJ,CACJ,CACD,OAAOP,CACX,CAmCA,SAASX,EAASoB,GAEd,UAAWpB,EAASqB,SAAW,aAAerB,EAASqB,UAAY,KAAM,CACrErB,EAASqB,QAAU,CACfC,WAAY,MACZb,IAAK,CAAC,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAC3Ic,EAAG,CACCC,KAAM,WACNC,OAAQ,6BAEZA,OAAQ,CACJC,OAAQ,0IACRC,MAAO,oMAGlB,CACD,MAAMC,EAAK5B,EAASqB,QACpB,MAAMQ,EAAID,EAAGH,OAAOG,EAAGN,WAAa,SAAW,SAASQ,KAAKV,GAC7D,MAAMW,EAAM,CAAA,EACZ,IAAIC,EAAI,GACR,MAAOA,IAAK,CACRD,EAAIH,EAAGnB,IAAIuB,IAAMH,EAAEG,IAAM,EAC5B,CACDD,EAAIH,EAAGL,EAAEC,MAAQ,CAAA,EACjBO,EAAIH,EAAGnB,IAAI,KAAKL,QAAQwB,EAAGL,EAAEE,QAAQ,CAACQ,EAAIC,EAAIC,KAC1C,GAAID,EAAI,CACJH,EAAIH,EAAGL,EAAEC,MAAMU,GAAMC,CACxB,KAELJ,EAAIK,KAAOL,EAAIK,KAAKhC,QAAQ,mBAAoB,IAChD,MAAMiC,EAAWN,EAAIK,KAAK7C,MAAM,KAChC,OAAQ8C,EAASlC,QACb,KAAK,EACD4B,EAAIO,UAAY,KAChBP,EAAIQ,OAASF,EAAS,GACtBN,EAAIS,IAAMH,EAAS,GACnB,MACJ,KAAK,EACDN,EAAIO,UAAYD,EAAS,GACzBN,EAAIQ,OAASF,EAAS,GACtBN,EAAIS,IAAMH,EAAS,GACnB,MACJ,KAAK,EACDN,EAAIO,UAAYD,EAAS,GACzBN,EAAIQ,OAASF,EAAS,GACtBN,EAAIS,IAAM,GAAGH,EAAS,MAAMA,EAAS,KACrC,MACJ,QACIN,EAAIO,UAAYP,EAAIQ,OAASR,EAAIS,IAAM,KAE/C,IAAIC,EAAYV,EAAIW,KAAKnD,MAAM,KAC/BkD,EAAU,GAAKV,EAAIK,KACnB,IAAK,IAAIO,EAAI,EAAGA,EAAIF,EAAUtC,OAAQwC,IAAK,CACvC,GAAIF,EAAUE,GAAI,CAEdF,EAAUE,GAAK,GAAGF,EAAUE,EAAI,MAAMF,EAAUE,IACnD,CACJ,CACD,GAAIF,EAAUtC,OAAS,EAAG,CACtB,IAAK,IAAIwC,EAAIF,EAAUtC,OAAQwC,EAAI,EAAGA,IAAK,CACvCF,EAAUE,GAAK,EAClB,CACJ,CACDZ,EAAIa,UAAYH,EAChBV,EAAI7B,QAAU,GAAG6B,EAAIc,cAAcd,EAAIe,YAAYf,EAAIW,OACvD,OAAOX,CACX,CAsBA,SAASgB,IACL,MAAMC,EAAc,IAAIC,KACxB,OAAOA,KAAKC,IAAIF,EAAYG,iBAAkBH,EAAYI,cAAeJ,EAAYD,aAAcC,EAAYK,cAAeL,EAAYM,gBAAiBN,EAAYO,gBAC3K,CAOA,SAASC,EAAS7C,GACd,IAAKA,EAAIR,OAAQ,CACb,MAAO,EACV,CACDQ,EAAMA,EAAIP,QAAQ,+DAAgE,OAClFO,EAAMA,EAAIP,QAAQ,iEAAkE,OACpF,OAAOO,EAAIP,QAAQ,KAAM,OAC7B,CAOA,SAASqD,EAAY9C,GACjBA,EAAMA,EAAIP,QAAQ,IAAK,KACvBO,EAAMA,EAAIP,QAAQ,UAAW,QAC7BO,EAAMA,EAAIP,QAAQ,UAAW,QAC7BO,EAAMA,EAAIP,QAAQ,WAAY,YAC9BO,EAAMA,EAAIP,QAAQ,QAAS,SAC3BO,EAAMA,EAAIP,QAAQ,YAAa,SAC/BO,EAAMA,EAAIP,QAAQ,YAAa,aAC/BO,EAAMA,EAAIP,QAAQ,gBAAiB,aACnCO,EAAMA,EAAIP,QAAQ,aAAc,UAChCO,EAAMA,EAAIP,QAAQ,SAAU,UAC5BO,EAAMA,EAAIP,QAAQ,8BAA+B,mCACjD,OAAOO,EAAIP,QAAQ,8BAA+B,kCACtD,CAMA,SAASsD,IACL,MAAMC,EAAc/C,OAAOgD,UAAUC,cAAgBjD,OAAOgD,UAAUE,UAAY,GAClF,OAAOH,EAAY5D,aACvB,CAEA,SAASgE,EAAeC,GACpB,GAAIA,EAAc,CACdA,EAAeA,EAAa5D,QAAQ,cAAc,CAAC6D,EAAUC,IACjDA,GAAM,KAAQ,IAAM,MAEhC,OAAOF,EAAa5D,QAAQ,kBAAmB,GAClD,CACL,CAEA,SAAS+D,EAAaC,GAClB,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EACJ,UAAWL,EAAEM,YAAc,YAAa,CACpCL,EAAaD,EAAEM,WAAWC,QAAQ5E,cAClC,UAAWqE,EAAEM,WAAWA,YAAc,cACjCE,EAAqBR,EAAEM,WAAWA,aACnCN,EAAEM,WAAWC,QAAQ5E,eAAiB,OAAQ,CAC9C,UAAWqE,EAAEM,WAAWA,WAAWC,SAAW,YAAa,CACvDL,EAAcF,EAAEM,WAAWA,WAAWC,QAAQ5E,cAC9C,GAAIqE,EAAEM,WAAWA,WAAWG,UAAY,EAAG,CACvCN,EAAgBH,EAAEM,WAAWA,WAAWG,UAAUnE,MAAMX,aAC3D,CACJ,CACD,UAAWqE,EAAEM,WAAWA,WAAWA,YAAc,cAChDE,EAAqBR,EAAEM,WAAWA,WAAWA,aAC9CN,EAAEM,WAAWA,WAAWC,QAAQ5E,eAAiB,eAAiBqE,EAAEM,WAAWA,WAAWA,WAAWC,SAAW,YAAa,CACzHH,EAAeJ,EAAEM,WAAWA,WAAWA,WAAWC,QAAQ5E,cAC1D,GAAIqE,EAAEM,WAAWA,WAAWA,WAAWG,UAAY,EAAG,CAClDJ,EAAiBL,EAAEM,WAAWA,WAAWA,WAAWG,UAAUnE,MAAMX,aACvE,CACJ,CACJ,CACJ,CACD,MAAO,CAAEsE,aAAYC,cAAaC,gBAAeE,iBAAgBD,eACrE,CAEA,SAASM,EAASC,EAAKC,GACnB,MAAMC,EAAKpF,SAASqF,cAAc,UAClC,MAAMC,EAAOtF,SAASuF,qBAAqB,QAAQ,IAAMvF,SAASwF,gBAClE,IAAIC,EAAS,MACbL,EAAGF,IAAMA,EACTE,EAAGM,KAAO,kBACVN,EAAGO,MAAQ,KAMXP,EAAGQ,QAAU,KACT,MAAM,IAAIC,MAAM,0BAA0BT,EAAGF,MAAM,EAOvDE,EAAGU,OAASV,EAAGW,mBAAqB,WAChC,IAAKN,KAAYO,KAAKC,aAAeD,KAAKC,aAAe,YAAcD,KAAKC,aAAe,UAAYD,KAAKE,cAAgB,OAAQ,CAChIT,EAAS,KACT,GAAIN,EAAM,CACNA,GACH,CAGDC,EAAGU,OAASV,EAAGW,mBAAqB,IACvC,MACI,GAAIC,KAAKC,aAAe,UAAYD,KAAKE,cAAgB,KAAM,CAChE,MAAM,IAAIL,MAAM,0BAA0BT,EAAGF,MAChD,CACT,EAEII,EAAKa,YAAYf,EACrB,CAEA,SAASgB,IACL,MAAM3G,EAAO,OACb,IACI4G,aAAaC,QAAQ7G,EAAMA,GAC3B4G,aAAaE,WAAW9G,GACxB,OAAO,IAIV,CAFD,MAAO+G,GACH,OAAO,KACV,CACL,CAEA,SAASC,EAAMC,GAEX,GAAI1G,SAASiG,aAAe,YAAcjG,SAASiG,aAAe,cAAe,CAE7EU,WAAWD,EAAI,EACvB,KAAW,CACH1G,SAAS4G,iBAAiB,mBAAoBF,EACjD,CACL,CAEA,SAAS3B,EAAqBlE,GAC1B,MAAMO,EAAK,QACX,cAAiBP,IAAU,aAAiBA,IAAU,MAAUA,EAAMP,SAAW,GAAOc,EAAG3B,KAAKoB,EACpG,CAGA,SAASgG,EAAQtF,EAAKuF,GAClB,GAAIA,GAAK,EAAG,CACR,MAAO,EACV,MAAM,GAAIA,EAAIC,OAAOxF,GAAKjB,OAAQ,CAC/B,OAAOiB,CACf,KAAW,CACH,MAAMyF,EAAOD,OAAOxF,GAAKjB,OACzB,OAAOyG,OAAOxF,GAAK0F,UAAUD,EAAMA,EAAOF,EAC7C,CACL,CAEA,MAAMI,EAAe,KACnB,MAAMC,EAAS,WACb,MAAMC,EAAQ,cACd,UAAWC,SAAW,sBAAwBtG,OAAOsG,OAAOC,WAAa,aAAc,CACrF,GAAIvG,OAAOsG,OAAO,IAAMD,GAAO9G,QAAU,EAAG,CAC1C,MAAMgF,EAAOtF,SAASuF,qBAAqB,QAAQ,GACnD,MAAMgC,EAAOvH,SAASqF,cAAc,QACpCkC,EAAKC,GAAKJ,EACVG,EAAKE,IAAM,aACXF,EAAK7B,KAAO,WACZ6B,EAAKtG,KAAO,4CACZsG,EAAKG,MAAQ,MACbpC,EAAKa,YAAYoB,EAClB,CACDtC,EAAS,qDACV,CACL,EACE,UAAWoC,SAAW,YAAa,CACjCF,GACJ,KAAS,CACLlC,EAAS,kDAAmDkC,EAC7D,GClbH,SAASQ,IACR,OAAOvB,KAAYC,aAAauB,QAAQ,YAAc,OAAS,KAAO,KACvE,CAKA,SAASC,IACR,MAAMC,EAAkB,qCACxB,MAAMC,EAAc5H,EAASH,SAASgB,SAASC,KAAKf,eAAeE,SAAS,WAAa,KACzF,MAAM4H,EAAiB,aACvB,MAAMC,EAAqB,aAC3B,MAAMC,EAAiB,gCACvB,IAAIC,EAAcL,EAAkBE,EAAiBE,EACrD,IAAIE,EAAkBN,EAAkBG,EAAqBC,EAC7D,GAAIH,EAAa,CACdI,EAAc,yDACdC,EAAkB,wDACnB,CACF,IAAIC,EAAa,GACjBA,EAAaC,EAAsBvH,OAAOC,SAASuH,UACnD,MAAMC,EAAkBxI,SAASqF,cAAc,UAC/C,GAAIsC,IAAgB,CACnBa,EAAgBC,aAAa,MAAOL,EACpC,KACI,CACJI,EAAgBC,aAAa,MAAON,EACpC,CACDK,EAAgBC,aAAa,yBAA0B,QACvDD,EAAgBC,aAAa,UAAW,SACxCD,EAAgBC,aAAa,qBAAsBJ,GACnDrI,SAASsF,KAAKa,YAAYqC,GAC1B,MAAME,EAAc,IAAIC,YAAY,kBACpC5H,OAAO6H,eAAiB,WACvB7H,OAAO8H,eAAiB,KACxB9H,OAAO+H,cAAcJ,EAEvB,EAMC,SAASJ,EAAsBxH,GAE9B,IAAI6G,EAAe,MACnB,IAAIoB,EAAQjI,EAAIP,QAAQ,mBAAoB,IAAIb,MAAM,KACtD,IAAIsJ,EAAgB,MACpB,IAAIX,EAAa,GACjBU,EAAQA,EAAME,MAAMF,EAAMzI,OAAS,GAAGV,KAAK,KAC3C,GAAImJ,IAAU,WAAaA,IAAU,eAAiBA,IAAU,qBAAuBA,IAAU,qBAAuBhI,OAAOC,SAASC,KAAKf,cAAcO,SAAS,eAAgB,CAChL4H,EAAa,uCACb,GAAIU,IAAU,eAAiBA,IAAU,qBAAuBA,IAAU,qBAAuBhI,OAAOC,SAASC,KAAKf,cAAcO,SAAS,eAAgB,CAC3J,GAAIsI,IAAU,eAAiBA,IAAU,oBAAqB,CAC5DC,EAAgB,IACjB,CACDrB,EAAe,IAChB,CACD,IAAIlF,EAAYtC,EAASY,OAAOC,SAASC,MAAMwB,UAC/C,OAAQA,GACN,IAAK,SACL,IAAK,UACHkF,EAAe,KAEzB,MAAW,GAAIoB,IAAU,kBAAmB,CACtCV,EAAa,sCACnB,MAAW,GAAIU,IAAU,eAAgB,CACnCV,EAAa,sCACnB,MAAW,GAAIU,IAAU,YAAa,CAChCV,EAAa,sCACd,MAAM,GAAIU,IAAU,kBAAoBA,IAAU,SAAU,CAC3DV,EAAa,uCACb,GAAIU,IAAU,SAAU,CACtBC,EAAgB,KAChBrB,EAAe,IAChB,CACF,MAAM,GAAIoB,IAAU,kBAAoBA,IAAU,mBAAoB,CACrEV,EAAa,uCACb,GAAIU,IAAU,mBAAoB,CAChCC,EAAgB,KAChBrB,EAAe,IAChB,CACP,MAAW,GAAIoB,IAAU,cAAe,CAClCV,EAAa,sCACd,MAAM,GAAIU,IAAU,iBAAmBA,IAAU,aAAc,CAC9DV,EAAa,uCACb,GAAIU,IAAU,aAAc,CAC1BC,EAAgB,KAChBrB,EAAe,IAChB,CACP,MAAW,GAAIoB,IAAU,iBAAkB,CACrCV,EAAa,sCACnB,MAAW,GAAIU,EAAMtI,SAAS,cAAgBsI,EAAMtI,SAAS,eAAgB,CACvEuI,EAAgB,KAChBrB,EAAe,KACfU,EAAa,sCACnB,MAAW,GAAI,gDAAgD5I,KAAKO,SAASgB,SAASC,KAAKf,eAAgB,CACrGmI,EAAa,uCACbW,EAAgB,KAChB,GAAI,+CAA+CvJ,KAAKO,SAASgB,SAASC,KAAKf,eAAgB,CAC7FyH,EAAe,IAChB,CACP,MAAW,GAAI,4FAA4FlI,KAAKO,SAASgB,SAASC,KAAKf,eAAgB,CACjJmI,EAAa,uCAEb,GAAI,2FAA2F5I,KAAKO,SAASgB,SAASC,KAAKf,eAAgB,CACzI8I,EAAgB,KACpBrB,EAAe,IACZ,CACF,CAGH,GAAIqB,EAAe,CAClBb,EAAc,wDACd,CAID,GAAIR,IAAiB,MAAQU,IAAe,IAAMA,EAAW3H,QAAQ,SAAW,EAAG,CAClF2H,EAAaA,EAAa,OAC1B,CACD,OAAOA,CACP,CAEF,CAOK,MAACa,EAAS,CAWdC,IAAK,SAAUC,EAAQvI,EAAOwI,EAASxG,EAAMH,EAAQ4G,EAAUC,GAC9D,IAAI/C,EAAI,GACR,IAAIgD,EACJ,IAAIC,EACJ,GAAIJ,EAAS,CACZG,EAAI,IAAIpG,KACRoG,EAAEE,QAAQF,EAAEG,UAAa,GACzBnD,EAAI,aAAagD,EAAEI,eACnB,CACD,IAAK/G,EAAM,CACVA,EAAO,GACP,CACD,IAAKH,EAAQ,CACZ,MAAMmH,EAAU1J,EAASH,SAASC,KAClCyC,EAASmH,EAAQnH,OAAS,IAAMmH,EAAQlH,GACxC,CACD,IAAK2G,EAAU,CACdG,EAAIK,EAAuB/F,UAAUgG,WAAa,wBAA0B,EAC5E,MACI,GAAIT,EAASpJ,gBAAkB,MAAO,CAC1CuJ,EAAI,eACJ,MACI,GAAIH,EAASpJ,gBAAkB,SAAU,CAC7CuJ,EAAI,kBACJ,MACI,GAAIH,EAASpJ,gBAAkB,OAAQ,CAC3CuJ,EAAIK,EAAuB/F,UAAUgG,WAAa,wBAA0B,EAC5E,KACI,CACJN,EAAI,EACJ,CACD,KAAMF,GAAUE,EAAEvJ,cAAcQ,QAAQ,iBAAmB,EAAG,CAC7D+I,EAAI,GAAGA,UACP,CACDzJ,SAASgK,OAAS,GAAGZ,KAAUvI,IAAQ2F,WAAW3D,aAAgBH,IAAS+G,GAC3E,EAMDQ,IAAK,SAAUb,GACd,MAAMc,EAAQd,EAAS,IACvB,IAAIe,EAAI,GACR,MAAMC,EAAKpK,SAASgK,OAAOtK,MAAM,KACjC,IAAIyC,EACJ,IAAIkI,EACJ,IAAKlI,EAAI,EAAGkI,EAAKD,EAAG9J,OAAQ6B,EAAIkI,EAAIlI,IAAK,CACxCgI,EAAIpD,OAAOqD,EAAGjI,IAAImI,OAClB,GAAIH,EAAEzJ,QAAQwJ,KAAW,EAAG,CAC3B,OAAOC,EAAElD,UAAUiD,EAAM5J,OAAQ6J,EAAE7J,OACnC,CACD,CACD,OAAO,IACP,EAODiK,MAAO,SAAUnB,EAAQvG,EAAMH,GAC9BsD,KAAKmD,IAAIC,EAAQ,IAAK,EAAGvG,EAAMH,EAC/B,EAKD8H,IAAK,WACJ,GAAIxK,SAASgK,SAAW,GAAI,CAC3B,MAAO,EACP,CAED,MAAMS,EAAUzK,SAASgK,OAAOtK,MAAM,MACtC,MAAMgL,EAAS,CAAA,EAEf,IAAK,IAAIC,EAAK,EAAGN,EAAKI,EAAQnK,OAAQqK,EAAKN,EAAIM,IAAM,CACpD,MAAMC,EAAOH,EAAQE,GAAIjL,MAAM,KAC/B,MAAMkB,EAAMiK,mBAAmBD,EAAKE,SACpC,MAAMjK,EAAQgK,mBAAmBD,EAAKhL,KAAK,MAC3C8K,EAAO9J,GAAOC,CACd,CAED,OAAO6J,CACP,EAKDK,QAAS,WACR,IACC/K,SAASgK,OAAS,4BAClB,MAAMgB,EAAiBhL,SAASgK,OAAOvJ,SAAS,eAChDT,SAASgK,OAAS,mEAClB,OAAOgB,CAGP,CAFC,MAAOxE,GACR,OAAO,KACP,CACD,GAQF,SAASyE,IACR,GAAI,yBAA0BlK,OAAQ,CACrC,OAAOA,OAAOmK,sBAAwB,EACtC,CAED,GAAI,2BAA2BzL,KAAKO,SAASgB,SAASC,KAAKf,kBAAoBF,SAASgB,SAASC,KAAKf,cAAcQ,QAAQ,kBAAoB,GAAI,CAClJ,MAAO,iCACR,CACD,MAAMyK,EAAc,GACpB,MAAMC,EAAqBlC,EAAOe,IAAI,kBACtC,GAAImB,EAAoB,CACrB,MAAMC,EAAuBD,EAC9B1L,MAAM,KAAK4L,QAAO,CAACC,EAAKpB,KACrB,MAAOvJ,EAAK4K,GAAOrB,EAAEG,OAAO5K,MAAM,KAAK+L,IAAIZ,oBAC3C,IACE,OAAOa,OAAOC,OAAOJ,EAAK,CAAE3K,CAACA,GAAMgL,KAAKC,MAAML,IAG/C,CAFC,MAAOhF,GACP,OAAOkF,OAAOC,OAAOJ,EAAK,CAAE3K,CAACA,GAAM4K,GACpC,IACA,CAAE,GACLH,EAAqB,UAAU3L,MAAM,KAAK+L,KAAKtB,IAC7C,MAAM2B,EAAM3B,EAAEzK,MAAM,KACpB,GAAIoM,EAAI,IAAM,IAAK,CACjBX,EAAYY,KAAKD,EAAI,GACtB,IAEP,KAAS,CACLX,EAAYY,KAAK,UAClB,CACF,OAAO7C,EAAOe,IAAI,yBAA2BkB,EAAYvL,KAAK,KAAO,SACtE,CAMA,MAAMoM,EAAmB,CACxBC,eAAgB,EAChBC,OAAQ,IACRC,OAAQ,IAAO,GACfC,KAAM,IAAO,GAAK,GAClBC,IAAK,IAAO,GAAK,GAAK,GACtBC,MAAO,IAAO,GAAK,GAAK,GAAK,GAC7BC,KAAM,IAAO,GAAK,GAAK,GAAK,IAC5BC,MAAO,IAAO,GAAK,GAAK,GAAK,IAAM,IAGpC,MAAM1C,EAAyB,SAAU2C,GAExC,OAAQC,EAA2BD,EACpC,EAGA,MAAMC,EAA6B,SAAUD,GAC5C,OAAOE,EAAqBF,IAAcG,EAAiCH,EAC5E,EAEA1L,OAAO+I,uBAAyBA,EAChC/I,OAAO2L,2BAA6BA,EAEpC,SAASC,EAAqBF,GAC7B,OAAOI,EAAa,GAAIJ,IAAeK,EAAgB,GAAI,GAAIL,KAAeM,EAASN,IAAcO,EAAqBP,GAC3H,CAEA,SAASG,EAAiCH,GACzC,GAAIQ,EAAYR,GAAY,CAC3B,OAAQS,EAA0B,GAAI,GAAI,EAAGT,EAC7C,CACD,OAAOU,EAAgBV,IAAcW,EAAyB,GAAIX,KAAeW,EAAyB,GAAIX,EAC/G,CAGA,SAASI,EAAaQ,EAAOZ,GAC5B,MAAMa,EAAQ,iDAEd,MAAMC,EAAcd,EAAUvC,MAAMoD,GACpC,OAAQC,GAAeA,EAAY,GAAMA,EAAY,KAAOF,EAAMG,WAAa,KAChF,CAEA,SAASV,EAAgBO,EAAOI,EAAOhB,GACtC,MAAMa,EAAQ,6DAEd,MAAMC,EAAcd,EAAUvC,MAAMoD,GACpC,OAAQC,GAAeA,EAAY,IAAMA,EAAY,GAAOA,EAAY,KAAOF,EAAMG,YAAgBD,EAAY,KAAOE,EAAMD,WAAc,KAC7I,CAEA,SAAST,EAASN,GACjB,MAAMiB,EAAe,uBACrB,OAAOA,EAAajO,KAAKgN,KAAeU,EAAgBV,EACzD,CAEA,SAASO,EAAqBP,GAC7B,MAAMa,EAAQ,gGACd,OAAOA,EAAM7N,KAAKgN,EACnB,CAEA,SAASU,EAAgBV,GACxB,MAAMa,EAAQ,eACd,OAAOA,EAAM7N,KAAKgN,EACnB,CAEA,SAASW,EAAyBC,EAAOZ,GACxC,MAAMa,EAAQ,8BAEd,MAAMC,EAAcd,EAAUvC,MAAMoD,GACpC,MAAMK,EAAWJ,GAAeA,EAAY,GAAMK,SAASL,EAAY,GAAI,IAAM,EACjF,OAAOI,GAAWN,CACnB,CAEA,SAASJ,EAAYR,GACpB,MAAMa,EAAQ,cACd,OAAOA,EAAM7N,KAAKgN,EACnB,CAEA,SAASS,EAA0BG,EAAOI,EAAOI,EAAOpB,GACvD,MAAMa,EAAQ,yCAEd,MAAMC,EAAcd,EAAUvC,MAAMoD,GACpC,MAAMQ,EAAiBP,GAAeA,EAAY,GAAMK,SAASL,EAAY,GAAI,IAAM,EACvF,MAAMQ,EAAiBR,GAAeA,EAAY,GAAMK,SAASL,EAAY,GAAI,IAAM,EACvF,MAAMS,EAAgBT,GAAeA,EAAY,GAAMK,SAASL,EAAY,GAAI,IAAM,EACtF,GAAIO,IAAkBT,EAAO,CAC5B,OAAOS,EAAgBT,CACvB,CACD,GAAIU,IAAkBN,EAAO,CAC5B,OAAOM,EAAgBN,CACvB,CACD,OAAOO,GAAgBH,CACxB,CCnXA,SAASI,EAAaC,EAAgBC,EAAYC,GAChD,IAAIC,EAAgBC,KAAKC,MAAMD,KAAKE,SAAW,IAAM,GACrD,GAAIvD,IAAmBvK,QAAQ,YAAc,GAAKwI,EAAO6B,UAAW,CAClE,IAAI0D,EAAe,GACnBA,EAAevF,EAAOe,IAAI,iBAE1B,GAAIwE,GAAgB,MAAQJ,EAAgBH,EAAgB,CAC1DhF,EAAOC,IAAI,gBAAiB,OAAQ,GAAK6C,EAAiBK,IAAK,IAAK,KAAM,MAAO,OACjF,GAAI+B,EAAe,CACjBrN,OAAO6F,iBAAiB,UAAW8H,IACjC3N,OAAO4N,KAAKR,EAAY,GAAI,iKAAiK,IAE/L,MACD,CACD,IAAIS,EAAYC,IACd9N,OAAO4N,KAAKE,EAAW,GAAI,iKAAiK,EAE9L,YAAaxH,SAAW,eAAiBtG,OAAO+N,WAAY,CAC1D7J,EAAS,kDACV,CACD,GAAIlE,OAAO+N,WAAY,CACrBF,EAAST,GACT,MACR,KAAa,CACL,IAAIY,EAAeF,IACjB,IAAIG,EACF,6RACA,yDACA,oBACFjO,OAAOsG,OAAO2H,GAAcC,SAAS,QACrClO,OAAOsG,OAAO,aAAa6H,OAAO,8DAAgEL,EAAY,eAC9G9N,OAAOsG,OAAO,YAAY8H,IAAI,UAAW,OACzCpO,OAAOsG,OAAO,uBAAuB+H,OAAM,WACzCrO,OAAOsG,OAAO,uBAAuBgI,QACjD,IACUtO,OAAOsG,OAAOrH,UAAUsP,OAAM,SAAU9I,GACtC,GAAIA,EAAE+I,UAAY,GAAIxO,OAAOsG,OAAO,uBAAuBgI,QACvE,GAAY,EAEJ,IAAIG,EAAa,CAACC,EAAQC,EAAOC,KAC/B,UAAWtI,SAAW,YAAa,CACjCoI,EAAOE,EACnB,KAAiB,CACL,IAAIC,EAAUF,EAAQ,EACtB,GAAIE,IAAY,EAAG,CACjBD,EAAYA,EAC1B,KAAmB,CACLhJ,YAAW,WACT6I,EAAWC,EAAQG,EAASD,EAC7B,GAAE,GACJ,CACF,GAEHH,EAAWT,EAAa,IAAKZ,EAC9B,CACF,CACF,CACH,CAEA,SAAS0B,EAAcJ,GACrB,UAAWpI,SAAW,oBAAsBtG,OAAOsG,OAAOC,WAAa,YAAa,CAClFmI,GACJ,KAAS,CACL9I,YAAW,WACTkJ,EAAcJ,EACf,GAAE,GACJ,CACH,CAEA,SAASK,EAAc5B,EAAgBC,EAAYC,EAAe5M,EAASuO,GACzE,IAAI1B,EAAgBC,KAAKC,MAAMD,KAAKE,SAAW,IAAM,GACrD,GAAIvD,IAAmBvK,QAAQ,YAAc,GAAKwI,EAAO6B,UAAW,CAClE,IAAI0D,EAAe,GACnB,UAAWsB,IAAe,YAAa,CACrCA,EAAa,eACd,CACDtB,EAAevF,EAAOe,IAAI8F,GAE1B,GAAItB,GAAgB,MAAQJ,EAAgBH,EAAgB,CAC1DhF,EAAOC,IAAI4G,EAAY,OAAQ,GAAK/D,EAAiBK,IAAK,IAAK,KAAM,MAAO,OAC5EnF,IACA,GAAIkH,EAAe,CACjBrN,OAAO6F,iBAAiB,UAAW8H,IACjC3N,OAAO4N,KAAKR,EAAY,GAAI,iKAAiK,GAEvM,KAAa,CACL,IAAI6B,EAAUxO,GAAW,GACzBwO,EAAQ/O,KAAOkN,EACf6B,EAAQC,UAAY,aACpBD,EAAQrB,KAAO,KACfqB,EAAQE,YAAc,KACtBF,EAAQG,OAAS,KACjB,UAAWH,EAAQI,QAAU,YAAa,CACxCJ,EAAQI,MAAQ,OACjB,CACD,UAAWJ,EAAQK,SAAW,YAAa,CACzCL,EAAQK,OAAS,OAClB,CACD,UAAWL,EAAQM,QAAU,YAAa,CACxCN,EAAQM,MAAQ,IACjB,CACD,UAAWN,EAAQO,aAAe,YAAa,CAC7CP,EAAQO,WAAa,IACtB,CACD,UAAWP,EAAQQ,SAAW,YAAa,CACzCR,EAAQQ,OAAS,KAClB,CACD,UAAWR,EAAQS,eAAiB,YAAa,CAC/CT,EAAQS,aAAe,KACxB,CACD,UAAWT,EAAQU,UAAY,YAAa,CAC1CV,EAAQU,QAAU,CACnB,CACDb,GAAc,WACZ9O,OAAOsG,OAAOC,SAAS0I,EACjC,GACO,CACF,CACF,CACH,CAEA,SAASW,EAAczC,EAAgB0C,EAAapP,EAASuO,GAC3D,IAAI1B,EAAgBC,KAAKC,MAAMD,KAAKE,SAAW,IAAM,GACrD,GAAIvD,IAAmBvK,QAAQ,YAAc,GAAKwI,EAAO6B,UAAW,CAClE,IAAI0D,EAAe,GACnB,UAAWsB,IAAe,YAAa,CACrCA,EAAa,eACd,CACDtB,EAAevF,EAAOe,IAAI8F,GAE1B,GAAItB,GAAgB,MAAQJ,EAAgBH,EAAgB,CAC1DhF,EAAOC,IAAI4G,EAAY,OAAQ,GAAK/D,EAAiBK,IAAK,IAAK,KAAM,MAAO,OAC5EnF,IACA,IAAI8I,EAAUxO,GAAW,GACzBwO,EAAQa,KAAOD,EACfZ,EAAQC,UAAY,aACpBD,EAAQrB,KAAO,KACfqB,EAAQE,YAAc,KACtBF,EAAQG,OAAS,MACjB,UAAWH,EAAQI,QAAU,YAAa,CACxCJ,EAAQI,MAAQ,OACjB,CACD,UAAWJ,EAAQK,SAAW,YAAa,CACzCL,EAAQK,OAAS,OAClB,CACD,UAAWL,EAAQM,QAAU,YAAa,CACxCN,EAAQM,MAAQ,IACjB,CACD,UAAWN,EAAQO,aAAe,YAAa,CAC7CP,EAAQO,WAAa,IACtB,CACD,UAAWP,EAAQQ,SAAW,YAAa,CACzCR,EAAQQ,OAAS,KAClB,CACD,UAAWR,EAAQS,eAAiB,YAAa,CAC/CT,EAAQS,aAAe,KACxB,CACD,UAAWT,EAAQU,UAAY,YAAa,CAC1CV,EAAQU,QAAU,CACnB,CACDb,GAAc,WACZ9O,OAAOsG,OAAOC,SAAS0I,EAC/B,GACK,CACF,CACH,CC3KA,SAASc,IAA4B,CAErC,SAASC,IACP,MAAMC,EAAa,CACjBC,KAAM,KACNC,WAAY,MACZC,UAAW,CAAC,GAAI,IAElB,MAAMC,EAAW,CAACC,EAASC,KACzBD,EAAQE,SAASC,IACf,GAAIA,EAAMC,gBAAkBD,EAAME,OAAOC,QAAQC,YAAc,OAAQ,CACrEJ,EAAME,OAAOC,QAAQC,UAAY,QACjCC,EAAeL,EAAME,OACtB,IACD,EAEJ,MAAMJ,EAAW,IAAIQ,qBAAqBV,EAAUJ,GAEpDhR,SAAS+R,iBAAiB,yBAAyBR,SAAQ,CAACS,EAAOC,KACjE,MAAMC,EAAeF,EAAMG,WAC3B,GACG,SAAUD,KAAkB,aAAcA,IAAiBF,EAAM/Q,KAAKf,cAAcO,SAAS,UAC9F,SAAUyR,GACVF,EAAMhN,UAAUoN,SAAS,0BACzBJ,EAAMK,QAAQ,kBACdL,EAAMK,QAAQ,oBACd,CACA,GAAIL,EAAMK,QAAQ,oBAAqB,CACrC,MAAMC,EAAeN,EAAML,QAAQ,QACnC,IAAIY,EACJ,IAAIC,EACJ,IAAIC,EACJ,GAAIH,IAAiB,aAAc,CACjCC,EAAiBP,EAAMK,QAAQ,aAAaK,cAAc,oBAAoBC,YAC9EH,EAAoBR,EAAMK,QAAQ,MAAMK,cAAc,KAAKC,WAC5D,CACD,MAAMC,EAAW/H,mBAAmBmH,EAAMW,aAC1C,UAAWJ,IAAmB,aAAeA,IAAmB,GAAI,CAClE,UAAWC,IAAsB,aAAeA,IAAsB,GAAI,CACxED,EAAiB,GAAGA,KAAkBC,GACvC,CACDC,EAAU,GAAGH,KAAgBzH,mBAAmB0H,MAAmBK,GACpE,CACD,IAAKZ,EAAMa,aAAa,QAAS,CAC/Bb,EAAMvJ,aAAa,OAAQgK,EAC5B,CACF,CAEDT,EAAMvJ,aAAa,WAAY,KAAKwJ,EAAU,KAC9CX,EAASwB,QAAQd,EAClB,KAEHhS,SAAS+R,iBAAiB,iBAAiBR,SAAQ,CAACS,EAAOe,KACzDf,EAAMD,iBAAiB,2CAA2CR,SAAQ,CAACyB,EAAQC,KACjF,MAAM1L,EAAOyL,EAAON,cAAc,KAClCnL,EAAKoK,QAAQuB,SAAW,WAAYH,EAAM,aAAeE,EAAS,GAAI,GACtE,GAEN,CAEA,SAASpB,EAAesB,EAAUC,GAChC,UAAWD,EAASxB,UAAY,oBAAsBwB,EAASxB,QAAQC,YAAc,aAAeuB,EAASxB,QAAQC,YAAc,OAAQ,CACzI,GAAIuB,UAAoBC,GAAgB,aAAeA,GAAgB,EAAI,CACzE,IAAIC,EAAkB,GACtB,IAAIC,EACJ,IAAIC,EACJ,IACED,EAAoBH,EAAST,cAAc,MAG5C,CAFC,MAAOc,GAER,CACD,UAAWF,GAAqB,aAAeA,EAAmB,CAChE,UAAWA,EAAkBpO,MAAQ,aAAeoO,EAAkBpO,IAAK,CACzEmO,EAAkBlT,EAASmT,EAAkBpO,KAAK3C,KAAOpC,EAASmT,EAAkBpO,KAAKrC,IAC1F,CACT,KAAa,CACL0Q,EAAcE,SAASN,EAAS5T,KAAK+K,OACtC,CACD,MAAMoJ,GAAmBL,EAAkBA,EAAkBE,IAAgB,YAC7E,IAAII,EAAexT,EAASgT,EAASN,aAAa,SAASzS,SAAS,MAAQ,YAC5E,MAAMwT,EAAmBzT,EAASgT,EAASN,aAAa,SAASzS,SAAS,UAAY,YACtF,IAAIyT,EAAoB1T,EAASgT,EAASN,aAAa,SAASzS,SAAS,WAAa,YACtF,GAAIuT,GAAgB,aAAeC,GAAoB,aAAeC,GAAqB,YAAa,CACtGF,EAAeR,EAASN,aAAa,SAAW,YAChD,GAAIc,IAAiB,YAAa,CAChC,KAAMA,EAAaG,WAAW,SAAWH,EAAaG,WAAW,YAAcH,EAAaG,WAAW9T,SAASgB,SAAS+S,QAAS,CAChIJ,EAAe,GAAG3T,SAASgB,SAAS+S,SAASJ,GAC9C,CACDA,EAAehT,EAAkB,YAAa,KAAMgT,GACpDA,EAAehT,EAAkB,cAAe,KAAMgT,EACvD,CACDE,EAAoBH,CACrB,CACD,IAAIM,EAAeb,EAASN,aAAa,QACzC,UAAWM,EAASxB,QAAQuB,UAAY,aAAeC,EAASxB,QAAQuB,SAAU,CAChF,MAAMe,EAASd,EAASxB,QAAQuB,SAChCc,EAAeA,EAAe,GAAGC,KAAUD,IAAiBC,CAC7D,CACDlT,OAAOmT,UAAUnI,KAAK,CACpB2C,MAAO,gBACPyF,UAAWH,GAAgB,YAC3BI,UAAW,GAAGP,KAAqBF,IACnCU,UAAW,CACTC,UAAW,CACTC,WAAY,CACV,CACE/M,GAAI,GAAGqM,KAAqBF,KAAgBD,IAC5C/R,KAAM,GAAGkS,KAAqBF,IAC9Ba,SAAUd,EACVe,SAAUtB,EAASN,aAAa,aAAe,kBAMzDM,EAASxB,QAAQC,UAAY,MAC9B,CACF,CACH,CAGA,SAAS8C,IACP,GAAI,oGAAoGjV,KAAKO,SAASgB,SAASC,MAAO,CACpI,MAAM0T,EAAiB3U,SAAS0S,cAAc,oBAC9C,MAAMkC,EAAa,EAAEC,oBAAmBC,cAC/BD,EAAoB,EAAIC,EAAWF,EAAWE,EAAS,IAEhE,MAAMC,EAAcH,EAAWD,GAC/B,IAAII,GAAaxD,SAAQ,CAACzF,EAAKkJ,KAC7B,MAAMC,EAAeD,EACrBlJ,EAAI6F,QAAQuD,SAAWF,EACvB,MAAMG,EAASrJ,EAAIiG,iBAAiB,QACpC,MAAMqD,EAAkB,IAAID,GAAQE,QAAQvJ,GAAQA,EAAIiG,iBAAiB,KAAKzR,OAAS,IAEvF8U,EAAgB7D,SAAQ,EAAEuD,YAAWQ,KACnC,MAAMC,EAAgB,IAAIT,GAAUO,QAAQG,GAAUA,EAAM9C,cAAc,OAAS,OACnF6C,EAAchE,SAAQ,CAACkE,EAAOC,KAC5B,MAAMC,EAAQF,EAAM1D,iBAAiB,KACrC,IAAI4D,GAAOpE,SAAQ,CAAChK,EAAMqO,KACxB,MAAMC,EAAM,OAAQZ,EAAe,WAAaK,EAAa,UAAYI,EAAa,SAAWE,EAAY,IAC7G,IAAKrO,EAAKuO,aAAa,QAAS,CAC9BvO,EAAKkB,aAAa,OAAQoN,EAC3B,CACD,IAAKtO,EAAKuO,aAAa,WAAY,CACjCvO,EAAKkB,aAAa,UAAWoN,EAC/B,IACA,GACF,IAGJ,MAAME,EAAkBjK,EAAIiG,iBAAiB,KAC7C,GAAIgE,EAAgBzV,OAAS,EAAG,CAE9B,MAAM4S,EAAWpH,EAAI4G,cAAc,iBACnC,GAAIQ,IAAa,KAAM,CACrB,MAAM8C,EAAS9C,EAAS+C,kBAAkBnB,SAC1C,MAAMoB,EAAa,IAAIF,GAAQX,QAAO,EAAErQ,gBAAgBA,EAAUoN,SAAS,yBAC3E8D,EAAW3E,SAAQ,CAAC4E,EAAOC,KACzB,MAAMT,EAAQQ,EAAMpE,iBAAiB,KACrC4D,EAAMpE,SAAQ,CAAChK,EAAMqO,KACnB,MAAMC,EAAM,OAAQZ,EAAe,aAAemB,EAAa,SAAWR,EAAY,IACtF,IAAKrO,EAAKuO,aAAa,QAAS,CAC9BvO,EAAKkB,aAAa,OAAQoN,EAC3B,CACD,IAAKtO,EAAKuO,aAAa,WAAY,CACjCvO,EAAKkB,aAAa,UAAWoN,EAC9B,IACD,GAEL,CACF,IAEJ,CAEDlP,YAAW,KACToK,GAAgB,GACf,GACL,CCtKAhQ,OAAOmT,UAAYnT,OAAOmT,WAAa,GACvCnT,OAAOkK,iBAAmBA,EAI1BlK,OAAOsV,aAAetV,OAAOsV,cAAgB,GAC7C,MAAMA,aAAEA,GAAiBtV,OACzBsV,EAAa1I,QAAU,uCACvB0I,EAAahO,WAAa,GAC1BtH,OAAOZ,SAAWA,EAClBY,OAAOkE,SAAWA,EAClBlE,OAAOmG,aAAeA,EACtBnG,OAAOmI,OAASA,EAChBnI,OAAOiL,iBAAmBA,EAC1BjL,OAAOkK,iBAAmBA,EAC1BlK,OAAOkN,aAAeA,EACtBlN,OAAO8O,cAAgBA,EACvB9O,OAAO+O,cAAgBA,EACvB/O,OAAO4P,cAAgBA,EACvB5P,OAAOJ,kBAAoBA,EAC3BI,OAAO+P,mBAAqBA,EAC5B/P,OAAO8Q,eAAiBA,EACxB9Q,OAAOgQ,eAAiBA,EACxBhQ,OAAO2T,QAAUA,EACjB2B,EAAa1O,aAAexH,EAASH,SAASgB,SAASC,KAAKf,eAAeE,SAAS,cAAgB,KACpGiW,EAAatN,MAAQhI,OAAOC,SAASuH,SAAShI,QAAQ,mBAAoB,IAAIb,MAAM,KACpF2W,EAAatN,MAAQsN,EAAatN,MAAME,MAAMoN,EAAatN,MAAMzI,OAAS,GAAGV,KAAK,KAClFyW,EAAaC,WAAa,CAAA,EAC1BD,EAAaE,IAAM,CAAA,EACnBF,EAAaG,qBAAuB,CAAA,EACpCH,EAAaI,aAAe,EAC5BJ,EAAaK,WAAa3V,OAAO4V,iBAAmB5V,OAAOC,SAASC,KAAKf,cACzEmW,EAAaE,IAAIK,OAAS,GAK1B7V,OAAO8V,KAAO,WACV9V,OAAOmT,UAAUnI,KAAK+K,UAC1B,EACA/V,OAAO8V,KAAK,UAAW,UAAW,CAC9BE,WAAW,SACXC,kBAAkB,SAClBC,sBAAsB,SACtBC,wBAAwB,SACxBC,aAAa,SACbC,mBAAmB,SACnBC,iBAAkB,SACtBC,gBAAmB,MAInB,MAAMC,EAAapX,EAASkW,EAAaK,YAAYtW,SAAS,UAC9D,IAAKmX,GAAc,MAAQ,OAAQ,CAC/BlB,EAAaK,WAAavW,EAASkW,EAAaK,YAAYrW,QAAQH,aACxE,MAEK,SAASsX,EAAaC,GACvBA,EAAIC,UAAY,EAChBD,EAAIE,mBAAqB,8PACzBF,EAAIE,oBACF,2eACFF,EAAIE,oBAAsB,0JAE1BF,EAAIG,aAAe,GACnBH,EAAII,mBAAqB,GACzBJ,EAAIK,cAAgB,GACpBL,EAAIM,OAAS,GACbN,EAAIO,UAAY,GAChBP,EAAIQ,uBAAyB,GAC7BR,EAAIS,iBAAmB,GACvBT,EAAIU,iBAAmB,GACvBV,EAAIW,gBAAkB,GACtBX,EAAIY,eAAiB,GACrBZ,EAAIa,UAAY,GAChBb,EAAIc,YAAc,GAClBd,EAAIe,WAAa,GACjBf,EAAIgB,aAAe,GACnBhB,EAAIiB,eAAiB,GACrBjB,EAAIkB,eAAiB,GACrBlB,EAAImB,oBAAsB,EAC1BnB,EAAIoB,UAAY,GAChBpB,EAAIqB,eAAiB,GACrBrB,EAAIsB,MAAQ,EACZtB,EAAIuB,QAAU,GACdvB,EAAIwB,iBAAmB,GACvBxB,EAAIyB,eAAiB,EACrBzB,EAAI0B,aAAe,GACnB1B,EAAI2B,aAAe,GACnB3B,EAAI4B,cAAgB,EACpB5B,EAAI6B,kBAAoB,GACxB7B,EAAI8B,oBAAsB,GAC1B9B,EAAI+B,YAAc,GAClB/B,EAAIgC,cAAgB,GACpBhC,EAAIiC,YAAc,GAClBjC,EAAIkC,kBAAoB,GACxBlC,EAAIlB,IAAIqD,SAAW5Z,SAAS4Z,SAAS1Z,cACrCuX,EAAIoC,UAAY3W,IAChBuU,EAAIqC,OAASjW,KAAsB,EACvC,CA1CK,CA0CHwS,GAGF,GAAI,2BAA2B5W,KAAKO,SAASgB,SAASC,KAAKf,kBAAoBF,SAASgB,SAASC,KAAKf,cAAcQ,QAAQ,kBAAoB,GAAI,CAClJK,OAAOiY,QAAU,aACnB,KAAO,CACLjY,OAAOiY,QAAU,aACnB,CACA,GAAI,+CAA+CvZ,KAAKO,SAASgB,SAASC,KAAKf,eAAgB,CAC3Fa,OAAOiY,QAAU,EACrB,CAEA,UAAWjY,OAAOgZ,aAAe,WAAY,CACzChZ,OAAOgZ,WAAa,SAAUC,IAClC,CAEA,WACI,GAAIjZ,OAAOiY,QAAS,CAGhB,GAAIjY,OAAOiY,UAAY,gBAAmB,0LAA0LvZ,KAAKO,SAASgB,SAASC,KAAKf,eAAiB,CAC7Q+E,EAAS,oDACZ,CACA,GAAIlE,OAAOiY,UAAY,cAAe,CACrC/T,EAAS,+CAAgD4C,EACnE,KAAe,CACL5C,EAAS,+CACV,CACJ,CACJ,EAbD,GAeAU,eAAesU,UACPC,OAAO,uBAAgBC,MAAMC,IACjCpa,SAASqa,KAAKzT,iBACZ,SACCoT,IACCI,EAAIL,WAAWC,EAAI,GAErB,MAEFjZ,OAAOgZ,WAAaK,EAAIL,UAAU,GAEtC,CAEAE,IAcA,MAAMK,EAAiB,KACnB,MAAMxa,EAAQD,IACd,MAAMM,SAAEA,GAAaY,OACrB,IAAI+W,EAAgB,GACpB,IAAIyC,EAAa,MACjB,MAAMT,EAASjW,KAAsB,GACrC,MAAM2W,EAAara,EAASL,GAAOyC,KAGnC,GAAIzC,EAAMW,SAAS,YAAcX,EAAMW,SAAS,SAAU,CACxDqX,EAAgB,kBAAkBA,IAClCyC,EAAa,KACnB,MAAW,GAAIza,EAAMW,SAAS,YAAcX,EAAMW,SAAS,SAAU,CAC/DqX,EAAgB,kBAAkBA,IAClCyC,EAAa,KACd,MAAM,GAAIza,EAAMW,SAAS,QAAS,CACjCqX,EAAgB,sCAAsCA,IACtDyC,EAAa,KACd,MAAM,GAAIza,EAAMW,SAAS,QAAS,CACjCqX,EAAgB,sCAAsCA,IACtDyC,EAAa,KACnB,MAAW,GAAIjb,EAAmBQ,EAAO,uBAAyB0a,GAAc,aAAeA,GAAc,gBAAiB,CACxH1C,EAAgB,sCAAsCA,IACtDyC,EAAa,KACd,MAAM,GAAIza,EAAMW,SAAS,QAAS,CACjCqX,EAAgB,sCAAsCA,IACtDyC,EAAa,KACd,MAAM,GAAIjb,EAAmBQ,EAAO,uBAAyBR,EAAmBQ,EAAO,uBAAyBA,EAAMW,SAAS,QAAS,CACvIqX,EAAgB,qBAAqBA,GAC3C,MAAW,GAAIxY,EAAmBQ,EAAO,uBAAyBA,EAAMW,SAAS,QAAS,CACpFqX,EAAgB,oCAAoCA,GAC1D,MAAW,GAAIxY,EAAmBQ,EAAO,uBAAyBA,EAAMW,SAAS,QAAS,CACpFqX,EAAgB,oCAAoCA,IACpDyC,EAAa,KACd,MAAM,GAAIza,EAAMW,SAAS,QAAS,CACjCqX,EAAgB,sCAAsCA,IACtDyC,EAAa,KACd,MAAM,GAAIjb,EAAmBQ,EAAO,sBAAuB,CAC1DgY,EAAgB,sCAAsCA,GACvD,MAAM,GAAIxY,EAAmBQ,EAAO,sBAAuB,CAC1DgY,EAAgB,sCAAsCA,GACvD,CACDA,EAAgBA,EAAgBA,EAAc5X,cAAgB,GAC9D,GAAK4X,EAAcpX,QAAQ,yBAA2B,GAAM6Z,GAAc,MAAO,CAC7EA,EAAa,KAChB,CACD,IAAM,MAAM9a,KAAKqY,GAAiB,CAC9BA,EAAgB,GAAGA,IACtB,CAEDA,EAAgB,GAAGA,cACnB,MAAO,CACHA,cAAeA,GAAiB,GAChCyC,WAAYA,GAAc,GAC1Bza,MAAOA,GAAS,GAChB2a,aAActa,EAASL,GAAOO,QAAQH,eAAiB,GACvD4Z,OAAQA,GAAU,GAClBY,IAAKrE,EAAaE,IAAIK,QAAU,GAChC+D,MAAOxa,EAASL,GAAOM,SAAS,UAAY,GAC/C,EAGLW,OAAO6Z,YAAcN,IAQrB,SAASO,IAEL,IAAIC,EACJ,IAAIC,EAAY,GAChB,MAAMC,EAAU,IAAIC,IACpB,MAAMC,EAAc,GAEpB,MAAMC,EAAcnb,SAAS+R,iBAAiB,0BAE9CoJ,EAAY5J,SAAQ6J,IAChB,IAAKA,EAAQpW,UAAUoN,SAAS,gBAAiB,CAC7C0I,EAAWM,EAAQzJ,QAAQ0J,cAC3BN,EAAYO,EAAgBF,GAC5BJ,EAAQO,IAAIT,EAAUC,EACzB,KAEL,IAAK,IAAKna,EAAKC,KAAUma,EAAS,CAC9BE,EAAYnP,KAAK,GAAGnL,KAAOC,IAC9B,CACD,OAAOqa,EAAYtb,KAAK,IAC5B,CAOA,SAAS0b,EAAgBE,GAErB,GAAIA,EAAYxW,UAAUoN,SAAS,mBAAqBoJ,EAAYxW,UAAUoN,SAAS,eAAgB,CACnG,MAAO,WACV,KACI,CACD,IAAIqJ,EAAiBD,EAAYzJ,iBAAiB,cAClD,GAAI0J,EAAenb,QAAUmb,EAAenb,OAAS,EAAG,CACpD,MAAMob,EAAY,GAClBD,EAAelK,SAAQoK,GAASD,EAAU3P,KACtC,GAAG4P,EAAM9I,aAAa,mCAAmC8I,EAAM9I,aAAa,qCAEhF,OAAO6I,EAAU9b,KAAK,IACzB,KACI,CACD6b,EAAiBD,EAAYzJ,iBAAiB,cAC9C,MAAM2J,EAAY,GAClBD,EAAelK,SAAQoK,IACnBD,EAAU3P,KAAK4P,EAAMpc,KAAK+K,OAAO,IAErC,OAAOoR,EAAU9b,KAAK,IACzB,CACJ,CACL,CAEA,SAASgc,EAAYC,GACjB,MAAMC,EAASD,GAAWA,IAAY,YAAeA,EAAQ3b,cAAgB,GAC7E,MAAMJ,EAAQD,IACd,MAAMkc,EAAS5b,EAASL,GAAOM,SAAS,WAAWF,eAAiB,GACpE,IAAI8b,EACJ,GAAIF,GAASC,EAAQ,CACjBC,EAAYF,CACf,MACI,GAAIA,EAAO,CACZE,EAAYF,CACf,MACI,GAAIC,EAAQ,CACbC,EAAYD,CACf,KACI,CACDC,EAAY,WACf,CACD,IAAItC,EAAc,GAClB,UAAWsC,IAAc,YAAa,CAClCA,EAAY,WACf,CACD,MAAMC,EAAa9b,EAASL,GAAOyC,KACnC,IAAI2Z,EACJ,UAAW7F,EAAaE,IAAIqD,UAAY,YAAa,CACjDsC,EAAe7F,EAAaE,IAAIqD,QACnC,CACD,MAAMuC,EAAgBnc,SAAS0S,cAAc,oBAC7C,MAAM2G,EAAgB8C,EAAcxK,QAAQyK,MAE5C1C,GAAe,UACf,IAAI2C,EAAgB,GACpB,GAAIhD,IAAkB,EAAG,CACrBgD,EAAgBL,EAChBtC,GAAe,UAClB,KACI,CACDA,GAAe,UAClB,CAED,MAAM4C,EAAcH,EAAcxK,QAAQ,eAC1C,MAAM4K,EAAe1B,IAErB,GAAI9Z,OAAO6Z,YAAY9C,cAAcrX,SAAS,WAAY,CACtDM,OAAOmT,UAAUnI,KAAK,CAClB2C,MAAS,SACT,cAAesN,GAAa,GAC5B,iBAAkBC,GAAc,GAChC,eAAgBC,GAAgB,GAChC,iBAAkB7C,GAAiB,IACnC,aAAcK,GAAe,GAC7B,oBAAqB2C,GAAiB,GACtC,iBAAkBC,GAAe,GACjC,aAAcC,GAAgB,IAErC,MACI,GAAIxb,OAAO6Z,YAAY9C,cAAcrX,SAAS,YAAa,CAC5DM,OAAOmT,UAAUnI,KAAK,CAClB2C,MAAS,aACT,aAAcsN,GAAa,GAC3B,gBAAiBC,GAAc,GAC/B,cAAeC,GAAgB,GAC/B,gBAAiB7C,GAAiB,IAClC,YAAaK,GAAe,GAC5B,mBAAoB2C,GAAiB,GACrC,gBAAiBC,GAAe,GAChC,YAAaC,GAAgB,IAEpC,CACL,CAEA,SAASC,IAEL,OAAOxc,SAAS+R,iBAAiB,oBAAoBzR,OAAS,CAClE,CAEAmG,GAAM,KACF,GAAI+V,IAAgB,CAChBZ,GACH,KAML,SAASa,IACL,IAAI1S,EAAY,GAChB,GAAIhG,UAAUgG,UAAW,CACrBA,EAAYhG,UAAUgG,SACzB,CACD,IAAI2S,EAAmB,GAKvB,GAAI,wBAAwBjd,KAAKsK,KAAgB,SAAStK,KAAKsK,IAAe,gBAAgBtK,KAAKsK,GAAY,CAC3G,MAAO,SACV,MAEI,GAAI,qBAAqBtK,KAAKsK,KAAgB,QAAQtK,KAAKsK,GAAa,CACzE,MAAO,SACV,MAEI,GAAI,QAAQtK,KAAKsK,IAAc,OAAOtK,KAAKsK,GAAY,CACxD,MAAO,SACV,MAEI,GAAI,aAAatK,KAAKsK,IAAc,UAAUtK,KAAKsK,KAAgB,SAAStK,KAAKsK,IAAe,SAAStK,KAAKsK,GAAY,CAC3H2S,EAAmB,QACtB,MAEI,GAAI,SAASjd,KAAKsK,IAAc,WAAWtK,KAAKsK,KAAgB,4DAA4DtK,KAAKsK,GAAa,CAC/I2S,EAAmB,QACtB,MAEI,GAAI,UAAUjd,KAAKsK,IAAc,UAAUtK,KAAKsK,IAAc,QAAQtK,KAAKsK,GAAY,CACxF2S,EAAmB,QACtB,MAEI,GAAI,sNAAsNjd,KAAKsK,IAAc,SAAStK,KAAKsK,IAAc,SAAStK,KAAKsK,GAAY,CACpS2S,EAAmB,QACtB,MAEI,GAAI,gIAAgIjd,KAAKsK,GAAY,CACtJ,MAAO,QACV,MAEI,GAAI,QAAQtK,KAAKsK,IAAc,gBAAgBtK,KAAKsK,IAAc,0DAA0DtK,KAAKsK,GAAY,CAC9I,MAAO,QACV,MAEI,GAAI,uFAAuFtK,KAAKsK,GAAY,CAC7G2S,EAAmB,IACtB,MAEI,GAAI,qBAAqBjd,KAAKsK,GAAY,CAC3C,MAAO,SACV,MAEI,GAAI,0BAA0BtK,KAAKsK,GAAY,CAChD,MAAO,gBACV,MAEI,GAAI,8IAA8ItK,KAAKsK,KAAgB,UAAUtK,KAAKsK,GAAa,CACpM2S,EAAmB,oBAC3B,MAAW,IAAK3S,EAAW,CACnB,MAAO,MACV,KAEI,CACD,MAAO,QACV,CASD,OAAO2S,CACX,CAGA3b,OAAO4b,UAAY,IACRF,KAAmB,UAI9B1b,OAAO6b,SAAW,IACPH,KAAmB,SAI9B1b,OAAO8b,KAAO,IACHJ,KAAmB,KAI9B1b,OAAO+N,SAAW,IACP2N,KAAmB"}